Wilson Snyder
28ee2ebb30
Fix PROTOTYPEMIS error on implicit logic ( #6482 ).
2025-09-23 22:28:21 -04:00
Wilson Snyder
fd12ab3413
Fix interface exposure with `--public-depth` or `--trace-depth` ( #5758 ).
2025-09-23 22:05:51 -04:00
Wilson Snyder
d972b7465a
Add error on function invoking time-controlling statements ( #6385 ).
2025-09-23 20:16:23 -04:00
Wilson Snyder
734e7a9526
Add error on function invoking task.
2025-09-23 19:51:34 -04:00
Artur Bieniek
f719d66129
Fix timeprecision backward assignment ( #6469 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-09-23 17:17:07 -04:00
Geza Lore
800af37975
Internals: Refactor generate construct Ast handling ( #6280 ) ( #6470 )
...
Internals: Refactor generate construct Ast handling (#6280 )
We introduce AstNodeGen, the common base class of AstGenBlock,
AstGenCase, AstGenFor, and AstGenIf, which together represent all SV
generate constructs. Subsequently remove AstNodeFor, AstNodeCase
(AstCase is now directly derived from AstNodeStmt) and adjust internals
to work on the new representation.
Output is identical modulo hashes do to changed AstNode type ids, no
functional change intended.
Step towards #6280 .
2025-09-23 19:49:01 +01:00
Ryszard Rozak
be0392a2b2
Fix splitting hierarchically referenced variables ( #6475 )
2025-09-23 10:16:49 -04:00
Wilson Snyder
b794c7c8d4
Add error on parameter values from hierarchical paths ( #1626 ) ( #6456 ).
2025-09-22 22:24:45 -04:00
Geza Lore
40ca0527db
Internal: Refactor AstAssignAlias ( #6280 ) ( #6473 )
...
Rename AstAssignAlias to AstAlias and make it derive from AstNode
instead of AstNodeStmt.
Replace AstAlias with AstAssignW in V3LinkDot::linkDotScope, which is
the last place we need to be aware of the alias construct. Using
AstAssignW dowstream enables further optimization while preserving the
same functionality.
2025-09-22 16:30:26 -04:00
Wilson Snyder
a647747260
Add IMPLICITSTATIC also on procedure variables.
2025-09-21 19:52:19 -04:00
Wilson Snyder
e0e0fb08a5
Fix missing BLKSEQ when connecting module port to array ( #2973 ).
2025-09-21 13:02:50 -04:00
Wilson Snyder
006b45526b
Tests: Rename t_lint_blkseq. No test change.
2025-09-21 12:56:01 -04:00
Wilson Snyder
9697a5ce6d
Add verilator_gantt profiling of DPI imports ( #3084 ).
2025-09-21 11:37:44 -04:00
Wilson Snyder
53b8a5b027
Add error on zero/negative unpacked dimensions ( #1642 ).
2025-09-21 09:41:58 -04:00
Wilson Snyder
ed380f08fe
Tests: Add t_forceable_public flat ( #3955 )
2025-09-20 23:06:41 -04:00
Wilson Snyder
9af8e76e87
Fix assertion on streaming from queues
2025-09-20 20:52:46 -04:00
Wilson Snyder
af54a26b43
Fix parsing of `with (...) {...}` but still unsupported
2025-09-20 19:59:31 -04:00
Wilson Snyder
580a843474
Fix randomize inside module without any classes
2025-09-20 17:13:54 -04:00
Wilson Snyder
b237eec801
Add error on string addition
2025-09-20 13:47:17 -04:00
Wilson Snyder
19ca140165
Improve adding model error message
2025-09-20 11:32:15 -04:00
Wilson Snyder
bfc438c455
Tests: Add t_param_default_override ( #4920 )
2025-09-20 11:32:15 -04:00
Wilson Snyder
d3b085ab8a
Fix t_sarif ( #6463 partial)
2025-09-20 11:32:15 -04:00
Geza Lore
d1eda66668
Deprecate clocker attribute and --clk option ( #6463 )
...
The only use for the clocker attribute and the AstVar::isUsedClock that
is actually necessary today for correctness is to mark top level inputs
of --lib-create blocks as being (or driving) a clock signal. Correctness
of --lib-create (and hence hierarchical blocks) actually used to depend
on having the right optimizations eliminate intermediate clocks (e.g.:
V3Gate), when the top level port was not used directly in a sensitivity
list, or marking top level signals manually via --clk or the clocker
attribute. However V3Sched::partition already needs to trace through the
logic to figure out what signals might drive a sensitivity list, so it
can very easily mark all top level inputs as such.
In this patch we remove the AstVar::attrClocker and AstVar::isUsedClock
attributes, and replace them with AstVar::isPrimaryClock, automatically
set by V3Sched::partition. This eliminates all need for manual
annotation so we are deprecating the --clk/--no-clk options and the
clocker/no_clocker attributes.
This also eliminates the opportunity for any further mis-optimization
similar to #6453 .
Regarding the other uses of the removed AstVar attributes:
- As of 5.000, initial edges are triggered via a separate mechanism
applied in V3Sched, so the use in V3EmitCFunc.cpp is redundant
- Also as of 5.000, we can handle arbitrary sensitivity expressions, so
the restriction on eliminating clock signals in V3Gate is unnecessary
- Since the recent change when Dfg is applied after V3Scope, it does
perform the equivalent of GateClkDecomp, so we can delete that pass.
2025-09-20 15:50:22 +01:00
Wilson Snyder
50dfdcb6cc
Support digits in `$sscanf` field width formats ( #6083 ).
2025-09-20 10:26:36 -04:00
Wilson Snyder
7f85d7f453
Add error on localparam value from hierarchical path ( #6456 ).
2025-09-20 09:59:48 -04:00
Wilson Snyder
f970485e19
Fix some missing E_UNSUPPORTED errors
2025-09-20 08:19:42 -04:00
Wilson Snyder
e5e7e844c4
Tests: Fix assignment type mismatch ( #6461 )
2025-09-19 22:59:13 -04:00
Wilson Snyder
4e866fd710
Add error on module automatic variables.
2025-09-19 22:05:03 -04:00
Bartłomiej Chmiel
bbcb9315f3
Fix loss of clock attribute in Dfg variable removal ( #6453 )
2025-09-19 14:44:34 +01:00
Artur Bieniek
08be65a7dd
Optimize dead functions in more cases ( #6430 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-09-19 09:36:57 -04:00
Artur Bieniek
c1ac2a79db
Resolve data types of method calls without parenthesis ( #6457 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-09-19 07:43:22 -04:00
Wilson Snyder
46e56ca6fc
Fix elaboration displays with some `%p` ( #6451 ).
2025-09-18 08:35:07 -04:00
Wilson Snyder
c15489b711
Fix associative array default type resolution
2025-09-17 23:39:47 -04:00
Wilson Snyder
7f871467bf
Internals: Cleanup assertion
2025-09-17 23:38:00 -04:00
Wilson Snyder
3a039df351
Tests: Strictly test exit codes (no unexpected core dumps)
2025-09-17 21:01:11 -04:00
Wilson Snyder
542ffcca60
Prevent internal error on pattern mismatch
2025-09-17 21:01:11 -04:00
Wilson Snyder
57c82b9c34
Fix false unique assertions on `else ;` ( #6450 ).
2025-09-17 17:43:36 -04:00
Artur Bieniek
3c8b8b65d0
Fix relinking super functions to parametrized class ( #6431 ) ( #6438 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-09-17 08:07:04 -04:00
Wilson Snyder
b10c6293d9
Fix elaboration displays with `%m` ( #6445 ).
2025-09-16 20:50:15 -04:00
Wilson Snyder
d7f4dbfd13
Fix class.randomize without parens.
2025-09-16 18:56:04 -04:00
Geza Lore
f39d6e6108
Deprecate sensitivity list on public_flat_rw attributes ( #6443 )
...
These are no longer required for correct scheduling. They are still
accepted for backward compatibility, but have no effect on simulation
and are dropped in the front-end. Also removed the then redundant
AstAlwaysPublic class.
Fixes #6442
2025-09-16 22:38:53 +01:00
Geza Lore
a44907b700
Fix memory leaks - batch 4 ( #6439 )
2025-09-16 19:22:36 +01:00
Ryszard Rozak
c856380fac
Support modports referencing clocking blocks ( #4555 ) ( #6436 )
2025-09-16 13:25:40 -04:00
Wilson Snyder
9187b4d552
Fix internal error on out-of-bounds real array access.
2025-09-16 08:18:51 -04:00
Bartłomiej Chmiel
dca555b6d7
Fix pre/post increments in assertions ( #6434 )
2025-09-15 10:50:31 -04:00
Wilson Snyder
39a9a00299
Fix external function declarations with class typedef references ( #6433 expanded).
2025-09-14 23:52:48 -04:00
Wilson Snyder
218af5500b
Fix external function declarations with class typedef references ( #6433 ).
2025-09-14 21:53:13 -04:00
Wilson Snyder
5e4668c146
Support get/set_randstate as class method.
2025-09-14 10:33:50 -04:00
Wilson Snyder
4b5e602392
Tests: Skip for reloc t_lint_assigneqexpr_bad
2025-09-14 10:33:27 -04:00
Wilson Snyder
a2b6aca288
Tests: Refactor to create test.root variable. No test change.
2025-09-14 08:43:52 -04:00
Wilson Snyder
b455f9b591
Add ASSIGNEQEXPR when use `=` inside expressions ( #5567 ).
2025-09-14 08:28:47 -04:00
Wilson Snyder
ff0bf0a5e3
Tests: Add testcase ( #4998 )
2025-09-13 10:45:05 -04:00
Wilson Snyder
663a9a3add
Add waiver for foreach SIDEEFFECT in future UVM
2025-09-13 10:21:42 -04:00
Bartłomiej Chmiel
be813e96dd
Fix hierarchical `--prof-pgo` ( #6213 )
2025-09-13 10:19:00 -04:00
Wilson Snyder
907047d823
Tests: Remove unneeded AUTOARGS. No test change.
2025-09-13 09:28:43 -04:00
Wilson Snyder
62d403c060
Internals: Reformat verilated_std.sv. No functional change.
2025-09-13 09:10:51 -04:00
Wilson Snyder
419e775dfb
Tests: Support ANSI input in driver
2025-09-13 08:53:23 -04:00
Artur Bieniek
1f61351e8f
Fix resolving parameters ( #6388 ) ( #6418 ) ( #6421 ) ( #6438 ) ( #6429 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-09-12 14:24:07 -04:00
Wilson Snyder
8b7a841f09
Tests: Relax contributors for multi-language names
2025-09-12 08:43:45 -04:00
Wilson Snyder
1308be28fe
Tests: Rename t_class_link*
2025-09-12 08:37:15 -04:00
Artur Bieniek
990ee994db
Fix resolving parameters ( #6388 ) ( #6418 ) ( #6421 )
2025-09-12 07:18:12 -04:00
Bartłomiej Chmiel
9a6b24fca4
Fix parsing for sequence expressions ( #6427 )
...
Signed-off-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
2025-09-12 07:17:26 -04:00
Wilson Snyder
04aa6ebb42
Tests: t_dynarray ( #2618 )
2025-09-11 20:05:49 -04:00
Geza Lore
4866cfa09f
Fix deep shift pattern performance ( #6379 ) ( #6420 )
2025-09-11 11:10:14 -04:00
Geza Lore
56927fb955
Fix memory leaks - batch 3 ( #6419 )
2025-09-11 12:01:36 +01:00
Geza Lore
f1396fbced
Fix memory leaks - batch 2 ( #6417 )
2025-09-10 22:42:45 +01:00
Krzysztof Bieganski
5349b51e71
Allow pure functions in sensitivity lists ( #6393 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2025-09-10 17:37:34 +02:00
Artur Bieniek
1923d23cff
Fix resolving default params upon instantiation or reference ( #4497 ) ( #6388 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
Co-authored-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2025-09-10 07:58:15 -04:00
Geza Lore
c6b0918db5
Improve Dfg variable removal and temporary insertion ( #6401 )
...
Combined Dfg variable elimination into the regularization pass that runs
before converting back to Ast. This avoids introducing some unnecessary
temporaries.
Added replacing of variables with constants in the Ast if after the
Dfg passes they are known to be constants. This is only done in final
scoped Dfg application.
Avoid introducing temporaries for common sub-expressions that are
cheaper to re-compute than store in a temporary variable.
Enable removal of redundant unpacked array variables.
Also fixes #6394 as this patch involved changes to that code.
2025-09-10 12:38:49 +01:00
Wilson Snyder
220a3faf7c
Fix parameter implicit type from string ( #6414 ).
2025-09-09 19:49:11 -04:00
Wilson Snyder
a9f95f2f08
Fix false CONSTVAR error on initializers ( #4992 ).
2025-09-09 19:27:43 -04:00
Wilson Snyder
f8f5f8f84b
Commentary: Fix warning documentation, add consistency test.
2025-09-09 19:14:48 -04:00
Wilson Snyder
f57d1255e9
Fix import error format
2025-09-09 18:32:04 -04:00
Geza Lore
dd11d5a598
Fix memory leaks - batch 1 ( #6411 )
2025-09-09 22:39:44 +01:00
Geza Lore
5ffa05fba0
Fix AddressSanitizer issues ( #6406 )
...
These are all genuine bugs, brief descriptions.
1. V3OrderCFuncEmitter.h used to delete a node early that was still
reference in a graph dump later. Not a big deal, it can be deleted
later at the end of V3Order.
2. V3Param.cpp: this one is tricky. The variable referenced by
AstVarXRef was deleted at the end of `visit(AstGenCase*)`, but then
`visit(AstVarXRef*)` checks `nodep->varp()` (already deleted) to see
if it's in an interface.
3. V3String::wildMatch is sometimes called with an empty 's' (the string
we are matching against tha pattern 'p'), in which case it used to go
off into the woods. Added check on call. An arbitrary number of `*`
will still match the empty string.
4. V3Task.cpp: There was an error reported for an unsupported construct,
then a subsequent SEGV. Just signal the error upward so we bail on an
error in a more graceful way.
5. verylog.y: Some unsupported constructs failed to set the parsed node,
so some memory thrash made it into some code downstream. Just parse
these into nullptr.
Also increased the timeout on one test, which sometimes tripped with
asan on GCC during heavy host load.
2025-09-09 13:55:00 +01:00
Krzysztof Bieganski
0743d84bcc
Fix timing control under fork under function ( #6407 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2025-09-09 14:12:24 +02:00
Wilson Snyder
b45cf5960a
Tests: Imporove t_covergroup_unsup ( #6133 )
2025-09-09 07:32:58 -04:00
Geza Lore
056c3ee331
Testing: Add --enable-asan configure option to compile with AddressSanitizer ( #6404 )
2025-09-09 08:55:49 +01:00
Wilson Snyder
c6ffd22c45
Improve interface parent error wording ( #5357 )
2025-09-08 07:21:03 -04:00
Geza Lore
6bc48fcdb3
Improve Dfg type system ( #6390 )
...
Added a mini type system for Dfg using DfgDataType to replace Dfg's use
of AstNodeDType. This is much more restricted and represents only the
types Dfg can handle in a canonical form. This will be needed when
adding more support for unpacked arrays and maybe unpacked structs one
day.
Also added an internal type checker for DfgGraphs which encodes all the
assumptions the code makes about type relationships in the graph. Run
this in a few places with --debug-check. Fix resulting fallout.
2025-09-07 20:38:50 +01:00
Krzysztof Bieganski
46f8003c4e
Fix import of class with default params ( #6396 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2025-09-06 21:21:50 +02:00
Wilson Snyder
3549fd1aa0
Add parsing of `$assert*`, `$coverage*` and `$q_*` as still unsupported.
2025-09-06 10:31:08 -04:00
Wilson Snyder
0d1f036f17
Add error on non-packed struct randc ( #5999 ).
2025-09-06 08:24:19 -04:00
Wilson Snyder
f41e36b99f
Commentary: Convert docs examples to 2 space indents.
2025-09-06 07:51:49 -04:00
Wilson Snyder
85454f6083
Fix wire array with initial assignment ( #6391 ).
2025-09-05 17:31:17 -04:00
Geza Lore
141de7b94a
Tests: Do not redirect interactive debugger stdout ( #6389 ) ( #6392 )
2025-09-05 17:06:23 -04:00
Artur Bieniek
905c0c4f6d
Optimize dead functions without references ( #6380 )
2025-09-05 13:23:43 -04:00
Jakub Wasilewski
a364704e3a
Improve `covergroup with function sample` handling ( #6387 )
2025-09-05 13:16:30 -04:00
Ryszard Rozak
107f64e53b
Fix segfault when modport variable is unresolved ( #6386 )
2025-09-05 14:27:46 +02:00
Geza Lore
a966e6aa13
Improve automatic selection of logic for Dfg synthesis ( #6370 )
...
Reduce set of synthesized logic to be more in-line with what Dfg used to
handle before + drivers of circular variables. This was always the
intention but the previous algorithm was both a bit too eager, and also
missed some circular variables. We can add back more heuristics based on
performance measurements for non-circular logic later.
2025-09-05 08:14:48 +01:00
Wilson Snyder
feea221f39
Fix COVERAGEIGN-ignored `get_inst_coverage` and other covergroup methods ( #6383 ).
2025-09-04 22:18:56 -04:00
Geza Lore
63993436c9
Fix driver tracing of partially assigned variable ( #6364 ) ( #6378 )
...
Fixes #6364
2025-09-04 15:02:33 +01:00
Wilson Snyder
4e091a1cf1
Tests: Ignore all bots in t_dist_contributors.py
2025-09-04 06:56:48 -04:00
Igor Zaworski
4070db9990
Fix rand variable inside constraint ( #6315 )
2025-09-04 06:19:08 -04:00
Wilson Snyder
bd7f6d3c19
Fix randomize local after parameters applied ( #6371 ).
2025-09-03 20:04:41 -04:00
Wilson Snyder
929d2ad83a
Fix package imports not found after parameters applied ( #6373 ).
2025-09-03 19:45:43 -04:00
Geza Lore
a6f26b85b3
Internals: Improve DFG implementation details ( #6355 )
...
Large scale refactoring to simplify some of the more obtuse internals of
DFG. Remove multiple redundant internal APIs, simplify representation of
variables, fix potential unsoundness in circular decomposition. No
functional change intended.
2025-09-02 16:50:40 +01:00
Wilson Snyder
67f26508ba
Support `$sscanf %t`
2025-09-01 14:40:22 -04:00
Wilson Snyder
33b838f139
Support 'this.super'
2025-09-01 13:07:02 -04:00
Krzysztof Bieganski
f58b323736
Wrap forked processes in begins early ( #6343 ) ( #6354 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2025-09-01 17:25:57 +02:00
Wilson Snyder
4bf2d0d755
Tests: More uvm_dpi testing ( #4566 )
2025-09-01 08:32:13 -04:00
Wilson Snyder
9953851287
Tests: Add t_math_synmul and t_math_wallace from verilator_ext_tests
2025-08-31 11:12:14 -04:00
Wilson Snyder
c73259d2f0
Tests: Upgrade some failing tests without expected .out files.
2025-08-31 11:12:14 -04:00
Wilson Snyder
6a14facf48
Tests: Fix version miscompare in t_uvm_dpi
2025-08-30 18:10:13 -04:00
Wilson Snyder
b6ecffeb60
Support recursive constant functions.
2025-08-30 07:45:35 -04:00
Wilson Snyder
712ff95a48
Internals: Remove unneeded return, cleanup param test. No functional change
2025-08-30 07:42:41 -04:00
Wilson Snyder
fbfd1f12dd
Tests: Fix sarif reruns
2025-08-29 21:36:54 -04:00
Krzysztof Bieganski
40dda323fe
Fix upcasting class type parameters ( #6344 )
...
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2025-08-29 21:20:09 -04:00
Wilson Snyder
91ae4c35b7
Add error on force/release non-constant selects.
2025-08-29 21:19:37 -04:00
Wilson Snyder
91d138248d
Tests: Favor all caps for tests' parameters. No test change.
2025-08-29 18:33:14 -04:00
Szymon Gizler
8868d459a2
Fix broken support of unassigned virtual interfaces ( #6253 ) ( #6338 )
...
* Fix broken support of unassigned virtual interfaces
Unassigned virtual interface support added by #6245 is broken - PR marks
dead module as alive - we can't do that as once a module is dead it
needs to remain dead because earlier steps (e.g. port resolution) have
already been skipped.
This commit handles unassigned virtual interfaces at the beginning of
first pass of LinkDot (so it is never marked as dead, and no linking
steps are getting skipped).
Fixes #6253 .
* Apply suggestions from code review
Co-authored-by: Wilson Snyder <wsnyder@wsnyder.org>
* Apply 'make format'
* Revert add of redundant iterateChildren() call
* Add original test case
---------
Co-authored-by: Wilson Snyder <wsnyder@wsnyder.org>
Co-authored-by: github action <action@example.com>
2025-08-28 09:03:46 -04:00
Geza Lore
1043a6c6be
Fix splitting of assignments to SC variables ( #6329 ) ( #6336 )
...
SC variables can only be assigned whole, so do not split up
concatenation assignments in V3FuncOpt.
Fixes #6329
2025-08-28 08:48:51 +01:00
Wilson Snyder
409e036eca
Add error on gate primitive connection width mismatch
2025-08-27 22:28:09 -04:00
Wilson Snyder
e32108713d
Fix randomize on function-local variable ( #6234 ).
2025-08-27 21:25:40 -04:00
Wilson Snyder
54efa86a6c
Fix error on too many UDP port inputs
2025-08-27 07:48:33 -04:00
Ryszard Rozak
ac21d25d43
Support simple disable within task ( #6334 )
2025-08-26 10:39:24 -04:00
Geza Lore
a841a962ce
Optimize interfaces in Dfg ( #6332 )
...
Interfaces that have no corresponding virtual interface references can
be safely optimized by Dfg after V3Scope. Enabling it to do so.
2025-08-26 11:24:15 +01:00
Wilson Snyder
ac2859bf24
Internals: Upgrade to clang-format-18 ( #6333 )
2025-08-25 20:47:48 -04:00
Wilson Snyder
703f0d8c5d
Commentary: spelling
2025-08-25 18:47:08 -04:00
Geza Lore
02e64f0795
Optimize multiplexers in Dfg synthesis ( #6331 )
...
The previous algorithm was designed to handle the general case where a
full control flow path predicate is required to select which value to
use when synthesizing control flow join point in an always block.
Here we add a better algorithm that tries to use the predicate of
the closest dominating branch if the branch paths dominate the joining
paths. This is almost universally true in synthesizable logic (RTLMeter
has no exceptions), however there are cases where this is not
applicable, for which we fall back on the previous generic algorithm.
Overall this significantly simplifies the synthesized Dfg graphs and
enables further optimization.
2025-08-25 13:47:45 +01:00
Igor Zaworski
c2cac8a7fd
Fix of localize for super constructors with function calls as arguments ( #6330 )
2025-08-25 06:55:11 -04:00
Wilson Snyder
ac2a75fbb5
Support future sampled value functions.
2025-08-23 21:16:53 -04:00
Wilson Snyder
7affb3e580
Internals: Add $past variable statistic
2025-08-23 21:10:46 -04:00
Wilson Snyder
b226be7f98
Fix to select UDPs when they are the only candidate for a top module.
2025-08-23 15:20:58 -04:00
Aleksander Kiryk
a9aa2f11b8
Improve testing on FreeBSD ( #6328 )
...
* Skip profiling tests on non-glibc platforms
* Enforce dumb terminal in tests
* Include POSIX headers whenever __unix__ macro is defined
* Treat no procfs as normal condition
* Respect MAKE variable when running make
2025-08-23 10:49:03 -04:00
Aleksander Kiryk
34315a4f70
Fix FreeBSD missing headers ( #6326 )
...
* Include missing libgen.h
* Include missing cinttypes
2025-08-23 10:38:18 -04:00
Geza Lore
1c86ff0af2
Fix corner case bugs in module and variable inlining ( #6322 )
...
There were a couple corner case bugs in V3Inline, and one in Dfg when
dealing with inlining of modules/variables.
V3Inline:
- Invalid code generated when inlining an input that also had an
assignment to it (Throws an ASSIGNIN, but this is sometimes reasonable
to do, e.g. hiererchical reference to an unonnected input port)
- Inlining (aliasing) publicly writeable input port.
- Inlining forcable port connected to constant.
Dfg:
- Inining publicly writeable variables
The tests that cover these are the same and fixing one will trigger the
other bug, so fixing them all in one go. Also cleanup V3Inline to be less
out of order and rely less on unique APIs only used by V3Inine (will
remove those in follow up patch).
Small step towards #6280 .
2025-08-22 21:43:49 +01:00
Igor Zaworski
f506aa878b
Fix of inline constraints with member selects ( #6321 )
2025-08-22 07:58:03 -04:00
Igor Zaworski
b95a974ff1
Support generic interfaces ( #6272 )
2025-08-22 06:44:35 -04:00
Artur Bieniek
b19215770b
Fix direct NBA to dynamically-sized variable ( #6310 )
2025-08-22 06:21:13 -04:00
Wilson Snyder
457fcc267b
Support elaboration-time printing of unpacked array with `%p` ( #4732 ).
2025-08-21 21:44:31 -04:00
Wilson Snyder
e202cb31d8
Change `$display("%p")` to remove space after `}`.
2025-08-21 21:33:05 -04:00
Igor Zaworski
631714c50a
Fix expression type comparison ( #6316 )
2025-08-21 06:26:30 -04:00
Geza Lore
327d55d13d
Internals: Fix remaining cppcheck errors ( #6319 )
...
Fixed the non const-related issue and added suppressions for the const
ones. With that `make cppcheck` should be clean.
2025-08-21 09:43:37 +01:00
Wilson Snyder
bd91b619ad
Support `$fread` with missing start ( #6125 ).
2025-08-20 21:19:42 -04:00
Wilson Snyder
dc5a17fea0
Support unpacked array `with` methods ( #6134 ).
2025-08-20 21:01:34 -04:00
Ryszard Rozak
3d3462b209
Support disabling a fork from within that fork ( #6314 )
2025-08-20 12:21:07 -04:00
Igor Zaworski
11667160f2
Fix static vars under member select ( #6313 )
2025-08-20 11:23:16 -04:00
Ryszard Rozak
95c8b7bb00
Support separate coverage counters for toggles 0->1 and 1->0 ( #6086 )
2025-08-20 07:31:04 -04:00
Geza Lore
636a6b8cd2
Optimize complex combinational logic in DFG ( #6298 )
...
This patch adds DfgLogic, which is a vertex that represents a whole,
arbitrarily complex combinational AstAlways or AstAssignW in the
DfgGraph.
Implementing this requires computing the variables live at entry to the
AstAlways (variables read by the block), so there is a new
ControlFlowGraph data structure and a classical data-flow analysis based
live variable analysis to do that at the variable level (as opposed to
bit/element level).
The actual CFG construction and live variable analysis is best effort,
and might fail for currently unhandled constructs or data types. This
can be extended later.
V3DfgAstToDfg is changed to convert the Ast into an initial DfgGraph
containing only DfgLogic, DfgVertexSplice and DfgVertexVar vertices.
The DfgLogic are then subsequently synthesized into primitive operations
by the new V3DfgSynthesize pass, which is a combination of the old
V3DfgAstToDfg conversion and new code to handle AstAlways blocks with
complex flow control.
V3DfgSynthesize by default will synthesize roughly the same constructs
as V3DfgAstToDfg used to handle before, plus any logic that is part of a
combinational cycle within the DfgGraph. This enables breaking up these
cycles, for which there are extensions to V3DfgBreakCycles in this patch
as well. V3DfgSynthesize will then delete all non synthesized or non
synthesizable DfgLogic vertices and the rest of the Dfg pipeline is
identical, with minor changes to adjust for the changed representation.
Because with this change we can now eliminate many more UNOPTFLAT, DFG
has been disabled in all the tests that specifically target testing the
scheduling and reporting of circular combinational logic.
2025-08-19 15:06:38 +01:00
Geza Lore
0bf9fc270f
Iternals: Remove AstAssignPre/AstAssignPost ( #6307 )
...
Replace with AstAlwaysPre/AstAlwaysPost with AstAssign under them.
Step towards #6280
2025-08-19 09:27:59 +01:00
Wilson Snyder
c90f9e53b7
Add ALWNEVER warning, for `always @*` that never execute ( #6291 ) ( #6303 )
2025-08-18 12:00:53 -04:00
Artur Bieniek
53c59e7ac7
Fix referencing module variables above classes ( #6304 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-08-18 08:51:25 -04:00
Wilson Snyder
88046c8063
Internals: Rename AstSenTree pointers to sentreep. No functional change intended except JSON.
2025-08-17 19:14:34 -04:00
Wilson Snyder
eaecdf7477
Tests: Improve check for member brace initialization.
2025-08-17 14:40:10 -04:00
Geza Lore
f6edf26eb2
Fix hierarchical NBAs ( #6286 ) ( #6300 )
...
NBAs targeting a variable in a different scope are now allocated
temporary variables for captured values in the scope of the NBA, not the
scope of the target variable.
Fixes #6286
2025-08-17 19:35:40 +01:00
Wilson Snyder
b14539569f
Internals: Check and enforce member brace initialization. No functional change intended
2025-08-17 13:20:52 -04:00
Wilson Snyder
7126293086
Support enum.next with a parameter
2025-08-16 21:06:35 -04:00
Wilson Snyder
48a12fb0f4
Document and test `+verilator+rand+reset+2` usage ( #6285 partial)
2025-08-16 11:47:19 -04:00
Wilson Snyder
340d1aff4a
Tests: Cleanup to favor '--binary'. No test change intended.
2025-08-16 09:26:42 -04:00
Geza Lore
d273e2cbd0
Internals: Do not astgen useless Dfg vertex subtypes
2025-08-15 20:06:58 +01:00
Geza Lore
9c11f5e05d
Fix DFG circular driver tracing
2025-08-15 10:20:20 +01:00
Mateusz Gancarz
e753480b19
Fix no matching function calls for randomized `VlWide` in unpacked and dynamic arrays ( #6290 )
2025-08-14 05:19:33 -07:00
Wilson Snyder
047a12cc62
Fix variables hiding package imports ( #6289 ).
2025-08-13 18:05:37 -04:00
Wilson Snyder
75c6745868
Test driver.py: Pass-through +verilator+ arguments to runtime
2025-08-12 19:32:56 -04:00
Wilson Snyder
60cbbf0ec1
Add error on mismatching prototypes ( #6207 ).
2025-08-11 19:50:47 -04:00
Geza Lore
762c5f573c
Improve DFG to enable breaking more combinational cycles
2025-08-11 09:44:31 +01:00
Wilson Snyder
e6e52dd60a
Tests: Fix t_constraint_nosolver_bad.py ( #6273 )
2025-08-10 08:43:04 -04:00
Wilson Snyder
eb80db9397
Clarify extern error message
2025-08-10 08:38:26 -04:00
Wilson Snyder
641dd756c0
Add check for mis-assignment of dynamic/automatics per IEEE
2025-08-10 07:23:28 -04:00
Geza Lore
d28436dccc
Fix stray ']' in Verilog code output for non-constant select ( #6277 )
2025-08-09 14:59:58 +01:00
Wilson Snyder
3ca1c9b6dd
Internals: Fix and enforce brace new constructors. No functional change intended.
2025-08-08 18:21:12 -04:00
Geza Lore
16d32cdd4a
Internals: Refactor Ast to Dfg conversion for reusability. ( #6276 )
...
This is mainly code motion, with minimal algorithmic changes to
facilitate reusing parts in future code. No functional change intended.
2025-08-08 22:53:12 +01:00
Wilson Snyder
d1f851e1e1
Internals: Optimize empty 'if' into StmtExpr
2025-08-08 05:10:40 -04:00
Wilson Snyder
6a225d5d00
Internals: Remove AstSysFuncAsTask
2025-08-08 05:09:54 -04:00
Todd Strader
6bd6663dc9
Fix spurious VPI value change callbacks ( #6274 )
2025-08-07 16:37:33 +01:00
Artur Bieniek
5b7188fcaf
Fix same variable on the RHS forced to two different LHSs. ( #6269 )
2025-08-06 17:37:00 -04:00
github action
dc049fdd74
Apply 'make format'
2025-08-06 21:30:37 +00:00
Michael Bedford Taylor
218659f4e8
Support parameter resolution of 1D unpacked array slices ( #6257 ) ( #6268 )
2025-08-06 17:29:40 -04:00
Igor Zaworski
6c1cfc68cf
Fix dynamic cast purity ( #6267 )
...
Signed-off-by: Igor Zaworski <izaworski@internships.antmicro.com>
2025-08-06 07:09:44 -04:00
Wilson Snyder
c005486acf
Support by ignoring delay2 on UDPs
2025-08-05 17:34:42 -04:00
Wilson Snyder
6467351752
Add error on class 'function static'.
2025-08-05 17:12:00 -04:00
Wilson Snyder
870c398094
Fix incorrect Non-ANSI I/O declaration conflict error ( #6258 ) broke with #bd1ac038
2025-08-05 16:33:28 -04:00
Geza Lore
86c56e8e14
Fix true cycle detection in DFG
2025-08-05 15:04:07 +01:00
Geza Lore
2c41a7bbf6
Adjust make test-snap / make test-diff rules
2025-08-05 14:41:38 +01:00
Geza Lore
78c9e7773a
Allow more variable removal in scoped DFG ( #6260 )
2025-08-05 11:18:33 +01:00
Ryszard Rozak
7d2b6bd921
Internals: Optimize updates of Vtogcov signals. No functional change intended. ( #6110 )
2025-08-04 13:29:56 +01:00
Wilson Snyder
52ac3b3a0d
Add error on too many pattern members for structure
2025-08-03 17:26:51 -04:00
Wilson Snyder
f106c1eaec
Fix genvar check to be more strict about generate-for usage only
2025-08-03 16:57:12 -04:00
Wilson Snyder
309129ebcf
Add PARAMNODEFAULT error, for parameters without defaults.
2025-08-03 15:27:37 -04:00
Geza Lore
deed20fb78
Fix partial DFG conversion of concat assignments ( #6255 )
...
When we had a `{a, b} = ...`, and the DFG conversion of `a = ...`
succeeded, but `b = ...` failed, we still used to include `a = ...` in
the DFG, which then caused a spurious multi-driver error for `a` on
a subsequent DFG pass, as the original `{a, b} = ...` was still present
in the Ast, but we also had the extra `a = ...` from converting out of
DFG on the previous pass.
In this patch we only convert assignments with a concatenation on the
LHS, if all target LValues can be converted into DFG.
This is the proper fix for #4231
2025-08-03 14:52:20 +01:00
Wilson Snyder
36577bb549
Add check for missing 'parameter' on implicit types
2025-08-02 17:02:45 -04:00
Wilson Snyder
de9671d4a3
Tests: uvm_regex.cc from upstream has clang warnings
2025-08-02 15:03:09 -04:00
Wilson Snyder
12355270b3
Tests: Add uvm_dpi
2025-08-02 13:50:16 -04:00
Ryszard Rozak
f9bdab65f0
Fix coverage of variables of complex types ( #6250 )
2025-08-01 13:24:18 +02:00
Szymon Gizler
61f4c97f40
Support unassigned virtual interfaces ( #5265 ) ( #6245 )
2025-08-01 12:39:13 +02:00
Rodrigo Batista de Moraes
d0f0919830
Fix write of 0 in '%c' ( #6248 ) ( #6249 )
2025-08-01 07:54:18 +02:00
Wilson Snyder
bd1ac03828
Add I/O versus data declaration checking.
2025-07-31 18:38:50 -04:00
Ryszard Rozak
d8f1e1113a
Fix error when force assignment is used with ref function args ( #6244 )
2025-07-31 12:48:37 +02:00
Wilson Snyder
9d38e63269
Remove error on missing forward declarations of typedef in class ( #6207 ).
2025-07-30 09:14:13 -04:00
Igor Zaworski
2b62f5a625
Add error when trying to assign class object to variable of non-class types ( #6237 )
2025-07-30 09:48:02 +02:00
Wilson Snyder
0da9f6eb03
Fix queue typedef with unbounded slice ( #6236 ).
2025-07-28 19:36:52 -04:00
Wilson Snyder
2ff6ee9613
Support vpi_handle_by_name with `$root.`.
2025-07-28 18:03:21 -04:00
Wilson Snyder
833c31b031
Add `-DVERILATOR=1` definition to compiler flags when using verilated.mk.
2025-07-28 18:01:50 -04:00
Ryszard Rozak
a5b0a0d9dd
Add support for `$countones` in constraints ( #6144 ) ( #6235 )
2025-07-28 16:14:03 +02:00
Wilson Snyder
5c1d7f3ce9
Fix negate of wide structure selections ( #6186 ).
2025-07-28 02:20:57 -04:00
Wilson Snyder
e69df457fd
Fix MODDUP with duplicate packages to take first package ( #6222 ).
2025-07-28 01:45:03 -04:00
Wilson Snyder
47c5b220b3
Support non-ansi ports with `wire` before `input`
2025-07-27 17:13:56 -04:00
Wilson Snyder
64a82508f2
Fix error on `with` to give UNSUPPORTED ( #6134 )
2025-07-27 16:12:16 -04:00
Paul Swirhun
bd2cb989d1
Support bit queue streaming ( #5830 ) ( #6103 ).
2025-07-27 15:29:56 -04:00
Wilson Snyder
d359fffcdc
Internals: Refactor V3Task and add loop assert ( #6218 )
2025-07-27 10:30:19 -04:00
Wilson Snyder
c4b3f1e99c
Tests: Add test and assert for nested simulated loops ( #6223 )
2025-07-27 09:43:46 -04:00
Geza Lore
895b85a16e
Fix Replicate with unsigned count but MSB set ( #6231 ) ( #6233 )
...
Correctly compute witdh of AstReplicate in its constructor when the
count is unsigned but its MSB is set.
2025-07-27 12:30:19 +02:00
Wilson Snyder
1725ee9c52
Fix loop initialization visibility outside loop ( #4237 ).
2025-07-27 03:42:41 -04:00
Wilson Snyder
470f99694e
Revert d8dbb08a: Support bit queue streaming ( #5830 ) ( #6103 )
2025-07-26 17:59:52 -04:00
Wilson Snyder
f3560837ec
Add error on missing forward declarations ( #6207 ).
2025-07-26 17:11:35 -04:00
Paul Swirhun
d8dbb08a95
Support bit queue streaming ( #5830 ) ( #6103 )
2025-07-26 16:53:51 -04:00
Wilson Snyder
39a5c731ac
Tests: Fix missing forward decls ( #6202 partial)
2025-07-26 15:48:19 -04:00
Geza Lore
504884b7d5
Refactor DFG context objects ( #6232 )
...
- Move All DFG context objects to V3DfgContext.h
- Add separate object for ast2dfg and dfg2ast passes
- Factor out commonalities
No functional change
2025-07-26 20:37:01 +01:00
Wilson Snyder
d289934ca9
Improve `--skip-identical` to skip on identical input file contents ( #6109 ).
2025-07-26 02:43:57 -04:00
github action
20bd80698d
Apply 'make format'
2025-07-25 18:06:24 +00:00
George Polack
f1826a7c20
Support Verilog real to SystemC double ( #6136 ) ( #6158 )
2025-07-25 20:05:36 +02:00
Wilson Snyder
fa62cd3486
Fix `--stats` overridden by skipping identical build ( #6220 ).
2025-07-25 07:23:02 -04:00
Yilou Wang
10ac99ac05
Support randomization of scope variables with 'std::randomize()' ( #5438 ) ( #6185 )
2025-07-25 12:13:46 +02:00
Wilson Snyder
b408e097f6
Fix unsigned replicate ( #6229 )
2025-07-24 22:55:26 -04:00
Geza Lore
94bebb2bcb
Fix dereferencing stale iterator in DfgVertex::scopep() ( #6227 )
...
Fix dereferencing stale iterator in DfgVertex::scopep()
Fixes part of #6225
2025-07-24 15:31:31 +01:00
Geza Lore
2be257369a
Fix component numbers of new Vertices in V3DfgBreakCycles ( #6228 )
...
Fix component numbers of new Vertices in V3DfgBreakCycles
Fixes part of #6225
2025-07-24 15:31:09 +01:00
Artur Bieniek
04c38d5b3b
Tests: Switch to measuring CPU time instead of real time in test timeouts ( #6224 )
...
Signed-off-by: Artur Bieniek <abieniek@internships.antmicro.com>
2025-07-24 11:27:02 +02:00
Wilson Snyder
db5b2669fc
Add current memory usage statistic ( #6192 partial)
2025-07-24 08:36:58 +02:00
Wilson Snyder
460bfbf181
Fix replicate of negative giving 'REPLICATE has no expected width' internal error ( #6048 ).
2025-07-23 18:07:50 -04:00
Wilson Snyder
050e5ddb5b
Fix internal error after bad method
2025-07-23 17:17:35 -04:00
Wilson Snyder
393f0e4acb
Tests: Example format
2025-07-23 14:58:58 -04:00
Geza Lore
7c5d462564
Remove AstJumpLabel ( #6221 )
...
Remove AstJumpLabel
AstJumpGo now references one if its enclosing AstJumpBlocks, and
branches straight after the referenced block.
That is:
```
JumpBlock a {
...
JumpGo(a);
...
}
// <--- the JumpGo(a) goes here
```
This is sufficient for all use cases and makes control flow much easier to
reason about. As a result, V3Const can optimize a bit more aggressively.
Second half of, and fixes #6216
2025-07-23 17:51:16 +01:00
Geza Lore
763183f067
Internals: Remove AstWhile::precondsp() ( #6219 ). No functional change intended.
2025-07-23 08:50:39 -04:00
Geza Lore
2958a5aaae
Internals: Do not emit temporaries for atomic assignments. ( #6217 )
...
Added test for a particularly convoluted case requiring fixup in
V3Premit. To help with statistics stability, also prevent V3Premit from
introducing temporaries for assignment where the RHS reads the LHS, but
the assignment is known to be atomic (by emitted C++ semantics).
Also rename `createWideTemp` to `createTemp`, as it is used for non-wide
expressions as well.
2025-07-23 11:48:55 +02:00
Geza Lore
344fabf56a
Fix incorrect assumption in V3DfgDecomposition ( #6215 )
...
Due to SCC merging the deleted assumption/assertion can be violated.
Fixes #6211 .
2025-07-22 14:03:35 +01:00
Geza Lore
9f04ee68c8
Optimize combinational cycles through arrays in DFG ( #6210 )
...
Extending V3DfgBreakCycles to handle common cases involving unpacked
arrays.
2025-07-22 08:23:45 +01:00
Danny Oler
74d4b0c0ea
Fix automatic task variables in unrolled loops with forks ( #6194 ) ( #6201 ).
2025-07-21 19:28:50 -04:00
Geza Lore
a8dca71ed0
Support more complex combinational assignments in DFG. ( #6205 )
...
Previously DFG was limited to having a Sel, or an ArraySel potentially
under a Concat on the LHS of combinational assignments. Other forms or
combinations were not representable in the graph.
This adds support for arbitrary combinations of the above by
combining DfgSplicePacked and DfgSpliceArray vertices introduced in
#6176 . In particular, Sel(ArraySel(VarRef,_),_) enables a lot more code
to be represented in DFG.
2025-07-21 12:33:12 -04:00
Igor Zaworski
98b8d43a4a
Fix parameter-dependent type linking ( #6170 )
2025-07-21 07:30:10 -04:00
Max Wipfli
a50ea2a1a6
Optimize 2 ** X to 1 << X if base is signed ( #6203 )
2025-07-20 09:56:34 -04:00
Wilson Snyder
078bb21a89
Add wire data type checking per IEEE.
2025-07-20 07:21:30 -04:00
Wilson Snyder
b8b9478938
Improve enum base type checking error message.
2025-07-19 22:37:07 -04:00
Ibrahim Burak Yorulmaz
9d146eae16
Fix VPI signal range order ( #6189 ) ( #6200 )
2025-07-19 20:22:02 -04:00
Wilson Snyder
7d43a935bd
Add SPECIFYIGN warning for specify constructs that were previously silently ignored.
2025-07-18 19:32:34 -04:00
Yilou Wang
9b99d9697f
Fix virtual interface member propagation ( #6175 ) ( #6184 )
2025-07-18 09:07:31 -04:00
Ryszard Rozak
a21ecb2ab9
Add support for randomize..with on objects of aliased types ( #6195 )
2025-07-18 13:04:47 +02:00
Wilson Snyder
c1506deef9
Add enum base type checking per IEEE.
2025-07-17 20:20:43 -04:00
Wilson Snyder
87050670b4
Fix structure select causing 'Wide Op' error ( #6191 ).
2025-07-17 18:17:49 -04:00
Wilson Snyder
fb1373b854
Tests: Reformat. Ignore whitespace if comparing. No test functional change.
2025-07-16 21:31:40 -04:00
Wilson Snyder
7f1011e5f7
Make some CVTREAL fatal where IEEE requires it.
2025-07-16 18:07:07 -04:00
Igor Zaworski
8c5ba3a0d7
Fix conflicting function/class name linking error ( #6182 )
2025-07-16 17:25:01 -04:00
Igor Zaworski
826e5b0826
Fix `--coverage-expr` null pointer dereference ( #6181 )
2025-07-16 12:07:34 -04:00
Artur Bieniek
abd509ce53
Support delays in emitted Verilog ( #6177 )
2025-07-16 11:52:56 -04:00
Ryszard Rozak
1bf24c7eb4
Add support for disabling begin just under fork from outside that begin ( #5432 partial) ( #6183 )
2025-07-16 16:04:17 +02:00
Wilson Snyder
1f0357ba93
Add NOEFFECT warning, replacing previous `foreach` error.
2025-07-16 08:18:57 -04:00
Wilson Snyder
db6b17fdb4
Fix error message
2025-07-15 17:41:08 -04:00
Artur Bieniek
f3e109d8c5
Support covergroup extends, etc. ( #6160 )
2025-07-15 09:31:08 -04:00
Wilson Snyder
371ac07c6f
Fix CVTREAL not being able to be disabled in e.g. primitive terminals.
2025-07-14 20:08:44 -04:00
Wilson Snyder
caf3522364
Support implicit enum declarations with packed dimensions
2025-07-14 19:50:02 -04:00
Geza Lore
03e0d49d99
Optimize DFG partial assignments ( #6176 )
...
This is mostly a refactoring, but also enables handling some more
UNOPTFLAT, when the variable is only partially assigned in the cycle.
Previously the way partial assignments to variables were handled were
through the DfgVerexVar types themselves, which kept track of all
drivers. This has been replaced by DfgVertexSplice (which always drives
a DfgVeretexVar), and all DfgVertexVar now only have a single source,
either a DfgVertexSplice, if partially assigned, or an arbitrary
DfgVertex when updated as a whole.
2025-07-14 17:09:34 -04:00
Ryszard Rozak
e2e5d9eaf1
Support disabling a fork from outside that fork ( #6174 )
2025-07-14 06:51:58 -04:00
Wilson Snyder
2f199f20cf
Add ENUMITEMWIDTH error, and apply to X-extended and ranged values.
2025-07-12 14:14:17 -04:00
Yilou Wang
1044398f95
Support member-level triggers for virtual interfaces ( #5166 ) ( #6148 )
2025-07-11 21:04:51 -04:00
Geza Lore
77180c4020
Optimize more cycles in DFG ( #6173 )
...
Added a second algorithm to break cycles in DFG by identifying which
bits of a circular variable are actually independent of the variable,
then reuse the existing (but extended) driver tracing algorithm to
eliminate them.
This can fix up things like: `assign gray = binary ^ (gray >> 1)`
2025-07-11 14:19:09 -04:00
Petr Nohavica
0982260d3b
Fix constructor parameters in inheritance hierarchies ( #6036 ) ( #6070 )
2025-07-11 13:10:36 -04:00
Artur Bieniek
58b867c39c
Support multiple variables on RHS of a `force` assignment ( #6163 )
2025-07-10 21:12:44 -04:00
Igor Zaworski
4e8a8a0398
Fix param-dependent class typedef linking ( #6171 )
2025-07-10 21:11:09 -04:00
Artur Bieniek
4dc6a31276
Fix omitting error when assigning to an input ( #6169 )
2025-07-10 20:37:55 -04:00
Geza Lore
ce77bac99a
Break some combinational cycles in DFG ( #6168 )
...
Added an algorithm that can break some combinational cycles in DFG, by
attempting to trace driver logic until we escape the cycle. This can
eliminate a decent portion of UNOPTFLAT warnings. E.g. due to this code:
```systemverilog
assign a[0] = .....;
assign a[1] = ~a[0];
```
2025-07-10 18:46:45 +01:00
Igor Zaworski
31c279a7b3
Support randomize() on class member selects ( #6161 )
2025-07-10 04:59:05 -04:00
Bartłomiej Chmiel
9ad0de1efd
Fix uninitialized thread PGO counters ( #6167 )
2025-07-10 04:56:14 -04:00
Wilson Snyder
d89df33fcd
Change control file `public_flat_*` and other signal attributes to support __ in names ( #6140 ).
2025-07-09 20:48:00 -04:00
Wilson Snyder
9fc7143fce
Fix genvar error with `-O0` ( #6165 ).
2025-07-09 19:11:48 -04:00
Igor Zaworski
dbfbc657e1
Fix class extends dotted error ( #6162 )
2025-07-09 17:12:11 -04:00
Ryszard Rozak
8b3a6ba542
Support disable dotted references ( #6154 )
2025-07-09 16:59:26 -04:00
Igor Zaworski
5777ab75c7
Fix crash with --dumpi-V3LinkDot without --debug ( #6159 )
2025-07-08 10:28:17 -04:00
Geza Lore
e494cf22a4
Add DfgPeephole patterns ( #6149 )
2025-07-07 16:25:29 +01:00
Wilson Snyder
5a6d5ed96b
Support property `iff` and `implies`.
2025-07-03 21:13:04 -04:00
Wilson Snyder
26c7f1adb6
Tests: Change default indent to 2 spaces (match edaplayground). No functional change.
2025-07-03 20:43:13 -04:00
Wilson Snyder
f77af4e6f6
Important: Change `--assert` to be the default; use `--no-assert` for legacy behavior and faster runtimes.
2025-07-03 19:36:28 -04:00
Todd Strader
08fef668cd
Fix more wide ternary + coverage cases ( #6155 )
2025-07-03 18:00:39 -04:00
Wilson Snyder
4ddc649836
Add UNSUPPORTED rather than syntax error on pullup/pulldown strengths
2025-07-02 20:54:47 -04:00
Wilson Snyder
77908447e6
Support scoped `new` ( #4199 ).
2025-07-02 19:54:57 -04:00
Todd Strader
ae0f29ed37
Fix wide non-blocking assignment mis-optimization ( #6150 ) ( #6152 )
2025-07-02 18:43:10 -04:00
Wilson Snyder
73ca2ab997
Support `$past_gclk`
2025-07-01 18:00:04 -04:00
Geza Lore
7a3f1f16ca
Optimize DFG before V3Gate ( #6141 )
2025-07-01 17:55:08 -04:00
Wilson Snyder
9598ef9315
Internals: Avoid - in enum name
2025-07-01 05:45:10 -04:00
github action
b27bd6526a
Apply 'make format'
2025-06-30 01:00:56 +00:00
Wilson Snyder
916a89761e
Add `--work` library-selection option ( #5891 partial).
2025-06-29 20:17:27 -04:00
Geza Lore
c3d86626ee
Internals: Remove unused AstNodeModule 'activesp' child ( #6138 )
2025-06-29 09:56:44 -04:00
Wilson Snyder
5d32fc56ac
Support 'config' parsing, but not functionally
2025-06-28 20:32:19 -04:00
Wilson Snyder
93f447dd4a
Support constant functions with left-hand-side concatenates.
2025-06-28 17:12:03 -04:00
Geza Lore
bc892deacc
Safely support non-overlapping blocking/non-blocking assignments ( #6137 )
...
The manual for the BLKANDNBLK warning describes that it is safe to
disable that error if the updated ranges are non-overlapping. This
however was not true (see the added t_nba_mixed_update* tests).
In this patch we change V3Delayed to use a new ShadowVarMasked
scheme for variables that have mixed blocking and non-blocking
updates (or the FlagUnique scheme for unpacked variables), which
is in fact safe to use when the updated parts are non-overlapping.
Furthermore, mixed assignments are safe as far as scheduling is
concerned if either:
- They are to independent parts (bits/members/etc) (with this patch)
- Or if the blocking assignment is in clocked (or suspendable) logic.
The risk in scheduling is a race between the Post scheduled NBA
commit, and blocking assignments in combinational logic, which might
order incorrectly.
The second point highlights that we can handle stuff like this safely,
which is sometimes used in testbenches:
```systemverilog
always @(posedge clk) begin
if ($time == 0) a = 0;
end
always @(posedge clk) begin
if ($time > 0) a <= 2;
end
````
The only dangerous case is:
```systemverilog
always @(posedge clk) foo[idx] <= val;
assign foo[0] = bar;
```
Whit this patch, this will still resolve fine at run-time if 'idx' is
never zero, but might resolve incorrectly if 'idx' is zero.
With the above in mind, the BLKANDNBLK warning is now only issued if:
- We can't prove that the assignments are to non-overlapping bits
- And the blocking assignment is in combinational logic
These are the cases that genuinely require user attention to resolve.
With this patch, there are no more BLKANDNBLK warnings in the RTLMeter
designs.
Fixes #6122 .
2025-06-28 20:45:45 +01:00
Wilson Snyder
62e5e3aa0c
Fix interface array connections with non-zero low declaration index.
2025-06-28 09:43:02 -04:00
Wilson Snyder
f508dadc97
Support `specparam` ( #5767 ).
2025-06-28 08:23:43 -04:00
Todd Strader
73696f0a71
Tests: Add coverpoints test ( #6118 )
2025-06-27 15:47:13 -04:00
Wilson Snyder
75229cc03d
Fix `pre_randomize`/`post_randomize` when no randomize ( #6122 ).
2025-06-26 18:34:20 -04:00
Wilson Snyder
e422c183ff
Fix method calls without parenthesis ( #6127 ).
2025-06-26 18:16:21 -04:00
Kamil Rakoczy
d183b4edde
Fix variables declared in fork after taskify ( #6126 )
2025-06-26 10:28:58 -04:00
Wilson Snyder
6cd0948c8c
Internals: Standardize Makefile indents. No functional change intended.
2025-06-25 21:10:46 -04:00
Wilson Snyder
3209bee3b3
Fix colon-divide operator without space ( #6121 ).
2025-06-25 04:56:52 -04:00
Wilson Snyder
51545b36ca
Internals: Add format-make rule and standardize Makefile indents. No functional change intended.
2025-06-24 17:58:55 -04:00
Wilson Snyder
6af694b04b
Support `$timeformat` with missing arguments ( #6113 ).
2025-06-24 17:30:05 -04:00
Geza Lore
916d473eff
Internals: Replace unnecessary AstSel::widthp() child node with const in node ( #6117 )
2025-06-24 11:59:09 -04:00
Wilson Snyder
544cb4a90f
Fix decoding octal string escapes with 1-2 digits ( #6108 ).
2025-06-23 18:37:44 -04:00
Geza Lore
2daa09a255
Optimize constify within Expand and Subst ( #6111 )
...
These passes blow up the Ast size on some designs, so delaying running V3Const
until after the whole pass can notably increase peak memory usage. In this
patch we apply V3Const per CFunc within these passes, which saves on memory.
Added -fno-const-eager to disable the intra-pass V3Const application, for
debugging.
2025-06-23 17:58:26 -04:00
Wilson Snyder
49fe129634
Fix `--lib-create` with double-underscore ( #6099 ).
2025-06-18 08:56:32 -04:00
Peter Birch
75df36bc8f
Add hint of the signed rhsval in oversized replication error ( #6098 )
2025-06-17 16:59:18 -07:00
Geza Lore
48600c77b5
Fix DFG binToOneHot table index missing driver ( #6100 )
2025-06-17 15:53:47 +01:00
Geza Lore
277611bcdd
Add DFG binToOneHot pass to generate one-hot decoders ( #6096 )
...
Somewhat commonly, there is code out there that compares an expression (or
variable) against many different constants, e.g. a one-hot decoder:
```systemverilog
assign oneHot = {x == 3, x == 2, x == 1, x == 0};
```
If the width of the expression is sufficiently large, this can blow up
a GCC pass and take an egregious amount of memory and time to compile.
Adding a new DFG pass that will generate a cheap one-hot decoder:
to compute:
```systemverilog
wire [$bits(x)-1:0] idx = <the expression being compared many times>
reg tab [1<<$bits(x)] = '{default: 0};
reg [$bits(x)-1:0] pre = '0;
always_comb begin
tab[pre] = 0;
tab[idx] = 1;
pre = idx ; // This assignment marked to avoid a false UNOPFTLAT
end
```
We then replace the comparisons `x == CONST` with `tab[CONST]`.
This is generally performance neutral, but avoids the compile time and memory
blowup with GCC (128GB+ -> 1GB in one example).
We do not apply this if the comparisons seem to be part of a `COMPARE ?
val : COND` conditional tree, which the C++ compilers can turn into jump
tables.
This enables all XiangShan configurations from RTLMeter to now build with GCC,
so in this patch we enabled those in the nightly runs.
2025-06-16 23:14:24 +01:00
Todd Strader
47f5a6a52b
Fix unpacked to packed parameter assignment ( #6088 ) ( #6081 )
2025-06-12 12:47:58 -04:00
Todd Strader
206a0b4fd2
Fix casting reals to large integrals ( #6085 )
2025-06-12 11:53:10 -04:00
Bartłomiej Chmiel
dc307270f7
Fix nested hier blocks workers error ( #6087 )
...
Signed-off-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
2025-06-12 07:15:46 -04:00
Wilson Snyder
4990b44120
Fix trace hierarchicalName runtime errors ( #5668 ) ( #6076 ).
2025-06-10 20:17:32 -04:00
Paul Swirhun
4925f9ad73
Support 1-bit params with -G and -pvalue ( #6051 ) ( #6082 )
2025-06-10 17:39:13 -04:00
Paul Swirhun
ac06b6fc4f
Fix streaming operator packing order ( #5903 ) ( #6077 )
2025-06-10 17:23:16 -04:00
Kamil Rakoczy
58ea7ad361
Fix class typedef elaboration ( #6080 )
2025-06-10 12:03:26 -04:00
Todd Strader
d9534ec626
Fix x assign vs init randomization ( #6075 )
2025-06-09 17:59:01 -04:00
Wilson Snyder
5b2dc52681
Fix array bounds checking with class member selects ( #5996 ) ( #5997 ).
2025-06-07 17:20:48 -04:00
Todd Strader
a044697990
Fix signed cast ( #6912 ) ( #6068 )
2025-06-06 21:13:31 -04:00
Todd Strader
d49efa79df
Fix type operator for interface signals ( #6050 ) ( #6049 )
2025-06-06 11:29:33 -04:00
Ryszard Rozak
1a3fd92063
Tests: Fix t_interface_array2 tests ( #6065 )
2025-06-06 06:28:29 -04:00
Wilson Snyder
ed46878f7b
Fix virtual interface array typedef expressions ( #6057 ).
2025-06-04 21:43:46 -04:00
Todd Strader
cfbcfd913c
Fix packed array deduction ( #6046 )
2025-05-31 07:55:00 -04:00
Wilson Snyder
79de1ff507
Fix WIDTHCONCAT on packed pattern assignment ( #6045 ).
2025-05-31 07:38:15 -04:00
Nick Brereton
8a8f04153a
Fix method calls and new to access interface arrays ( #5973 )
2025-05-29 22:11:47 -04:00
Wilson Snyder
8031ca2616
Add `MODMISSING` error, in place of unnamed error ( #6054 ).
2025-05-29 21:02:00 -04:00
Wilson Snyder
b0d1f720e0
Tests: Rename t_dpi_instr_count_large
2025-05-29 18:58:22 -04:00
Bartłomiej Chmiel
7dbe4f1807
Fix V3OrderParallel scoring contraction hang ( #6052 )
2025-05-29 10:31:57 -04:00
Todd Strader
5fcd0e52e7
Fix casting to arrays of enums ( #6044 )
2025-05-27 21:14:09 -04:00
Todd Strader
76aced4d40
Fix parameter types of user defined arrays ( #6042 )
2025-05-27 18:35:21 -04:00
Todd Strader
4b041c636f
Fix --x-initial and --x-assign random stability ( #2662 ) ( #5958 ) ( #6018 ) ( #6025 )
2025-05-27 09:31:55 -04:00
Paul Swirhun
e84fe36518
Tests: Add test coverage for stream to packed N-dim arrays ( #6039 )
2025-05-26 09:50:40 -04:00
Bartłomiej Chmiel
9cc4cc0efd
Add `--hierarchical-threads` ( #6037 )
2025-05-26 09:37:35 -04:00
Paul Swirhun
c9fa54536e
Tests: Fix MacOS test driver when child process finishes ( #6032 ) ( #6038 )
...
os.read(fd, 1) returns b'' on MacOS when the
child process exits, whereas it must be throwing an OSError
on other platforms.
2025-05-26 08:58:20 -04:00
Petr Nohavica
22d484d54d
Fix associative arrays with enum keys ( #6034 ) ( #6035 )
2025-05-24 17:59:23 -04:00
Wilson Snyder
091be59f0d
Tests: Use make -j when few tests.
2025-05-22 17:53:04 -04:00
Wilson Snyder
7b2dc46399
Commentary: Changes update
2025-05-22 06:45:39 -04:00
Ryszard Rozak
2491f25da7
Add filtering type option in verilator_coverage ( #6030 )
2025-05-22 02:42:09 -07:00
Todd Strader
d400584460
Fix concatenation and type casting ( #6012 ) ( #6013 )
2025-05-21 08:41:29 -04:00
Shou-Li Hsu
25cb31c38b
Add aggregate type error checks ( #5570 ) ( #5950 )
2025-05-20 09:10:22 -04:00
Ryszard Rozak
bed0456eca
Add ternary operator into branch coverage ( #5880 )
2025-05-19 09:35:35 -04:00
Wilson Snyder
ad08302e5f
Support parameter forward types.
2025-05-19 08:35:38 -04:00
Wilson Snyder
27eb8cfe8a
Fix extraneous WIDTH warning on assoc.exists()
2025-05-18 11:25:25 -04:00
Yutetsu TAKATSUKASA
b26658fd96
Fix wrong optimization result of shifted out variable ( #6016 ) ( #6019 )
2025-05-18 07:18:37 -04:00
Wilson Snyder
0c8c7fb03c
Remove symbol table from parser: Support redeclaring type as non-type; major parsing change ( #2412 ).
2025-05-18 07:13:37 -04:00
Wilson Snyder
6bb16d6c52
Disable symbol from parser: Support redeclaring type as non-type; major parsing change ( #2412 ).
2025-05-18 07:13:37 -04:00
Wilson Snyder
19be36dbcb
Tests: Cleanup some type tests
2025-05-17 21:09:05 -04:00
Wilson Snyder
3b632739a8
Internals: Add RequireDType and check for recursive data types, in prep for future parser.
2025-05-17 20:40:03 -04:00
Wilson Snyder
640339ec36
Revert 'Fix --x-initial and --x-assign random stability ( #2662 ) ( #5958 ).' See ( #6018 ).
...
Reverts 4581023805 plus line in Changes file
2025-05-17 20:27:03 -04:00
Wilson Snyder
647404ec1e
Tests: Improve warning coverage
2025-05-17 16:28:09 -04:00
Wilson Snyder
66667b6172
Support SARIF JSON diagnostic output with `--diagnostics-sarif`. ( #6017 )
2025-05-17 15:46:15 -04:00
Wilson Snyder
7a5c223ccf
Tests: Improve warning coverage
2025-05-16 22:32:25 -04:00
Wilson Snyder
2dbe897e1b
Add security policy
2025-05-16 22:08:12 -04:00
Zhen Yan
fc700538a5
Fix arithmetic left-shift by constants over 32 bits ( #6007 ) ( #6015 )
2025-05-16 21:57:52 -04:00
Wilson Snyder
1bcd5ee0c1
Fix spelling
2025-05-16 19:02:19 -04:00
Todd Strader
4581023805
Fix --x-initial and --x-assign random stability ( #2662 ) ( #5958 )
2025-05-16 13:54:51 -04:00
Ryszard Rozak
73b3648262
Fix skipped genblocks in toggle coverage ( #6010 )
...
Signed-off-by: Ryszard Rozak <rrozak@antmicro.com>
Co-authored-by: Tomasz Gorochowik <tgorochowik@antmicro.com>
2025-05-16 08:24:57 -04:00
Zhen Yan
6b42d789af
Fix checking for too-wide divide and modulus ( #6003 ) ( #6006 )
2025-05-15 10:43:45 -04:00
Ryszard Rozak
6db599da45
Fix slicing of AstExprStmt nodes ( #6005 )
2025-05-14 11:55:02 -04:00
Geza Lore
2f6ecd1853
Fix folding of LteS in DfgPeephole ( #6004 )
...
Fixes #6000
2025-05-14 13:33:20 +01:00
Ryszard Rozak
91c52a4972
Support for assignments to concatenations with impure RHS ( #6002 )
2025-05-12 19:19:38 -04:00
Wilson Snyder
0162e15b6e
Tests: Rename property tests
2025-05-11 08:24:11 -04:00
Wilson Snyder
680236b03e
Internals: Redo post-error additional information to be part of error calls.
2025-05-10 16:20:12 -04:00
Wilson Snyder
0f528d136d
Fix arithmetic right-shift by constants over 32 bits ( #5994 ).
2025-05-10 13:59:56 -04:00
Wilson Snyder
d9dcde60a6
Fix duplicate error first-lines, and some internal V3Error cleanups
2025-05-10 13:29:30 -04:00
Yutetsu TAKATSUKASA
100e3d7702
Fix const-bit-op-tree with single-bit masks ( #5993 ) ( #5998 )
2025-05-10 06:01:15 -04:00
Ryszard Rozak
c2d289dc71
Tests: Fix t_math_signed3 test ( #5995 )
2025-05-09 11:09:33 -04:00
Bartłomiej Chmiel
5f4646f617
Ignore dependencies from different hierarchical schedules ( #5954 )
...
Signed-off-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
2025-05-08 11:45:10 +01:00
Yilou Wang
a80aa07de6
Support constrained random for associative arrays ( #5985 ) ( #5986 )
2025-05-07 07:07:16 -04:00
Ryszard Rozak
2358f5c2a2
Fix AstAssignW conversion ( #5991 ) ( #5992 )
2025-05-07 05:54:18 -04:00
Wilson Snyder
bc3bf6ab5e
Tests: Add t_param_type_bad3
2025-05-06 21:11:34 -04:00
Wilson Snyder
b099d6fe63
Fix implicit dtype numbering to be per-module.
...
Internals: Remove use of parser in implicit dtype numbering.
2025-05-06 20:39:17 -04:00
Yutetsu TAKATSUKASA
2ed754d5ea
Fix Inconsistent assignment error by split-var ( #5984 ) ( #5988 )
2025-05-06 05:00:17 -04:00
Wilson Snyder
49e5c305a4
Tests: Split and rename t_parse_sync_bad
2025-05-05 18:35:50 -04:00
Wilson Snyder
69eb76ad66
Fix constant propagation of post-expand stages ( #5983 ).
2025-05-05 07:04:20 -04:00
Wilson Snyder
66e105b444
Fix constant propagation of post-expand stages ( #5963 ) ( #5972 ).
2025-05-04 21:41:14 -04:00
Wilson Snyder
11cfa61f80
Fix casting etc of typedef'ed doubles.
2025-05-04 16:34:37 -04:00
Wilson Snyder
51616ecf2f
Internals: Rename to instances, and other minor cleanups
2025-05-04 14:57:10 -04:00
Geza Lore
223bb9ba9a
Fix streaming to/from packed arrays ( #5976 )
...
bug from 6bb57e4630
Fixes RTLMeter OpenTitan. Fixes #5955 .
2025-05-04 19:28:51 +01:00
Geza Lore
70c84d3abd
Preserve C++ widths in V3Expand ( #5975 )
...
During V3Expand, some w32/1 (width == 32, widthMin == 1), nodes (e.g.:
RedOr) are replaced with w1 nodes (width == widthMin == 1) (e.g.: Neq).
However, V3Expand runs after V3Clean, when we are in C++ width world,
so we need to preserve the width/widthMin distinction, otherwise a later
constant folding can eliminate e.g. a necessary AstAnd used clear an
intermediate result (isAllOnes is true for a Const 1 with w1, but false
for a Const 1 with w32/1).
Attempting to fix by preserving all width/widthMin during a replacement
in V3Expand.
DFG itself is fine, but the transformed code hits the above.
Fixes #5953
2025-05-04 16:31:27 +01:00
Wilson Snyder
ea65bcd86b
Add lib.map information to unsupported message, etc
2025-05-03 05:30:40 -04:00
Wilson Snyder
1a1c6e8797
Change cell messages to instance to match IEEE
2025-05-03 04:00:47 -04:00
Wilson Snyder
15ebbd309f
Fix always processes ignoring $finish ( #5971 ).
2025-05-02 07:36:42 -04:00
Wilson Snyder
2c0372acdf
Tests: Fix relocation of extract tests
2025-04-30 23:02:19 -04:00
Wilson Snyder
8b52bd817f
Add PROCINITASSIGN on initial assignments to process variables ( #2481 ).
2025-04-30 22:00:06 -04:00
Wilson Snyder
38dd9a344e
Improve documentation for BADVLTPRAGMA
2025-04-30 20:32:30 -04:00
Wilson Snyder
cbf46d0ded
Tests: Add mis-include test.
2025-04-30 19:00:17 -04:00
Wilson Snyder
b10b22d09f
Change unsupported 'tagged' into parse-level message
2025-04-30 18:30:19 -04:00
Wilson Snyder
0664cf407c
Fix constant propagation making upper bits Xs ( #5969 ).
2025-04-30 08:22:05 -04:00
Wilson Snyder
5ca62de167
Fix filename backslash escapes in C code ( #5947 ).
2025-04-29 19:27:38 -04:00
Wilson Snyder
7d4d618d98
Test: display fix
2025-04-29 19:23:08 -04:00
Wilson Snyder
9b3fccdcb7
Add BADVLTPRAGMA on unknown Verilator pragmas ( #5945 ).
2025-04-29 18:18:54 -04:00
Wilson Snyder
8da539ed8a
Fix sign extension of signed compared with unsigned case items ( #5968 ).
2025-04-28 22:22:50 -04:00
Wilson Snyder
5083972536
Internals: Defer AstCast into V3LinkDot, in preparation for future parser
2025-04-28 19:34:40 -04:00
Wilson Snyder
f983ce4875
Internals: Defer DTypeRef versus IfaceDTypeRef determination into V3LinkDot, in preparation for future parser
2025-04-27 22:11:28 -04:00
Wilson Snyder
c9be36911f
Cleanup documentated option sort order, and enforce with test
2025-04-26 17:14:49 -04:00
Wilson Snyder
c3d1c3b952
Fix vlSelf error on fork repeats ( #5927 ).
2025-04-26 09:52:44 -04:00
Wilson Snyder
abc46db3c0
Tests: Cleanup some .cpp paths. No test functional change indended.
2025-04-25 20:57:11 -04:00
Wilson Snyder
ebe49552b0
Fix packed selection using over 32-bit index ( #5957 ).
2025-04-24 18:25:55 -04:00
Bartłomiej Chmiel
d6e52b9400
Support profiling nested hierarchical mtasks with verilator_gantt ( #5956 )
2025-04-24 07:50:07 -04:00
John Khoo
fee839a80e
Update UNOPTFLAT warning to suggest isolate_assignments ( #5942 )
2025-04-18 18:35:36 +09:00
Yilou Wang
e0fdb933a0
Support constraint random for StructArray ( #5805 ) ( #5937 )
2025-04-16 07:08:46 -04:00
Krzysztof Sychla
d0c4cc3938
Support user-defined primitives (UDPs) ( #468 ) ( #5807 ) ( #5936 )
...
Co-authored-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
Co-authored-by: Zhou Shen <599239118@qq.com>
2025-04-16 06:32:18 -04:00
Ryszard Rozak
6a6a7b7e9f
Fix stream expressions ( #5938 )
2025-04-15 11:50:43 -04:00
github action
e3e8f18a4e
Apply 'make format'
2025-04-15 01:41:13 +00:00
Brian Li
50d7f2afc6
Support assigning unpacked arrays to queues ( #5924 ) ( #5928 )
2025-04-14 21:40:17 -04:00
Wilson Snyder
7a2732f211
Fix parsing (no support) of covergroup functions
2025-04-12 13:07:38 -04:00
github action
999f251b3d
Apply 'make format'
2025-04-12 11:36:25 +00:00
Robin Heinemann
10c3320c6b
Support soft unions ( #5912 ) ( #5932 )
2025-04-12 07:35:37 -04:00
Todd Strader
7336b9ebfc
Add V3EmitV support for sampled value functions ( #5931 )
2025-04-11 12:25:56 -04:00
Bartłomiej Chmiel
84f26ed3d7
Add visualization of multi-threaded waiting time with verilator_gantt ( #5929 )
2025-04-10 10:03:58 -04:00
Ryszard Rozak
6bb57e4630
Fix assignments with stream expressions and unpacked arrays ( #5915 )
2025-04-09 06:37:52 -04:00
Wilson Snyder
7c2b1971a4
Support class extends with arguments.
2025-04-08 22:09:40 -04:00
Wilson Snyder
86f6ac2960
Fix port default values with `--coverage-line` creating `0=0` ( #5920 ).
2025-04-08 20:48:57 -04:00
Wilson Snyder
f5312b83b9
Fix %% on elaboration severity tasks ( #5922 ).
2025-04-07 08:38:05 -04:00
Wilson Snyder
b26a19279a
Support simple `checker` blocks ( #4066 ).
2025-04-06 23:42:49 -04:00
Wilson Snyder
fcefa96397
Tests: Disable warning in t_gantt_numa.
2025-04-06 23:16:51 -04:00
Wilson Snyder
c8a945f363
Internals: Minor refactoring of checker parsing/tests. No functional change.
2025-04-06 23:13:24 -04:00
Wilson Snyder
c7ff82f06b
Tests: Fix driver.py not stopping on interrupts ( #5752 ) ( #5921 )
2025-04-06 19:03:39 -04:00
Wilson Snyder
6997a7c516
Fix format mis-indendenting t_assert_ctl_arg
2025-04-06 12:44:30 -04:00
Wilson Snyder
eefbd94966
Fix format mis-indendenting t_assert_ctl_arg
2025-04-06 10:39:07 -04:00
Wilson Snyder
d1a0bad334
Tests: Add test for ( #4040 ).
2025-04-06 10:24:49 -04:00
github action
5cca1b101c
Apply 'make format'
2025-04-06 01:19:33 +00:00
Wilson Snyder
18aeb080ad
Fix empty test, part of last commit.
2025-04-05 21:14:27 -04:00
Wilson Snyder
e9fe8f65a8
Change error messages to more often suggest documentation
2025-04-05 17:10:44 -04:00
github action
eccfd8c6f9
Apply 'make format'
2025-04-05 19:37:32 +00:00
Wilson Snyder
af03d91714
Tests: Fix truncated file
2025-04-05 15:36:24 -04:00
Wilson Snyder
c3fd34b489
Tests: Add t_virtual_interface_delayed ( #4322 )
2025-04-05 15:31:17 -04:00
Wilson Snyder
e12b971ba6
Optimize SAIF writes ( #5916 )
2025-04-05 15:09:32 -04:00
github action
2bbb24eb38
Apply 'make format'
2025-04-05 18:20:51 +00:00
Wilson Snyder
34a760b75b
Optimize duplicate timestamps out of traces ( #4686 )
2025-04-05 14:19:58 -04:00
Wilson Snyder
7cc40d277b
Tests: Cleanup some .out filenames. No test coverage change.
2025-04-05 13:46:22 -04:00
Wilson Snyder
0984fd045f
Change `--trace` to `--trace-vcd`.
2025-04-05 10:46:39 -04:00
Yutetsu TAKATSUKASA
b9f0612db8
Fix LATCH warning for automatic variables ( #5918 )
2025-04-05 06:21:34 -04:00
Wilson Snyder
73d52c00bb
Tests: Note other simulator results
2025-04-04 07:44:04 -04:00
Wilson Snyder
87ee6c8746
Tests: Only != is globally allowed to compare strings
2025-04-03 21:26:53 -04:00
Mateusz Gancarz
e4771dac7f
In SAIF dumps include signals with TC 0 ( #5914 )
2025-04-03 16:25:10 -04:00
Ryszard Rozak
353a4b7b4a
Fix parameters referencing interface fields ( #1593 ) ( #5910 )
2025-04-02 09:43:12 -04:00
Wilson Snyder
6d1e82b908
Add numactl-like automatic assignment of processor affinity ( #5911 )
2025-04-02 08:27:23 -04:00
Krzysztof Sychla
cd5997a2e6
Support `$setuphold` ( #5884 )
2025-04-02 06:08:51 -04:00
Wilson Snyder
0b9c2163d5
Tests: Cleanup some gantt tests; no test functional change
2025-04-01 22:54:39 -04:00
Wilson Snyder
168f0ed9e5
Fix `new this` ( #5909 ).
2025-04-01 08:12:34 -04:00
Wilson Snyder
538f39edf9
Fix grammar.
2025-04-01 07:54:56 -04:00
github action
e3c1d36e6e
Apply 'make format'
2025-04-01 11:34:45 +00:00
Brian Li
559d990e82
Support command-line overriding `define ( #5900 ) ( #5908 )
2025-04-01 07:33:49 -04:00
Wilson Snyder
f3684a85b9
Fix delayed assignment malformed LHS assertion ( #5904 ).
2025-03-30 17:38:54 -04:00
Wilson Snyder
b49351356e
Fix delays inside interface functions, and classes inside interfaces ( #5846 ).
2025-03-30 16:40:22 -04:00
Wilson Snyder
0a860f151c
Cleanup some missed `make clean` files
2025-03-30 11:02:05 -04:00
Wilson Snyder
2116b424b9
Tests: Cleanup as --binary implies --timing. No test functional change.
2025-03-29 15:50:07 -04:00
Wilson Snyder
2b8b1c4281
Tests: Disable running some lint tests on vltmt
2025-03-29 07:14:45 -04:00
Wilson Snyder
9b48cc33db
Fix process comparisons ( #5896 ).
2025-03-28 22:40:21 -04:00
Wilson Snyder
844448655e
Add `systemc_header_post
2025-03-28 22:40:21 -04:00
Wilson Snyder
b4ef6ce860
Support `systemc_interface and related inside `class`.
2025-03-28 22:40:21 -04:00
Wilson Snyder
6edf2f80a2
Tests: Rename t_extend_c_class
2025-03-28 22:40:21 -04:00
Geza Lore
39c3e79a3c
Fix V3Gate assertion on eliminated circular logic ( #5889 ) ( #5898 )
...
Fixes #5889
2025-03-28 17:04:09 +00:00
Wilson Snyder
5e69faff46
Fix clang 20 warnings
2025-03-27 19:01:25 -04:00
Wilson Snyder
d26d62a176
Tests: Add driver.py --driver-clean
2025-03-27 18:33:18 -04:00
Bartłomiej Chmiel
8965401d10
Fix PGO profiling for multi-threaded hierarchical scenarios ( #5888 )
2025-03-27 11:10:48 -04:00