SV中宏定义的用法

在sv的代码中,我们经常要使用宏定义来选择性的选用自己想要使用的文件或者变量,这里记录一下自己使用到的宏定义的用法。

1. 条件选择的宏定义语句

`ifdef TEST_1
    `include "test_case_1"
`elsif TEST_2
    `include "test_case_2"
`endif

`ifndef POST_SIM
    value_a = 32'hF;
`else
    value_a = 32'h3;
`endif

2. 使用宏定义构造常用函数或者常用语句

`define STRING(x) `"x`"
`"或者`\是对 " 或者 \进行转义,"也可以不转义,直接使用
example:
`STRING(tb_top.dut.u_cluster)即相当于是"tb_top.dut.u_cluster"

给define传入的参数需要用()括起来,然后用,分隔开
传入的参数不能传入到字符串中,example:
module main;
    `define H(x) "Hello,x"
    initial begin
        $display(`H(world));
    end
endmodule
will print : Hello,x
但是上述情况可以用`"来解决,example:
`define H(x) `"Hello,x`" 这样就能打印 Hello,world

3.在SV中可以使用``符号来充当连接符的作用将传入的参数与其他表示式连接起来,example:

`define TARGET_SIG(_SIG,_BIT,_MSK) \
    rtl_warp.module``_SIG``0 & {_BIT{_MSK[0]}

`TARGET_SIG(PAC, 1, p_mask)
即表示: rtl_wrap.modulePAC0 & {1{p_mask[0]}

4.define只能传入常量,不能传入变量

  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值