我是verilog用户,不熟悉systemverilog。
我已经在systemverilog中找到了在DUT和接口之间使用modport和instanciate的内容。
但我不知道为什么在systemverilog中使用modport以及如何在接口和DUT之间使用和互连?
答案 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
结合其他笔记:
或者,可以在指定IO的模块中指定modport,如下所示:
module src_side_module( 输入线clk, 输入线rstl, simple_if.src如果 ); ....
希望这有帮助。