inout ポートはwireでつなぐ SystemVerilog

はじめに

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を使用していると思わぬ落とし穴がありました話でした。

コメント

タイトルとURLをコピーしました