当和接口遍历分层边界时,我使用 systemverilog 接口遇到了一些后端问题。我试图在附图中勾勒出情况。
上图显示了使用接口的“常规”方法。接口和连接的模块都在同一层次上实例化。这适用于模拟和后端。
中间的图片显示了我的情况。在顶层,我有一个模块和接口实例化。接口接紫色模块,再接2个子模块。在模拟中这是有效的。
然后综合工具抱怨紫色级别的接口应该是modport。所以我补充说。然而,综合工具将线解释为双向并添加逻辑以促进这一点。在我的设计中,所有电线都是单向的。
我能找到解决此问题的唯一解决方法如下图所示。我通过 modport 连接原始接口(标记为 A)。然后我实例化一个新接口(标记为 B),它与接口 A 具有相同的父接口。接口 A 和 B 都连接到一个连接模块,该模块包含许多语句,例如:
分配接口B.rx1 = 接口A.rx1;
分配接口B.rx2 = 接口A.rx2;
分配 interfaceA.statusX = interfaceB.statusX;
ETC
所以它只是接口A和B的“哑”连接。
这种工作方式感觉非常错误,因为这个连接模块会产生大量开销。是否有一种更好/更简单的方法可以在层次边界上使用界面,不仅可以在模拟中工作,而且可以在综合中工作?