Geza Lore
af305bf280
Merge branch 'master' into develop-v5
2022-09-16 16:24:36 +01:00
Geza Lore
38a8d7fb2e
Remove redundant 'inline' keywords from definitions
...
Also add checks to t/t_dist_cppstyle
2022-09-16 15:52:25 +01:00
Krzysztof Bieganski
39af5d020e
Timing support ( #3363 )
...
Adds timing support to Verilator. It makes it possible to use delays,
event controls within processes (not just at the start), wait
statements, and forks.
Building a design with those constructs requires a compiler that
supports C++20 coroutines (GCC 10, Clang 5).
The basic idea is to have processes and tasks with delays/event controls
implemented as C++20 coroutines. This allows us to suspend and resume
them at any time.
There are five main runtime classes responsible for managing suspended
coroutines:
* `VlCoroutineHandle`, a wrapper over C++20's `std::coroutine_handle`
with move semantics and automatic cleanup.
* `VlDelayScheduler`, for coroutines suspended by delays. It resumes
them at a proper simulation time.
* `VlTriggerScheduler`, for coroutines suspended by event controls. It
resumes them if its corresponding trigger was set.
* `VlForkSync`, used for syncing `fork..join` and `fork..join_any`
blocks.
* `VlCoroutine`, the return type of all verilated coroutines. It allows
for suspending a stack of coroutines (normally, C++ coroutines are
stackless).
There is a new visitor in `V3Timing.cpp` which:
* scales delays according to the timescale,
* simplifies intra-assignment timing controls and net delays into
regular timing controls and assignments,
* simplifies wait statements into loops with event controls,
* marks processes and tasks with timing controls in them as
suspendable,
* creates delay, trigger scheduler, and fork sync variables,
* transforms timing controls and fork joins into C++ awaits
There are new functions in `V3SchedTiming.cpp` (used by `V3Sched.cpp`)
that integrate static scheduling with timing. This involves providing
external domains for variables, so that the necessary combinational
logic gets triggered after coroutine resumption, as well as statements
that need to be injected into the design eval function to perform this
resumption at the correct time.
There is also a function that transforms forked processes into separate
functions.
See the comments in `verilated_timing.h`, `verilated_timing.cpp`,
`V3Timing.cpp`, and `V3SchedTiming.cpp`, as well as the internals
documentation for more details.
Signed-off-by: Krzysztof Bieganski <kbieganski@antmicro.com>
2022-08-22 13:26:32 +01:00
Geza Lore
599d23697d
IEEE compliant scheduler ( #3384 )
...
This is a major re-design of the way code is scheduled in Verilator,
with the goal of properly supporting the Active and NBA regions of the
SystemVerilog scheduling model, as defined in IEEE 1800-2017 chapter 4.
With this change, all internally generated clocks should simulate
correctly, and there should be no more need for the `clock_enable` and
`clocker` attributes for correctness in the absence of Verilator
generated library models (`--lib-create`).
Details of the new scheduling model and algorithm are provided in
docs/internals.rst.
Implements #3278
2022-05-15 16:03:32 +01:00
Geza Lore
5f0e1fae7f
Simplify and clarify reporting of enclosing instance
...
Rename AstNodeModule::hierName -> someInstanceName and explain that this
is only used for user messages.
Rename AstNode::locationStr -> instanceStr and simplify implementation.
In particular, do not report an instance if we can't find a reasonable
guess.
2022-04-22 23:38:23 +01:00
Wilson Snyder
ca42be982c
Copyright year update.
2022-01-01 08:26:40 -05:00
Wilson Snyder
9029da5ab8
Add profile-guided optmization of mtasks ( #3150 ).
2021-09-26 22:51:11 -04:00
Geza Lore
add3811f46
Internals: Fix debug prints racing with option parsing.
...
debug() declared by VL_DEGUB_FUNC used to cache the result of the debug
level lookup (which depends on options) in a static. This meant that if
the debug() function was called before option parsing, the default debug
level of 0 would be used for the rest of the program, even if a --debug
option was given. Fixed by not caching the debug level until after
option parsing is complete.
2021-07-10 12:57:40 +01:00
Udi Finkelstein
422c076fec
Support ignoring "`pragma protect ..." ( #2886 )
...
This support code merely adds the capability to skip over the encrypted
parts. Many models have unencrypted module interfaces with ports, and
only encrypt the critical parts.
2021-04-26 18:16:24 -04:00
Wilson Snyder
2e9e4ae110
Add an URL on warnings to point to the manual's description.
2021-04-18 10:17:05 -04:00
Udi Finkelstein
23c243bb82
Add support for null ports ( #2875 )
2021-04-09 10:39:46 -04:00
Wilson Snyder
273fcce095
Fix test error in last commit
2021-04-01 19:51:22 -04:00
Udi Finkelstein
0ea5af40c5
Add PINNOTFOUND warning in place of "Pin not found" error ( #2868 )
2021-04-01 18:17:42 -04:00
Wilson Snyder
12eb4e85ac
Changed TIMESCALEMOD from error into a warning. ( #2838 )
2021-03-16 21:58:15 -04:00
Wilson Snyder
8350c381c2
Add EOFNEWLINE warning when missing a newline at EOF.
2021-03-14 21:23:48 -04:00
Wilson Snyder
3a55600913
Internals: Restyle with C++11 using replacing typedef
2021-03-12 18:10:45 -05:00
Wilson Snyder
be31fdcfe4
Use Google-style-guide header guard naming, to avoid __ prefix.
2021-03-03 21:57:07 -05:00
Wilson Snyder
9650aefa42
Internals: Cleanup unneeded {}. No functional change
2021-02-21 21:25:21 -05:00
Julien Margetts
a11700271f
Add LATCH and NOLATCH warnings ( #1609 ) ( #2740 ).
2021-01-05 14:26:01 -05:00
Wilson Snyder
bd602d0e2d
Copyright year update
2021-01-01 10:29:54 -05:00
Krzysztof Bieganski
5e7b0d526d
Support 'randc' as alias to 'rand' ( #2680 )
...
* Add alias 'randc' to 'rand'
* Make the 'RANDC' warning; add tests
2020-12-09 19:17:30 -05:00
Wilson Snyder
74ef35d3b3
Support $cast and new CASTCONST warning.
2020-12-05 22:58:36 -05:00
Wilson Snyder
6095efd84e
Check for proper 'local' and 'protected' ( #2228 ).
2020-11-25 07:03:01 -05:00
Wilson Snyder
b6ded59c2b
Internals: Use and enforce class final for ~5% performance boost.
2020-11-18 21:32:16 -05:00
Wilson Snyder
26c0e6ba00
Fix missing array include.
2020-11-16 07:31:12 -05:00
Wilson Snyder
f4ef4ad9f3
Internals: Favor std::array where easy. No functional change intended.
2020-11-15 16:21:26 -05:00
Wilson Snyder
decbf79f39
Convert unnamed error to new PKGNODECL error.
2020-08-22 19:42:21 -04:00
Wilson Snyder
2abbd5c145
Convert unnamed error to new PKGNODECL error.
2020-08-22 16:37:49 -04:00
Wilson Snyder
b67f1f0e94
Fix GCC warnings
2020-08-18 08:10:44 -04:00
Wilson Snyder
d75a8624c1
C++11: constexpr replacing defines. No functional change intended.
2020-08-16 14:19:12 -04:00
Wilson Snyder
78aee6f4e7
C++11: Use sized enums (+4% performance).
2020-08-16 12:05:35 -04:00
Wilson Snyder
034737d2a8
C++11: Use member declaration initalizations (in nodes). No functional change intended.
2020-08-16 11:44:06 -04:00
Yutetsu TAKATSUKASA
953a442827
Support hierarchical verilation using protect lib ( #2206 )
2020-08-15 09:43:53 -04:00
Wilson Snyder
6de78d58fa
Add new UNSUPPORTED error code to replace most previous Unsupported: messages.
2020-06-09 19:20:16 -04:00
Wilson Snyder
140671300c
Internals: Pass parser celldefine state through FileLine. No functional change intended.
2020-06-07 11:58:53 -04:00
Wilson Snyder
c5d61da5d2
Internal coverage: Fix coverage of tests that abort. No functional change intended.
2020-06-05 08:00:22 -04:00
Geza Lore
9712ceedd7
Internals: Remove empty statements. No functional change intended.
...
Remove stray semicolons, mostly by capturing them in macros accurately.
This removes a ton on lint warnings from CLion.
2020-05-30 19:13:18 +01:00
Geza Lore
74a6f94e2b
Internals: Remove dead code
2020-05-30 17:20:23 +01:00
Wilson Snyder
ebda8f866c
Cleanup codacity and missing consts.
2020-05-28 21:04:36 -04:00
Wilson Snyder
6fd7f45cef
Internals: Remove dead needHInlines code
2020-05-16 07:53:27 -04:00
Wilson Snyder
d4f7f5297a
Support IEEE time units and time precisions, #234 . ( #2253 )
...
Includes `timescale, $printtimescale, $timeformat.
VL_TIME_MULTIPLIER, VL_TIME_PRECISION, VL_TIME_UNIT have been removed
and the time precision must now match the SystemC time precision.
To get closer behavior to older versions, use e.g. --timescale-override
"1ps/1ps".
2020-04-15 19:39:03 -04:00
Wilson Snyder
f3308d236b
clang-format remaining sources. No functional change.
2020-04-15 07:58:34 -04:00
Wilson Snyder
b617cd5549
Internals: Add V3ERROR_NA_RETURN. No functional change.
2020-04-05 10:26:53 -04:00
Wilson Snyder
38a31ae168
Cleanup misc clang-tidy warnings. No functional change intended
2020-04-03 22:31:54 -04:00
Wilson Snyder
1ce360ed5b
Add SPDX license identifiers. No functional change.
2020-03-21 11:24:24 -04:00
Wilson Snyder
5f63b24c50
Change --quiet-exit to also suppress 'Exiting due to N errors'.
2020-03-15 08:09:51 -04:00
Wilson Snyder
4878fe3a1f
Add split_var metacomment to assist UNOPTFLAT fixes, #2066 .
2020-02-28 19:15:08 -05:00
Wilson Snyder
73f5e3f808
Internals: Add missing const. No functional change.
2020-02-02 10:34:29 -05:00
Wilson Snyder
a4e8d39932
Spelling fixes
2020-01-24 20:10:44 -05:00
Wilson Snyder
f23fe8fd84
Update copyright year.
2020-01-06 18:05:53 -05:00
Stefan Wallentowitz
37dc33a195
Deprecation ( #2088 )
...
* Add deprecation warning
* Deprecate -msg in configuration files
* Deprecate sc_clock
2020-01-03 17:27:51 +01:00
Wilson Snyder
2408de16a0
Support bounded queues.
2019-12-14 21:39:47 -05:00
Wilson Snyder
cda5c53cf9
Add BOUNDED warning and promote bounded queues to unbounded.
2019-12-08 15:56:49 -05:00
Wilson Snyder
17ad59394f
Support shortreal as real, with a SHORTREAL warning.
2019-11-23 08:34:40 -05:00
Wilson Snyder
f87107e757
Tests etc: Cleanup some clang-format suggestions. No functional change.
2019-11-09 20:35:12 -05:00
Wilson Snyder
5811ec07e6
Update URLs to https://verilator.org
2019-11-07 22:33:59 -05:00
Wilson Snyder
91f1acd85f
Add --protect-ids to obscure information in objects, bug1521.
2019-10-06 13:24:21 -04:00
Wilson Snyder
771a301f66
Commentary: Remove newlines, upsets some patches. No functional change.
2019-10-04 20:17:11 -04:00
Wilson Snyder
bd89c71694
Internals: Refactor to avoid V3Global requirements in V3String. No functional change intended.
2019-10-02 21:38:16 -04:00
Wilson Snyder
fa904f386c
Commentary - Spelling fixes
2019-09-09 07:50:21 -04:00
Todd Strader
4a14788c9b
When showing an error, show the instance location
2019-07-26 12:52:38 -04:00
Wilson Snyder
ee469eedaf
Fix some errors reporting wrong objects.
2019-07-14 15:06:49 -04:00
Wilson Snyder
8548ecfdac
Internals: Add UASSERT_OBJ macro to replace hand-done ifs. No functional change intended.
...
This makes it easier to filter out correctly zero code-coverage lines.
2019-07-06 12:57:50 -04:00
Wilson Snyder
01ef7122e9
Internals: Add lcov code coverage markers.
2019-06-30 22:37:03 -04:00
Wilson Snyder
f7641d2ecc
Change MULTITOP to warning to help linting, see manual.
2019-06-30 16:46:48 -04:00
Wilson Snyder
8e7559c6c9
Show included-from filenames in warnings, bug1439.
2019-06-22 17:01:39 -04:00
Wilson Snyder
b83b606267
Internals: Detab and fix spacing style issues. No functional change.
...
When diff, recommend using "git diff --ignore-all-space"
When merging, recommend using "git merge -Xignore-all-space"
2019-05-19 16:13:13 -04:00
Wilson Snyder
539a773ea7
Add IGNOREDRETURN warning.
2019-03-10 14:57:01 -04:00
Wilson Snyder
ab3c6576ed
Report PORTSHORT errors on concat constants, bug 1400.
2019-02-27 21:06:07 -05:00
Wilson Snyder
8a4aeddbb0
Copyright year update.
2019-01-03 19:17:22 -05:00
Wilson Snyder
940dc98c66
Add CONTASSREG error on continuous assignments to regs, bug1369.
2018-12-01 10:12:10 -05:00
Wilson Snyder
61e4b0a472
Add IMPORTSTAR warning on import::* inside scope.
2018-11-28 18:25:34 -05:00
Wilson Snyder
5cc11839b5
Add PROCASSWIRE error on behavioral assignments to wires, msg2737.
2018-11-26 17:58:18 -05:00
Wilson Snyder
5ae1ce90ad
Internals: Refactor into cvtToHex function. No functional change.
2018-10-14 16:25:36 -04:00
Wilson Snyder
d87b9d25ca
Internals: Cleanup and standardize include order. No functional change intended.
2018-10-14 13:59:40 -04:00
Wilson Snyder
0e37747d2c
Support $past.
2018-09-23 15:20:01 -04:00
Wilson Snyder
75f28fd446
Internals: Fix spacing of function calls. No functional change.
2018-08-25 09:52:45 -04:00
Wilson Snyder
8f838433df
Internals: Fix spacing and style of v4 changes. No functional change.
2018-08-23 05:22:34 -04:00
Wilson Snyder
aabb7394c3
Merge from master
2018-07-23 19:05:17 -04:00
Wilson Snyder
d90064eaee
Change MODDUP errors to warnings, msg2588.
2018-07-23 18:57:34 -04:00
Wilson Snyder
ec8dbbffed
MAJOR: Add multithreaded model generation.
2018-07-22 20:54:28 -04:00
Wilson Snyder
e97dbf9537
Add UNOPTTHREADS, for threads branch.
2018-07-22 12:09:27 -04:00
Wilson Snyder
43694ec87c
Continued... Show file and line info when possible on internal graph errors.
2018-07-14 20:44:43 -04:00
Wilson Snyder
d065662afc
Internals: Add new UASSERT. Currently unused. No functional change.
2018-07-14 17:44:55 -04:00
Wilson Snyder
cd4e6b35b3
Internals: Standardize debug() function generation. No functional change intended.
2018-05-14 06:50:47 -04:00
Wilson Snyder
2c30aecc5b
Merge from master
2018-03-10 16:51:34 -05:00
Wilson Snyder
770045676f
Internals: Split some extremely long lines. No functional change.
2018-03-10 16:32:04 -05:00
Wilson Snyder
94e8cf1de9
Internals: Use explicit std:: instead of using namespace std. No functional change intended.
2018-02-01 21:24:41 -05:00
Wilson Snyder
8e65d93d6d
Copyright year update. No functional change.
2018-01-02 18:05:06 -05:00
Wilson Snyder
4901668f13
Add INFINITELOOP warning, bug1254.
2017-12-26 21:35:08 -05:00
Wilson Snyder
d119d10569
Add BSSPACE and COLONPLUS lint warnings.
2017-11-15 20:19:12 -05:00
Wilson Snyder
add5cc8b56
Internals: Add VL_UNCOPYABLE to make classes uncopyable. No functional change intended.
2017-11-01 18:51:41 -04:00
Wilson Snyder
c98ad79e68
Allow disabling BLKLOOPINIT (Intentionally undocumented)
2017-10-01 23:23:02 -04:00
Wilson Snyder
77804b4d38
Fix GCC noreturn compile error, bug1209.
2017-09-13 19:27:59 -04:00
Wilson Snyder
70daadf987
Fix cpp-check warnings; support XML format 2
2017-07-06 20:25:59 -04:00
Wilson Snyder
c6a20a72f2
Turn off parser debug in optimized build, msg2203
2017-03-31 17:46:15 -04:00
Wilson Snyder
e6d7e7e329
Version bump
2017-01-15 12:13:13 -05:00
Wilson Snyder
b738d1960a
Copyright year update
2016-01-06 20:36:41 -05:00
Wilson Snyder
4fde6ee7af
Support elaboration assertions, bug973.
2015-10-23 18:13:25 -04:00
Wilson Snyder
318ded4198
Internals: Cleanup cppcheck warnings.
2015-10-03 22:33:06 -04:00
Wilson Snyder
486d69da5f
Add --clk and related optimizations, msg1533.
2015-03-12 19:20:46 -04:00
Wilson Snyder
4c91ade61d
Copyright year update
2015-01-07 18:25:53 -05:00
Wilson Snyder
6da13c6486
Internals: Split V3Error into V3FileLine. No functional change.
2014-11-22 11:48:39 -05:00
Wilson Snyder
c682f1c16a
Commentary and internal cleanups.
2014-11-22 09:04:14 -05:00
Wilson Snyder
2029ade18c
Change SYMRSVDWORD to print as warning rather than error.
2014-05-28 07:24:02 -04:00
Wilson Snyder
2accba2e71
Update WIDTH warning message formats to match future commit.
2014-04-29 21:11:57 -04:00
Wilson Snyder
a3813f94fc
Add PINCONNECTEMPTY warning.
2014-03-27 21:36:52 -04:00
Wilson Snyder
4422de0c6c
Copyright year update.
2014-01-06 19:28:57 -05:00
Wilson Snyder
4f6d80c602
Add UNPACKED warning to convert unpacked structs.
2013-10-28 20:41:05 -04:00
Wilson Snyder
6b8d9b5c36
Internals: If registered, dump symtable on any error
2013-05-25 12:15:38 -04:00
Wilson Snyder
d581582339
Add ALWCOMBORDER warning.
2013-04-30 22:55:28 -04:00
Wilson Snyder
f07f6a26a8
cppcheck fixes
2013-02-03 13:27:37 -05:00
Wilson Snyder
a8bbf7231b
Copyright year update.
2013-01-01 09:42:59 -05:00
Wilson Snyder
7a8c425103
Add +1364-1995ext and similar language options, bug532.
2012-11-13 20:12:23 -05:00
Wilson Snyder
c6e7d87960
Commentary - Remove author lines as amany contributors now
2012-05-24 19:19:48 -04:00
Wilson Snyder
1bc1ee9e08
Fix duplicate warnings/errors, bug516.
2012-05-21 21:31:52 -04:00
Wilson Snyder
53f50463bc
Internals: Add warnMore() for all continued messages.
2012-05-21 21:24:17 -04:00
Wilson Snyder
c75de0f37c
Add INITIALDLY warning on initial assignments, bug478.
2012-04-26 20:40:13 -04:00
Wilson Snyder
60a637921c
Add PINMISSING and PINNOCONNECT lint checks.
2012-04-26 18:46:44 -04:00
Wilson Snyder
50edef4ab2
Add Emacs indentation line. No functional change
2012-04-12 21:08:20 -04:00
Wilson Snyder
6a38d3bcf3
Add SELRANGE as warning instead of error, bug477.
2012-04-04 21:55:20 -04:00
Wilson Snyder
cc1adf9b38
Internals: merge V3Hashed cleanups. No functional change intended
2012-04-01 21:04:28 -04:00
Wilson Snyder
204fb82975
Add very experimental --xml option
2012-03-20 16:13:10 -04:00
Wilson Snyder
37839e2709
Cleanup trailing whitespace. No functional change
2012-03-20 16:01:53 -04:00
Wilson Snyder
dbaedb5995
Internals: Add XML output internals, unused. No functional change.
2012-03-20 15:57:29 -04:00
Wilson Snyder
b73642f8a8
Report ENDLABEL on mismatching end labels, bug450.
2012-03-07 20:14:18 -05:00
Wilson Snyder
c2c7c7bd9a
Copyright year update
2012-01-15 10:26:28 -05:00
Wilson Snyder
071a1c4adb
Internals: Fix cppcheck warning
2011-12-27 12:15:20 -05:00
Wilson Snyder
fce158b8ad
Make DETECTARRAY so can turn off for lint
2011-11-30 16:20:43 -05:00
Wilson Snyder
df207807b6
Add ASSIGNIN as suppressable error.
2011-10-25 18:57:49 -04:00
Wilson Snyder
1f2b40cff1
Fix 3.823 constructor core dump on Debian, bug401.
2011-10-25 18:41:04 -04:00
Wilson Snyder
0aa7c3f659
Add -Wall reporting ASSIGNDLY on assignment delays.
2011-10-20 20:50:42 -04:00
Wilson Snyder
40076287ea
Internals: In .tree files show filename as letter
2011-10-11 07:17:39 -04:00
Wilson Snyder
df1da3dda9
Internals: Fix cppcheck warnings; no functional change intended
2011-08-04 21:58:45 -04:00
Wilson Snyder
55906486d8
Support 'real' numbers and related functions.
2011-07-24 15:01:51 -04:00
Wilson Snyder
71c1f00ec2
Copyright year update
2011-01-01 18:21:19 -05:00
Wilson Snyder
4afcb421bd
With --Wall, add BLKSEQ warning on blocking assignments in seq blocks.
2010-12-31 18:36:29 -05:00
Wilson Snyder
8d21917035
Add SYNCASYNCNET
2010-12-31 07:51:14 -05:00
Wilson Snyder
b43299c8da
Fix suppression of messages under debug
2010-12-30 08:41:23 -05:00
Wilson Snyder
6283df7491
Vlt lint off now has optional msgname
2010-12-30 06:58:02 -05:00
Wilson Snyder
114af7d33f
Make UNUSED/UNDRIVEN -Wall only
2010-12-26 10:17:35 -05:00
Wilson Snyder
7b83d2de49
Commentary
2010-12-26 09:40:17 -05:00
Wilson Snyder
850de5913d
With --Wall, add IFDEPTH warning on deep if statements.
2010-12-26 09:31:09 -05:00
Wilson Snyder
3e4e8feb29
With --Wall, add DECLFILENAME warning on modules not matching filename.
2010-12-25 16:31:22 -05:00
Wilson Snyder
fedf347b1a
With --Wall, add INCABSPATH warning on `include with absolute paths.
2010-12-25 15:50:07 -05:00
Wilson Snyder
285277a50b
Add -Wall; move VARHIDDEN to style warnings
2010-12-25 15:28:13 -05:00
Wilson Snyder
323c96f42f
Add -Wwarn-style, -Wno-style, and DEFPARAM warnings
2010-12-25 15:13:56 -05:00
Wilson Snyder
a6a6ce83f0
Internals: Use branch prediction in asserts
2010-08-10 11:19:45 -04:00
Wilson Snyder
8800efe953
Internals: Rename incLineno to match Verilog-Perl, no functional change.
2010-07-08 20:31:41 -04:00
Wilson Snyder
3841850168
Preproc: fix pass-through of `line enter-exit codes.
...
Internals: Merge Verilog-Perl preproc changes through d450722.
2010-07-06 20:29:12 -04:00