1、可以用下面两种方法让`define起效
(1)单独把要define的宏变量单独放在一个文件里,在file.list中列在前面,不要放在 .v 后面
如果mbslk_nopwr.v 有使用define文件中的宏变量,那define文件绝对不可以放在mbslk_nopwr.v之后
./define
./rtl_primitive.v //prim
./mbslk_nopwr.v //function description
./tb_top.v //testbench
file name: define
`define PRE_NETLIST_SIM
`define FF_NO_X_OUT
bsub -Ip VCS -full64 -debug_pp +v2k +vcs+lic+wait -debug_access+all -timescale=1ps/1ps -f list.f -sverilog +neg_tchk
bsub -Ip ./simv
(2)在VCS编译命令中+define+MACRO name1+MACRO name2...
+define+PRE_NETLIST_SIM+FF_NO_X_OUT
bsub -Ip VCS -full64 -debug_pp +v2k +vcs+lic+wait -debug_access+all -timescale=1ps/1ps -f list.f -sverilog +neg_tchk +define+PRE_NETLIST_SIM+FF_NO_X_OUT
bsub -Ip ./simv
./rtl_primitive.v
./hdseqcell_nopwr.v
./tb_top.v
2、`define 宏变量的值如何覆盖
在vcs编译命令后面加 +define+PROP_FF_DELAY=value
file name: mbslk_nopwr.v
//
`timescale 1ns/1ps
`define PROP_FF_DELAY 0.3
bsub -Ip VCS -full64 -debug_pp +v2k +vcs+lic+wait -debug_access+all -timescale=1ps/1ps -f list.f -sverilog +neg_tchk +define+PROP_FF_DELAY=0.666
bsub -Ip ./simv
这里timescale没有被强制覆盖,所以+define+PROP_FF_DELAY=0.666,在mbslk_nopwr.v的1ns单位下起效,即delay是0.666ns=666ps
bsub -Ip VCS -full64 -debug_pp +v2k +vcs+lic+wait -debug_access+all -override_timescale=1ps/1ps -f list.f -sverilog +neg_tchk +define+PROP_FF_DELAY=88
bsub -Ip ./simv
这里timescale被-override_timescale=1ps/1ps强制覆盖,所以+define+PROP_FF_DELAY=88,在-override_timescale=1ps/1ps作用下起效,即delay是88ps
Ref: