はじめに
Verilogは信号をその用途によってregかwireで宣言する必要があります。
代わってSystemVerilogにはlogicという便利な宣言方法があります。Verilogでreg/wireで宣言していた信号は「ほとんど」logicで宣言することができます。
この「ほとんど」が肝で、inoutポートをつなぐ信号はwireで宣言する必要がありそうです。
サンプルコード
以下、inoutポートをlogic/wireで宣言したときのサンプルコードです。
logic
module top;
logic data; // Error
sub i_sub1(data);
sub i_sub2(data);
endmodule
module sub(
inout data
);
endmodule
wire
module top;
wire data; // OK
sub i_sub1(data);
sub i_sub2(data);
endmodule
module sub(
inout data
);
endmodule
まとめ
何も考えずにlogicを使用していると思わぬ落とし穴がありました話でした。
コメント