Commentary: Changes update

This commit is contained in:
Wilson Snyder 2026-08-19 07:32:21 -04:00
parent 2ba4bd9211
commit 700858c112
5 changed files with 60 additions and 18 deletions

15
Changes
View File

@ -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

View File

@ -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

View File

@ -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");

View File

@ -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

View File

@ -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