答案 0 :(得分:5)
Modport用于指定相对于特定模块/组件的信号方向。
它们还用于限制访问来自某些模块/类的某些信号。
通常,testbench modport包含一串激励驱动信号作为输出,而相同的信号被作为输入作为RTL。此外,输出到RTL的一些响应信号被视为输入到modport。
考虑以下示例:
interface my_interface(input logic clk, reset);
logic a;
logic b;
logic c;
logic sum;
logic carry;
modport tb (input sum,carry, output a,b,c,reset);
modport dut (output sum,carry, input a,b,c,reset);
endinterface
此处,允许测试平台驱动 a
,b
以及c
和reset
。但是,测试平台驱动sum
和carry
信号将是错误的。
如果我们不使用modport并且意外地测试台/ RTL驱动它们各自的输入信号,那么它将导致意外行为。
此后,modport通常用于限制驱动/采样信号的组件。
它们还允许界面内信号的不同视图。人们可以查看modport并判断它是否是特定模块/类或输出的输入。
请参阅this link了解更多信息。
答案 1 :(得分:0)
尽管模拟器应在访问过程中检查方向,但通常会忽略它。综合工具着眼于实现的方向。
答案 2 :(得分:0)
通常,接口不需要捕获模块之间或模块与测试平台之间使用的信号的方向信息。
示例:主/从
主站可能需要一组信号作为输入和输出,而从站可能需要一组相同的信号作为输出和输入。因此,我们在界面内使用 MOD PORTS 来对这些信号进行分组并指定某些方向。
Mod-port示例:
与Modport接口
interface arb_if (input bit clk);
logic [1:0] grant, request;
logic reset;
modport TEST (output request, reset,
input grant,clk);
modport DUT (input request, reset ,clk,
output grant);
modport MONITOR (input request, grant, reset, clk);
endinterface