iverilog/ivtest/vhdl_tests/generics.v

53 lines
1.1 KiB
Verilog

// A few simple tests of translating parameters to generics
module top();
wire [7:0] v1, v2, v3;
wire [7:0] w1, w2, w3;
child c1(v1, w1);
child c2(v2, w2);
child c3(v3, w3);
defparam c1.MY_VALUE = 6;
defparam c2.MY_VALUE = 44;
initial begin
#2;
$display("c1 reg value: %d", v1);
$display("c2 reg value: %d", v2);
$display("c3 reg value: %d", v3);
$display("c1 wire value: %d", w1);
$display("c2 wire value: %d", w2);
$display("c3 wire value: %d", w3);
if (v1 !== 6)
$display("FAILED - v1 !== 6");
else if (v2 !== 44)
$display("FAILED - v2 !== 44");
else if (v3 !== 12)
$display("FAILED - v3 !== 12");
else if (w1 !== 7)
$display("FAILED - v1 !== 7");
else if (w2 !== 45)
$display("FAILED - v2 !== 45");
else if (w3 !== 13)
$display("FAILED - v3 !== 13");
else
$display("PASSED");
end
endmodule // top
module child(value, value_w);
output [7:0] value, value_w;
reg [7:0] value;
parameter MY_VALUE = 12;
assign value_w = MY_VALUE + 1;
// Make a non-trivial process
initial begin
#1;
value <= MY_VALUE;
end
endmodule // child