条件编译在针对不同EDA工具,选择不同激励、根据选择才执行一些功能等场合非常有用,本文对常见条件编译指令进行介绍:介绍了条件编译指令的用途、具体用法。
条件编译:
显而易见,即只有在条件满足的时候才对这部分代码进行编译,也就是对一部分内容指定了编译的条件:
当满足条件时对一组语句进行编译,
当条件不满足时则对另外一组语句进行编译。
语法规则:
// Style #1: Only single `ifdef
`ifdef <FLAG>
// Statements
`endif
// Style #2: `ifdef with `else part
`ifdef <FLAG>
// Statements
`else
// Statements
`endif
// Style #3: `ifdef with additional ifdefs
`ifdef <FLAG1>
// Statements
`elsif <FLAG2>
// Statements
`elsif <FLAG3>
// Statements
`else
// Statements
`endif
当FLAG被定义时,则编译 `ifdef 后的语句块,否则编译 `else 语句块 。
module c_logic(
input [3:0]din1,
input [3:0]din2,
output reg[3:0]dout
);
`define OR 1'b1
`ifdef OR
always@(*)
dout = din1 & din2;
`else
always@(*)
dout = din1 | din2;
`endif
endmodule
`ifndef 与上面的情况刚好相反,如果FLAG没有被定义时,`ifndef 中的语句块则会编译。