From 700858c1122d03d1b031b25e70c3057f78e11a16 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Wed, 19 Aug 2026 07:32:21 -0400 Subject: [PATCH] Commentary: Changes update --- Changes | 15 ++++++++ test_regress/t/t_class_param_typedef9.v | 4 ++- test_regress/t/t_covergroup_cross_secret.v | 36 +++++++++++++++----- test_regress/t/t_iface_typedef_bits_uaf.v | 14 +++++--- test_regress/t/t_param_cast_default_struct.v | 9 +++-- 5 files changed, 60 insertions(+), 18 deletions(-) diff --git a/Changes b/Changes index 056a69a57..aa1c34eae 100644 --- a/Changes +++ b/Changes @@ -40,10 +40,14 @@ Verilator 5.051 devel * Optimize random initialization. [Geza Lore, Testorrent USA, Inc.] * Optimize more always blocks in DFG (#7775). [Geza Lore, Testorrent USA, Inc.] * Optimize assertion NFAs using bit-vector ring buffers (#7885). [Artur Bieniek, Antmicro Ltd.] +* Optimize circular logic in DFG (#7902). [Geza Lore, Testorrent USA, Inc.] * Optimize VPI symbol registration and scope construction (#7936). [Nick Brereton] * Optimize bounded always properties using ring buffers (#8061) (#8092). [Artur Bieniek, Antmicro Ltd.] * Optimize VL_WORDS_I/VL_BYTES_I (#8095). [Geza Lore, Testorrent USA, Inc.] * Optimize temporary insertion for single bit replicates in DFG (#8110). [Geza Lore, Testorrent USA, Inc.] +* Optimize mtask coarsening in multi-threaded scheduling (#8120). [Geza Lore, Testorrent USA, Inc.] +* Optimize NFA delay-ring edge traversal, drop complexity to linear (#8145). [Artur Bieniek, Antmicro Ltd.] +* Optimize associative constant patterns to fixed point (#8147). [Geza Lore, Testorrent USA, Inc.] * Fix $finish continuing event loop (#7267) (#7950). [Artur Bieniek, Antmicro Ltd.] * Fix $display accepting streaming concat arguments (#7663) (#7890). [Jaeuk Lee] * Fix DFG misoptimizing bound checks (#7755). [Jakub Michalski] @@ -93,6 +97,7 @@ Verilator 5.051 devel * Fix table optimization causing not contextually convertible to bool error (#7983). [Jakub Michalski] * Fix wait fork trigger temporary split across generated functions (#7985) (#7986). [Marco Brambilla] * Fix randc cycling in a class that also uses solve...before (#7991 partial) (#8055). [Yilou Wang] +* Fix simulation hang when the solver stops answering (#7991 partial) (#8129). [Yilou Wang] * Fix randomize() with a user variable named 'item' (#7993) (#7994). * Fix UNSATCONSTR reporting constraint indices above 9 (#7995). [Yilou Wang] * Fix MULTIDRIVEN/PROC warning suppression via lint_off (#8000). [Gilberto Abram] @@ -118,15 +123,25 @@ Verilator 5.051 devel * Fix wildcard equality against a 4-state constant in an assertion (#8056) (#8057). [Nikolai Kumar] * Fix untyped datatype error on sampling functions with property arguments (#8060). [Artur Bieniek, Antmicro Ltd.] * Fix VPI cbValueChange for 1-bit select (#8063). [Bartłomiej Chmiel, Antmicro Ltd.] +* Fix NFA assertion crash and mis-counted property if/case (#8074). [Yilou Wang] * Fix skipping non-constrained enum constraining when inside object of other class (#8075). [Kornel Uriasz, Antmicro Ltd.] +* Fix use-after-free of captured interface typedef reference during parameter cloning (#8076). [em2machine] * Fix unintended side-effect insertion on associative array read (#8077). [Adam Kostrzewski, Antmicro Ltd.] * Fix undefined symbol solver error (#8080). [Igor Zaworski, Antmicro Ltd.] * Fix unpacked array element force with procedural assign (#8084) (#8085). [Nikolai Kumar] +* Fix reading another parameter resolves to 0 in cloned modules (#8086) (#8069). [em2machine] * Fix hierarchical class scope resolution (#8094). [Artur Bieniek, Antmicro Ltd.] +* Fix segmentation fault on parameters (#8102) (#8149). [Sumanth Kadiyala] * Fix the clang compilation using precompiled headers (#8105). [Demin Han] * Fix invalid typedef (#8106). [Adam Kostrzewski, Antmicro Ltd.] * Fix R/W references to random builtin function seeds (#8112). [Geza Lore, Testorrent USA, Inc.] +* Fix invalid C++ on cast (#8113). [Pawel Klopotek, Antmicro Ltd.] * Fix COVERIGN on SVA goto repetition (#8118). [Artur Bieniek, Antmicro Ltd.] +* Fix unordered data hazards in multi-threaded scheduling (#8133). [Geza Lore, Testorrent USA, Inc.] +* Fix public table offsets larger than 32 bits (#8135). [Sunimali Rathnayake] +* Fix 'get-value' for empty constrained arrays (#8138). [Kornel Uriasz, Antmicro Ltd.] +* Fix streaming concatenation uninitialized RMW access (#8143). [Geza Lore, Testorrent USA, Inc.] +* Fix unpacked array passing to logic task argument error (#8148). [Pawel Klopotek, Antmicro Ltd.] Verilator 5.050 2026-07-01 diff --git a/test_regress/t/t_class_param_typedef9.v b/test_regress/t/t_class_param_typedef9.v index 402e5fdfe..a1cf1a45b 100644 --- a/test_regress/t/t_class_param_typedef9.v +++ b/test_regress/t/t_class_param_typedef9.v @@ -9,7 +9,9 @@ // A typedef of a parameterized class produces an AstRefDType whose skipRefp() // is the AstClassRefDType, which V3Param also reaches directly. This validates // that the AstClassRefDType is not enqueued to mcell_ps twice -class Wrap #(type T = int); +class Wrap #( + type T = int +); int m_v; endclass diff --git a/test_regress/t/t_covergroup_cross_secret.v b/test_regress/t/t_covergroup_cross_secret.v index c3f7f9255..483c90f50 100644 --- a/test_regress/t/t_covergroup_cross_secret.v +++ b/test_regress/t/t_covergroup_cross_secret.v @@ -30,7 +30,9 @@ module t; // Range-bin cross (cross bin names are built at runtime from the range-bin names) covergroup cgsecret_cg_rng; - cgsecret_cp_addr: coverpoint cgsecret_addr {bins cgsecret_lo = {[0 : 1]}; bins cgsecret_hi = {[2 : 3]};} + cgsecret_cp_addr: coverpoint cgsecret_addr { + bins cgsecret_lo = {[0 : 1]}; bins cgsecret_hi = {[2 : 3]}; + } cgsecret_cp_cmd: coverpoint cgsecret_cmd {bins cgsecret_rd = {0}; bins cgsecret_wr = {1};} cgsecret_rc: cross cgsecret_cp_addr, cgsecret_cp_cmd; endgroup @@ -40,17 +42,33 @@ module t; initial begin // cg_inst: 2 + 2 + 4 = 8 bins; hit all four cross combinations - cgsecret_addr = 0; cgsecret_cmd = 0; cg_inst.sample(); // a0 x rd - cgsecret_addr = 1; cgsecret_cmd = 1; cg_inst.sample(); // a1 x wr - cgsecret_addr = 0; cgsecret_cmd = 1; cg_inst.sample(); // a0 x wr - cgsecret_addr = 1; cgsecret_cmd = 0; cg_inst.sample(); // a1 x rd + cgsecret_addr = 0; + cgsecret_cmd = 0; + cg_inst.sample(); // a0 x rd + cgsecret_addr = 1; + cgsecret_cmd = 1; + cg_inst.sample(); // a1 x wr + cgsecret_addr = 0; + cgsecret_cmd = 1; + cg_inst.sample(); // a0 x wr + cgsecret_addr = 1; + cgsecret_cmd = 0; + cg_inst.sample(); // a1 x rd `checkr(cg_inst.get_inst_coverage(), 100.0); // 8/8 // cg_rng_inst: 2 + 2 + 4 = 8 bins; hit all four cross combinations - cgsecret_addr = 0; cgsecret_cmd = 0; cg_rng_inst.sample(); // lo x rd - cgsecret_addr = 2; cgsecret_cmd = 1; cg_rng_inst.sample(); // hi x wr - cgsecret_addr = 1; cgsecret_cmd = 1; cg_rng_inst.sample(); // lo x wr - cgsecret_addr = 3; cgsecret_cmd = 0; cg_rng_inst.sample(); // hi x rd + cgsecret_addr = 0; + cgsecret_cmd = 0; + cg_rng_inst.sample(); // lo x rd + cgsecret_addr = 2; + cgsecret_cmd = 1; + cg_rng_inst.sample(); // hi x wr + cgsecret_addr = 1; + cgsecret_cmd = 1; + cg_rng_inst.sample(); // lo x wr + cgsecret_addr = 3; + cgsecret_cmd = 0; + cg_rng_inst.sample(); // hi x rd `checkr(cg_rng_inst.get_inst_coverage(), 100.0); // 8/8 $write("*-* All Finished *-*\n"); diff --git a/test_regress/t/t_iface_typedef_bits_uaf.v b/test_regress/t/t_iface_typedef_bits_uaf.v index f114006a4..f64f64f89 100644 --- a/test_regress/t/t_iface_typedef_bits_uaf.v +++ b/test_regress/t/t_iface_typedef_bits_uaf.v @@ -11,18 +11,22 @@ typedef struct packed {int unsigned W;} cfg_t; -interface types_if #(parameter cfg_t cfg = '{default: 0}); +interface types_if #( + parameter cfg_t cfg = '{default: 0} +); typedef logic [cfg.W-1:0] rq_t; endinterface -module body #(parameter cfg_t cfg = '{default: 0}); - types_if #(cfg) types(); +module body #( + parameter cfg_t cfg = '{default: 0} +); + types_if #(cfg) types (); localparam int DW = $bits(types.rq_t); // AstAttrOf(DIM_BITS) over captured ref logic [DW-1:0] v; initial v = '0; endmodule module t; - body #('{W: 8}) b0(); - body #('{W: 16}) b1(); + body #('{W: 8}) b0 (); + body #('{W: 16}) b1 (); endmodule diff --git a/test_regress/t/t_param_cast_default_struct.v b/test_regress/t/t_param_cast_default_struct.v index 0093ead77..773e99149 100644 --- a/test_regress/t/t_param_cast_default_struct.v +++ b/test_regress/t/t_param_cast_default_struct.v @@ -15,15 +15,18 @@ typedef struct packed {int unsigned CAP;} cfg_t; module m #( - parameter cfg_t cfg = '{CAP: 0}, - parameter int unsigned p_cap = int'(cfg.CAP) + parameter cfg_t cfg = '{CAP: 0}, + parameter int unsigned p_cap = int'(cfg.CAP) ); endmodule module t; localparam cfg_t c = '{CAP: 32}; - m #(.cfg(c), .p_cap(64)) u_over (); // explicit override, elaborated first + m #( + .cfg(c), + .p_cap(64) + ) u_over (); // explicit override, elaborated first m #(.cfg(c)) u_dflt (); // takes the default: int'(cfg.CAP) == 32 initial begin