前言
`ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免。 应该在什么情况下使用呢?
例如:一部分代码可能有时候用,有时候不用,为了避免全部编译占用资源,可以使用条件编译语句。 下面正式介绍其语法。
正文
语法
// Style #1: Only single `ifdef
示例
module
Testbench文件
module
请注意, 默认情况下, rstn 不会在编译设计时被包含, 因此它不会出现在 port 列表中。但是, 如果在任何属于编译文件列表的 Verilog 文件中定义了名为 INCLUDE_RSTN 的宏, 或者通过命令行传递给编译器, rstn 就会在编译过程中被包括在内, 设计也将拥有它。
下面我们通过vivado平台编译看下: 默认情况下:
定了了宏INCLUDE_RSTN的情况下:
进一步证明了其用途。
仿真看下:
在默认情况下,没有定义宏INCLUDE_RSTN ,也就没有复位。
可以看到由于没有复位,所以q在初始阶段为X。
往期回顾
Verilog初级教程(19)Verilog中的参数
Verilog初级教程(18)Verilog中的函数与任务
Verilog初级教程(17)Verilog中的case语句
Verilog初级教程(16)Verilog中的控制块
Verilog初级教程(15)Verilog中的阻塞与非阻塞语句
Verilog初级教程(14)Verilog中的赋值语句
Verilog初级教程(13)Verilog中的块语句
Verilog初级教程(12)Verilog中的generate块
Verilog初级教程(11)Verilog中的initial块
Verilog初级教程(10)Verilog的always块
Verilog初级教程(9)Verilog的运算符
Verilog初级教程(8)Verilog中的assign语句
Verilog初级教程(7)Verilog模块例化以及悬空端口的处理
Verilog初级教程(6)Verilog模块与端口
Verilog初级教程(5)Verilog中的多维数组和存储器
Verilog初级教程(4)Verilog中的标量与向量
Verilog初级教程(3)Verilog 数据类型
Verilog初级教程(2)Verilog HDL的初级语法
Verilog初级教程(1)认识 Verilog HDL
芯片设计抽象层及其设计风格
Verilog以及VHDL所倡导的的代码准则
FPGA/ASIC初学者应该学习Verilog还是VHDL?
参考资料及推荐关注
Verilog `ifdef Conditional Compilation
个人微信公众号: FPGA LAB
交个朋友