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
Wilson Snyder
b652009235
Internals: Fix name of some static and thread variables. No functional change.
2025-10-27 20:49:41 -04:00
Wilson Snyder
9513edfdd6
Fix processor parsing static position ( #6598 )
2025-10-27 20:44:55 -04:00
Matt Stroud
6f055f84ce
Fix missing net type mappings in FST traces ( #6582 ) ( #6583 )
2025-10-21 21:07:51 -04:00
Wilson Snyder
14e3448ba6
Fix `with` inside a `with`
2025-10-21 00:40:47 -04:00
Geza Lore
61c64e4a3b
Internals: Make AstCExpr always cleanOut ( #6280 ) ( #6570 )
...
There was exactly one place in V3Task, handling DPI arguments when we
relied on cleanOut of AstCExpr being false for masking. Made that code
do the relevant masking via a few new run-time functions, which also
eliminates some special cases in the relevant V3Task functions.
2025-10-19 09:44:33 +01:00
Aleksander Kiryk
94525cae5d
Fix std::process::get_randstate to not affect random stability ( #6550 ) ( #6565 )
2025-10-16 21:11:07 -04:00
Wilson Snyder
6e8bd3da19
Internals/Tests: Cleanup some missing dev coverage items
2025-10-11 12:54:55 -04:00
Geza Lore
ce0a05691b
Internals: Improve coverage flow ( #6526 )
...
See addes "Code coverage" section in docs/internals.rst
2025-10-03 17:18:24 +01:00
Ryszard Rozak
2c74765246
Fix find_index methods of associative arrays ( #6525 )
...
Signed-off-by: Ryszard Rozak <rrozak@antmicro.com>
Co-authored-by: Nikolai Kumar <nkumar@mips.com>
2025-10-02 12:05:24 -04:00
Geza Lore
aaa49273cf
Internals: Fix coverage exclusion markers
2025-10-01 21:22:16 +01:00
Geza Lore
5cd8bd0356
Remove use of VL_INLINE_OPT macro ( #6507 )
2025-09-29 18:07:36 +01:00
Wilson Snyder
3dc430085d
Internals: Misc verilated_random style cleanups. No functional change.
2025-09-21 12:33:38 -04:00
Wilson Snyder
19ca140165
Improve adding model error message
2025-09-20 11:32:15 -04:00
Wilson Snyder
50dfdcb6cc
Support digits in `$sscanf` field width formats ( #6083 ).
2025-09-20 10:26:36 -04:00
Geza Lore
4ab0690428
CI: Add -DVL_LEAK_CHECKS in asan builds ( #6444 )
2025-09-17 00:18:58 +01:00
Wilson Snyder
b11ec23891
Add waiver
2025-09-14 23:59:42 -04:00
Wilson Snyder
155cd9a8d0
Commentary
2025-09-13 10:23:37 -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
62d403c060
Internals: Reformat verilated_std.sv. No functional change.
2025-09-13 09:10:51 -04:00
Wilson Snyder
67f26508ba
Support `$sscanf %t`
2025-09-01 14:40:22 -04: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
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
d56d1a7719
Fix queue extend to check bounds ( #6324 )
2025-08-23 10:37:40 -04:00
Wilson Snyder
e202cb31d8
Change `$display("%p")` to remove space after `}`.
2025-08-21 21:33:05 -04:00
Wilson Snyder
997d5ecdf1
Internals: Cleanup cppcheck c casts. No functional change intended.
2025-08-21 20:06:43 -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
dc5a17fea0
Support unpacked array `with` methods ( #6134 ).
2025-08-20 21:01:34 -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
Wilson Snyder
9b2f55ab39
Internals: Fix up include/ cppcheck issues ( #6311 )
2025-08-20 07:27:55 -04:00
Wilson Snyder
f71b8e6195
Internals: Fix up include/ cppcheck issues ( #6311 )
2025-08-19 21:36:52 -04:00
Geza Lore
a0edd4e907
Internals: Improve cppcheck flow and fix up issues ( #6311 )
...
Added cppcheck-suppressions.txt in the repo root. You can add new
patterns in there instead of having to parse the XML output.
Also configure to add the -D__GNUC__ preprocessor macro, which makes it
understand UASSERT (it understands the 'noreturn' function attribute).
Added some case by case specific suppressions and fixed up other code,
especially in V3Ast*h and V3Dfg*.h, including code generated by astgen
that had some no-ops that irks cppcheck.
One thing it does not seem to like is `const` class members with default
initializers in the class. It will assume that's always the value, even
if overridden in the constructor. We had few so removed them.
With that a lot of files in `src/` are now clean or only have a handful
of issues. Therefore, I have also deleted cppcheck_filtered, and made it
produce human readable output straight to the terminal.
Regarding cleaning up the reported nits, I kind of got bored after
V3[A-E] so pausing here. Apologies for the merge conflicts.
Tested with cppcheck 2.13.0
2025-08-19 22:02:10 +01:00
Wilson Snyder
b14539569f
Internals: Check and enforce member brace initialization. No functional change intended
2025-08-17 13:20:52 -04:00
Sergey Fedorov
ece4469869
Fix PowerPC support ( #6292 )
2025-08-15 11:25:32 -07: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
3ca1c9b6dd
Internals: Fix and enforce brace new constructors. No functional change intended.
2025-08-08 18:21:12 -04:00
Todd Strader
6bd6663dc9
Fix spurious VPI value change callbacks ( #6274 )
2025-08-07 16:37:33 +01:00
Wilson Snyder
fbaff52668
Change runtime to exit() instead of abort(), unless under +verilated+debug.
2025-08-05 18:43:29 -04: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
473d54aa95
Internals: Fis emit spacing etc. No functional change
2025-08-02 13:47:07 -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
Paul Swirhun
bd2cb989d1
Support bit queue streaming ( #5830 ) ( #6103 ).
2025-07-27 15:29:56 -04:00
Wilson Snyder
470f99694e
Revert d8dbb08a: Support bit queue streaming ( #5830 ) ( #6103 )
2025-07-26 17:59:52 -04:00
Paul Swirhun
d8dbb08a95
Support bit queue streaming ( #5830 ) ( #6103 )
2025-07-26 16:53:51 -04:00
George Polack
f1826a7c20
Support Verilog real to SystemC double ( #6136 ) ( #6158 )
2025-07-25 20:05:36 +02:00
Yilou Wang
10ac99ac05
Support randomization of scope variables with 'std::randomize()' ( #5438 ) ( #6185 )
2025-07-25 12:13:46 +02:00
Wilson Snyder
db5b2669fc
Add current memory usage statistic ( #6192 partial)
2025-07-24 08:36:58 +02:00
Wilson Snyder
7a6775ca84
Internals: Rename memPeakUsageBytes
2025-07-17 22:16:59 -04:00
Ryszard Rozak
e2e5d9eaf1
Support disabling a fork from outside that fork ( #6174 )
2025-07-14 06:51:58 -04:00
Bartłomiej Chmiel
9ad0de1efd
Fix uninitialized thread PGO counters ( #6167 )
2025-07-10 04:56:14 -04:00
Wilson Snyder
6c9cbaef62
Internals: Clean up some constructors. No functional change intended.
2025-07-03 18:59:32 -04:00
Wilson Snyder
b914cda1c7
Internals: cppcheck cleanups. No functional change.
2025-06-28 12:29:41 -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
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
Wilson Snyder
4990b44120
Fix trace hierarchicalName runtime errors ( #5668 ) ( #6076 ).
2025-06-10 20:17:32 -04:00
Paul Swirhun
ac06b6fc4f
Fix streaming operator packing order ( #5903 ) ( #6077 )
2025-06-10 17:23:16 -04:00
Todd Strader
d9534ec626
Fix x assign vs init randomization ( #6075 )
2025-06-09 17:59:01 -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
Wilson Snyder
af30436357
Internals: Rename VL_PACK/VL_UNPACK in prep for future fix. No functional change intended.
2025-05-22 06:54:16 -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
Wilson Snyder
de08655c5b
Internals: Fix some legacy casts. No functional change.
2025-05-20 22:51:54 -04:00
github action
a227aad13d
Apply 'make format'
2025-05-20 23:46:57 +00:00
Joel Bodenmann
80ea173390
Add missing FreeBSD include ( #6027 ) ( #6028 )
...
Fixes #6027
2025-05-20 16:46:07 -07: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
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
Dominick Grochowina
295fae0edc
Fix nullptr segfault in VerilatedVcd::emitTimeChange() ( #5980 )
2025-05-11 08:01:13 -04:00
Wilson Snyder
7191a0ba8b
Internals: Favor preincrements. No functional change.
2025-05-09 21:20:35 -04:00
Yilou Wang
a80aa07de6
Support constrained random for associative arrays ( #5985 ) ( #5986 )
2025-05-07 07:07:16 -04:00
Bartłomiej Chmiel
d6e52b9400
Support profiling nested hierarchical mtasks with verilator_gantt ( #5956 )
2025-04-24 07:50:07 -04:00
Yilou Wang
e0fdb933a0
Support constraint random for StructArray ( #5805 ) ( #5937 )
2025-04-16 07:08:46 -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
174eafd74c
Update libfst from upstream
2025-04-12 18:10:40 -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
Wilson Snyder
e12b971ba6
Optimize SAIF writes ( #5916 )
2025-04-05 15:09:32 -04:00
Wilson Snyder
34a760b75b
Optimize duplicate timestamps out of traces ( #4686 )
2025-04-05 14:19:58 -04:00
Wilson Snyder
0984fd045f
Change `--trace` to `--trace-vcd`.
2025-04-05 10:46:39 -04:00
Mateusz Gancarz
e4771dac7f
In SAIF dumps include signals with TC 0 ( #5914 )
2025-04-03 16:25:10 -04:00
Wilson Snyder
6d1e82b908
Add numactl-like automatic assignment of processor affinity ( #5911 )
2025-04-02 08:27:23 -04:00
Wilson Snyder
538f39edf9
Fix grammar.
2025-04-01 07:54:56 -04:00
Wilson Snyder
21229e0350
Update libfst from upstream ( gtkwave/libfst#12 )
2025-03-30 11:10:38 -04:00
Wilson Snyder
f29eeecee7
Fix process comparisons ( #5896 ).
2025-03-29 07:16:54 -04:00
Wilson Snyder
9b48cc33db
Fix process comparisons ( #5896 ).
2025-03-28 22:40:21 -04:00
Wilson Snyder
ed1e3ec4a2
Internals: Fix some clang-tidy issues. No functional change.
2025-03-27 21:21:37 -04:00
Wilson Snyder
98b89d0f2c
Fix some cppcheck warnings. No functional change intended.
2025-03-27 19:46:59 -04:00
Wilson Snyder
5e69faff46
Fix clang 20 warnings
2025-03-27 19:01:25 -04:00
Wilson Snyder
40acac1c57
Fix queue accessing past end (Clang 20 GLIBC warning)
2025-03-27 19:00:43 -04:00
Bartłomiej Chmiel
8965401d10
Fix PGO profiling for multi-threaded hierarchical scenarios ( #5888 )
2025-03-27 11:10:48 -04:00
Wilson Snyder
ce058cc432
Fix `$fscanf` not returning -1 on EOF ( #5881 ).
2025-03-25 08:28:36 -04:00
Bartłomiej Chmiel
fabded95df
Support multi-thread hierarchical simulation ( #2583 ) ( #5871 )
2025-03-24 18:39:29 -04:00
Wilson Snyder
464e19caaa
Tests: Fix ubuntu24.04-arm issues
2025-03-22 16:55:53 -04:00
Wilson Snyder
c508fd5d24
Internals: Remove single-statement braces. No functional change.
2025-03-19 22:55:11 -04:00
Geza Lore
59cb53cfbc
Set trigger vector in whole words ( #5857 )
...
Having many triggers still hits a bottleneck in LLVM leading to long
compile times.
Instead of setting triggers bit-wise, set them as a whole 64-bit word
when possible. This improves C++ compile times by ~4x on some large
designs and has minor run-time performance benefit.
2025-03-14 14:06:51 +00:00
Geza Lore
aca3b1636a
Remove unused gtkwave/wavealloca.h
2025-03-13 14:43:35 +00:00