在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脚本,然后生成好之后贴过去。。。。。。不按常理出牌,也可以实现。。。啊哈哈哈!