Commit Graph

3954 Commits

Author SHA1 Message Date
Wilson Snyder
c7ed73e249 Fix MSVC++ compile warning 2023-02-03 18:47:37 -05:00
Aleksander Kiryk
31130c4b4a
Fix std:: to be parsed first (#3864) (#3928) 2023-02-03 09:04:16 -05:00
github action
00f0027c80 Apply 'make format' 2023-02-03 13:48:46 +00:00
Joseph Nwabueze
c8be50d40b
Add /*verilator public[flat|flat_rd|flat_rw| ]*/ metacomments (#3894) 2023-02-03 08:47:55 -05:00
Wilson Snyder
f6d4f1ad02 Fix very long VPI signal names (#3929). 2023-02-02 19:10:23 -05:00
Andrew Nolte
d3c14cc1ac
Split WIDTH warning into WIDTHEXPAND and WIDTHTRUNC (#3900) 2023-02-02 18:25:25 -05:00
Ryszard Rozak
33468fa0e7
Fix class extend parameter dot case (#3926) 2023-02-02 17:59:47 -05:00
Ryszard Rozak
0e955d503e
Handle references of static members of type aliases of a parametrized class (#3922)
Signed-off-by: Ryszard Rozak <rrozak@antmicro.com>
2023-02-02 08:36:11 +01:00
Andrew Nolte
18e317fb78
Fix inconsistent naming of generate scope arrays (#3840) 2023-02-01 17:30:02 -05:00
Wilson Snyder
ef9f443532 Fix single-element replication to dynarray/unpacked/queue (#3548). 2023-01-31 22:43:41 -05:00
Ryszard Rozak
7f3e178b68
Fix paramaterized class function linkage (#3917)
* Visit function arguments even if the function is unlinkable
* Don't use m_unlinedScopep in AstLambdaArgRef handling
2023-01-30 22:20:56 -05:00
Larry Doolittle
9f9c84aa64
Internals: Avoid using <tab> in the middle of lines (#3913) 2023-01-29 22:39:22 -05:00
Wilson Snyder
164aa96953 Fix GCC warning (fixes recent #3510) 2023-01-29 17:34:48 -05:00
Wilson Snyder
6a7dfb7696 Fix pattern assignment to unpacked structs (#3510). 2023-01-29 16:50:10 -05:00
Wilson Snyder
4208db7811 Support multiple-output buf/not gate primitives 2023-01-28 23:20:48 -05:00
Wilson Snyder
a19dddf05e Fix real parameters of infinity and NaN. 2023-01-28 22:11:09 -05:00
Wilson Snyder
7855a78a0f Support %p of union with real 2023-01-28 21:41:50 -05:00
Wilson Snyder
248bd173d3 Support interface classes and class implements. 2023-01-28 18:06:37 -05:00
Wilson Snyder
8d2be855f5 Internals: Parsing and tests for class interfaces 2023-01-28 16:30:47 -05:00
Wilson Snyder
ba8700f99d Support $changed_gclk, $fell_gclk, $rose_gclk, $stable_gclk 2023-01-28 14:05:26 -05:00
Wilson Snyder
f20997a2f0 Support global clocking and $global_clock. 2023-01-28 12:31:52 -05:00
Wilson Snyder
bea225e191 Fix duplicate name check on extern symbols 2023-01-28 11:55:44 -05:00
Wilson Snyder
93517b8378 Support unpacked unions. 2023-01-27 22:41:12 -05:00
Kamil Rakoczy
a39c7f7dac
Internals: Add V3ThreadPool class (#3898)
The thread pool is self tested, but not otherwise used by the code yet.
2023-01-27 10:43:50 -05:00
Ilya Barkov
d118a739dc
Fix cinlude check (#3907) 2023-01-26 06:35:59 -05:00
Ryszard Rozak
91c44d7830
Support class extending its parameter (#3904) 2023-01-25 20:33:18 -05:00
Ryszard Rozak
4a8cfe367d
Support function calls without parenthesis (#3903) (#3902)
Signed-off-by: Ryszard Rozak <rrozak@antmicro.com>
2023-01-24 15:36:30 +01:00
Ryszard Rozak
b56e7f6910
Support static function variables (#3830) 2023-01-23 08:35:10 -05:00
Varun Koyyalagunta
be26e8da1b
Support struct I/O in --lib-create (#3378) (#3892) 2023-01-22 22:24:36 -05:00
Kamil Rakoczy
6ea725f479
Add --verilate-jobs option (#3889)
Currently this option isn't used, but in the future it will be used to specify parallelization of Verilation step.
2023-01-22 21:52:52 -05:00
Geza Lore
3069860fdf Allow mismatched widths in operands of shifts in DFG
Fixes #3872.

Testing this is a bit tricky, as the front-end fixes up the operand
widths in shifts to match, and we need V3Const to introduce a mismatched
one by reducing `4'd2 ** x` (with x being 2 2-bit wide signal) to `4'd1
<< x`, but t_dfg_peephole runs with V3Const disabled exactly because it
makes it hard to write tests. Rather than fixing this one case in
V3Const (which we should do systematically at some point), I fixed DFG
to accept these just in case V3Const generates more of them. The
assertions were there only because of paranoia (as I thought these were
not possible inputs), the code otherwise works.
2023-01-22 10:55:03 +00:00
Wilson Snyder
bc7048e8d1 Convert verilator_includer to python3 2023-01-21 14:40:22 -05:00
Wilson Snyder
30d6edd2e5 Cleanup missing copyrights and those on simply copied files. No functional change. 2023-01-20 20:42:30 -05:00
James Shi
5ef373500f
Fix module parameter name collision (#3854) (#3855) 2023-01-20 18:38:59 -05:00
Ryszard Rozak
be53eec5ca
Support property calls without parenthesis (#3879) (#3893) 2023-01-20 07:25:37 -05:00
github action
41e5f6b7d5 Apply 'make format' 2023-01-19 23:22:37 +00:00
James Shi
c1c0aa61f9
Fix signed/unsigned parameter types (#3866) 2023-01-19 18:00:32 -05:00
Wilson Snyder
e94023367f Fix elaboration of member selected classes (#3890). 2023-01-19 17:44:27 -05:00
Wilson Snyder
035bf13e4a Fix foreach unnamedblk duplicate error (#3885). 2023-01-18 21:48:06 -05:00
Joey Liu
901d1d8087
Fix unpacked array expansion (#3861) 2023-01-18 14:35:48 -05:00
github action
6cd26edb64 Apply 'make format' 2023-01-18 16:48:16 +00:00
Gökçe Aydos
956fd89b87
Support import/export lists in modport (#3886) 2023-01-18 11:46:51 -05:00
Ilya Barkov
ff2f711d0c
Fix chain call of abstract class constructor (#3868) (#3883) 2023-01-17 13:02:39 -05:00
Aleksander Kiryk
a1160a85a3
Support p format for UnpackArray (#3877) 2023-01-16 12:41:02 -04:00
Wilson Snyder
83f6b11235 Fix astgen in CMakeLists.txt (#3867) 2023-01-13 09:33:50 -05:00
Wilson Snyder
5fce23e90d Fix empty case items crash (#3851). 2023-01-10 07:18:12 -05:00
Wilson Snyder
1d2293b783 Fix some indents of warnMore 2023-01-05 17:59:51 -05:00
Ryszard Rozak
4784daa7dc
Add IMPLICITSTATIC warning when a ftask/function is implicitly static (#3839) 2023-01-05 17:42:05 -05:00
Larry Doolittle
2ab70ba452
Internals: Cleanup .txt file whitespace (#3842) 2023-01-05 05:00:54 -05:00
Yutetsu TAKATSUKASA
816cff009a
Fix #3824 of wrong bit op tree optimization (#3825)
* Tests: Add a test to reproduce #3824

* Fix #3824 of wrong bitOpTree optimization. Consider constant 1 in an Or-tree made by shift-out.
2023-01-04 23:10:55 +09:00
Wilson Snyder
e004ea7ae2 Revert (#3835) (#3836) 2023-01-03 08:25:30 -05:00
Andrew Nolte
6159a7dd8d
Fix VPI generate scope array naming (#3835) (#3836) 2023-01-03 07:38:55 -05:00
Kamil Rakoczy
be65030d61
Fix cmake upper-case and missing include directory (#3838) 2023-01-02 06:25:50 -05:00
Geza Lore
a168d593eb Fix some front-end memory leaks 2023-01-01 15:31:29 +00:00
Geza Lore
6ab47f799b Actually delete the netlist when VL_LEAK_CHECKS 2023-01-01 15:31:29 +00:00
Geza Lore
fd52f7f479 Fix memory leak in V3Sched.
Fixes #3834.
2023-01-01 15:31:29 +00:00
Wilson Snyder
b24d7c83d3 Copyright year update 2023-01-01 10:18:39 -05:00
Ryszard Rozak
bf4a844f2b
Fix self references when param class instantiated (#3833) 2022-12-30 06:05:01 -05:00
Wilson Snyder
9255707dd4 Fix detecting multiple pattern defaults 2022-12-29 20:16:30 -05:00
Wilson Snyder
24198ef0ed Internal line coverage fix 2022-12-29 14:18:45 -05:00
Wilson Snyder
fde380868a Fix misc memory leaks 2022-12-29 13:59:24 -05:00
Wilson Snyder
be42dc906c Fix GDB watchedit 2022-12-29 13:58:19 -05:00
Wilson Snyder
bad4110b03 For --stat, add total elapsed time 2022-12-29 11:48:19 -05:00
github action
f6b101d98b Apply 'make format' 2022-12-26 09:31:25 +00:00
Larry Doolittle
80a144797d
Commentary: Fix more spelling (#3828) 2022-12-26 10:30:41 +01:00
Wilson Snyder
45abcb6107 Internals: Some V3LinkInc cleanups. No functional change. 2022-12-23 16:17:08 -05:00
Wilson Snyder
d5a18c99fe fungetc has lvalue character argument. 2022-12-23 13:00:34 -05:00
Wilson Snyder
c0499da28b Spelling fixes 2022-12-23 11:32:38 -05:00
Wilson Snyder
3ccb2e0f2d Fix initiation of function variables (#3815). 2022-12-23 10:51:52 -05:00
Wilson Snyder
afd7c2ae25 Internals: Use visitor to refactor Ctors, prep for (#3815) 2022-12-23 10:12:11 -05:00
Krzysztof Bieganski
bb44d4e4f2
Support clocking blocks (#3674) 2022-12-23 07:34:49 -05:00
Wilson Snyder
d64971ba35 Fix some MSVC warnings. 2022-12-22 12:19:09 -05:00
Kritik Bhimani
65daf99bf4
Support Windows-native builds using cmake (#3814) 2022-12-20 19:42:27 -05:00
Jevin Sweval
299261714b
Fix crash in DFT due to width use after free (#3817) (#3820) 2022-12-20 19:36:04 -05:00
Aleksander Kiryk
c2b09e35f8
Support unpacked structs (#3802) 2022-12-20 19:22:42 -05:00
Wilson Snyder
51de2c9194 Remove reader task code which was non-functional (#3360) 2022-12-17 16:48:08 -05:00
Wilson Snyder
a554dd7c8d Optimize expansion of extend operators - fix earlier commit. 2022-12-15 22:49:49 -05:00
Wilson Snyder
7d93952a0d Fix make intermediate (#3748) 2022-12-15 19:53:51 -05:00
Wilson Snyder
1ddb2dd5e7 Fix make intermediate (#3748) 2022-12-15 19:26:54 -05:00
Wilson Snyder
2770ddf071 Optimize expansion of extend operators. 2022-12-15 07:38:53 -05:00
github action
fcd1306ef3 Apply 'make format' 2022-12-14 12:08:19 +00:00
Kritik Bhimani
9d2f1c607a
Fix MSVCC issues (#3813) 2022-12-14 07:07:25 -05:00
github action
d192372c7e Apply 'make format' 2022-12-12 23:46:23 +00:00
Kritik Bhimani
7b073fec7d
Fix MSVC++ portability issues (#3812) 2022-12-12 18:45:32 -05:00
Wilson Snyder
972a11537c Internals: Fix lint-py warnings 2022-12-11 21:58:02 -05:00
Wilson Snyder
609bfa46e8 Fix ENUMVALUE on parameter, again (#3777). 2022-12-11 21:10:12 -05:00
Wilson Snyder
0a3c90e517 Fix forked processes compiled as slow/cold (#3766) 2022-12-11 14:44:18 -05:00
Wilson Snyder
afc66f6a85 Fix make jobserver with submakes (#3758). 2022-12-11 14:19:40 -05:00
Wilson Snyder
86b07423a9 Fix ENUMVALUE on parameter (#3777). 2022-12-11 13:28:24 -05:00
Wilson Snyder
3f4d4dec77 Fix ENUMVALUE on typedef (#3777) 2022-12-11 11:50:22 -05:00
Wilson Snyder
86e3c02339 Internal: Remove stale make rule (#3811). 2022-12-11 09:48:25 -05:00
Wilson Snyder
a0e7930036 docs: Fix spelling 2022-12-09 22:39:41 -05:00
Krzysztof Bieganski
4b6e15d0eb
Fix non-blocking assignments in forks (#3781) (#3800) 2022-12-06 07:16:07 -05:00
Krzysztof Bieganski
87bb32fde1
Fix forks without any delayed statements (#3792) (#3801) 2022-12-06 07:14:29 -05:00
Wilson Snyder
ea1b141d13 Support probablity distribution functions. 2022-12-04 17:30:51 -05:00
Wilson Snyder
84c7368621 Rename std.sv and add to install. 2022-12-03 11:31:26 -05:00
Larry Doolittle
f27cf4c804
Commentary: Fix spelling in C++ comments (#3797) (#3798) 2022-12-02 18:46:38 -05:00
Wilson Snyder
87135d0b2d Internals: Fix missing const. No functional change. 2022-12-01 18:47:09 -05:00
Wilson Snyder
e465a30eee Fix lint_off EOFNEWLINE in .vlt files (#3796). 2022-12-01 18:27:36 -05:00
Yutetsu TAKATSUKASA
889a1211f1
Fix 3786 (Internal error in bit op tree optimization) (#3793)
* Tests: Add a test to reproduce 3786

* Fix #3786 (Internal error in bit op tree optimization).
2022-12-01 22:00:24 +09:00
Wilson Snyder
31d8b4cb8e Internals: Rename AstNodeSystem*D etc. No functional change intended. 2022-11-30 22:08:57 -05:00
Wilson Snyder
d87ef8394a Fix CASEINCOMPLETE when covers all enum values (#3745) (#3782).
Co-authored-by: "G-A. Kamendje" <gkamendje@gmail.com>
2022-11-30 19:42:21 -05:00
Wilson Snyder
4f4c26383c Support unpacked byte assignment from strings. 2022-11-30 19:17:28 -05:00
Wilson Snyder
42e4e18ec8 Support multiple $dumpvar identifiers 2022-11-30 18:13:57 -05:00
Wilson Snyder
355c4f76d0 Add error when super.new is not first statement (#3789) 2022-11-30 07:41:57 -05:00
Ryszard Rozak
073dc03adc
Support super.new calls (#3789) 2022-11-30 06:42:48 -05:00
Wilson Snyder
8ff607f679 Deprecate verilated_fst_sc.cpp and verilated_vcd_sc.cpp (#3507) 2022-11-29 22:17:50 -05:00
Wilson Snyder
b51bb4d0e7 Internal: Add node objects to UASSERT (#3786) 2022-11-29 18:34:44 -05:00
Wilson Snyder
f0a7abcef8 Internals: Use named accessors instead of op1p etc. No functional change intended. 2022-11-29 18:17:50 -05:00
Yinan Xu
ff9596bb23
Fix missing user objects in --lib-create mode (#3780) (#3784) 2022-11-29 09:02:39 -05:00
Yinan Xu
e569ff2752
Add error when use --exe with --lib-create. (#3785) 2022-11-29 06:37:38 -05:00
Krzysztof Bieganski
68e1b473e2
Support std::semaphore and typed std::mailbox (#3708)
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2022-11-28 16:53:55 +01:00
Wilson Snyder
f4be3d5d2b Fix empty string literals converting to string types (#3774). 2022-11-27 13:28:57 -05:00
Wilson Snyder
054b792021 Fix ENUMVALUE error to show value location (#3783) 2022-11-27 08:44:30 -05:00
Wilson Snyder
2c7f1ef40f Internals: Cleanup debug dumps so can grep-out leading-dashed lines 2022-11-27 08:31:22 -05:00
Wilson Snyder
5f583b0680 Fix clang warning from previous commits. 2022-11-27 06:27:51 -05:00
Wilson Snyder
fa4270b551 bisonpre: Commentary 2022-11-27 06:18:58 -05:00
Wilson Snyder
d8071819fc Fix unquoted name in dtype errors. 2022-11-27 05:59:40 -05:00
Wilson Snyder
833780fac1 Internal: cppcheck fixes. No functional change intended. 2022-11-27 05:52:40 -05:00
Wilson Snyder
4b3731d318 Remove env from main() to be C++11 compatible 2022-11-23 18:50:31 -05:00
Ryszard Rozak
68f8617f79
Support member selects in with clauses (#3775) 2022-11-23 13:15:10 -05:00
Yves Mathieu
06fdf7be58
Add support of Events for VCD/FST traces (#3759) 2022-11-23 04:07:14 -05:00
Wilson Snyder
e97e6c2213 Fix V3Tristate warning (#3773) 2022-11-22 17:46:58 -05:00
Geza Lore
508e937164 Fix tautological predicate in V3DfgPeephole
Fixes #3771
2022-11-22 15:05:34 +00:00
Ryszard Rozak
57975c82b7
Support 'with' in unique, unique_index, min, max in queues (#3772) 2022-11-22 09:10:25 -05:00
Wilson Snyder
66d85b3381 Internals: Fix cppcheck warnings. No functional change intended. 2022-11-21 21:40:49 -05:00
Wilson Snyder
73d6de4471 Internals: Fix constructor style. 2022-11-21 20:41:32 -05:00
Wilson Snyder
0af02563ca Internals: Fix verilog.y style 2022-11-21 20:22:13 -05:00
Wilson Snyder
b82ce5743b Internals: Fix verilog.y style 2022-11-21 08:30:40 -05:00
Wilson Snyder
d3c1f4353e Fix float parameters without parens 2022-11-21 06:48:13 -05:00
Ryszard Rozak
62bdd3ab49
Fix timing control in while-break loops (#3733) (#3769) 2022-11-21 06:27:55 -05:00
Wilson Snyder
2eed4452ad Internals: Fix constructor style. 2022-11-20 20:13:55 -05:00
Wilson Snyder
f44cd9cd48 Internals: Fix constructor style. 2022-11-20 17:40:38 -05:00
Wilson Snyder
25f970eac2 Internals: Fix constructor style. 2022-11-20 15:06:49 -05:00
Geza Lore
3abb65d732 Strengthen AstNode types to AstNodeExpr
Declare every AstNode children and variables as AstNodeExpr where we
statically know this is the appropriate sub-type.
2022-11-20 19:31:28 +00:00
Wilson Snyder
352d0b4582 Internals: Fix constructor style. 2022-11-20 13:11:01 -05:00
github action
a60e273c29 Apply 'make format' 2022-11-20 15:26:23 +00:00
Jiacheng Qian
47253450a4
Fix to escape VERILATOR_ROOT file paths (#3764) (#3765) 2022-11-20 10:25:41 -05:00
Wilson Snyder
aacb38b776 Support assignment expressions. 2022-11-19 15:23:37 -05:00
Wilson Snyder
21d80cdfa1 Internals: Fix constructor style. 2022-11-19 14:45:38 -05:00
Mariusz Glebocki
d0e7177d8e
Disable stack size limit (#3706) (#3751) 2022-11-19 14:44:54 -05:00
Wilson Snyder
3a27e3d67b Fix false ENUMVALUE errors in unstable branch (#3761) 2022-11-19 14:07:39 -05:00
Wilson Snyder
09dff9c3a7 Fix false ENUMVALUE errors in unstable branch (#3761) 2022-11-19 13:30:23 -05:00
Wilson Snyder
f266b02bc7 Internals: Improve dtype small dump. 2022-11-19 13:23:28 -05:00
Wilson Snyder
de9c92fd14 Internals: Add missing const. No functional change. 2022-11-19 10:48:46 -05:00
Wilson Snyder
0322e9da7e Fix randcase inside function. 2022-11-18 21:30:34 -05:00
Wilson Snyder
b2d92b7c25 Allow ENCAPSULATED and ENUMVALUE to be disabled 2022-11-18 21:30:34 -05:00
Ryszard Rozak
ef72b73a59
Support foreach loops on strings (#3760) 2022-11-18 07:07:56 -05:00
Wilson Snyder
749aab0a56 Support triple-quote blocks. 2022-11-17 20:38:01 -05:00
github action
cd8528e83b Apply 'make format' 2022-11-18 00:14:05 +00:00
Wilson Snyder
e8a1e4745c Support $stacktrace 2022-11-17 19:12:54 -05:00
Ryszard Rozak
d41efb189d
Fix pre/postincrement operations (#3744) (#3756) 2022-11-17 13:26:45 -05:00
Wilson Snyder
3c77c7bb92 Support and 2022-11-16 21:10:54 -05:00
Ryszard Rozak
3ddfa214e3
Fix $unit as base package for other packages (#3755) 2022-11-16 18:58:57 -05:00
Wilson Snyder
a58cd66358 Fix printtimescale 2022-11-16 18:17:24 -05:00
Wilson Snyder
e6da59eecd Internals: Mark some VL_PURE functions. No functional change. 2022-11-15 09:18:47 -05:00
Wilson Snyder
c6ecd60993 Support pre_randomize and post_randomize. 2022-11-13 11:59:40 -05:00
Wilson Snyder
ee26dddfa1 Internals: Fix constructor style. 2022-11-13 11:23:57 -05:00
github action
d1658b9e82 Apply 'make format' 2022-11-13 14:27:37 +00:00
Wilson Snyder
818347f99b Internals: Fix some unnecessary member paddings. No functional change intended. 2022-11-13 09:26:46 -05:00
Kritik Bhimani
201419c646
Fix MSVC compiler errors (#3742) (#3746) 2022-11-13 08:35:06 -05:00
Wilson Snyder
d25834e57b Add ENUMVALUE warning when value misused for enum (#726). 2022-11-12 20:11:05 -05:00
Wilson Snyder
4f50073feb Internals: Fix constructor style. 2022-11-12 19:51:03 -05:00
Geza Lore
eaf09ba0e7 Dfg: resolve multi-driven signal ranges
In order to avoid unexpected breakage on multi-driven variables, we
resolve in DFG construction by using only the first driver encountered.
Also issues the MULTIDRIVEN error for these signals.
2022-11-12 20:34:51 +00:00
github action
8291d8bcc1 Apply 'make format' 2022-11-12 17:10:41 +00:00
Wilson Snyder
0a045a7bf6 Change ENDLABEL from warning into an error. 2022-11-12 12:09:48 -05:00
Geza Lore
dbcaad99c5 Dfg: Fix crash on additional driver from non-DFG logic
Ensure variables written by non-DFG code are kept

Fixes #3740
2022-11-12 11:55:49 +00:00
Wilson Snyder
6736e92cdb Internals: Fix some ugly line breaks. No functional change. 2022-11-11 22:33:17 -05:00
Wilson Snyder
a427860825 Support randcase. 2022-11-11 21:53:05 -05:00
William D. Jones
41d2ebe288
Fix CONTEXT compile error on mingw64 (#3741). 2022-11-11 21:43:10 -05:00
Wilson Snyder
227e61f891 Fix comparing ranged slices of unpacked arrays. 2022-11-11 18:01:30 -05:00
Wilson Snyder
b2e61425d6 Fix const initial assignments. 2022-11-11 17:45:34 -05:00
Wilson Snyder
9d7c4d9af3 Fix wait 0. 2022-11-11 17:18:59 -05:00
Wilson Snyder
0c75d4eaca Internals: Fix constructor style. 2022-11-10 22:58:27 -05:00
Wilson Snyder
528a73a492 Fix instability after disable iff error. 2022-11-10 22:09:24 -05:00
Wilson Snyder
fbf2e59c85 Fix loss of V3Simulate on expression statements. 2022-11-10 20:49:11 -05:00
Wilson Snyder
16586d1d37 Fix tracing parameters overridden with -G (#3723). 2022-11-10 20:30:10 -05:00
Ryszard Rozak
441b5da5ce
Fix 'with' clause handling in functions (#3739) 2022-11-10 18:08:15 -05:00
Wilson Snyder
e64295e92b Fix missing UNUSED warnings with --coverage (#3736). 2022-11-09 21:45:14 -05:00
Ryszard Rozak
cbf9cc8e5f
Fix return in constructors (#3734) 2022-11-09 06:32:22 -05:00
Ryszard Rozak
a29d9469da
Fix jump handling in do while loops (#3731) 2022-11-08 20:01:08 -05:00
Geza Lore
2a3eabff73 Various Dfg performance improvements 2022-11-06 15:54:51 +00:00
Geza Lore
454efbe3fc Dfg: Use a worklist driven algorithm for unused vertex removal
This improves verilation speed slightly.
2022-11-06 14:13:42 +00:00
Geza Lore
fb9ec03c3f DfgPeephole: Use a work list driven algorithm for speed
Replace the 'run to fixed point' algorithm with a work list driven
approach. Instead of marking the graph as changed, we explicitly add
vertices to the work list, to be visited, when a vertex is changed. This
improves both memory locality (as the work list is processed in last in
first out order), and removed unnecessary visitations when only a few
nodes changes.
2022-11-05 20:31:09 +00:00
Wilson Snyder
21926eeb6b Tests: Improve some coverage 2022-11-05 11:40:34 -04:00
Geza Lore
6ae6b16223 V3Const: Fix folding of LogAnd with non-bool operands
Folding an AstLogAnd with a non-zero constant operand used to coerce the
type of the other operand, yielding an ill-typed node that DFG was then
unhappy about. Add a RedOr instead if the width of the replacement
operand is greater than zero.

Fixes #3726
2022-11-05 13:36:21 +00:00
Kamil Rakoczy
d6126c4b32
Remove --no-threads; require --threads 1 for single threaded (#3703). 2022-11-05 08:47:34 -04:00
Ryszard Rozak
8d61cea366
Fix return type of $countbits functions to int (#3725) 2022-11-04 08:58:17 -04:00
Geza Lore
65e08f4dbf Make all expressions derive from AstNodeExpr (#3721).
Apart from the representational changes below, this patch renames
AstNodeMath to AstNodeExpr, and AstCMath to AstCExpr.

Now every expression (i.e.: those AstNodes that represent a [possibly
void] value, with value being interpreted in a very general sense) has
AstNodeExpr as a super class. This necessitates the introduction of an
AstStmtExpr, which represents an expression in statement position, e.g :
'foo();' would be represented as AstStmtExpr(AstCCall(foo)). In exchange
we can get rid of isStatement() in AstNodeStmt, which now really always
represent a statement

Peak memory consumption and verilation speed are not measurably changed.

Partial step towards #3420
2022-11-03 16:02:16 +00:00
Wilson Snyder
cf4c00e3b4 Internals: if assertion should be VL_UNLIKELY 2022-11-02 20:11:25 -04:00
Ryszard Rozak
bac98df46b
Support named properties (#3667) 2022-11-01 18:53:47 -04:00
Geza Lore
0675510eb9 DFG: Fix attempted evaluation of constants wider than 32 bits
Fixes #3718
2022-10-28 17:14:19 +01:00
Geza Lore
99791ac8b3 Reduce verbosity of DFG debug 2022-10-28 16:35:53 +01:00
Geza Lore
54c4351c39 V3Const: Do not introduce redundant AstExtend
Fixes #3716
2022-10-28 14:54:00 +01:00
Geza Lore
e504e9aced Optimize clocked processes to comb when referencing const variables
In V3Active, we try hard to turn `always @(a or b or c)` into an
`always_comb` if the only variables read in the block are also in the
sensitivity list. In addition, also allow this optimization when reading
variables that are not in the sensitivity list, but are known to be
constant/never changing after initialization. In particular lookup
tables introduced by V3Table are covered by this. This can have a
significant impact on designs that use the `always @(a or b or c)` style
for combinational logic.
2022-10-28 14:37:30 +01:00
Geza Lore
ef2776034e Adjust instruction count estimates for AstCMethodHard
The cost of an AstCMethodHard right now is generally unknown. However,
VlTriggerVec::at is used a lot in conditions, so we make an effort
to estimate this correctly via 2 changes:
- In general when an AstVarRef appears as the target of an
  AstCMethodHard, we cost it as a simple address computation (an add)
- Check for VlTriggerVec::at explicitly when costing AstCMethodHard,
  which is essentially a load.

This can have a significant effect when there are a lot of unique
triggers in the design.
2022-10-28 14:37:30 +01:00
Wilson Snyder
5c658f8cd5 Fix width mismatch on inside operator (#3714). 2022-10-28 06:38:49 -04:00
Geza Lore
65290afe0a Fix VString::endsWith when suffix is longer than input string. 2022-10-27 18:38:44 +01:00
Wilson Snyder
3487701b04 Tests: Cover some previously uncovered warnings 2022-10-22 16:03:42 -04:00
Wilson Snyder
8e1901da10 Tests: Cover some previously uncovered warnings 2022-10-22 13:45:48 -04:00