如何使用modport和systemverilog中接口和DUT之间的实例有什么好处?

时间:2015-06-23 08:54:38

标签: system-verilog

我是verilog用户,不熟悉systemverilog。

我已经在systemverilog中找到了在DUT和接口之间使用modport和instanciate的内容。

但我不知道为什么在systemverilog中使用modport以及如何在接口和DUT之间使用和互连?

1 个答案:

答案 0 :(得分:3)

Modport是模块端口的缩写。它们允许定义界面内信号的不同视图。在许多情况下,只需要两个modport或视图 - 一个用于接口的源端,另一个用于接收端。一个简单的例子如下:

interface simple_if ();
  wire  we;
  wire  wdata;
  wire  full;

// source-side view
modport src (
  output we,
  output wdata,
  input full
);

// sink-side view
modport snk (
  input we,
  input wdata,
  output full
);

endinterface

该接口可用于将两个模块实例连接在一起,并且可以使用点表示法在每个模块实例中指定要使用的视图或模式。以下示例使用上面的接口定义:

module top();

// first, instantiate the interface
simple_if simple_if ();

// source-side module instantiation
src_side_module  u_src_side_module (
  .clk  (clk),
  .rstl (rstl),
  .if(simple_if.src)  // .src specifies the modport
);

// sink-side module instantiation
snk_side_module  u_snk_side_module (
  .clk  (clk),
  .rstl (rstl),
  .if(simple_if.snk)  // .snk specifies the modport
);

endmodule

结合其他笔记:

  1. 时钟和重置也可以在界面内传递。
  2. 或者,可以在指定IO的模块中指定modport,如下所示:

    module src_side_module(   输入线clk,   输入线rstl,   simple_if.src如果 ); ....

  3. 希望这有帮助。

相关问题