我试图弄清楚如何将多个 UVC(UVM 验证组件)连接到同一个 DUT,其中 UVC 不共享接口但连接到 DUT 上的相同信号。
DUT 可以对公共信号在不同协议上运行,并且可以在接收到特定序列后在协议之间切换。每个协议都独立开发成自己的UVC;让我们称它们为低速和高速。假设接口和 DUT 如下:
interface lowspeed_if( input bit clock, reset );
logic a;
logic b;
logic c;
logic [7:0] io_drv; wire [7:0] io = io_drv;
wire ready;
initial {a,b,c,io_drv} = 'z;
endinterface : lowspeed_if
interface highspeed_if( input bit clock, clk2, reset );
logic a;
logic b_drv; wire b = b_drv;
logic [7:0] io_drv; wire [7:0] io = io_drv;
wire ready;
initial {a,b_drv,io_drv} = 'z;
endinterface : highspeed_if
module device_to_test(input a, inout b, input c, inout [7:0] io, output ready);
/* RTL */
endmodule : device
因为 UVC 的设计没有考虑其他协议,所以低速驱动器/监视器只能连接,lowspeed_if
高速驱动器/监视器只能连接highspeed_if
. 这意味着有两个接口需要连接到相同a
的 、b
、io
和ready
信号。
有没有办法在不改变原始 UVC 的情况下将这些 UVC 连接到同一个 DUT?