Pawel Kojma
b9ef4a6c48
Add parsing of coverpoint identifier in place of covergroup range list ( #6961 )
2026-01-30 07:05:57 -05:00
Wilson Snyder
996ae35a1b
Fix associative array of events causes C++ compile error ( #6962 ).
2026-01-29 20:38:50 -05:00
Wilson Snyder
5547833dde
Add UNSUPPORTED error on IEEE complex ports ( #2844 partial)
2026-01-28 19:14:10 -05:00
Wilson Snyder
913cf07491
Improve converge-limit error message
2026-01-28 18:32:50 -05:00
Pawel Kojma
30e6cd9092
Fix accessing non-rand struct member in constraints ( #6960 )
2026-01-28 07:33:16 -05:00
Geza Lore
7875552354
Internals: Add stats/dump of circular logic in scheduling ( #6953 )
2026-01-28 10:45:23 +00:00
Wilson Snyder
7c6c6a684b
Add SPDX copyright identifiers, and get 'reuse' clean. No functional change.
2026-01-26 20:24:34 -05:00
Wilson Snyder
d3ecba7699
Internals: Cleanup some verilog.y dead since IEEE 2017
2026-01-26 15:51:19 -05:00
Todd Strader
67df517bec
Fix type assignments for arrays of parameter types ( #6955 )
2026-01-26 15:50:52 -05:00
Wilson Snyder
1b9f38f78f
Fix parameterized virtual interface references that have no model references ( #4286 ).
...
Fixes #4286 .
2026-01-25 14:25:42 -05:00
Wilson Snyder
41b131389e
Internals: Some tristate and param cleanups. No functional change.
2026-01-25 14:19:27 -05:00
Wilson Snyder
140b2f2b2e
Internals: V3Tristate cleanups. No functional change.
2026-01-24 18:13:34 -05:00
Wilson Snyder
ad5005f8f5
Internals: Add user#Or functions. No functional change.
2026-01-24 18:10:59 -05:00
Wilson Snyder
07b61d3745
Fix internal error when fork under always expression ( #6911 ).
2026-01-23 22:11:04 -05:00
github action
2737a22793
Apply 'make format'
2026-01-24 03:01:38 +00:00
Cameron Waite
567fba3695
Fix null pointer dereference in class member trigger expressions ( #6946 )
2026-01-23 22:00:43 -05:00
Todd Strader
bc3c5b32dd
Fix delayed initial assignment ( #6929 )
2026-01-23 12:53:40 -05:00
Artur Bieniek
a7db9ee32f
Add error when accessing a non-static class field from a static function ( #6948 )
2026-01-23 10:18:24 -05:00
Wilson Snyder
ddbcd66722
Support `extern module` as a forward-declaration that is ignored.
2026-01-22 19:00:26 -05:00
Wilson Snyder
86cd249816
Add instance module location helper when pin not found
2026-01-21 07:50:46 -05:00
Pawel Kojma
c4dcdeab9a
Add parsing of solve-before inside foreach ( #6934 )
2026-01-20 07:14:11 -05:00
Vikash Patel
ea9752ab43
Fix typo in Verilator report output ("alloced" → "allocated") ( #6937 )
2026-01-19 08:31:22 -05:00
Wilson Snyder
ac4f9f013e
Fix static call after covergroup ( #6916 repair)
2026-01-18 19:58:33 -05:00
Wilson Snyder
db9bd3a792
Fix clocking unsupported tristate assign error ( #6942 ).
...
Fixes #6942 .
2026-01-18 16:28:48 -05:00
Jose Drowne
3a080ef543
Add IEEE 4-state type lint checks ( #3645 partial) ( #6895 )
2026-01-18 11:00:25 -05:00
Wilson Snyder
50b6954cfc
Internals: cppcheck cleanups
2026-01-17 23:18:09 -05:00
Wilson Snyder
b7382be0b6
Fix `--top-module` with underscores ( #6940 ).
2026-01-17 20:33:02 -05:00
Jose Drowne
12080dfcb1
Internals: Add AST nodes for tagged union parsing ( #6867 partial) ( #6881 )
2026-01-17 14:15:52 -05:00
github action
26ebb14c98
Apply 'make format'
2026-01-17 17:03:54 +00:00
Wei-Lun Chiu
3b6674386c
Support unbounded '$' in inside range expressions ( #6935 ) ( #6938 )
2026-01-17 12:03:00 -05:00
github action
f6532728f6
Apply 'make format'
2026-01-17 15:35:34 +00:00
emmettifelts
e6be548f72
Fix segfault after assignment pattern XOR error ( #6928 ) ( #6931 )
2026-01-17 10:34:36 -05:00
Wilson Snyder
913cf933e9
Fix segfault in missing extends ( #6903 ).
...
Fixes #6903 .
2026-01-16 19:57:23 -05:00
Srinivasan Venkataramanan
6fc9089a77
Support `unique` constraints (on 1D static arrays) ( #6810 ) ( #6878 )
2026-01-16 08:42:09 -05:00
Igor Zaworski
550cf4462d
Fix of dynamic scheduler temporary varable locations ( #6859 ) ( #6926 )
2026-01-15 06:53:00 -05:00
Pawel Kojma
3072907ea4
Fix unpacked array concatenation function arguments ( #6900 )
2026-01-14 16:23:55 -05:00
Artur Bieniek
4563501192
Fix error when calling non-static method ( #6916 )
2026-01-14 08:40:57 -05:00
Wilson Snyder
09ca7ea8d1
Fix emitting unbounded parameters ( #6912 ).
...
Fixes #6912 .
2026-01-12 22:56:23 -05:00
Wilson Snyder
8a24897c13
Fix `foreach` with mid-index empty commas ( #6910 ).
...
Fixes #6910 .
2026-01-12 19:17:17 -05:00
Wilson Snyder
a3d0f16185
Fix syntax error on unsupported defparam array ( #6915 ).
2026-01-12 17:34:10 -05:00
Yilou Wang
31f8be0b85
Support detailed failure info for constraint violations ( #6617 ) ( #6883 )
...
* logging for the unsatisfied constraints
* Apply 'make format'
* fix teh quote error in the array indexing
* Apply 'make format'
* Len change for the hash for randomity when named assertion is used
* seperate name assertion and satisfied case
* Apply 'make format'
* simply comments and display info
* refine code and fix protect case
* format
* update display in test and .out file
* add an enable flag and warning type, add a protect_id version test and update out files
* Apply 'make format'
* simplify some comments
* update out file, ready to be merged.
* update .py file to set the hash key solid
* rename and reformate the warning message to follow the verilator style
* add a nowarn test
* Apply 'make format'
* ordering
---------
Co-authored-by: Udaya Raj Subedi <075bei047.udaya@pcampus.edu.np>
Co-authored-by: github action <action@example.com>
2026-01-12 15:53:49 +01:00
Wilson Snyder
54b130e43f
Add check for automatic variable in continuous assignment LHS
2026-01-10 18:54:27 -05:00
Wilson Snyder
bc5b120156
Tests: Add include warnings to t_dist_warn_coverage
2026-01-10 04:08:08 -05:00
Christian Hecken
338afff23c
Support vpi_put/vpi_get forcing of signals ( #5933 ) ( #6704 ).
2026-01-10 03:48:46 -05:00
Wilson Snyder
a98eb4fa04
Internals: Add missing debug level setter.
2026-01-10 03:10:33 -05:00
Yutetsu TAKATSUKASA
b926fcb762
Improve signedness of packed array ( #6901 ) ( #6902 )
...
* Tests: Add a test whether signedness of a packed array is properly implemented.
* Fix signedness of a packed array when named type is not used.
* Fix signedness of the entire packed array.
2026-01-10 09:06:37 +09:00
Pawel Kojma
d664aec8b8
Fix segfault in V3Slice ( #6899 )
2026-01-10 06:15:01 +09:00
Wilson Snyder
3b1a7af74d
Fix WIDTHEXTEND suppression on add/sub with single-bit signal.
2026-01-09 00:25:12 -05:00
Wilson Snyder
b0fdea5535
Improve error message
2026-01-09 00:09:28 -05:00
Bartłomiej Chmiel
7e3cd8af65
Fix tracing signals with escaped dots in names ( #6897 )
2026-01-08 15:10:19 -05:00
Ryszard Rozak
97d5844f2e
Support dynamic array elements in std::randomize ( #6896 )
2026-01-08 09:02:28 -05:00
Yilou Wang
6abfaf23a5
fix access flags in MemberSel randomization assignments ( #6892 )
2026-01-08 09:02:13 +01:00
Wilson Snyder
c75fb4cdae
Improve format of runtime errors, especially DIDNOTCONVERGE
2026-01-08 01:01:54 -05:00
Ryszard Rozak
da14e7c4bb
Fix `disable iff` in simple properties ( #6890 )
2026-01-07 07:02:52 -08:00
Bartłomiej Chmiel
c7361f177b
Fix large debug_str for emitted Syms headers ( #6889 )
2026-01-07 13:18:54 +00:00
Luca Colagrande
112e1e3752
Fix overlapping case item expressions ( #6825 ) ( #6886 )
2026-01-06 15:07:25 -05:00
Geza Lore
45349990a1
Omit -v farg with --dump-inputs ( #6885 )
2026-01-06 19:07:33 +00:00
Igor Zaworski
d5784b8cf2
Trigger virtual interfaces in proper place ( #6844 )
2026-01-06 07:15:33 -05:00
Wilson Snyder
b2bcce33e8
Internals: Rename visiting class. No functional change.
2026-01-05 22:53:49 -05:00
Matthew Ballance
8c977133c6
Fix use-after-free error ( #6846 )
2026-01-05 20:06:42 -05:00
Jakub Wasilewski
72a6da5ac8
Support complex expressions as std::randomize arguments ( #6860 )
2026-01-05 14:37:36 -05:00
Yilou Wang
7023f38d12
Fix VarRef lookup for module-level variables ( #6741 ) ( #6882 )
2026-01-05 10:39:22 -05:00
Ryszard Rozak
cc11ff8c53
Fix dynamic array elements passed to ref argument ( #6877 )
2026-01-01 10:21:09 -05:00
em2machine
c388e793e0
Fix MULTIDRIVEN with task and default driver ( #4045 ) ( #6858 )
2026-01-01 10:20:21 -05:00
Wilson Snyder
40cf3c4b16
Remove deprecated `--make cmake`.
2026-01-01 09:27:20 -05:00
Wilson Snyder
a7b80966ec
Remove `--xml-only`.
2026-01-01 09:23:05 -05:00
Wilson Snyder
13327fa9c0
Copyright year update.
2026-01-01 07:22:09 -05:00
Wilson Snyder
4080284e53
Fix warning lint directive ordering and consistency ( #4185 ) ( #5368 ) ( #5610 ) ( #6876 ).
2025-12-30 20:31:34 -05:00
Wilson Snyder
2025b81614
Internals: Refactor V3Error, and handle UNDRIVEN/UNSUPPORTED/WIDTH consistently ( #6874 )
2025-12-30 07:08:25 -05:00
Kaleb Barrett
aa94219531
Support vpiSigned ( #6868 ) ( #6870 )
2025-12-29 20:12:19 -05:00
Wilson Snyder
2e394c3c04
Internals: Refactor some V3Error code handling and add tests. No functional change intended.
2025-12-29 18:17:24 -05:00
Wilson Snyder
4775399716
Commentary: spelling
2025-12-28 21:30:16 -05:00
Wilson Snyder
2318adabd3
Fix JSON output case statements ( #6733 ).
2025-12-26 22:43:06 -05:00
Wilson Snyder
7a2b20cff3
Fix formatting of %p to be spaceless
2025-12-26 21:45:52 -05:00
Wilson Snyder
b50e8bb9c1
Internals: Add '--debug-runtime-timeout'
2025-12-26 12:59:35 -05:00
Wilson Snyder
397e64903c
Fix typedef `::` class reference error ( #6862 ).
2025-12-24 10:01:46 -05:00
Wilson Snyder
1b93033690
Add `--quiet-build` to suppress make/compiler informationals.
2025-12-23 19:21:42 -05:00
Wilson Snyder
5dc05e1fa8
Internals: Update some JSON references. No functional change.
2025-12-23 10:13:23 -05:00
Krzysztof Bieganski
a2fcd37c08
Fix unsupported `if` virtual interface warning ( #6558 ) ( #6861 )
2025-12-23 10:12:34 -05:00
Wilson Snyder
f6b966ed16
Fix `randc` on extended class ( #6852 ).
2025-12-21 19:56:55 -05:00
Wilson Snyder
1d7f5ed33e
Commentary
2025-12-21 18:55:51 -05:00
Wilson Snyder
4201450a8a
Fix class reference throwing cannot detect changes error ( #6851 ).
2025-12-21 18:44:55 -05:00
Wilson Snyder
ef5ca74e94
Tests: Better handle multiline statements in t_dist_warn_coverage
2025-12-21 16:15:33 -05:00
Jose Drowne
c0a0f0dab9
Optimize inlining small C functions and add `-inline-cfuncs` ( #6815 )
2025-12-21 13:14:50 -05:00
Thomas Aldrian
361ab194ff
Internals: Modport expression parsing and tests ( #2601 partial) ( #6848 )
2025-12-21 08:58:21 -05:00
Wilson Snyder
a64b083b2a
Fix JSON missing `signed` indication ( #6845 ).
2025-12-20 22:11:09 -05:00
Wilson Snyder
ffa87540cc
Fix randcase under fork ( #6843 ).
2025-12-20 21:25:01 -05:00
Geza Lore
f990dd747e
Change metacomments to not enable warnings disabled in control file ( #6836 ) ( #6842 )
...
Track the location based message/feature enable bits separately for code
and control file directives. A message/feature is disabled if disabled
either in the control file, or in code directives/metacomments. That is,
enabled only if both agree should be enabled.
2025-12-20 06:33:46 -05:00
em2machine
3ceac0b37e
Fix parameterized class module parameters ( #6754 ) ( #6834 )
2025-12-19 12:57:15 -05:00
Pawel Kojma
5244766b7b
Support reduction or in constraints ( #6840 )
2025-12-19 12:37:20 -05:00
Yangyu Chen
47d1a50aa4
Fix setting thread count in VerilatedContext ( #6826 partial) ( #6841 )
2025-12-19 10:59:43 -05:00
Oleh Maksymenko
a098e4894f
Fix JSON dump missing output ports ( #6751 ) ( #6831 )
2025-12-19 07:30:33 -05:00
Wilson Snyder
c2c00888d6
Fix firing array selects of events ( #6829 ).
2025-12-18 20:45:22 -05:00
Wilson Snyder
24e43f4ddd
Internals: Add assertion at expected expressions ( #6829 partial)
2025-12-18 20:37:11 -05:00
Geza Lore
04a7b31b84
Fix false IMPLICITSTATIC on localparam ( #6835 )
2025-12-18 12:51:31 +00:00
Yilou Wang
41937ecbe4
Fix member select of variable without randmode ( #6800 ) ( #6833 )
2025-12-18 06:49:04 -05:00
Wilson Snyder
b90865a08a
Change `--lint-only` and `--json-only` to imply `--timing` ( #6790 ).
2025-12-17 19:24:43 -05:00
Wilson Snyder
12ff481689
REVERT 612237b7: Optimize trace code for faster compiles on repeated types ( #6707 ) ( #6832 partial).
2025-12-17 17:37:35 -05:00
Todd Strader
d10e841b56
Skip properties for expression coverage ( #6830 )
2025-12-17 13:51:40 -05:00
Yangyu Chen
bd38775ad2
V3DfgPasses: Optimize mux with UInt To OneHot ( #6822 )
...
Signed-off-by: Yangyu Chen <cyy@cyyself.name>
2025-12-17 12:07:21 -05:00
em2machine
6f43ad8607
Fix type deduction for variable parameterized classes ( #6281 ) ( #6813 )
2025-12-17 08:08:44 -05:00
Thomas Dybdahl Ahle
5115be6e6b
Fix duplicate name error with interface initial blocks ( #6804 ) ( #6805 ).
2025-12-16 20:57:58 -05:00
Wilson Snyder
41c4f948fe
Support assert under assert ( #6146 ).
2025-12-16 20:45:31 -05:00
Luca Colagrande
a9ef4b3ff1
Fix nested struct within parameter port list ( #6818 ) ( #6824 )
2025-12-16 18:08:49 -05:00
Todd Strader
35dcf70f48
Optimize trace code for faster compiles on repeated types ( #6707 )
2025-12-16 17:52:00 -05:00
Dan Ruelas-Petrisko
394d9cf168
Support `-libmap` ( #5891 partial) ( #6764 )
2025-12-16 11:21:46 -05:00
Geza Lore
47a4f7fb9b
Improve reusability of --dump-inputs output ( #6812 )
2025-12-16 11:08:19 +00:00
Ryszard Rozak
25f72e4305
Support force assignments to unpacked array elements of simple types (partial #4735 ) ( #6787 )
2025-12-16 08:35:59 +01:00
Krzysztof Bieganski
7e67f73844
Fix process reference giving no return statement error ( #6767 ) ( #6823 )
2025-12-15 18:09:45 -05:00
Alex Solomatnikov
8da8ca4203
Fix error on resized lvalues with warning suppressed ( #6497 ) ( #6816 )
2025-12-15 06:49:32 -05:00
Wilson Snyder
dc00bf2484
Fix 'void(' mis-throwing assertion
2025-12-13 21:43:27 -05:00
Wilson Snyder
27558c9349
Internals: Reorganize system function/task parse rules. No functional change.
2025-12-13 21:34:28 -05:00
Wilson Snyder
5634795140
Improve message on cast assertion failure.
2025-12-13 20:51:13 -05:00
em2machine
aff501f5c4
Fix resolution of specialized typedefs ( #6754 ) ( #6808 )
2025-12-12 15:20:15 -05:00
em2machine
2995748d46
Fix parameterized class function ( #6659 ) ( #6802 )
2025-12-12 04:17:08 -08:00
Yilou Wang
f097e8a34e
Fix write variable placement for global constraints ( #6740 ) ( #6750 ) ( #6797 )
2025-12-11 14:16:34 -05:00
Geza Lore
af1be26b96
Fix O(n*2) analysis in const-bit-op-tree ( #6791 )
...
Note this might miss some cases where a sub-tree within an And/Or/Xor
tree is optimizeable, but not the whole tree, but in practice this seems
to work better than the alternative of keeping a set of failed nodes and
bail early.
2025-12-11 14:32:25 +00:00
em2machine
afc4bed0f8
Fix generate function(s) inside of generate blocks ( #1011 ) ( #6789 )
2025-12-10 20:53:19 -05:00
Wilson Snyder
5d768a4a20
Internals: Fix rand dump text
2025-12-10 19:07:51 -05:00
Pawel Kojma
37318ab2bd
Fix input sampling of clocking block signals ( #6788 )
2025-12-10 10:59:08 -05:00
Wilson Snyder
075d624b29
Add SUPERNFIRST error on super.new on non-first statement ( #6784 ).
2025-12-09 19:22:59 -05:00
Ryszard Rozak
0f355c717e
Fix `disable iff` in simple properties ( #6783 )
2025-12-09 07:18:32 -05:00
Wilson Snyder
ec38fb723d
Internals: Remove added debug to avoid false leak warning
2025-12-08 21:33:21 -05:00
Wilson Snyder
a3f913c5b1
Fix randomize call in parameterized class
2025-12-08 20:26:53 -05:00
Wilson Snyder
0f46f6eb40
Internals: Fix missing override
2025-12-08 20:17:40 -05:00
Wilson Snyder
29ae520e69
Fix class param static not found again error ( #6768 ).
2025-12-08 20:11:28 -05:00
Wilson Snyder
bd87dfc579
Internals: Add --debug-exit-elab; remove --debug-exit-uvm*
2025-12-08 18:02:46 -05:00
em2machine
d0a5da2445
Fix typedef derived from type defined inside interface ( #3441 ) ( #6776 )
2025-12-08 15:36:21 -05:00
Geza Lore
7e55c62cac
Improve combinational cycle fixup in Dfg ( #6744 ) ( #6746 )
...
Now that we have an efficient algorithm to analyse which bits in a
combinational cycle are not dependent on the cycle, can simplify the
cycle fixup algorithms. Remove FixUpSelDrivers: this was a heuristic
to save on the expensive independent bits analysis, but itself can
cause a performance problem on certain inputs that result in a large
number of attempted fixups. Doing this simplifies the driver tracing
algorithm, and because we now only attempt to trace drivers that are
known to be independent of the cycles, it should always succeed...
Unless of course there is a mismatch between the independent bit
analysis ant the driver tracing algorithm. In such case (when we managed
to prove independence, but then fail to trace a driver), we will crash,
which is still easier to sv-bugpoint than a performance bug.
Fixes #6744
2025-12-08 18:43:21 +00:00
Geza Lore
1baa832efc
Fix reordering of function body inlined on RHS of <= NBA ( #6780 )
2025-12-08 18:42:52 +00:00
Christian Hecken
9a23711ff9
Fix stale pointers in VerilatedImpData::m_hierMap ( #6726 )
2025-12-07 15:42:29 -05:00
Wilson Snyder
ae480c5f76
Fix enum item references in class extends with parameters.
2025-12-07 15:26:52 -05:00
Wilson Snyder
8130fed777
Fix pre/post_randomize on extended classes ( #6467 ).
2025-12-07 14:14:48 -05:00
Wilson Snyder
ba9d6df20c
Fix class-in-class extends with parameters ( #6773 ).
2025-12-07 13:38:25 -05:00
Wilson Snyder
4b02e32314
Fix DPI under param class ( #6733 partial)
2025-12-07 13:30:54 -05:00
Wilson Snyder
7946e9d197
Internals: Add some missing cfunc attribute dumps
2025-12-07 13:25:37 -05:00
Wilson Snyder
35a794687b
Internals: Add some additional dangling checks. No functional change intended
2025-12-07 13:25:37 -05:00
Matthew Ballance
0e03ab2a57
Fix crash when super.new() called without a base class ( #6772 )
2025-12-06 18:08:51 -05:00
Wilson Snyder
040484cc3f
Fix extern function that returns parametrized class ( #4924 ).
2025-12-06 16:16:06 -05:00
Geza Lore
5278f42025
Fix Dfg assertion on out of bounds selects
2025-12-06 15:31:27 +00:00
em2machine
c2cba8bfc6
Fix localparam type assignment from interface type parameters ( #6637 ) ( #6732 )
2025-12-06 09:42:59 -05:00
github action
ba3794a495
Apply 'make format'
2025-12-06 14:12:22 +00:00
Dan Ruelas-Petrisko
8c252952db
Support `config` instance clauses ( #5891 partial) ( #6745 )
2025-12-06 09:11:20 -05:00
Geza Lore
18dd44e970
Fix --lib-create with multi-bit clocks ( #6759 )
2025-12-05 15:21:35 +00:00
Geza Lore
e2c05ae15e
Fix select assignment expansion ( #6757 )
2025-12-05 10:07:53 -05:00
Geza Lore
df7726c40d
Fix Dfg reusing volatile variables
...
Forceable/externally written variables cannot be used as the canonical
result variable for a Dfg value as the variables value can be
inconsistent with its Dfg drivers (e.g. when forced).
2025-12-05 14:12:36 +00:00
Wilson Snyder
cfada791e6
Internals: Fix leak in covergroup, last commit
2025-12-05 04:14:24 -05:00
Wilson Snyder
2f4b178957
Support parsing only of covergroup.option.option_name
2025-12-04 21:55:55 -05:00
Ryszard Rozak
f2c2daa017
Throw UNSUPPORTED on force / release statements with complex select expressions ( #6755 )
2025-12-04 14:06:47 +01:00
Yilou Wang
1fc86fd2f1
Fix randomize called within func/task ( #6144 ) ( #6753 )
...
Co-authored-by: Udaya Raj Subedi <075bei047.udaya@pcampus.edu.np>
2025-12-04 07:18:07 -05:00
Yilou Wang
22cd9bcadc
Support rand_mode in global constraint gathering ( #6740 ) ( #6752 )
2025-12-04 07:16:03 -05:00
Wilson Snyder
4426aff3d3
Internals: Fix coredump when dump with bad null enum itemp()
2025-12-03 21:35:59 -05:00
Wilson Snyder
7957701db8
Suppress unsupported for unused constant sequences
2025-12-03 21:23:48 -05:00
Matthew Ballance
3fc70b61d0
Fix internal fault when cross-class calling with DPI ( #6735 ) ( #6742 )
...
Signed-off-by: Matthew Ballance <matt.ballance@gmail.com>
2025-12-02 22:05:59 -05:00
Wilson Snyder
9a1dba357e
Fix `randsequence return` inside function
2025-12-02 17:54:40 -05:00
Geza Lore
60fe2c873c
Optimize trace initialization code size ( #6749 )
2025-12-02 07:19:45 -05:00
Yilou Wang
e25c66de07
Support complex std::randomize patterns ( #6736 ) ( #6737 )
2025-12-01 16:26:16 -05:00
Wilson Snyder
b9b6eb61d9
Support randsequence ( #6131 )
2025-11-30 09:04:42 -05:00
Geza Lore
35615c268b
Fix Dfg independent bits analysis performance ( #6731 ) ( #6743 )
...
This removes a factor N from DfgBreakCycles, by doing the necessary data
flow analysis for the entire graph up front, and resulting the result for
all subsequent cycle fixups in the current iteration.
Fixes #6731
2025-11-29 19:01:22 +00:00
Wilson Snyder
287d8aef9e
Fix duplicate member on interface always
2025-11-29 10:24:37 -05:00
Wilson Snyder
1583c79a8a
Add assert ( #6740 partial)
2025-11-28 09:55:19 -05:00
Jonathan Drolet
f2e05bc0b7
Support unpacked struct in localparam ( #6053 partial) ( #6708 )
2025-11-27 23:17:18 +04:00
Artur Bieniek
2c5ff3f63f
Fix fork scheduling semantics ( #6730 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-11-26 15:52:53 +03:00
Yilou Wang
f4654a451b
Support array reference arguments into 'std::randomize()' ( #6384 ) ( #6719 )
2025-11-26 15:50:24 +03:00
Wilson Snyder
8293a8d035
Fix multitop cross references ( #6699 ).
2025-11-26 06:09:29 -05:00
Wilson Snyder
9155e2529b
Internals: Add AstLoop statement constructor. No functional change.
2025-11-25 09:05:42 -05:00
Geza Lore
7cfe9b5356
Fix --prof-exec using --lib-create
2025-11-25 10:08:03 +00:00
Geza Lore
d2ce5e62e7
Internals: Factor out --prof-exec section handling, add debug code
2025-11-25 10:08:03 +00:00
Wilson Snyder
840c8f5782
Internals: Auto-set useRandimizeMethods if new a AstRandCase. No functional change
2025-11-23 17:14:19 -05:00
Geza Lore
6ab8d56993
Optimize combinational loops through sign extension ( #6724 )
2025-11-23 19:26:51 +00:00
github action
28c78d3f9a
Apply 'make format'
2025-11-23 01:21:13 +00:00
Dan Ruelas-Petrisko
9346b98cb6
Support `config` cell clauses ( #6717 )
2025-11-22 20:17:17 -05:00
Michael Bikovitsky
9632c614be
Fix X handling in UDPs ( #6723 )
2025-11-22 20:09:49 -05:00
Wilson Snyder
087ca15138
Support clocking output delay `1step` ( #6681 ).
2025-11-22 17:40:40 -05:00
Wilson Snyder
6bba9f6c40
Internals: Defer interface typedefs, and add more tests ( #3441 tests)
2025-11-21 19:42:22 -05:00
Igor Zaworski
98d0eac149
Fix of deleting linked node in V3Randomize ( #6718 )
...
Signed-off-by: Igor Zaworski <izaworski@internships.antmicro.com>
2025-11-21 07:07:50 -05:00
Jakub Wasilewski
0b8c369740
Add `sc_biguint` pragma ( #6712 )
2025-11-20 17:08:59 -05:00
github action
0703159dbc
Apply 'make format'
2025-11-20 11:39:49 +00:00
Dan Ruelas-Petrisko
a4e901135b
Support `config` default liblist ( #6714 )
2025-11-20 06:38:46 -05:00
Dan Ruelas-Petrisko
7edf6d4749
Support `--top` specifying `config` name ( #6710 )
2025-11-19 20:23:02 -05:00
Yilou Wang
00988aed70
Support General Global Constraints ( #6709 ) ( #6711 )
2025-11-19 11:08:42 -05:00
Wilson Snyder
e61012e30d
Improve class extends error format
2025-11-16 21:00:13 -05:00
Wilson Snyder
84173048d2
Internals: Fix hasing node informational on AstCaseItem
2025-11-16 18:37:58 -05:00
github action
59bc4cf66b
Apply 'make format'
2025-11-16 03:53:48 +00:00
Jean-Nicolas Strauss
6454a8802e
Fix stream operator widening ( #6693 ) ( #6697 )
2025-11-15 22:52:52 -05:00
Yilou Wang
048c97f0ae
Support `std::randomize(){...}` ( #4706 ) ( #6573 )
2025-11-14 14:32:01 -05:00
Ryszard Rozak
f32095dd17
Support constexpr cycle delay in sequences ( #6691 )
2025-11-14 13:48:46 +01:00
Pawel Kojma
0dce8feead
Support parsing of dotted bins_expression ( #6683 )
2025-11-14 06:41:46 -05:00
Geza Lore
43975bcbdd
Optimize $past delayed variable reuse ( #6689 )
...
As the TODO in the original code suggested, we can re-use delayed values
of expressions if they appear in multiple $past calls.
2025-11-13 17:04:50 +00:00
Geza Lore
a1056c6ae9
Add `-param`/`-port` options to `public_flat*` control directives ( #6685 )
2025-11-13 06:59:02 -05:00
Wilson Snyder
5c0ad5bd1f
Internals: cppcheck fixes. No functional change. ( #6687 )
2025-11-12 18:54:22 -05:00
Geza Lore
158f51fb54
Optimize functions reading external parameters as pure ( #6684 )
2025-11-12 08:27:42 -05:00
Geza Lore
0dc9f779f8
Add `-fno-inline-funcs-eager` option to disable excessive inlining ( #6682 )
2025-11-11 21:46:19 +00:00
Geza Lore
c5f8656aa0
Fix bounds checking in non-inlined function ( #6677 )
2025-11-11 06:47:49 -05:00
Todd Strader
34f63396cb
Fix `free` collision ( #6675 )
2025-11-10 16:44:41 -05:00
Geza Lore
8e35c81399
Fix --expand-limit not respected for expressions ( #6670 )
2025-11-10 17:18:33 +00:00
Pawel Kojma
0062a422a4
Support `#1step` delay as statement ( #6671 )
2025-11-10 09:39:33 -05:00
Artur Bieniek
19bbeb24a6
Fix large array initialization ( #6669 )
2025-11-10 09:19:08 -05:00
Geza Lore
c7ff73a083
Add --unroll-limit option ( #6654 ) ( #6668 )
2025-11-09 12:46:25 -05:00
Geza Lore
f4086496cb
Internals: Refactor file handling in EmitC* ( #6667 )
...
Combined the 3 various APIs used in EmitC* passes to handle file
opening/splitting into a single one. This removes a lot of copy paste
and makes everything consistent.
All C++ file handling goes through `EmitCBaseVisitor` using the
`openNewOutputHeaderFile`, `openNewOutputSourceFile` and
`closOutputFile` methods.
To emit a new kind of file, always derive a new class from
`EmitCBaseVisitor`, and use the above APIs, they will take care of
everything else in a consistent matter.
Subsequently also removed V3OutSCFile, and instead included
verilated_sc.h (which included the systemc header itself) in the two
files that need it (the primary model header, and the root module
header).
Functional changes:
- The PCH header did not use to have a corresponding AstCFile. Now it
does, though this makes no difference in the output
- All 'slow' sources now have '__Slow' in the name automatically (the
only one missing was for the ConstPool files)
Rest of the output is identical except for the header line now being
present in all generated C++ files.
2025-11-09 17:41:13 +00:00
Paul Swirhun
aaafa6e8df
Fix local interface parameter hierarchical access ( #6661 ) ( #6666 )
...
Co-authored-by: Paul Swirhun <paulswirhun@gmail.com>
2025-11-09 10:48:55 -05:00
Geza Lore
107776f324
Optimize repeated function call during symbol table init ( #6665 )
2025-11-08 16:48:00 -05:00
Wilson Snyder
c493982511
Spelling fixes
2025-11-08 16:09:45 -05:00
github action
c3cd379fd5
Apply 'make format'
2025-11-08 15:57:16 +00:00
Geza Lore
8ad8d4f807
Fix long C++ compilation due to VerilatedScope constructors ( #6664 )
...
The Syms class can contain a very large number of VeriltedScope
instances if `--vpi` is used, all of which need a call to the default
constructor in the constructor of the Syms class. This can lead to very
long compilation times, even without optimization on some compilers.
To avoid the constructor calls, hold VeriltedScope via pointers in the
Syms class, and explicitly new and delete them in the Syms
constructor/destructor. These explicit new/delte can then be
automatically split up into sub functions when the Syms
constructor/destructor become large.
Regarding run-time performance, this should have no significant effect,
most interactions are either during construction/destruction of the Syms
object, or are via pointers already. The one place where we used to
refer to VerilatedScope instances is when emitting an AstScopeName for
things like $display %m. For those there will be an extra load
instruction at run-time, which should not make a big difference.
Patch 3 of 3 to fix long compile times of the Syms module in some
scenarios.
2025-11-08 15:56:15 +00:00
Geza Lore
ec3c9832de
Fix crash on Dfg driver lookup
...
Fixes #6649
2025-11-08 13:55:56 +00:00
Geza Lore
3b7ddce207
Optimize run-time symbol table construction of public variables ( #6663 )
...
Follow up from #6662 `VerilatedScope::varInsert` can do its work in one
pass, no need to emit it twice.
2025-11-08 13:29:44 +00:00
Geza Lore
71dcf30c1f
Do not include redundant headers in Syms implementation files
...
These are all available through the PCH
2025-11-08 10:36:41 +00:00
Geza Lore
0f96bd0f4d
Fix splitting of Syms constructor/destructor bodies ( #6662 )
...
Splitting of the Syms constructor/destructor were a bit arbitrarily
enforced with some parts splitable, while others not. There was also an
issue that even if the constructor and destructor bodies were split, we
would still end up with both in the same file that was double the size of
the intended split limit.
To fix, first all statements required in the Syms constructor and
destructor are gathered into a vector, then if the total number of
statements required for both is bigger than the split limit, the
implementations are split into sub-functions, one per file, as before,
ensuring that none of the functions are bigger than the split limit.
Also add __Slow suffix to the names of the files.
Patch 2 of 3 to fix long compile times of the Syms module in some
scenarios.
2025-11-08 10:36:12 +00:00
Geza Lore
2fabf50801
Use explicit ctor/dtor functions for VerilatedModules ( #6660 )
...
In order to avoid long compile times of the Syms constructor due to
having a very large number of member constructor sto call, move to using
explicit ctor/dtor functions for all but the root VerilatedModule. The
root module needs a constructor as it has non-default-constructible
members. The other modules don't.
This is only part of the fix, as in order to avoid having a default
constructor call the VerilatedModule needs to be default constructible.
I think this is now true for modules that do not contain strings or
other non trivially constructible/destructible variables.
Patch 1 of 3 to fix long compile times of the Syms module in some
scenarios.
2025-11-07 19:57:10 +00:00
Geza Lore
9d74984163
Fix non-deterministic output when splitting Syms file
2025-11-06 15:46:14 +00:00
Bartłomiej Chmiel
5adecb9fa3
Support multi-expression sequences ( #6639 )
2025-11-06 08:42:27 -05:00
Geza Lore
f7e12e9219
Fix slow compilation of generated sampled value code ( #6652 )
...
For handling $past and similar functions, we used to collect sampled
values of variables at the beginning of the main _eval function. If we
have many of these, this can grow _eval very large which can make C++
compilation very slow. Apply usual fix of emitting the necessary code in
a separate function and then splitting it based on size.
2025-11-06 13:31:40 +00:00
Todd Strader
47b52800bf
Fix expression coverage of system calls ( #6592 )
2025-11-06 08:23:35 -05:00
Geza Lore
cb5f038060
Internals: Optimzie unlinking rest of list after head (tail) ( #6643 )
...
AstNode::unlinkFrBackWithNext is O(n) if the subject node is not the
head of the list. We sometimes want to unlink the rest of the list
starting at the node after the head (e.g.: in
V3Sched::util::splitCheck), this patch makes that O(1) as well.
2025-11-05 15:55:30 +00:00
Ryszard Rozak
96ece751fa
Internals: Simplify release handling. No functional change intended ( #6647 )
2025-11-05 10:20:18 -05:00
Geza Lore
4404978765
Fix command line statistics with --stats ( #6645 ) ( #6646 )
...
Fixes #6645
2025-11-05 14:59:25 +00:00
Yilou Wang
0853aa7515
Support basic global constraints ( #6551 ) ( #6552 )
2025-11-05 07:14:03 -05:00
github action
574c69c092
Apply 'make format'
2025-11-05 10:50:31 +00:00
Jens Yuechao Liu
e2f5854088
Fix slice memory overflow on large output arrays ( #6636 ) ( #6638 )
2025-11-05 05:48:22 -05:00
Geza Lore
fe1a9e9ea7
Internals: Cleanup V3EmitCSyms ( #6635 )
2025-11-04 18:00:26 -05:00
Todd Strader
94d0513bc7
Don't pick initial random values for verilator-created variables ( #6611 )
2025-11-04 16:11:53 -05:00
Todd Strader
2c01aff2b3
Fix expression short circuiting ( #6483 )
2025-11-04 10:34:58 -05:00
Pawel Kojma
5d5798b4af
Fix parsing of `with` clause inside covergroups ( #6618 )
2025-11-04 09:12:30 -05:00
Artur Bieniek
8eed4e32ba
Support this.randomize() with constraints ( #6634 )
2025-11-04 08:28:42 -05:00
Wilson Snyder
ea75163567
Fix determining Verilator revision when within git submodules without tags.
2025-11-03 19:59:59 -05:00
Wilson Snyder
1d9c5c2c6b
Fix determining Verilator revision when within git submodules without tags.
2025-11-03 18:36:20 -05:00
Geza Lore
faaa2db844
Fix merging of impure assignments in gate optimization ( #6629 ) ( #6630 )
2025-11-03 07:29:39 -05:00
Geza Lore
d3ca79368c
Internals: Replace AstMTaskBody with AstCFunc( #6280 ) ( #6628 )
...
AstMTaskBody is somewhat redundant and is problematic for #6280 . We used
to wrap all MTasks in a CFunc before emit anyway. Now we create that
CFunc when we create the ExecMTask in V3OrderParallel, and subsequently
use the CFunc to represent the contents of the MTask. Final output and
optimizations are the same, but internals are simplified to move
towards #6280 .
No functional change.
2025-11-03 06:32:03 +00:00
Geza Lore
d066504bb9
Optimize away calls to empty functions ( #6626 )
2025-11-02 16:11:02 -05:00
Wilson Snyder
c801237ce8
Add `--preproc-defines`.
2025-11-01 23:27:43 -04:00
Wilson Snyder
d4aa00dbeb
Change `--preproc-comments` to be new name of `--pp-comments` option.
2025-11-01 21:59:16 -04:00
Wilson Snyder
e6cdaf112c
Internals: Add `--dump-inputs` to make __inputs without needing `--debug`
2025-11-01 20:34:06 -04:00
Wilson Snyder
782fe1daf2
Internals: Add more python strict typing. No functional change intended
2025-11-01 14:14:56 -04:00
Geza Lore
2e502aead8
Internals: Make all scheduling region use a single trigger vector. ( #6620 )
...
The 'act' region used to have 2 trigger vectors ('act' and 'pre'), now
it uses a single "extended" trigger vector where the top bits are what
used to be the used bits in the 'pre' trigger vector. Please see the
description above `TriggerKit`. Also move the extra triggers from the
low end to the high end in the trigger vectors.
2025-11-01 15:43:20 +00:00
Paul Swirhun
e27613ed45
Fix interface parameter access in parameter map ( #6587 ) ( #6621 ) ( #6623 )
...
Co-authored-by: Paul Swirhun <paulswirhun@gmail.com>
2025-10-31 23:06:26 -04:00
Paul Swirhun
10935ee031
Fix HIERPARAM to be suppressed for interface ports ( #6587 ) ( #6609 )
...
Co-authored-by: Paul Swirhun <paulswirhun@gmail.com>
2025-10-31 15:49:30 -04:00
Geza Lore
922223a9c3
Internals: Replace VlTriggerVec with unpacked array ( #6616 )
...
Removed the VlTriggerVec type, and refactored to use an unpacked array
of 64-bit words instead. This means the trigger vector and its
operations are now the same as for any other unpacked array. The few
special functions required for operating on a trigger vector are now
generated in V3SchedTrigger as regular AstCFunc if needed.
No functional change intended, performance should be the same.
2025-10-31 18:29:11 +00:00
Wilson Snyder
08330f5fe2
Fix constant-arrayed instance parameters ( #6614 ).
2025-10-30 19:18:47 -04:00
github action
884b48578d
Apply 'make format'
2025-10-30 22:42:18 +00:00
Wilson Snyder
85119cb32e
Fix waiving messages with empty contents ( #6610 ).
2025-10-30 18:41:18 -04:00
Geza Lore
cc910fa4c4
Internals: Clear 'isPure' cache in V3Depth
2025-10-30 15:18:47 +00:00
Geza Lore
a4c5d2e29c
Fix ENUMVALUE error when overriding enum param from CLI using -G/-pvalue
2025-10-30 12:04:12 +00:00
Geza Lore
2a0b331ee3
Fix -G and -pvalue with --hierarchical.
...
Properly strip these from the hier_block builds, but not from the top
level wrapper. Improve existing test to cover.
2025-10-30 12:04:12 +00:00
Todd Strader
af2771e901
Fix function call expression coverage ( #6589 )
2025-10-29 19:26:46 -04:00
Geza Lore
287fdb7312
Fix mis-ignoring virtual interface member triggers ( #5116 reopened) ( #6613 )
2025-10-29 17:27:15 -04:00
Igor Zaworski
28dd90e92d
Fix side effects for improved function/task/process purity ( #6559 )
2025-10-29 14:27:31 -04:00
Geza Lore
ffbb3229a8
Change default thread pool sizes to respect processor affinity ( #6604 )
...
Instead of using the number of processors in the host, use the number of
processors available to the process, respecting cpu affinity
assignments. Without pthreads, fall back and use the number of
processors in the host as before.
This is now applied everywhere so runing `nuamctl -C 0-3 verilator` or
`numactl -C 0-3 Vsim` should behave as if the host has 4 cores (e.g.
like in CI jobs)
2025-10-28 18:10:40 +00:00
Geza Lore
5642de432b
Tests: Add tests for -fno-dfg-peephole* ( #6606 )
...
Fixes -fno-dfg-peeophole-right-leaning-assoc.
Fixes #6601
2025-10-28 17:59:11 +00:00
Geza Lore
766514bdcf
Fix --hierarchical with --binary ( #6602 )
...
Used to fail with "can't use --exe with --lib-create", and we didn't
have any tests for it before. (The equivalent --main --exe --build
--timing works)
2025-10-28 17:02:21 +00:00