systemverilog中define macro的坑

在tb的def.svh文件里面define 一个rtl路径的一部分,带参数的。如下`define LA(a)     tb.core.rtl``a``_sub
`define MT          8
`define MN          4

top.sv 里面的定义
wire    a[31:0];
for(genvar i=0;i<`MT;i=i+1)
begin

    for(genvar m=0;m<`MN;m=m+1)
        begin
          assign a[m+8*i] = LA(m).data[0];
        end
end

这样子写会报出m识别成一个字符的语法错。想要得到的rtl0 被编译器翻译成了rtlm。也就是说define 带变量的情况,只适用于真正替换的路径里面有【】的里面的数字可以被替换成变量,其他裸奔的路径里面的数字不能被替换。 

解决办法,写python脚本,然后生成好之后贴过去。。。。。。不按常理出牌,也可以实现。。。啊哈哈哈!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值