Hey,
Lets say I have the following :
// Original module
module dut #(parameter WIDTH = 5, parameter EN_FEAT = 1) ();
wire [WIDTH-1:0] dut_internal_bus;
generate
if (EN_FEAT) begin : g_EN_FEAT
wire feat_wire = |dut_bus;
end
endgenerate
endmodule
// Module for binding
module bdut #(parameter WIDTH = 5, parameter EN_FEAT = 1) (
input [WIDTH-1:0] dut_internal_bus,
input feat_wire);
endmodule
module top();
dut#() dut1();
initial begin
#2;
$finish();
end
endmodule
Now, for the bind itself, if I only wanted to connect internal signals (in a scenario I don’t have the feat_wire in the bdut) i would just a wildcard :
// The binding..
bind dut bdut#(
.WIDTH(WIDTH),
.EN_FEAT(EN_FEAT)
) a_inst(
.*
);
If I want the internal signal, I would have to do something like this I guess ( or not? because i remember using wildcard and named connections is not allowed to be mixed…)
// The binding..
bind dut bdut#(
.WIDTH(WIDTH),
.EN_FEAT(EN_FEAT)
) a_inst(
.*,
.feat_wire(g_EN_FEAT.feat_wire)
);
Is there any way to dodge this issue and based on the EN_FEAT to do the connections? Must I create 2 different modules and bind by instance ? (lets say i have 100 DUT modules in the system, half with EN_FEAT=1 and half with EN_FEAT=0)
Thanks.