Verilog编程之条件编译命令`ifdef

简述


用Verilog编程经常会碰到有时候会有不同的条件约束,或者自己尝试设计时不想删掉原来可能已经成功但是需要优化的代码,一般情况下都是直接//或者/*给注释掉方便以后查看和修改。

直到我发现条件编译命令`ifdef这种好东西,顺带还强化了解了一波宏指令。宏定义`define、宏调用`include。

条件编译命令`ifdef

// `define KC705  // 7 Series    Kintex differential clock=6.4 ns period, 156.250 MHz
   `define Zybo   // 7 Series ZYNQ      single-ended clock=8.0 ns period, 125 MHz

module VSTAR_DUT
(
`ifdef Zybo
    input   wire    CLK125 ,
`endif

`ifdef KC705
    input   wire   USER_CLOCK_P ,     // default setting 6.4 ns period, 156.250 MHz
    input   wire   USER_CLOCK_N ,     // default setting 6.4 ns period, 156.250 MHz
`endif

...

)

如上,当遇到某些不确定情况,给别人的代码又不可能让他自己一个个改相关参数的时候,就可以用条件编译命令,在需要系统性修改的地方用`ifdef   `endif圈起来方便。`define、`ifdef、`else、`endif这几句都是相辅相成的,同if语句,`else也是可有可无。虽然编写的时候稍微麻烦了一点,但不会出现条件修改以后需要一点一点去修正的情况。

宏定义

`define算是比较常见的了,需要注意的是同define一样其后面不加;

宏调用

参考自:https://www.cnblogs.com/icelyb24/archive/2011/09/29/2195779.html

`include:在编译的时候,需要对`include命令进行"文件包含"预处理:将File2.v的全部内容复制插入到`include "File2.v"命令出现的地方,即将File2.v被包含到File1.v中,在接着往下进行编译中,将"包含"以后的File1.v作为一个源文件单位进行编译。

注意:
1.一个`include命令只能指定一个被包含的文件

2.`include命令可以出现在Verilog HDL源程序的任何地方,被包含文件名可以是相对路径名,也可以是绝对路径名。

3.如果文件1包含文件2,而文件2要用到文件3的内容,则可以在文件1用两个`include命令分别包含文件2和文件3,而且文件3应出现在文件2之前。

4.在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。

猜你喜欢

转载自blog.csdn.net/weixin_49617016/article/details/108507143