Skip to content

Commit

Permalink
Merge pull request #1200 from larsclausen/class-property-logic-init
Browse files Browse the repository at this point in the history
vvp: Fix logic class property initialization
  • Loading branch information
larsclausen authored Jan 5, 2025
2 parents 4471961 + c22b375 commit d0327c5
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 1 deletion.
28 changes: 28 additions & 0 deletions ivtest/ivltests/sv_class_prop_logic.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Check that logic class properties are initialized to 'x.

module test;

bit failed = 1'b0;

`define check(val, exp) do \
if (val != exp) begin \
$display("FAILED(%0d). '%s' expected %d, got %d", `__LINE__, `"val`", exp, val); \
failed = 1'b1; \
end \
while(0)

class C;
logic [31:0] x;
endclass

C c;

initial begin
c = new;
`check(c.x, 32'hxx);

if (!failed) begin
$display("PASSED");
end
end
endmodule
1 change: 1 addition & 0 deletions ivtest/regress-vvp.list
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ sv_chained_constructor2 vvp_tests/sv_chained_constructor2.json
sv_chained_constructor3 vvp_tests/sv_chained_constructor3.json
sv_chained_constructor4 vvp_tests/sv_chained_constructor4.json
sv_chained_constructor5 vvp_tests/sv_chained_constructor5.json
sv_class_prop_logic vvp_tests/sv_class_prop_logic.json
sv_const1 vvp_tests/sv_const1.json
sv_const2 vvp_tests/sv_const2.json
sv_const3 vvp_tests/sv_const3.json
Expand Down
5 changes: 5 additions & 0 deletions ivtest/vvp_tests/sv_class_prop_logic.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type" : "normal",
"source" : "sv_class_prop_logic.v",
"iverilog-args" : [ "-g2005-sv" ]
}
2 changes: 1 addition & 1 deletion vvp/class_type.cc
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ class property_logic : public class_property_t {

public:
void construct(char*buf) const
{ new (buf+offset_) vvp_vector4_t (0, wid_); }
{ new (buf+offset_) vvp_vector4_t (wid_); }

void destruct(char*buf) const
{ vvp_vector4_t*tmp = reinterpret_cast<vvp_vector4_t*>(buf+offset_);
Expand Down

0 comments on commit d0327c5

Please sign in to comment.