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

发布于 2018-12-14 00:22:54
层次化组合无疑是SystemVerilog接口的一个缺点。
您可以通过使用端口列表创建InterfaceB并从InterfaceA端口连接到各个信号来简化您的解决方案。这样就省去了connect模块。
interface InterfaceB( input rx1, rx2, output ...)'
modport .../ same as what you have
endinterfacehttps://stackoverflow.com/questions/53764637
复制相似问题