verilog `define用法

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:

verilog timescale设置与覆盖问题详解_timescale 覆盖-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值