对于`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波形,如下:
如果在文件开头定义了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