亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Verilog

Verilog `ifdef 条件编译详解:宏控制代码包含与排除

语法形式

`ifdef和`ifndef实现条件编译,可嵌套。`ifdef FLAG:宏定义时包含代码至`else或`endif。`ifndef FLAG:宏未定义时包含。三种风格:仅`ifdef、带`else、带`elsif链。

设计实例:可选复位端口

模块my_design用`ifdef INCLUDE_RSTN包裹rstn端口及复位逻辑。测试平台同理条件实例化端口。编译时通过命令行+define+INCLUDE_RSTN控制是否包含复位功能。实验对比有无宏定义时的端口列表差异。

`ifdef/`elsif 与 `ifndef/`elsif 行为对比

`ifdef MACRO1...`elsif MACRO2:无宏定义无输出;定义MACRO1显示对应消息;定义MACRO2显示另一消息。
`ifndef逻辑相反:无宏定义显示MACRO1消息;定义MACRO1无输出;同时定义两者显示MACRO2消息。

嵌套 `ifdef 复杂示例

多层嵌套`ifdef/`elsif/`ifndef/`else,演示不同宏组合下的编译包含路径。关键规则:父宏未定义时,嵌套宏定义不生效(如无FLAG时NEST1_A/WHITE定义不触发嵌套代码编译)。

Verilog

  1. Verilog 入门:数字电路设计完整教程
  2. 掌握 Verilog 拼接操作:实用指南
  3. 深入理解 Verilog 赋值语句:类型、语法与最佳实践
  4. Verilog阻塞与非阻塞赋值:关键区别详解
  5. 掌握Verilog函数:高效RTL设计的复用利器
  6. 理解Verilog任务:函数vs任务、语法与用法全解析
  7. Verilog 时钟发生器设计与实现指南
  8. 掌握 Verilog 显示任务:高效调试与日志记录
  9. 掌握 Verilog 数学函数:高效硬件设计的利器
  10. 掌握 Verilog $timeformat:精度控制与显示格式化
  11. 理解与打印 Verilog 任意作用域下的 Timescale
  12. 掌握 Verilog 文件 I/O:打开、读取、写入和关闭