信号名を作成するためにsystemverilog/verilogで2つの文字列を連結しようとしています。 私の下のコードスニペットでは、lhs側は正常に動作するようですが、rhs側はうまく動作しません。 ツールは、 "bitempがまだ宣言されていません"というエラーを表示します。マクロを使用してsystemverilogで信号名を連結します
"clno"パラメータに "0"というハードコードされた値を渡すと、lhsとrhsの両方で動作します。
enter code here
`define strcat_assign_macro(lhs_prestr,lhs_poststr,rhs_prestr,rhs_poststr,clno) \
assign lhs_prestr``clno``lhs_poststr = rhs_prestr``clno``rhs_poststr;
module tempmod;
wire a0temp,b0temp;
wire a1temp,b1temp;
wire a2temp,b2temp;
assign b0temp =1'b1;
genvar i;
generate
for(i = 0; i < 3; i++)
begin
`strcat_assign_macro(a,temp,b,temp,i)
end
endgenerate
initial begin
$display (a0temp);
end
endmodule
拡張した後、あなたのマクロは次のようになります。 'aitemp = bitemp割り当てる;'それはlhs_poststrとrhs_poststrの代わりに 'temp'を代用します、私は、aとbは他の部分に置き換えられます。だから、あなたは別の計画が必要です。 – Serge