iverilog/ivtest/ivltests/sv_class16.v

47 lines
1.0 KiB
Verilog

/*
* This tests a trivial class. This tests that simple property
* initializers work, but are overridden by an constructor.
*/
program main;
// Trivial examples of classes.
class foo_t ;
int int_value = 42;
bit [3:0] bit_value = 5;
string txt_value = "text";
function new();
// The declaration assignments happen before the constructor
// is called, so we can refer to them.
int_value = int_value + 1; // s.b. 43
bit_value = bit_value * 2; // s.b. 10
txt_value = "fluf";
endfunction
endclass : foo_t // foo_t
foo_t obj1;
initial begin
obj1 = new;
if (obj1.int_value !== 43) begin
$display("FAILED -- obj1.int_value=%0d.", obj1.int_value);
$finish;
end
if (obj1.bit_value !== 4'd10) begin
$display("FAILED -- obj1.bit_value=%0b.", obj1.bit_value);
$finish;
end
if (obj1.txt_value != "fluf") begin
$display("FAILED -- obj1.txt_value=%s", obj1.txt_value);
$finish;
end
$display("PASSED");
$finish;
end
endprogram // main