Yilou Wang
141fe8bdad
Support sequence intersect operator ( #7374 )
2026-04-08 09:31:54 +02:00
em2machine
2736262b98
Fix resolving default/nondefault type-of-type parameters ( #7380 ) ( #7385 )
2026-04-07 17:58:36 -04:00
Artur Bieniek
8c11d0d0bd
Support rise/fall delays ( #7368 )
...
Signed-off-by: Artur Bieniek <abieniek@antmicro.com>
2026-04-07 06:44:52 -04:00
Yilou Wang
dfb7b034a5
Support sequence 'throughout' operator ( #7378 )
2026-04-06 17:12:22 -04:00
Yilou Wang
72b2ca5585
Support ##[*], ##[+], ##[M:$] unbounded cycle delays in SVA properties ( #7377 )
2026-04-06 16:31:43 -04:00
Christian Hecken
0df0064d64
Fix VPI access to Verilog `force`-ed signals ( #7381 )
2026-04-06 10:51:01 -04:00
Wilson Snyder
9f4546fcb9
Fix constraint 'with' in parameter classes ( #7375 )
2026-04-04 21:03:44 -04:00
Wilson Snyder
2796294396
Fix string `inside` queue ( #7373 ).
...
Fixes #7373 .
2026-04-04 14:43:06 -04:00
github action
4b6bc1ff83
Apply 'make format'
2026-04-04 18:32:27 +00:00
Yilou Wang
3b454a6f60
Internals: Add isNonPackedArray(). No functional change. ( #7334 prep)
2026-04-04 14:31:09 -04:00
Yilou Wang
adb48046c2
Fix parameter default comparison when value contains type cast ( #6281 ) ( #7369 )
...
Fixes #6281 .
2026-04-04 11:02:20 -04:00
Wilson Snyder
00bf59ac92
Internals: Cleanup some V3Simulate branches. No functional change intended.
2026-04-03 20:16:10 -04:00
Wilson Snyder
ed0506ea8d
Internals: Use Var flag instead of magic names. No functional change intended.
2026-04-03 19:05:56 -04:00
Yilou Wang
efd60df2be
Fix virtual interface select from sub-interface instance ( #7203 ) ( #7370 )
...
Fixes #7203 .
2026-04-03 19:04:10 -04:00
em2machine
e7a644a3fc
Fix functions in generate block resulting in "Broken link in node" ( #7236 ) ( #7367 )
...
Fixes #7236
2026-04-03 11:19:17 -04:00
Yilou Wang
56ed47ee7c
Fix false ASSIGNIN on interface input port connections ( #7365 )
...
* add oneline fix
* Apply 'make format'
* merge test and update 2 space indents
---------
Co-authored-by: github action <action@example.com>
2026-04-02 20:44:48 +02:00
Yilou Wang
1e5c93cc51
Fix virtual interface function calls binding to wrong instance ( #7363 )
2026-04-02 10:53:01 -04:00
em2machine
32672deb6f
Fix resolving default/nondefault type parameters ( #7171 ) ( #7346 )
...
Fixes #7171
2026-04-02 10:51:11 -04:00
Geza Lore
d7c484ae85
Fix missing temporary for DfgSplicePacked ( #7361 )
2026-04-01 22:44:58 +01:00
Geza Lore
2e151c3b74
Do not unroll simple array assignments in V3Slice ( #7359 )
...
See also #5644
2026-04-01 22:35:29 +01:00
Yilou Wang
894f6c4c58
Fix virtual interface member trigger convergence ( #5116 ) ( #7323 )
2026-04-01 21:42:42 +01:00
Geza Lore
6aa6c45c73
Internals: Add DfgGraph::neighborhood for debugging
2026-04-01 10:53:30 +01:00
Geza Lore
b4a0ca8ba6
Optimize Ast read references in Dfg directly ( #7354 )
...
Introduce a new DfgAstRd vertex, which holds an AstNodeExpr that is a
reference to a variable. This enables tracking all read references in
Dfg, which both enables more optimization, and allows inlining of
expressions in place of the reference more intelligently (e.g, when the
expression is only used once, and is not in a loop). This can get rid of
20-30% of temporary variables introduced in Dfg in some designs. Note
V3Gate later got rid of a lot of those, this is a step towards making
V3Gate redundant. The more intelligent expression inlining is worth ~10%
runtime speed on some designs.
2026-04-01 10:52:56 +01:00
Wilson Snyder
dbd4823323
Fix error on illegal nand/nor binary operators ( #7353 ).
...
Fixes #7353 .
2026-03-31 18:35:27 -04:00
github action
1096740113
Apply 'make format'
2026-03-30 23:12:27 +00:00
Wilson Snyder
62ffe43a82
Fix port assignment to large arrays ( #6904 ).
...
Fixes #6904 .
2026-03-30 19:09:23 -04:00
Yilou Wang
04f410622b
Fix wait() hang when interface with combinational logic using process calls and VIF function ( #7342 )
2026-03-30 15:34:32 +01:00
Yilou Wang
bf453361f6
Support consecutive repetition [*N] in SVA properties ( #7311 )
2026-03-30 07:01:33 -04:00
Artur Bieniek
55958efbe1
Fix false sensitivity of signals to unrelated interface members
2026-03-30 09:42:51 +01:00
Wilson Snyder
600eb7ec86
Internals: Favor std::swap. No functional change.
2026-03-29 20:33:06 -04:00
Wilson Snyder
5036af3d37
Commentary: Refer to latest standard where can
2026-03-29 18:06:12 -04:00
Wei-Lun Chiu
092d3d4de0
Support map() method for associative and wildcard arrays ( #7344 )
2026-03-29 04:00:52 -04:00
Wilson Snyder
e0b4d5ad44
Fix lost `$stop` on implied assertion `$error` failures.
2026-03-28 10:57:59 -04:00
Wilson Snyder
31757df229
Internals: clangtidy cleanups. No functional change intended ( #7343 )
2026-03-27 23:14:18 -04:00
Wilson Snyder
8d109e85d0
Fix missing quotes on VPI error signal names
2026-03-27 21:44:11 -04:00
Nick Brereton
f66df9e70e
Fix `disable iff` imply-delay statement linking ( #7337 )
2026-03-27 14:31:03 -04:00
Yilou Wang
ba9a7aaa66
Fix static initialization order for packages with class hierarchies ( #7324 )
2026-03-27 12:53:45 -04:00
Yilou Wang
55e5f01758
Support SVA goto repetition [->N] in concurrent assertions ( #7310 )
2026-03-27 10:31:15 -04:00
Geza Lore
9ed7a9f98b
Internals: Do not optimize variables with RW refs in Dfg
2026-03-27 07:50:05 +00:00
Geza Lore
f12cdac8da
Optimize muxes in DfgPeephole
2026-03-27 07:50:05 +00:00
Geza Lore
2759f2ab16
Optimize comparisons with identical operands in Dfg
2026-03-27 07:50:05 +00:00
Geza Lore
e0fc69a2f0
Optimize CountOnes in Dfg
2026-03-27 07:50:05 +00:00
Geza Lore
382f5003ca
Optimize more patterns in DfgPeephole ( #7332 )
2026-03-27 07:47:50 +00:00
Jakub Michalski
5d2d05236e
Support very wide $display arguments ( #7280 )
2026-03-26 13:55:14 -04:00
Geza Lore
e5adb60461
Internals: Only add VAR_PORT_DTYPE prior to V3Width ( #7331 )
2026-03-26 13:44:11 -04:00
github action
37a316f0f8
Apply 'make format'
2026-03-26 17:28:43 +00:00
Eunseo Song
f369a629c7
Improve E_UNSUPPORTED warning messages ( #7329 )
2026-03-26 13:25:30 -04:00
Yilou Wang
e0963bd587
Fix false ASSIGNIN on interface input ports driven from outside ( #7322 )
2026-03-26 12:30:16 -04:00
Yilou Wang
3ddf7ad6ec
Support ##[M:N] range cycle delay in SVA sequences ( #7312 )
2026-03-26 10:08:22 -04:00
Geza Lore
afa071a822
Optimize DfgPeephole until fixed point ( #7309 )
2026-03-26 06:56:36 +00:00
Yilou Wang
728ddf3331
Fix modport selection of virtual interface handle ( #7321 )
2026-03-25 07:16:52 -04:00
Artur Bieniek
860ac67c04
Fix linking shared library with its dependencies ( #7320 )
...
Signed-off-by: Artur Bieniek <abieniek@antmicro.com>
2026-03-25 07:15:24 -04:00
Geza Lore
d33a81d32a
Optimize commutative vertex operands in Dfg for better combining
2026-03-25 08:09:37 +00:00
Geza Lore
d00f23a2b2
Internals: Remove unused vertices immediately in DfgPeephole
2026-03-25 08:09:37 +00:00
Geza Lore
e508d2a6d7
Internals: Use a custom worklist in DfgPeephole
2026-03-25 08:09:37 +00:00
Geza Lore
855884f748
Internals: Simplify DfgPeephole replacement scheme
...
Always only replace the currently iterated node. This ensures it is not
on the work list, which simplifies upcoming work.
No functional of performance change intended.
2026-03-25 08:09:37 +00:00
Nick Brereton
24918b83be
Fix typedef scope resolution for parameterized class aliases ( #5977 ) ( #7319 )
2026-03-24 17:25:40 -07:00
github action
fd2dfd6982
Apply 'make format'
2026-03-24 18:33:07 +00:00
Tracy Narine
c58df87c27
Fix MacOs lexer compile error ( #7314 ) ( #7315 )
2026-03-24 11:30:15 -07:00
Artur Bieniek
aff85cef19
Support more than one dot in defparam ( #7262 )
...
Signed-off-by: Artur Bieniek <abieniek@antmicro.com>
2026-03-24 09:20:46 -04:00
Yilou Wang
0b2bf991a6
Support boolean and/or in sequence expressions ( #7285 )
2026-03-24 08:56:14 -04:00
Wei-Lun Chiu
6873dc2f63
Support array map() method ( #7307 ) ( #7316 )
2026-03-24 02:38:50 -07:00
Ryszard Rozak
9a01a4054a
Improve error message when variable used as data type ( #7318 )
...
Signed-off-by: Ryszard Rozak <rrozak@antmicro.com>
2026-03-24 01:45:09 -07:00
Nick Brereton
3b328d2bb6
Support disable task by name ( #6853 ) ( #7136 )
2026-03-23 19:56:31 -07:00
Wilson Snyder
716b404256
Optimize away empty ctor_var_reset.
...
Fixes #7154 .
2026-03-23 18:10:34 -04:00
Geza Lore
b9c8560d12
Internals: Simplify V3DfgCache
2026-03-22 16:01:22 +00:00
Yilou Wang
921607fd35
Support property-local variables and sequence match items ( #7286 )
2026-03-22 06:21:57 -07:00
Geza Lore
157fa9e4c5
Optimize duplicate vertices in DfgPeephole ( #7305 )
2026-03-21 22:45:02 +00:00
Wilson Snyder
947cbaf330
Deprecate `--structs-packed` ( #7222 ).
2026-03-21 10:59:27 -04:00
em2machine
05f640459e
Fix interface data type consistency ( #6965 ) ( #7302 )
2026-03-21 10:34:36 -04:00
Geza Lore
4dae9ed4e9
Optimize reuse of existing associative terms in DfgPeephole
...
Enable V3DfgCache to look up vertices without creating one. Reuse
existing terms in associative expression trees if they already exist
somewhere in the graph.
2026-03-21 11:09:32 +00:00
Geza Lore
92172e32c4
Internals: Add separate statistics for scoped Dfg stages
2026-03-21 10:49:39 +00:00
Geza Lore
13cf9ba075
Internals: Type check vertices made in DfgPeephole
2026-03-21 10:15:18 +00:00
Geza Lore
fa30e0c9b5
Internals: Make Dfg type checking available on single vertex
...
No functional change
2026-03-21 10:13:49 +00:00
Geza Lore
416b30d884
Internals: Add utility to perform bisection search for debugging ( #7294 )
2026-03-21 10:13:27 +00:00
Yilou Wang
9ea7abd1c7
Support `##0` cycle delays ( #4263 ) ( #7298 )
2026-03-20 18:29:20 -04:00
Igor Zaworski
c3fc0d9f0f
Fix coroutine trace setters ( #7078 repair) ( #7296 )
2026-03-20 09:23:32 -07:00
Igor Zaworski
331cac2054
Internals: Four-state pre-pull cleanup ( #7281 )
2026-03-20 12:11:22 -04:00
Yilou Wang
b71abb0032
Fix `local::` false error in randomize() with on parameterized class ( #6680 ) ( #7293 )`
2026-03-20 10:25:46 -04:00
Yilou Wang
a8bccab8e6
Support named sequence declarations and instances in assertions ( #7283 )
2026-03-20 10:24:46 -04:00
Yilou Wang
25c3bc814e
Support ## delay on implication RHS in SVA properties ( #7284 )
2026-03-20 09:53:49 -04:00
Yilou Wang
998ec5b1d7
Fix streaming with descending unpacked arrays and unpacked-to-queue ( #7287 )
2026-03-20 09:51:35 -04:00
Wilson Snyder
9180eebdba
Internals: MSVC cleanups
2026-03-19 22:48:12 -04:00
Wilson Snyder
94f8181cff
Fix null assignment to virtual interfaces ( #5974 ) ( #5990 ). [Maxim Fonarev]
...
Fixes #5974 .
Co-authored-by: Maksim Fonarev <fonarickm@yandex.ru>
2026-03-19 20:29:02 -04:00
Yilou Wang
a0a684109f
Support modport export/import task prototypes and out-of-block definitions ( #7277 )
2026-03-18 19:20:34 -04:00
Yilou Wang
b8ca9292a4
Fix StreamR LHS assertion when source is narrower than destination ( #7276 ) ( #7282 )
2026-03-18 15:15:27 -04:00
Igor Zaworski
907e775aa6
Internals: Add `--fourstate` flag and FUTURE warning ( #7279 )
2026-03-18 13:45:36 -04:00
em2machine
a2154e9119
Fix interface derived types passed as parameters to generate loop module instantiation ( #7273 )
2026-03-18 09:26:55 -04:00
Yilou Wang
3bb0ea63ad
Fix queue slice LHS assignment being silently discarded ( #7270 )
2026-03-17 15:10:49 -04:00
Yilou Wang
8925762077
Fix rand_mode(0) on sub-object members not preventing solver write-back ( #7272 )
2026-03-17 15:09:14 -04:00
Yilou Wang
316fb02c60
Support assignment patterns as comparison operands ( #7269 )
...
* Support assignment patterns as EQ/NEQ comparison operands
* Apply 'make format'
* update the .out file
* add both-sides case
---------
Co-authored-by: github action <action@example.com>
2026-03-17 19:36:54 +01:00
Yilou Wang
ef5281ab73
Fix false illegally-wrapped-around error for signed enums whose auto-incremented values cross zero. ( #7268 )
2026-03-17 19:36:24 +01:00
Yilou Wang
d57324e5fb
Support dynamic array .size in inline randomize() with constraints ( #7258 ) ( #7266 )
2026-03-16 18:48:36 -04:00
Yilou Wang
be0f4a507e
Fix shift width mismatch in constraint solver SMT emission ( #5420 ) ( #7265 )
2026-03-16 18:48:09 -04:00
Yilou Wang
bf792f1809
Fix array reduction in constraints crashing with class inheritance ( #7226 ) ( #7263 )
2026-03-16 16:36:48 -04:00
Alex Zhou
651f223387
Fix false recursive definition error ( #6769 ) ( #7118 )
2026-03-16 07:31:35 -04:00
Wilson Snyder
602ee384de
Support $sformat with runtime format string ( #7212 ). ( #7257 )
...
Fixes #7212 .
2026-03-14 22:43:56 -04:00
Yangyu Chen
bb5a9dc247
Support jemalloc as the default allocator on Linux ( #7250 )
...
Add jemalloc as an alternative malloc implementation for the Verilator
binary. When both tcmalloc and jemalloc are available, jemalloc is
preferred due to its better performance on RTLMeter.
The new --enable-jemalloc flag (default=check) mirrors the existing
--enable-tcmalloc behavior: auto-detected at configure time, supports
both static and dynamic linking, and is disabled when --enable-dev-asan
is active.
2026-03-13 17:08:15 -04:00
Yilou Wang
7cd49a8028
Support dist and solve...before inside foreach constraints ( #7245 ) ( #7253 )
2026-03-13 11:05:18 -04:00
Artur Bieniek
c0d0180918
Fix `final` asserts and $stop ( #7249 )
2026-03-12 13:09:54 -04:00
Yilou Wang
c74eee5123
Fix rand variable used as array index in constraint evaluated as constant ( #7238 ) ( #7247 )
2026-03-12 10:12:53 -04:00
Wilson Snyder
08c6d5bde5
Improve some display error handling ( #7212 prep)
2026-03-12 07:49:21 -04:00
Wilson Snyder
f2fdc57366
Fix --hierarchical dropping arguments in -f/-F files ( #7240 ).
2026-03-12 07:25:32 -04:00
Wilson Snyder
d87035d187
Commentary: Fix non-grammar
2026-03-11 19:53:23 -04:00
Geza Lore
be429ce956
Fix tracing of typedefed 1D packed arrays with --trace-structs ( #7237 )
...
Used to incorrectly unroll 1D packed arrays of 'bit' or 'logic' into
elements when using --trace-structs if the array element type was given
via a typedef. Keep them as a single signal instead.
2026-03-11 12:46:13 +00:00
Yilou Wang
f351882cf0
Fix enum range constraints missing for rand variables in sub-objects ( #7230 ) ( #7235 )
2026-03-11 07:21:40 -04:00
Rahul Behl
cd8818ca23
Fix randomize size+element queue constraints ( #5582 ) ( #7225 )
2026-03-11 06:51:32 -04:00
Pawel Kojma
4e6eafd994
Allow constant expressions without parentheses in PATHPULSE$ declaration ( #7199 )
2026-03-11 06:01:33 -04:00
Yilou Wang
5bf1d060c9
Fix internal error when derived class calls this.randomize() with inherited rand members ( #7229 ) ( #7234 )
2026-03-10 19:03:18 -04:00
Yilou Wang
3ba9077726
Fix soft cross-object constraint priority inversion ( #7228 ) ( #7233 )
...
Emit nested constraint setup tasks in depth-first order (deepest first)
so outer-scope soft constraints get higher priority per IEEE 18.5.13.
2026-03-10 19:02:15 -04:00
Wilson Snyder
a7a5c9f548
Improve not-found message to show cwd
2026-03-10 08:55:51 -04:00
Rahul Behl
2046879beb
V3Randomize: Fix dist operator inside ConstraintIf blocks ( #7221 ) ( #7224 )
...
The lowerDistConstraints() function was not recursing into ConstraintIf
nodes, causing dist operators inside if-else blocks to remain unlowered
and trigger an internal error when ConstraintExprVisitor encountered them.
Fix by adding recursive handling of ConstraintIf nodes in lowerDistConstraints:
- Check for AstConstraintIf nodes before AstConstraintExpr
- Recursively process thensp() and elsesp() branches
- This ensures all dist operators are lowered regardless of nesting
Test case: t_randomize_dist_conditional.v demonstrates conditional dist:
constraint c {
if (randd) {
x dist { 8'd0 := 1, 8'd255 := 3 }; // 25% / 75%
} else {
x dist { 8'd0 := 3, 8'd255 := 1 }; // 75% / 25%
}
}
Fixes #7221
2026-03-10 07:06:00 +00:00
em2machine
1b2b8afdc1
Fix wrong $bits() for parameterized interface struct typedefs ( #7218 ) ( #7219 )
2026-03-09 22:32:13 -04:00
Christian Hecken
9c5f4e2483
Internals: Extend VerilatedVar to hold force control signal pointers ( #7217 )
2026-03-08 15:53:32 -04:00
Wilson Snyder
3097df46fa
Change `--converge-limit` default to 10000 ( #7209 ).
...
Fixes #7209 .
2026-03-07 09:05:37 -05:00
Wilson Snyder
68d6dd7eee
Internals: Add UASSERT to avoid error fault on sv-tests regress-sv_sv_import_hier_fail1_iv
2026-03-07 09:03:42 -05:00
Wilson Snyder
4d369e4262
Fix --debug-inputs for .vlt files
2026-03-07 08:01:27 -05:00
em2machine
bef5c1f475
Fix static function not found from parameterized extends class ( #7204 ) ( #7208 )
2026-03-06 16:23:02 -05:00
Rahul Behl
efa53189ea
Support constraint `with` item.index array reduction ( #7198 )
2026-03-06 05:14:55 -05:00
Geza Lore
cedec65c39
Change array tracing to always dump left index to right index ( #7205 )
...
Also add array bounds and struct/union member counts to trace pushPrefix
(not used by vcd/fst/saif). Together these improve consistency in some
waveform formats.
2026-03-06 09:32:08 +00:00
Wilson Snyder
b89d29cab9
* Support procedural concurrent assertion simple cases ( #6944 ).
...
Fixes #6944 .
2026-03-05 20:03:48 -05:00
github action
fb00eb3bc6
Apply 'make format'
2026-03-05 21:06:48 +00:00
Julian Carrier
45a5e72509
Fix recursive default assignment for subarrays ( #4589 ) ( #7202 )
2026-03-05 16:05:54 -05:00
Geza Lore
4f4d48e9d7
Fix library/hier_block tracing when top name is empty ( #7200 )
2026-03-05 08:44:41 -05:00
Ryszard Rozak
258629634c
Support force assignments to array elements of real type ( #7048 )
2026-03-05 08:37:20 -05:00
Nick Brereton
e5ad9b3a4b
Support Z non-blocking assignment ( #7192 ) ( #496 ) ( #7197 )
2026-03-04 22:39:05 -05:00
Wilson Snyder
572f50126b
Improve function call argument error to show target function (rewording)
2026-03-04 20:22:25 -05:00
Wilson Snyder
c93f5256d4
Fix string cast on array call
2026-03-04 20:12:10 -05:00
Wilson Snyder
1bf2ea7643
Improve function call argument error to show target function
2026-03-04 19:01:01 -05:00
Igor Zaworski
7acd73fede
Fix super constructor calls with local variables, by using init functions ( #6214 ) ( #6933 )
2026-03-04 17:55:55 -05:00
em2machine
c34cd6ddf1
Fix missing scope when calling package function ( #7128 repair) ( #7188 ) ( #7190 )
2026-03-04 15:37:55 -05:00
Rahul Behl
9a5c1d27c8
Support array reduction methods with 'with' clause in constraints ( #6455 ) ( #6999 )
2026-03-04 12:01:35 -05:00
Nick Brereton
44701201ac
Support inout inside SV interface ( #3466 ) ( #7134 )
2026-03-04 09:08:07 -05:00
jalcim
7cf539cf05
Add --func-recursion-depth CLI option ( #7175 ) ( #7179 )
2026-03-04 06:46:07 -05:00
Yilou Wang
3bc73cc768
Support constraint imperfect distributions ( #6811 ) ( #7168 )
2026-03-03 11:23:14 -05:00
em2machine
5f3d475736
Internals: Minor coverage improvement as followup to ( #7128 followup) ( #7184 )
2026-03-03 11:13:32 -05:00
em2machine
5821d0697c
Fix interface localparam dependencies and arbitrary nesting ( #6936 ) ( #7128 )
2026-03-03 06:55:59 -05:00
Yilou Wang
ed84f3adb2
Support constraints on fixed-size array of class object members ( #7170 ) ( #7183 )
2026-03-03 06:27:31 -05:00
jalcim
d406efdcf9
Fix recursive constant function in $unit scope ( #7174 ) ( #7178 )
2026-03-02 15:15:34 -05:00
Wilson Snyder
251d1835cf
Internals: Comment to explain stray emit semicolon
2026-03-02 11:26:48 -05:00
Yilou Wang
8a413b3ec7
Fix std::randomize() in static function with static class members ( #7167 ) ( #7169 )
2026-03-02 05:59:00 -05:00
Yilou Wang
108d209bd7
Support soft constraint solving with last-wins priority ( #7124 ) ( #7166 )
2026-03-01 15:16:55 -05:00
Wilson Snyder
192445097a
Internals: Fix non-determinism in V3Delayed, V3SplitVar, V3Task ( #7120 partial) ( #7165 )
2026-03-01 11:59:29 -05:00
Geza Lore
6c48b3282e
Enable V3LiftExpr with code coverage ( #7164 )
2026-03-01 15:04:49 +00:00
Geza Lore
3249fd8cc0
Internals: Mark Premit temporaries funcLocal, noReset ( #7160 )
2026-03-01 14:56:21 +00:00
Geza Lore
97838325cd
Fix scheduling non-determinism ( #7120 partial) ( #7162 )
2026-03-01 07:44:59 -05:00
Geza Lore
77ce9cec1e
Optimize conditional merging across some impure statements ( #7159 )
...
- Allow reordering pure statements with DPI import calls iff no public
variables (including those read via a DPI export) are involved. This
ensures the DPI import can't observe the reordering
- Allow reordering of pure statements with AstDisplay and AstStop. This
requires an assumption that AstDisplay and AstStop will not read or
write model state other than via a VarRef explicitly present int the
Ast.
Overall this allows eliminating a lot of conditionals around assertions,
which were previously not possible.
2026-03-01 05:47:05 -05:00
Geza Lore
26eac21432
Internals: Use existing astgen type info for ASTGEN_MAX_NODE_SIZE ( #7161 )
2026-03-01 05:33:30 -05:00
Wilson Snyder
e9dd6eaaf0
Internals: Fix VL_ALLOC_RANDOM_CHECKS with multiple threads
2026-02-28 20:24:09 -05:00
Wilson Snyder
e23c7a510e
Internals: Add VL_ALLOC_RANDOM_CHECKS
2026-02-28 18:21:51 -05:00
Geza Lore
098fe96643
Add V3LiftExpr pass to lower impure expressions and calls ( #7141 )
...
Introduce new pass that converts impure expressions, or those with
function and method calls into simple assignment statements. Please see
the blurb at the top of the file why this is useful and how it works.
In particular currently it enables more Dfg optimization as functions
will be inlined without AstExprStmt.
Ideally we should enforce this lowering is applied to every procedural
statement (there are still a handful of exceptions). With that, long
term with this pass + #6820 , there should be no need to ever use an
AstExprStmt past this new lowering pass, which should enable more easier
optimization down the line.
Also ideally this should be run earlier. Currently it's after V3Tristate
as that calls pinReconnectSimple so we don't have to touch Cell ports.
Currently disabled when code coverage is enabled due to #7119 .
2026-02-28 22:20:09 +00:00
Geza Lore
2ceea267e5
Fix eliminating assignments to DPI-read vaiables ( #7158 )
2026-02-28 10:09:01 -05:00
Pawel Kojma
face700f29
Improve assignment-compatibility type check ( #2843 ) ( #5666 ) ( #7052 )
2026-02-28 09:55:06 -05:00
Geza Lore
139bdc1ae3
Optimize function call return value temporaries ( #7152 )
2026-02-28 09:54:39 -05:00
Szymon Gizler
1af7fa92c2
Optimize size of trace declaration object code ( #7150 )
2026-02-28 09:54:08 -05:00
Ryszard Rozak
6f892d58ac
Fix forcing unpacked variables ( #7149 )
2026-02-28 09:53:41 -05:00
Kamil Danecki
df6b808c49
Fix parameters inside std::randomize `with` clause ( #7140 )
2026-02-28 09:53:05 -05:00
Todd Strader
8705bc56c8
Fix errant integer promotion ( #7012 )
2026-02-28 09:52:35 -05:00
Nick Brereton
02c1dbc5dc
Fix lambda coroutines ( #6106 ) ( #7135 )
2026-02-28 09:52:02 -05:00
Geza Lore
1716423d07
Internals: Fix invalid use of user1 in V3Const ( #7157 )
2026-02-28 09:51:07 -05:00
Wilson Snyder
1e6c1ab106
Add VPI callback support to --main ( #7145 ).
...
Fixes #7145 .
2026-02-28 09:42:28 -05:00
Wilson Snyder
af65a85a1e
Fix function locals in display %p
2026-02-26 18:12:12 -05:00
Wilson Snyder
22290a74c2
Fix class initial-automatic insertion order ( #7086 repair)
2026-02-25 19:01:19 -05:00
em2machine
d658517715
Change type definition error to show type chain with source context ( #7151 )
2026-02-25 14:47:13 -05:00
AUDIY
10eafb9b3f
Add coverage type information to verilator_coverage annotation output ( #7131 ) ( #7133 ).
...
Fixes #7131 .
2026-02-24 20:59:42 -05:00
Gilberto Abram
826b03c21f
Fix segfault in EmitCSyms::getSymCtorStmts ( #7142 ) ( #7143 )
2026-02-24 14:08:01 -05:00
Wilson Snyder
7607f0e7fa
Support proper automatic/static initialization, and remove STATICVAR warning ( #6405 ). ( #7086 )
2026-02-24 14:04:43 -05:00
Todd Strader
6a5d3b0b72
Add --max-replication option ( #7139 )
2026-02-23 16:51:37 -05:00
Geza Lore
f7c5454d91
Internals: Strengthen AstNodeExpr operand types ( #7138 )
2026-02-23 20:55:08 +00:00
Geza Lore
8c7f08dfc3
Fix inlining of CFuncs with reloop locals ( #7132 )
...
The recent V3InlineCFuncs only checks AstCFunc::varsp for locals, but
V3Reloop used to insert them into AstCFunc::stmtsp resulting in multiple
locals with the same name being inlined into the caller if the stars
align. Fix Reloop. Such things will also go away with #6280 .
2026-02-23 17:35:15 +00:00
Wilson Snyder
7c923bb330
Internals: Fix hasher message
2026-02-23 03:34:37 -05:00
Geza Lore
1e5a6901c8
Internals: Make AstWith explicit in AstCMethodHard ( #7129 )
...
This makes it consistent with other usage in NodeFTaskRef. Also AstWith
is no longer a NodeExpr.
2026-02-22 15:38:28 -05:00
Geza Lore
da51021b0a
Internals: Simplify AstForeach header handling ( #7126 )
...
Rename AstSelLoopVars to AstForeachHeader, and make it a non-NodeExpr.
Tweak parser to always create an AstForeachHeader, so no need to fix it
up later.
2026-02-22 18:57:12 +00:00
Yilou Wang
1717df0261
Support solve..before constraints ( #5647 ) ( #7123 )
2026-02-22 11:33:18 -05:00
Geza Lore
350966de6b
Internals: Remove all AstClassOrPackageRef in V3Width ( #7125 )
2026-02-22 11:26:44 -05:00
Geza Lore
579acced99
Internals: Make AstArg into an AstNode, not Expr ( #7122 )
2026-02-22 14:40:51 +00:00
Yilou Wang
443678d8c4
Support array reduction methods without 'with' clause in constraints for dynamic arrays ( #7104 ) ( #7108 )
2026-02-22 09:23:02 -05:00
Yilou Wang
79e1f33173
Fix new <obj> shallow copy not preserving polymorphic runtime type ( #7105 ) ( #7109 )
2026-02-22 09:22:37 -05:00
Geza Lore
78ee787bb1
Internals: Clean up AstArg usage in AstNodeFTaskRef ( #7121 )
...
- Strengthen type of AstNodeFTaskRef::pinsp to be List[AstArg]
- Rename 'pinsp' to 'argsp'
- Add default constructor arguments
2026-02-22 10:38:37 +00:00
Geza Lore
e023113b79
Internals: Carry 'with' clause as op4 on AstNodeFTaskRef ( #7114 )
...
op4 is now available to carry the 'with' clause explicitly instead of
being part of the argument lit. Will strengthen 'pinsp' to be
List[AstArg] next.
2026-02-22 09:15:28 +00:00
github action
03ed6a5bd3
Apply 'make format'
2026-02-21 05:44:17 +00:00
Alex Zhou
a4ad255438
Fix extending class by a typedef ( #6679 ) ( #6855 )
2026-02-21 11:13:22 +05:30
Yilou Wang
f25a85ea57
Fix associative array size() constraint generating invalid resize() call ( #7103 ) ( #7112 )
2026-02-20 10:54:02 -05:00
Yilou Wang
e0edb49f7a
Support 'this' keyword inside inline randomize() with {} constraint blocks ( #7102 ) ( #7113 )
2026-02-20 10:53:34 -05:00
Geza Lore
52a6de29cb
Internals: Remove unused AstNodeFTaskRef::namep() ( #7110 )
2026-02-20 10:52:54 -05:00
Wilson Snyder
2d86f1373e
Support vpiBitVar ( #7107 ).
...
Fixes #7107 .
2026-02-20 05:39:38 -05:00
Wilson Snyder
ace9a34c10
Internal: Fix clang override warning ( #7106 repair).
2026-02-19 21:34:17 -05:00
Wilson Snyder
0d2fcfd49d
Fix circular class reference %p-printing causing infinite recursion ( #7106 ).
...
Fixes #7106 .
2026-02-19 20:15:37 -05:00
Geza Lore
4a4f8c6698
Optimize continuous assignments with function on RHS in Dfg ( #7096 )
2026-02-19 18:21:55 +00:00
Igor Zaworski
69564078da
Fix determinism of AwaitBeforeTrigVisitor ( #6932 repair) ( #7101 )
2026-02-19 18:21:40 +00:00
Ryszard Rozak
ff3028aca3
Support `disable iff` with sequences ( #7090 )
2026-02-19 11:33:30 +01:00
Yilou Wang
0e26b049ea
Support function calls with random arguments in constraints ( #7061 ) ( #7083 )
2026-02-19 15:37:55 +05:30
Ryszard Rozak
f843780aad
Add UNSUPPORTED on $sampled in sensitivity list ( #7093 )
2026-02-19 08:36:21 +01:00
Wilson Snyder
702d6ede09
Fix time to not advance after `$finish` ( #7095 ).
...
Fixes #7095 .
2026-02-18 19:36:36 -05:00
Geza Lore
2cd8dc6cf7
Optimize functions inlined from packages in Dfg ( #7091 )
2026-02-18 19:11:33 +00:00
Todd Strader
cf1de0b9a8
Fix interface internal type reference ( #6920 ) ( #6966 )
2026-02-18 09:38:42 +05:30
Artur Bieniek
da28c67e60
Fix #0 delays to control fork scheduling ( #6730 repair) ( #6891 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2026-02-17 21:51:11 -05:00
Geza Lore
7176bdcff6
Optimize always blocks using local temporary variables in Dfg ( #7085 )
...
Enable synthesis of blocks that use a variable only within certain
branches, if that variable is not externally observable.
2026-02-17 20:00:55 +00:00
Ryszard Rozak
5d0352ab46
Fix conditional expressions in constraints ( #7087 )
2026-02-17 11:40:15 -05:00
Wilson Snyder
9049c93009
Internals: Call common V3NUmber function to zero data type. Cleanup chandle clearling.
2026-02-17 06:18:57 -05:00
Geza Lore
a1a9147267
Optimize straight line code in Dfg always ( #7084 )
2026-02-17 11:17:52 +00:00
Geza Lore
5834f22944
Optimize logic and variable removal early in Dfg ( #7081 )
...
After conversion of Ast to Dfg, but before synthesizing AstAlways into
primitives, run a pass to remove variables that are not observable, and
all logic that only computes such variables. This can get rid of a lot
of content early so we don't build redundant Dfgs, and also enables
synthesizing always blocks that use temporaries only in some branches,
which will come in a follow up.
2026-02-17 08:28:06 +00:00
Wilson Snyder
7182e8d937
Internals: Track what variables get user initial assignment.
2026-02-17 02:05:05 -05:00
Wilson Snyder
6c5dee5043
Change automatic variables to not be traced.
2026-02-17 01:38:39 -05:00
Yilou Wang
ed3aa43657
Fix enum variables in constraint solver producing invalid enum values ( #7058 ) ( #7065 )
2026-02-16 22:44:38 -05:00
Yilou Wang
4357aee09a
Fix randomize() on null object handle crashing instead of returning 0 ( #7059 ) ( #7066 )
2026-02-16 22:43:57 -05:00
Yilou Wang
5173f7e42f
Fix inside operator crash with impure expression and unsized range literals ( #7063 ) ( #7067 )
2026-02-17 08:33:31 +05:30
Yilou Wang
994ef82e76
Support unique constraint on explicit array element subsets ( #7057 ) ( #7064 )
2026-02-16 19:46:46 -05:00
Artur Bieniek
7fc428f518
Fix randomize() null pointer dereference ( #7026 )
2026-02-16 19:43:59 -05:00
Ryszard Rozak
8491d6a80c
Support force assignments to unpacked structs ( #7060 )
2026-02-17 05:35:07 +05:30
Wilson Snyder
c21498293e
Internals: Minor cleanups preparing for initialization fixes.
2026-02-16 08:10:29 -05:00
Wilson Snyder
14a94b6de9
Internals: Add addNextNull. No functional change intended.
2026-02-16 08:09:29 -05:00
Kamil Danecki
821eacebea
Support power expressions with constant exponent in constraints ( #7073 )
2026-02-16 06:01:24 -05:00
Srinivasan Venkataramanan
7c1b348b41
Support `$get_initial_random_seed` ( #7056 ) ( #7069 ).
...
Fixes #7056 .
2026-02-16 05:57:44 -05:00
Geza Lore
505d33b35a
Support #0 delays with IEEE-1800 compliant semantics ( #7079 )
...
This patch adds IEEE-1800 compliant scheduling support for the Inactive
scheduling region used for #0 delays.
Implementing this requires that **all** IEEE-1800 active region events
are placed in the internal 'act' section. This has simulation
performance implications. It prevents some optimizations (e.g.
V3LifePost), which reduces single threaded performance. It also reduces
the available work and parallelism in the internal 'nba' section, which
reduced the effectiveness of multi-threading severely.
Performance impact on RTLMeter when using scheduling adjusted to support
proper #0 delays is ~10-20% slowdown in single-threaded mode, and ~100%
(2x slower) with --threads 4.
To avoid paying this performance penalty unconditionally, the scheduling
is only adjusted if either:
1. The input contains a statically known #0 delay
2. The input contains a variable #x delay unknown at compile time
If no #0 is present, but #x variable delays are, a ZERODLY warning is
issued advising the use of '--no-sched-zero-delay' which is a promise
by the user that none of the variable delays will evaluate to a zero
delay at run-time. This warning is turned off if '--sched-zero-delay'
is explicitly given. This is similar to the '--timing' option.
If '--no-sched-zero-delay' was used at compile time, then executing
a zero delay will fail at runtime.
A ZERODLY warning is also issued if a static #0 if found, but the user
specified '--no-sched-zero-delay'. In this case the scheduling is not
adjusted to support #0 , so executing it will fail at runtime. Presumably
the user knows it won't be executed.
The intended behaviour with all this is the following:
No #0 , no #var in the design (#constant is OK)
-> Same as current behaviour, scheduling not adjusted,
same code generated as before
Has static #0 and '--no-sched-zero-delay' is NOT given:
-> No warnings, scheduling adjusted so it just works, runs slow
Has static #0 and '--no-sched-zero-delay' is given:
-> ZERODLY on the #0 , scheduling not adjusted, fails at runtime if hit
No static #0 , but has #var and no option is given:
-> ZERODLY on the #var advising use of '--no-sched-zero-delay' or
'--sched-zero-delay' (similar to '--timing'), scheduling adjusted
assuming it can be a zero delay and it just works
No static #0 , but has #var and '--no-sched-zero-delay' is given:
-> No warning, scheduling not adjusted, fails at runtime if zero delay
No static #0 , but has #var and '--sched-zero-delay' is given:
-> No warning, scheduling adjusted so it just works
2026-02-16 03:55:55 +00:00
Geza Lore
a0b89dde8e
Internals: Make AstCAwait an AstNodeStmt ( #6280 ) ( #7078 )
...
AstCAwait is only ever uses in statement position, so model it as a
statement. We should never ever have a coroutine that returns a value.
There is no need for it in SV, nor should we rely on it for internals.
Also reworks the fix for V3Life incorrectly constant propagating the
beforeTrig functions (#7072 ). The property that upsets V3Life is that
a function:
1. Is called from multiple static call sites (multiple AstCCall)
2. Reads model state directly (AstVarRef to non-locals/arguments)
Such function can only be created internally after scheduling (V3Task
throws an unsupported error on a non-inlined function that reads model
state), so added a flag to AstCFunc to mark the dangerous ones for
V3Life.
2026-02-14 20:15:32 +00:00
Geza Lore
be27811a10
Optimize: Remove redundant variables during Dfg Peephole pass ( #7076 )
...
Many rules in the Dfg Peephole pass check if a node has more than one
sinks. Redundant variables that will ultimately be removed can prevent
these from matching. Remove such variables during the Peeophole pass
itself to enable more matches.
2026-02-14 12:33:20 +00:00
Geza Lore
a45a058b09
Optimize additional DFG peephole Shift and Concat patterns ( #7077 )
2026-02-14 07:25:17 -05:00
Geza Lore
e0c626e48a
Fix constant propagating DPI-written variables ( #7074 )
2026-02-13 18:28:14 +00:00
Igor Zaworski
7d71c3bb76
Fix of event triggering with V3Life ( #6932 effect) ( #7068 partial) ( #7072 )
2026-02-13 11:01:19 -05:00
Geza Lore
0aaf17acfd
Internals: Add referencing flags in Dfg dumps
2026-02-13 14:20:38 +00:00
Pawel Kojma
64511d30b6
Internals: Fix marking `AstVar`s as class members ( #7070 )
2026-02-13 07:45:13 -05:00
Geza Lore
3dd2b762e7
Fix scope tree in traces in hierarchical mode ( #7042 )
2026-02-12 20:54:03 -05:00
Todd Strader
fed41aba91
Fix UNUSED / UNDRIVEN for unused functions ( #6967 )
2026-02-12 11:01:14 -05:00
Yilou Wang
9b1b9a5b3b
Fix randc cyclic behavior broken with constraints ( #7029 ) ( #7035 )
2026-02-12 10:58:04 -05:00
Igor Zaworski
446bec3d1a
Fix event triggering ( #6932 )
2026-02-11 10:35:59 -08:00
Yilou Wang
e41436bd4a
Support inherited and nested pre/post_randomize callbacks ( #7049 ) ( #7053 )
2026-02-11 09:33:57 -08:00
Yilou Wang
554fcef627
Fix rand_mode()/constraint_mode() when used as function arguments ( #7051 ) ( #7055 )
2026-02-11 09:33:09 -08:00
Yilou Wang
996a4b6e1a
Fix constraint_mode()/rand_mode() in constructor being overwritten by init code ( #7054 )
2026-02-11 09:32:08 -08:00
Yilou Wang
84350859e0
Support System Functions in Constraint Blocks ( #7028 ) ( #7036 )
2026-02-11 05:19:25 -08:00
Pawel Kojma
5d12ae3a2f
Fix non-member identifiers used inside constraints ( #7033 )
2026-02-11 05:18:24 -08:00
Wilson Snyder
67bff893bf
Fix whitespace
2026-02-10 20:17:22 -05:00
Yilou Wang
2bb807a931
Fix Inline foreach constraints on dynamic arrays of class objects ( #7030 ) ( #7037 )
2026-02-10 15:22:31 -08:00
Geza Lore
a031dd1a22
Fix tracing without module inlining to match with inlining ( #7041 )
...
This is an attempt to generate an identical trace file scope hierarchy
both with and without -fno-inline. Primarily because it's needed for
testing in upcoming patch, but also improves consitency prior to #7001
2026-02-10 21:05:41 +00:00
Yilou Wang
925543676e
Fix rand_mode() on nested object variables causes Z3 solver error ( #7031 ) ( #7034 )
2026-02-10 13:59:09 -05:00
Yilou Wang
8791e6c5f2
Support constraint_mode() on static constraints ( #7027 ) ( #7038 )
2026-02-10 13:58:35 -05:00
Ryszard Rozak
6303eb45ce
Fix multidim dynamic array elements passed to ref argument ( #7023 )
2026-02-10 08:46:04 +01:00
Igor Zaworski
a660fa54a7
Fix unique constraint in derived class ( #7022 )
2026-02-09 09:56:38 -05:00
Leela Pakanati
e36838ad8e
Fix tristate enables for -fno-inline ( #7016 ) ( #7019 )
2026-02-08 22:47:09 -05:00
Wilson Snyder
5a236dd35d
Change INITIALSTATIC to also report on processes, per IEEE ( #7020 )
2026-02-08 20:47:12 -05:00
Wilson Snyder
9ba625225d
Internals: Minor cleanups preparing for initialization fixes. No functional change.
2026-02-08 17:54:04 -05:00
Wilson Snyder
8700617fae
Internals: Cleanup CRESET verilog and other misc fixes
2026-02-08 17:53:56 -05:00
Geza Lore
3752102879
Internals: Clean up V3Reorder ( #7015 )
...
This is primarily cleanup, but there are 2 functional changes included:
- It used to accidentally reorder bodies of AstNodeIf that were outside
an AstAlways. Now it will not touch anything outside an AstAlways.
- Removed one redundant edge from the graph which perturbs the result of
V3Graph::acyclic. This should make no difference for the actual
intended result of reordering NBAs to eliminate shadow variables.
2026-02-08 16:09:53 +00:00
Wilson Snyder
e12c62c070
Change JSON dumps to not include booleans that are false ( #6977 ).
...
Fixes #6977 .
2026-02-08 07:59:55 -05:00
Wilson Snyder
0c83594e1e
Fix variable conflict when multiple cells with unused input defaults
2026-02-07 18:11:55 -05:00
Wilson Snyder
bbb231dfe2
Internals: Minor cleanups preparing for initialization fixes. No functional change.
2026-02-07 14:16:12 -05:00
Geza Lore
bb0e1c8c61
Optimize temporary insertion for concatenations in Dfg ( #7013 )
...
Add a new Dfg pass 'pushDownSel'. This will try to move selects through
a tree of concatenations in order to eliminate temporary nodes holding
intermediate concatenation results. This can get rid of a lot of
variables when packed arrays are assigned in parts (e.g. bit-wise).
2026-02-07 18:06:12 +00:00
Geza Lore
6100c39764
Internals: Assign trace codes starting from zero ( #7007 )
...
Use uint32_t max value instead of zero as sentinel value for a trace
code being unassigned. Prep for follow on patch.
Note the actual trace file will still start codes from one, the codes
in the model are just an offset from the base code.
2026-02-07 14:01:53 +00:00
Igor Zaworski
dc26dd601d
Fix internal error - virtual interface not found ( #7010 )
2026-02-06 22:20:10 +00:00
Pawel Kojma
9a8538fafa
Support signed multiplication in constraints ( #7008 )
2026-02-06 10:14:54 -05:00