私はsystemverilogが初めてで、システムのテストベンチを構築しようとしています。 私はマルチプレクサを介して2つの外部モジュールのうちの1つに接続されるべきDUTを持っています。私はシミュレーション中に接続を切替えたいと思っています。私は、DUTとマルチプレクサ間の接続と、マルチプレクサと2つの外部モジュール間の接続のためにsystemverilogインターフェイスを使いたいと思います。インタフェースの信号は双方向です。SystemVerilogインターフェースマルチプレクサ
マルチプレクサの書き込みに問題があります。現在の実装では、式のLHSが線になれないというエラーが発生しています。インターフェイスのタイプをロジックに変更すると、双方向信号では不可能であるというエラーが表示されます。 私はGoogleにしようとしましたが、インターフェースに接続するためのチュートリアルは見つかりませんでした。これは不可能ですか?それとも、私がやろうとしていることをするための良い方法がありますか?この場合
interface flash_connect_interface;
wire interface_f_cle;
wire interface_f_ale;
endinterface: flash_connect_interface
module flash_connect_testbench_top;
[...]
// Interfaces
flash_connect_interface flash_connect_interface_i0();
flash_connect_interface flash_connect_interface_i1();
flash_connect_interface flash_connect_interface_i2();
// Connecting DUT to interface
flash_connect flash_connect_i0(
.flash_connect_interface_i(flash_connect_interface_i0),
);
// Multiplexer
flash_connect_mux mux1(
.flash_connect_interface_i_0(flash_connect_interface_i0),
.flash_connect_interface_i_1(flash_connect_interface_i1),
.flash_connect_interface_i_2(flash_connect_interface_i2),
.select(sel)
);
nand_model nand_model0 (
.Cle (flash_connect_interface_i1.interface_f_cle),
.Ale (flash_connect_interface_i1.interface_f_ale),
);
nand_model nand_model1 (
.Cle (flash_connect_interface_i2.interface_f_cle),
.Ale (flash_connect_interface_i2.interface_f_ale),
);
[...]
endmodule // end testbench_top
module flash_connect_mux(
flash_connect_interface flash_connect_interface_i_0,
flash_connect_interface flash_connect_interface_i_1,
flash_connect_interface flash_connect_interface_i_2,
input select
);
always_comb begin
// *** Here is the problem ***
if (select == 1'b0) flash_connect_interface_i_1 = flash_connect_interface_i_0;
else flash_connect_interface_i_2 = flash_connect_interface_i_0;
end
endmodule
コメントありがとうございました、しかしunforunatelyコードが完全にdoesn't私がやりたい:すべての信号がbidicrectionalです。私のシミュレーションでは、次のことが分かります:select = 0の場合、flash_connect_interface_i_1.interface_f_cleのすべての変更はflash_connect_interface_i_0.interface_f_cleに渡されます。しかし、それ以外の方法では、接続はもう双方向ではありません。 – Antonio
双方向信号の場合、バス方向の変更をトリガするために一般に適格な信号があります。モデルでも同様のことをするために使うことができます。 –
この機能をマルチプレクサに追加することを意味しますか?ような何か: 場合(DIR = 0) アサインinterface_i_1.interface_f_cle =他interface_i_0.interface_f_cle アサインinterface_i_0.interface_f_cle = interface_i_1.interface_f_cle – Antonio