当前位置: 代码迷 >> 综合 >> verilog条件编译:`ifdef `endif
  详细解决方案

verilog条件编译:`ifdef `endif

热度:6   发布时间:2024-02-19 11:14:00.0

目的

根据工程需要,对所写代码按条件进行编译。

代码测试

1.在代码中直接宏定义

直接在第一行写上`define INCLUDE_RSTN这个就可以编译对应的代码

`define INCLUDE_RSTN
module my_design (input clk, d,
`ifdef INCLUDE_RSTNinput rstn_1,
`else	input rstn,
`endifoutput reg q);always @ (posedge clk) begin
`ifdef INCLUDE_RSTNif (!rstn_1) beginq <= 0;end else
`elseif (!rstn) beginq <= 0;end else
`endifbeginq <= d;endend
endmodule

综合后是这样的RTL,复位端为rstn_1
在这里插入图片描述
而如果没有添加`define INCLUDE_RSTN,则综合后的RTL是这样的,复位端是rstn在这里插入图片描述

2.将宏定义写到文件中

把1中的第一行`define INCLUDE_RSTN 替换成

`include "define.txt"

即可,然后在define.txt中写入`define INCLUDE_RSTN 。经过测试,宏文件还可以是.v以及.h,目前就试过这三种后缀,文件存放位置只要在工程文件中任何位置就行,不能放到工程文件之外。

参考链接

Verilog初级教程(20)Verilog中的`ifdef 条件编译语句.