1
我對systemverilog很陌生,試圖構建一個systemverilog測試平臺。 我有一個應通過多路複用器連接到兩個外部模塊之一的DUT。我想在模擬期間切換連接,我想使用systemverilog接口來連接DUT和多路複用器之間的連接,以及多路複用器和兩個外部模塊之間的連接。接口中的信號是雙向的。SystemVerilog接口多路複用器
我在編寫多路複用器時遇到了麻煩。對於當前的實現,我得到一個錯誤,表達的LHS不能成爲電線。如果我將界面中的類型更改爲邏輯,則會出現雙向信號無法實現的錯誤。 我試圖谷歌,但我沒有找到任何教程連接接口的界面。這不可能嗎?還是有更好的方式來做我想做的事情?
到目前爲止,我有以下幾點:
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