我有两个模块通过AXI接口连接在一起,其中模块A为主模块,模块B为从模块,如下所示:
_________________________________________
| top.v |
| __________ __________ |
| | | | | |
| | |<------------->| | |
| | module A | AXI | module B | |
| | |<------------->| | |
| |__________| |__________| |
|_________________________________________|我想用AXI UVC“替换”这个连接,这样我的UVC就可以从模块A接收AXI请求,修改它,并将修改后的请求发送给模块B。我还想将请求从UVC注入到模块B,这样模块A就不会知道它们,所以它看起来像这样:
_________________________________________
| top.v |
| __________ __________ |
| | | ___ | | |
| | |<--->| |<--->| | |
| | module A | AXI |UVC| AXI | module B | |
| | |<--->|___|<--->| | |
| |__________| |__________| |
|_________________________________________|需要注意的是,我不能修改实例化模块A、B和接口的RTL文件(top.v中的任何内容)。所以我想使用bind来绑定UVC到AXI接口,但我不确定这是否能像预期的那样工作。我担心的是,由于模块A和B仍然连接,它们仍然会切换彼此的端口,例如,如果模块A切换AWVALID,它仍然会切换模块B的输入AWVALID。有没有可能绑定可以“覆盖”这些信号?
发布于 2019-11-17 06:59:54
bind不能断开连接,它只能添加连接。但你没有理由不能修改或覆盖现有的RTL,除非它是加密的。
https://stackoverflow.com/questions/58893605
复制相似问题