当接口上有端口输入时,我会在线看到不同的示例,这些示例针对接口使用modports。即使Modport是接口输入,是否应该在modport上包含clk并进行重置?
下面是modport中未包含的clk的示例:https://www.doulos.com/knowhow/sysverilog/tutorial/interfaces/部分:接口中的Modports
将clk放入modport会产生Spyglass棉绒错误(非驱动变量),这是该错误的一般概念:
interface MY_IF (input clk);
signal my_sig;
modport master (input clk, my_sig);
endinterface
MY_IF if (.clk(clk));
MY_MOD (.my_if(if.master)); // claims clk is undriven
如果缺少clk,并且我将虚拟接口传递给使用clk的类,则Cadence会出现问题。
哪种方法正确? Modport是否必须列出所有信号,或者端口接口信号始终可用?
答案 0 :(得分:0)
您可以在modport中包含接口端口。但是只是端口方向(输入,输出,输入输出)不能在modports中更改。
这里是一个例子。
interface simple_bus (input logic clk);
logic req, gnt;
logic [7:0] addr, data;
logic [1:0] mode;
logic start, rdy;
modport slave (input req, addr, mode, start, clk,
output gnt, rdy,
ref data);
modport master(input gnt, rdy, clk,
output req, addr, mode, start,
ref data);
endinterface: simple_bus
答案 1 :(得分:0)
根据https://verificationacademy.com/forums/systemverilog/using-modports-restrict-access-interface-signals,节奏似乎是正确的: “这就是modport的全部内容-它们定义了子信号,这些信号成为模块的端口。不属于modport的信号不会连接,因此您无权访问它们。定义后,modport仅是在端口连接中引用。”