blob: c7793527aba8ba764b6a0ba8c24ff44c1af42923 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
// An example showing how parameters get inferred when binding
module foo (input logic a, input logic b, output logic c);
parameter doit = 1;
// Magic happens here...
endmodule
module bar (input a, input b, output c);
parameter doit = 1;
assign c = doit ? a ^ b : 0;
endmodule
module top (input u0, input v0, output w0,
input u1, input v1, output w1);
foo #(.doit (0)) foo0 (.a (u0), .b (v0), .c (w0));
foo #(.doit (1)) foo1 (.a (u1), .b (v1), .c (w1));
bind foo bar #(.doit (doit)) bound_i (.*);
always_comb begin
assert (w0 == '0);
assert (w1 == u1 ^ v1);
end
endmodule
|