Geza Lore
c878a7e735
Optimize VL_ONEHOT
...
Equivalent to `__builtin_popcount(_) == 1` and a few instructions
shorter.
2026-06-03 11:24:34 +01:00
Geza Lore
7b45b3ee8a
Optimize string formatting runtime functions
...
Add an overload that takes `const char*` format string. This avoids
having to construct/destruct a temporary `std::string` at the call site
when calling these functions with a string literal, which is fairly
common. This is worth 25% code size on some assertion heavy design.
Also use `std::string::clear()` instead of assigning an empty string
which is more efficient.
2026-06-03 11:18:38 +01:00
Geza Lore
715f5f0c13
Optimize $sformatf into $sformat ( #7701 )
...
Turn `x = $sformatf(...)` into `$sformat(x, ...)`. The former requires
checking and running a destructor for `x` at the call site, the later
does it in the callee VL_SFORMAT. This reduces the size of the call
site, which can be significant e.g. in the presence of many assertions.
Also added a rewrite of `$sformat(x, "const-string")` back into `x =
"const-string"` for the cases where the `$sformatf` would have been
folded into a constant string.
2026-06-03 08:43:05 +01:00
Geza Lore
efb83c55de
Optimize VL_SFORMAT when result is string ( #7702 )
...
Omit unused bit width parameter. Emit rule is simple enough to change
and the unused parameter just bloats code size.
2026-06-03 08:42:48 +01:00
Geza Lore
970e7983d3
Optimize $sformat in V3Life ( #7703 )
...
Treat AstSFormat as a special form of assignment in V3Life. This allows
eliminating earlier redundant assignments to strings when an $sformat
later sets the string. UVM has lot of these.
2026-06-03 08:41:58 +01:00
Geza Lore
0026a73ca0
Optimize DPI import argument passing ( #7704 )
...
Pass inputs to DPI import wrappers by reference (unless fits in a
register). This eliminates a lot of temporary constructors/destructors.
2026-06-03 08:41:33 +01:00
Krzysztof Bieganski
7664bbb3ef
Support generic interface arrays ( #7604 )
2026-06-02 22:28:50 -04:00
github action
0c9448dadd
Apply 'make format'
2026-06-02 20:47:02 +00:00
Tracy Narine
ee793669c5
Support MacOS lldb ( #7697 )
2026-06-02 16:42:42 -04:00
Igor Zaworski
fe4adfe273
Support process::self().srand() ( #7695 )
2026-06-02 12:00:27 -04:00
Kamil Danecki
802efd579a
Fix t_class_param type invalid array access ( #7615 repair) ( #7653 ) ( #7693 )
2026-06-02 09:01:05 -04:00
Geza Lore
c079aa0b17
Optimize wide conditional expansion in V3Premit ( #7691 )
...
V3Premit extracts wide sub-expressions via temporaries, which is needed
for emitting wide operations to C++ (calls to `VL_*_W`). The previous
version used to extract both branches of an AstCond unconditionally,
meaning both branches were fully evaluated. Rewriting the AstCond into
an AstIf instead enables evaluating only the required branch. While
this does limit V3Subst, overall the resulting code is ~3% faster,
and contains ~25% fewer branches on a large design.
2026-06-01 20:25:41 +01:00
Yilou Wang
39b9901032
Support weak `until` / `until_with` property operators ( #7290 ) ( #7548 ) ( #7685 )
...
Fixes #7290 . Fixes #7685 .
2026-06-01 14:50:13 -04:00
Wilson Snyder
e965fb92de
Fix skipping nulls in $sscanf ( #7689 ).
...
Fixes #7689 .
2026-05-31 17:25:28 -04:00
Wilson Snyder
72ed55b180
Support strength on buf/not
2026-05-31 08:54:29 -04:00
Wilson Snyder
5def7c2b5d
Commentary: Changes update
2026-05-31 07:16:30 -04:00
Paul Swirhun
1eb12685a7
Support streaming into 2-D unpacked arrays ( #7686 ) ( #7687 )
...
Fixes #7686 .
2026-05-30 22:08:32 -04:00
github action
e2063e7ac0
Apply 'make format'
2026-05-30 19:36:22 +00:00
Muzaffer Kal
57fa98e52c
Fix TSP variable ordering for mtasks ( #5342 ) ( #7610 )
...
Fixes #5342
2026-05-30 15:35:12 -04:00
Wilson Snyder
2ccaae77ae
Fix CONTASSINIT false positive on wire inside two different instantiations
...
Fixes #7640 .
2026-05-30 15:23:02 -04:00
Wilson Snyder
99a24c7f39
Commentary: Changes update
2026-05-30 15:16:41 -04:00
Wilson Snyder
2d16ca375d
Tests: Rename t_lint_contassinit
2026-05-30 14:48:01 -04:00
Yilou Wang
fa0f814686
Fix biased bit distribution under value < (1 << N) constraints ( #7563 ) ( #7684 )
...
Fixes #7563
2026-05-30 13:00:35 -04:00
Nick Brereton
125bdb45f5
Support pre/post increment/decrement inside && and || ( #7683 )
2026-05-29 19:51:27 -04:00
Geza Lore
9455dddab4
Optimize if branches with same trailing statements ( #7674 )
...
If the same statements appears in both branches of an 'if', put a single
copy after the 'if', apply recursively. This also has the effect of
getting rid of conditionals with identical branches, but is more widely
applicable.
2026-05-29 11:26:07 +01:00
Nick Brereton
5d344ab8ff
Fix parameter read through locally-declared interface instance ( #7679 )
2026-05-28 21:20:49 -04:00
em2machine
3d126b77cd
Fix for access to parameters via class::localparam ( #7609 ) ( #7671 )
2026-05-28 17:40:18 -04:00
Zubin Jain
77f0883b06
Fix forceable signal with a procedural continuous assign ( #7638 ) ( #7639 )
2026-05-28 16:03:27 -04:00
Geza Lore
557dda3396
Fix AstNodeFTaskRef equivalence check ( #7673 )
2026-05-28 20:33:41 +01:00
Artur Bieniek
45fae00064
Fix width of unsized literal in property expression ( #7668 )
2026-05-28 15:10:25 -04:00
Geza Lore
55d78b225d
Fix signing off new MULTIDRIVEN warnigns on variable ( #7672 )
2026-05-28 13:34:36 -04:00
Artur Bieniek
3a91b333c3
Fix loss of events due to bit shift ( #7670 )
2026-05-28 12:45:18 -04:00
Tracy Narine
f52fb1f1db
Tests: Simplify t_runflag_logfile_open_bad.py ( #7669 )
...
Fixes #7667
2026-05-28 12:43:07 -04:00
Pawel Kojma
70045433c9
Fix reserved keywords reaching emitter ( #7666 )
2026-05-28 10:04:14 -04:00
github action
3bc7021211
Apply 'make format'
2026-05-28 11:21:07 +00:00
Cookie
b5555a032e
Internals: clean up for redundant m_alwCombFileLinep and m_nodeFileLinep variables ( #7665 )
2026-05-28 07:20:06 -04:00
Geza Lore
cd83e40be5
Fix runtime speed summary report
...
Repost speed as 'simtime'/'walltime' instead of dividing by 'cputime'
('cputime' is ~ 'threads * walltime' in multi-threaded mode)
2026-05-28 07:20:54 +01:00
em2machine
29d2f522bf
Fix internal error when handling typedefs containing parameterized class type members ( #7635 ) ( #7661 )
...
Fixes #7635 .
2026-05-27 12:17:49 -07:00
Tracy Narine
a2fae5eb4b
Add `+verilator+log+file` ( #4505 ) ( #7645 )
...
Fixes #4505 .
2026-05-27 14:33:19 -04:00
github action
62f475709f
Apply 'make format'
2026-05-27 12:35:09 +00:00
Cookie
8ae0e48103
Fix false MULTIDRIVEN warning on always_ff variables ( #7351 ) ( #7621 )
2026-05-27 08:34:11 -04:00
Bartłomiej Chmiel
c9e012ba9a
Internals: Suppress clang-tidy warnings in macros ( #7656 )
2026-05-27 05:16:49 -07:00
github action
291141777e
Apply 'make format'
2026-05-27 07:26:42 +00:00
Nikolai Kumar
cd532e0e79
Fix dropped iff guard on clocking inside task ( #7658 ) ( #7659 )
...
Fixes #7658
2026-05-27 00:24:54 -07:00
github action
99a35fee83
Apply 'make format'
2026-05-26 16:21:12 +00:00
Cookie
9460501221
Add NOTREDOP error on reduction and negation operators ( #7417 ) ( #7623 ) ( #7624 )
2026-05-26 12:20:15 -04:00
Cookie
9e2fedee6f
Fix ALWCOMBORDER on variable ordering ( #7350 ) ( #7608 )
2026-05-26 06:40:55 -04:00
em2machine
a2d4b90b52
Fix dearray varref scope error ( #7530 ) ( #7602 )
...
Fixes #7530 .
2026-05-25 17:48:31 -04:00
Yogish Sekhar
8872908704
Tests: Update tests to include parameterized modules ( #7655 )
2026-05-25 17:46:54 -04:00
Yilou Wang
86799ace5d
Fix wrong false assert for property local variables with cycle-delayed consequents ( #7587 ) ( #7651 )
...
* Fix wrong false assert in property local variable with cycle-delayed consequent
* factor helper for 100 line cov
* add return, should be 100 line cov now
2026-05-25 20:13:27 +08:00