如何缓冲系统验证日志接口



刚刚遇到这个问题,经过一番阅读,似乎在System Verilog中不允许这样做,但它似乎有点迟钝,我想知道我是否缺少一些简单的解决方法。

我有一个定义为if_datapath的接口。 该接口确实有一些称为接收器、源和监视器的模组端口,我可以毫无问题地在模块上使用该接口。

但是,如果我将模块中的接口定义为接收器、源或监视器:

if_datapath             #(.EW(5),.DW(256),.SW(64),.QW(32))         dp_buf_0             (.clk(clk), .reset(reset));

我可以使用它通过层次结构路由我的接口。 但是,如果不使用它进行路由,我会编写以下内容:

always @ (posedge clk)
begin 
dp_buf_0 <= dp_in;  // Where dp_in is the same kind of 
                    //interface as dp_buf_0
end

我收到一个错误,说:

An instance name is not a legal lvalue [7.1(IEEE)].

因此,如果我想注册整个界面,我需要分解各个部分吗? 告诉我我在这里错过了一些东西。

接口和模块只是为这些容器中的项创建分层命名空间的容器。它们还为您提供了在这些容器内建立信号连接的方法。接口为您提供了更多建立连接的方法,modport是限制对接口内事物的访问的构造。

接口不是数据类型,接口实例也不是变量,因此您无法执行与对变量相同的操作。

但是,您可以将struct定义为数据类型,然后使用该数据类型创建连线或变量。然后,您可以执行与对导线或变量相同的所有操作。

最新更新