SystemVerilog使用bind将连接替换为UVC

SystemVerilog使用bind将连接替换为UVC,verilog,system-verilog,Verilog,System Verilog,我有两个模块通过AXI接口连接在一起,模块A是主模块,模块B是从模块,如下所示: _________________________________________ | top.v | | __________ __________ | | | | | | | | | |<----------

我有两个模块通过AXI接口连接在一起,模块A是主模块,模块B是从模块,如下所示:

  _________________________________________ 
 | top.v                                   |
 |  __________                 __________  |
 | |          |               |          | |
 | |          |<------------->|          | |
 | | module A |      AXI      | module B | |
 | |          |<------------->|          | |
 | |__________|               |__________| |
 |_________________________________________|
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
|顶五|
|  __________                 __________  |
| |          |               |          | |
| |          ||          | |
||模块A | AXI |模块B ||
| |          ||          | |
| |__________|               |__________| |
|_________________________________________|
我想用AXI UVC“替换”此连接,以便我的UVC可以从模块A接收AXI请求,对其进行修改,并将修改后的请求发送到模块B。我还想从我的UVC向模块B注入请求,这样模块A就不会知道这些请求,所以看起来是这样的:

  _________________________________________ 
 | top.v                                   |
 |  __________                 __________  |
 | |          |      ___      |          | |
 | |          |<--->|   |<--->|          | |
 | | module A | AXI |UVC| AXI | module B | |
 | |          |<--->|___|<--->|          | |
 | |__________|               |__________| |
 |_________________________________________|
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
|顶五|
|  __________                 __________  |
| |          |      ___      |          | |
| |          ||   ||          | |
||模块A | AXI | UVC | AXI |模块B ||
| |          ||___||          | |
| |__________|               |__________| |
|_________________________________________|

需要注意的是,我无法修改实例化模块A、B和接口(top.v中的任何内容)的RTL文件。因此,我想使用
bind
将UVC绑定到AXI接口,但我不确定这是否能按预期工作。我担心的是,由于模块A和B仍然连接,它们仍将切换彼此的端口,例如,如果模块A切换AWVALID,则仍将切换模块B的输入AWVALID。绑定是否可能“覆盖”这些信号?

bind
无法断开连接,只能添加到连接中。但是没有理由不能修改或覆盖现有的RTL,除非它是加密的

bind语句将模块/接口的实例放置到所需的位置。它无法修补连接。因此,您不能仅通过绑定来实现。要覆盖信号,您可以使用verilog“强制/释放”。如果端口是导线,则强制/释放将不起作用。您可能希望与设计师合作,使其成为“reg”类型。您可以参考本文:了解如何在这种情况下使用强制/释放。