diff --git a/Changes b/Changes index 18badb1a8..009a6bdec 100644 --- a/Changes +++ b/Changes @@ -11,6 +11,11 @@ contributors that suggested or implemented a given issue are shown in []. Thanks Verilator 5.047 devel ========================== +**Important:** + +* Support jemalloc as the default allocator on Linux (#7250). [Yangyu Chen] + For better performance, `apt install libjemalloc-dev` or equivalent before running ./configure. + **Other:** * Support inout inside SV interface (#3466) (#7134). [Nick Brereton] @@ -24,6 +29,10 @@ Verilator 5.047 devel * Support Z non-blocking assignment (#7192) (#496) (#7197). [Nick Brereton] * Support constraint `with` item.index array reduction (#7198). [Rahul Behl] * Support constant expressions without parentheses in `PATHPULSE$` (#7199). [Pawel Kojma, Antmicro Ltd.] +* Support $sformat with runtime format string (#7212). +* Support dist and solve...before inside foreach constraints (#7245) (#7253). [Yilou Wang] +* Support array and struct info metadata in FST traces (#7255). [Geza Lore, Testorrent USA, Inc.] +* Support dynamic array .size in inline randomize() with constraints (#7258) (#7266). [Yilou Wang] * Add VPI callback support to --main (#7145). * Add V3LiftExpr pass to lower impure expressions and calls (#7141) (#7164). [Geza Lore, Testorrent USA, Inc.] * Add --func-recursion-depth CLI option (#7175) (#7179). @@ -34,11 +43,14 @@ Verilator 5.047 devel * Optimize function call return value temporaries (#7152). [Geza Lore, Testorrent USA, Inc.] * Optimize conditional merging across some impure statements (#7159). [Geza Lore, Testorrent USA, Inc.] * Fix recursive default assignment for sub-arrays (#4589) (#7202). [Julian Carrier] +* 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 lambda coroutines (#6106) (#7135). [Nick Brereton] * Fix super constructor calls with local variables (#6214) (#6933). [Igor Zaworski, Antmicro Ltd.] +* Fix false recursive definition error (#6769) (#7118). [Alex Zhou] * Fix interface localparam dependencies and arbitrary nesting (#6936) (#7128) (#7188) (#7190). [em2machine] * Fix errant integer promotion (#7012). [Todd Strader] +* Fix randc solver hang with wide variables (#7068) (#7248). [Yilou Wang] * Fix scheduling non-determinism (#7120) (#7162) (#7165). [Geza Lore, Testorrent USA, Inc.] * Fix parameters inside std::randomize `with` clause (#7140). [Kamil Danecki, Antmicro Ltd.] * Fix forcing unpacked variables (#7149). [Ryszard Rozak, Antmicro Ltd.] @@ -50,12 +62,16 @@ Verilator 5.047 devel * Fix library/hier_block tracing when top name is empty (#7200). [Geza Lore, Testorrent USA, Inc.] * 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.] +* Fix array reduction in constraints crashing with class inheritance (#7226) (#7263). [Yilou Wang] * Fix soft cross-object constraint priority inversion (#7228) (#7233). [Yilou Wang] * 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 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] +* Fix `final` asserts and $stop (#7249). [Artur Bieniek, Antmicro Ltd.] +* Fix vpi_put_value with vpiIntVal on VlWide data (#7256). [Christian Hecken] Verilator 5.046 2026-02-28 diff --git a/docs/guide/deprecations.rst b/docs/guide/deprecations.rst index b22282bf5..b46a524f2 100644 --- a/docs/guide/deprecations.rst +++ b/docs/guide/deprecations.rst @@ -16,3 +16,8 @@ C++14 compiler support (Although this date has expired, this change is currently on hold until the Ubuntu LTS versions of GCC and clang use C++20 by default, estimated May 2028.) + +tcmalloc support + Verilator currently supports the default malloc, tcmalloc, or jemalloc. + As jemalloc has better performance, support for tcmalloc may be removed + no sooner than January 2026. diff --git a/docs/internals.rst b/docs/internals.rst index 37deff588..e50b92d00 100644 --- a/docs/internals.rst +++ b/docs/internals.rst @@ -739,6 +739,7 @@ There are two functions for managing timing logic called by ``_eval()``: schedulers whose triggers were set in the current iteration. Thanks to this separation a coroutine: + * awaiting a trigger cannot be suspended and resumed in the same iteration (``test_regress/t/t_timing_eval_act.v``) - which is necessary to make Verilator more predictable; this is the reason for introduction of 3rd stage diff --git a/docs/spelling.txt b/docs/spelling.txt index f883336d1..5b6862949 100644 --- a/docs/spelling.txt +++ b/docs/spelling.txt @@ -878,6 +878,7 @@ iostream ish isunbounded isunknown +jemalloc jobserver json jwoutersymatra @@ -891,6 +892,7 @@ len libc libext libgoogle +libjemalloc liblist libsystemc libtcmalloc @@ -917,6 +919,7 @@ lxt macromodule makefile makefiles +malloc manpages metacomment metacomments @@ -1146,6 +1149,7 @@ sys systemc taskify tcmalloc +tcmalloc tenghtt testbench threadsafe @@ -1239,6 +1243,7 @@ vpiConstType vpiDefName vpiInertialDelay vpiInstance +vpiIntVal vpiLeftRange vpiModule vpiSigned diff --git a/test_regress/t/t_constraint_shift_width.v b/test_regress/t/t_constraint_shift_width.v index 142acf818..547b54e0b 100644 --- a/test_regress/t/t_constraint_shift_width.v +++ b/test_regress/t/t_constraint_shift_width.v @@ -56,7 +56,7 @@ class ImplicationShift; endclass module t; - AlignedPacket pkt1; + AlignedPacket pkt1; ConstShiftPacket pkt2; ImplicationShift pkt3; int ok; diff --git a/test_regress/t/t_final_assert.v b/test_regress/t/t_final_assert.v index 959be7141..2874716c8 100644 --- a/test_regress/t/t_final_assert.v +++ b/test_regress/t/t_final_assert.v @@ -4,11 +4,11 @@ // SPDX-FileCopyrightText: 2026 Antmicro // SPDX-License-Identifier: CC0-1.0 -module tb(); - initial begin - $finish(); - end - final begin - assert(1 == 0); - end +module tb (); + initial begin + $finish(); + end + final begin + assert (1 == 0); + end endmodule diff --git a/test_regress/t/t_recursive_definition.v b/test_regress/t/t_recursive_definition.v index 15e2fca90..f7d511272 100644 --- a/test_regress/t/t_recursive_definition.v +++ b/test_regress/t/t_recursive_definition.v @@ -6,18 +6,18 @@ module t; class uvm_built_in_comp #( - type T = int + type T = int ); endclass class uvm_in_order_comparator #( - type T = int, - type comp_type = uvm_built_in_comp#(T) + type T = int, + type comp_type = uvm_built_in_comp#(T) ); endclass class uvm_in_order_built_in_comparator #( - type T = int + type T = int ) extends uvm_in_order_comparator #(T); endclass