I pasted some code here and what I want to do is to drive the bundle of valid signals (valid1, valid2, valid3, valid4) in the B_inst inside DUT.
module A (input clk,
input rst,
...,
output v1,
output v2,
output v3,
output v4);
endmodule
module B (input clk,
input rst,
...,
input valid1,
input valid2,
input valid3,
input valid4);
endmodule
module DUT (input clk,
input rst,
... );
wire dut_v1;
wire dut_v2;
wire dut_v3;
wire dut_v4;
A A_inst (.clk(clk), .rst(rst), .v1(dut_v1), .v2(dut_v2), .v3(dut_v3), .v4(dut_v4));
B B_inst (.clk(clk), .rst(rst), .valid1(dut_v1), .valid2(dut_v2), .valid3(dut_v3), .valid4(dut_4));
endmodule
Here is what I implemented in my testbench. Firstly I created an interface definition and use uvmkit_register to bind it with DUT.
interface my_intf (
input iclk,
input irst,
output valid1,
output valid2,
output valid3,
output valid4 );
clocking master_cb @(posedge iclk);
input irst;
output valid1;
output valid2;
output valid3;
output valid4;
endclocking
endinterface
bind DUT my_intf my_intf_inst (.iclk(clk),
.irst(rst),
.valid1(DUT.B_inst.valid1),
.valid2(DUT.B_inst.valid2),
.valid3(DUT.B_inst.valid3),
.valid4(DUT.B_inst.valid4) );
`uvmkit_register_bind_intf_vif(my_intf, DUT, my_intf_inst)
and then I create standard driver and sqr also, to drive it in TestBench.
But the valid1/valid2/valid3/validr4 signal from waveform I drove is X because when I drive 1 on these signals at a certain clock, the original drive signal in the Design is 0. So my question is how to block this original drive behavior ?