diff --git a/Changes b/Changes index a53b5fd16..03329b463 100644 --- a/Changes +++ b/Changes @@ -65,7 +65,9 @@ Verilator 5.047 devel * Optimize DFG peephole until a fixed point (#7309). [Geza Lore, Testorrent USA, Inc.] * Optimize comparisons with identical operands and $countones in DFG. [Geza Lore, Testorrent USA, Inc.] * Optimize more patterns in DfgPeephole (#7332). [Geza Lore, Testorrent USA, Inc.] +* Optimize read references in DFG (#7354). [Geza Lore, Testorrent USA, Inc.] * Fix recursive default assignment for sub-arrays (#4589) (#7202). [Julian Carrier] +* Fix virtual interface member trigger convergence (#5116) (#7323). [Yilou Wang] * Fix shift width mismatch in constraint solver SMT emission (#5420) (#7265). [Yilou Wang] * Fix randomize size+element queue constraints (#5582) (#7225). [Rahul Behl, Testorrent USA, Inc.] * Fix null assignment to virtual interfaces (#5974) (#5990). [Maxim Fonarev] @@ -85,9 +87,11 @@ Verilator 5.047 devel * Fix wide conditional short circuiting (#7155). * Fix eliminating assignments to DPI-read variables (#7158). [Geza Lore, Testorrent USA, Inc.] * Fix std::randomize() in static function with static class members (#7167) (#7169). [Yilou Wang] +* Fix resolving default/non-default type parameters (#7171) (#7346). [em2machine] * Fix recursive constant function in $unit scope (#7173) (#7174). * Fix class extend references between queues (#7195). * Fix library/hier_block tracing when top name is empty (#7200). [Geza Lore, Testorrent USA, Inc.] +* Fix virtual interface select from sub-interface instance (#7203) (#7370) (#7203). [Yilou Wang] * Fix VPI force of bit-selected signals (#7211) (#7301). [Christian Hecken] * Fix wrong $bits() for parameterized interface struct typedefs (#7218) (#7219). [em2machine] * Fix `dist` operator inside constraint if blocks (#7221) (#7224). [Rahul Behl, Testorrent USA, Inc.] @@ -96,6 +100,7 @@ Verilator 5.047 devel * Fix internal error when derived class calls this.randomize() with inherited rand members (#7229) (#7234). [Yilou Wang] * Fix enum range constraints missing for rand variables in sub-objects (#7230) (#7235). [Yilou Wang] * Fix vpi_put_value release on non-continuous signal (#7231) (#7241). [Christian Hecken] +* Fix functions in generate block resulting in 'Broken link in node' (#7236) (#7367). [em2machine] * Fix tracing of typedefed 1D packed arrays with --trace-structs (#7237). [Geza Lore, Testorrent USA, Inc.] * Fix rand variable used as array index in constraint evaluated as constant (#7238) (#7247). [Yilou Wang] * Fix --hierarchical dropping arguments in -f/-F files (#7240). [Clara Sparks] @@ -113,6 +118,10 @@ Verilator 5.047 devel * Fix lost `$stop` on implied assertion `$error` failures. * Fix wait() hang when interface uses process calls and VIF function (#7342). [Yilou Wang] * Fix error on illegal nand/nor binary operators (#7353). +* Fix simple array assignment unrolling in slice optimization (#7359). [Geza Lore, Testorrent USA, Inc.] +* Fix missing temporary for DfgSplicePacked (#7361). [Geza Lore, Testorrent USA, Inc.] +* Fix virtual interface function calls binding to wrong instance (#7363). [Yilou Wang] +* Fix false ASSIGNIN on interface input port connections (#7365). [Yilou Wang] Verilator 5.046 2026-02-28 diff --git a/test_regress/t/t_class_default_type_param.v b/test_regress/t/t_class_default_type_param.v index a0560bfa0..b1a3c174e 100644 --- a/test_regress/t/t_class_default_type_param.v +++ b/test_regress/t/t_class_default_type_param.v @@ -8,16 +8,20 @@ // SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 package p; - class W #(type T = int); + class W #( + type T = int + ); T v; endclass - class Holder #(type U = W#()); + class Holder #( + type U = W#() + ); U u; endclass - typedef Holder#() H_imp_t; // implicit default - typedef Holder#(W#(int)) H_exp_t; // explicit equivalent default + typedef Holder#() H_imp_t; // implicit default + typedef Holder#(W#(int)) H_exp_t; // explicit equivalent default endpackage module t; @@ -29,8 +33,8 @@ module t; // verilator lint_off CASTCONST // verilator lint_off WIDTHTRUNC if (!$cast(exp, imp)) begin - // verilator lint_on WIDTHTRUNC - // verilator lint_on CASTCONST + // verilator lint_on WIDTHTRUNC + // verilator lint_on CASTCONST $display("WRONG_TYPE"); $fatal; end diff --git a/test_regress/t/t_function_generate.v b/test_regress/t/t_function_generate.v index f6f105949..0a855e088 100644 --- a/test_regress/t/t_function_generate.v +++ b/test_regress/t/t_function_generate.v @@ -11,13 +11,14 @@ // SPDX-FileCopyrightText: 2026 Wilson Snyder // SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 -module t(/*AUTOARG*/); +module t ( /*AUTOARG*/); generate if (1) begin : defs function automatic logic foo; foo = 1'b1; endfunction - end else begin : defs + end + else begin : defs function automatic logic foo; foo = 1'b0; endfunction diff --git a/test_regress/t/t_interface_virtual_func_wait.v b/test_regress/t/t_interface_virtual_func_wait.v index 7136bf1bb..fcf0c56f6 100644 --- a/test_regress/t/t_interface_virtual_func_wait.v +++ b/test_regress/t/t_interface_virtual_func_wait.v @@ -6,7 +6,7 @@ interface my_if; logic clk = 0; - bit clk_active = 0; + bit clk_active = 0; initial begin wait (clk_active); @@ -27,8 +27,8 @@ class Driver; endclass module t; - my_if intf(); - my_if intf_unused(); // Second instance triggered the bug + my_if intf (); + my_if intf_unused (); // Second instance triggered the bug initial begin automatic Driver d = new; diff --git a/test_regress/t/t_virtual_interface_trigger_unsup.v b/test_regress/t/t_virtual_interface_trigger_unsup.v index 6fb2315e2..5b26963ac 100644 --- a/test_regress/t/t_virtual_interface_trigger_unsup.v +++ b/test_regress/t/t_virtual_interface_trigger_unsup.v @@ -9,7 +9,7 @@ interface str_if; endinterface module t; - str_if sif(); + str_if sif (); virtual str_if vif = sif; initial begin