首页 > 解决方案 > Systemverilog 跨层次边界的接口

问题描述

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

上图显示了使用接口的“常规”方法。接口和连接的模块都在同一层次上实例化。这适用于模拟和后端。

中间的图片显示了我的情况。在顶层,我有一个模块和接口实例化。接口接紫色模块,再接2个子模块。在模拟中这是有效的。

然后综合工具抱怨紫色级别的接口应该是modport。所以我补充说。然而,综合工具将线解释为双向并添加逻辑以促进这一点。在我的设计中,所有电线都是单向的。

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

分配接口B.rx1 = 接口A.rx1;

分配接口B.rx2 = 接口A.rx2;

分配 interfaceA.statusX = interfaceB.statusX;

ETC

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

这种工作方式感觉非常错误,因为这个连接模块会产生大量开销。是否有一种更好/更简单的方法可以在层次边界上使用界面,不仅可以在模拟中工作,而且可以在综合中工作?

谢谢 在此处输入图像描述

标签: system-verilogdigital-design

解决方案


分层组合绝对是 SystemVerilog 接口的一个缺点。

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

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

推荐阅读