分层边界上的Systemverilog接口

时间:2018-12-13 15:00:41

标签: system-verilog digital-design

当和接口遍历层次结构边界时,使用systemverilog接口遇到了一些后端问题。我试图在附图中勾勒出这种情况。

上面的图片显示了使用接口的“常规”方法。接口和连接的模块都在相同的层次结构级别上实例化。这适用于仿真和后端。

中间的图片显示了我的情况。在顶层,我有一个模块和接口实例化。该接口连接到紫色模块,然后连接到2个子模块。在模拟中,这可行。

然后综合工具抱怨紫色级别的接口应该是一个modport。所以我补充了。但是,综合工具将导线解释为双向的,并添加了逻辑来简化这一过程。在我的设计中,所有导线都是单向的。

下图显示了我只能找到解决此问题的唯一解决方法。我通过modport连接原始接口(标记为A)。然后,我实例化一个新接口(标记为B),该接口具有与接口A相同的父接口。接口A和B都连接到包含许多语句的连接模块,例如:

分配interfaceB.rx1 = interfaceA.rx1;

分配interfaceB.rx2 = interfaceA.rx2;

分配interfaceA.statusX = interfaceB.statusX;

所以它只是接口A和B的“哑”连接。

这种工作方式感觉很错误,因为此连接模块会产生大量开销。是否存在一种很好/更容易的在分层边界上使用该接口的方法,该接口不仅可用于模拟,而且可用于综合?

谢谢 enter image description here

1 个答案:

答案 0 :(得分:0)

层次结构绝对是SystemVerilog接口的缺点。

您可以通过使用端口列表创建InterfaceB并连接来自InterfaceA端口的各个信号来简化解决方案。这样就消除了连接模块。

interface InterfaceB( input rx1, rx2, output ...)'
 modport .../ same as what you have
endinterface