Verilog中条件编译`define,`ifdef,`else和`endif的使用

对于`define,`ifdef,`else和`endif首先要注意的是加在字母前面的是一个反向单引号。具体用法和matlab语法比较相似。他们的作用是条件编译。条件编译的意思就是,在编译工程中只编译满足条件的部分,不满足条件的,就意味没有用。

`define

这个关键词的作用是定义一些参数,比如:

`define TEST test_u.moulde_a

就把TEST定义为test_u.module_a了,注意TEST和test_u.moulde_a中间只有空格连接,后面没有任何字符。在引用TEST时,要加一个方向单引号,`TEST。

举个例子,我们在102行定义了ISP_TOP,在104行引用它时,要加反向单引号,如下:

`define还有一个作用是做定义,作为`ifdef的条件,比如

`ifdef CONDITION

    EXPRESSION

`endif

如果在文件的开头没有`define CONDITION这句话,那么上面的EXPRESSION就不会执行。如果加了那么,EXPRESSION就可以执行。

举个实际列子,我们用`ifdef 定义了是否要dump波形,如下:

Verilog中条件编译`define,`ifdef,`else和`endif的使用_第1张图片

如果在文件开头定义了DUMP_WAVE,

那么`ifdef中定义的语句就会被编译,即起作用,如果把上面的定义注释掉,那么`ifdef中定义的语句就不起作用。

`ifdef

`ifdef就是条件判断关键词,其用法有三种形式,如下:

(1)

`ifdef CONDITION

    EXPRESSION

`endif

(2)

`ifdef CONDITION

    EXPRESSION1

`else

   EXPRESSION2

`endif

(3)

`ifdef CONDITION

    EXPRESSION1

`elsif CONDITION2

   EXPRESSION2

`esle

   EXPRESSION3

`endif

你可能感兴趣的:(ASIC设计)