SystemVerilog接口多路复用器

时间:2016-08-19 10:28:01

标签: system-verilog

我是systemverilog的新手,并尝试构建一个systemverilog测试平台。 我有一个DUT应该通过多路复用器连接到两个外部模块之一。我想在模拟期间切换连接,我想使用systemverilog接口来连接DUT和多路复用器之间的连接,以及多路复用器和两个外部模块之间的连接。接口中的信号是双向的。

我在编写多路复用器时遇到了麻烦。我得到了当前实现的错误,表达式的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

1 个答案:

答案 0 :(得分:1)

这种情况下的接口只是电线束。您的代码似乎没有任何明显错误。但是,如果您尝试根据选择信号直接将接口分配给对方,则无法正常工作。您需要根据选择信号分别分配所有导线。多路复用接口没什么特别的。

下面的代码执行多路复用。

PHP Notice:  Undefined variable: arrayToReturn in xxxx.php on line 11
Array
(
)

链接到界面教程 - https://www.doulos.com/knowhow/sysverilog/tutorial/interfaces/