Commit Graph

327 Commits

Author SHA1 Message Date
Wilson Snyder
431bb1ed16
Support compiling Verilator with gcc/clang precompiled headers (#4579) 2023-10-17 22:49:28 -04:00
Ryszard Rozak
47b3f464a9
Disable conversion of impure logical expressions to bitwise expressions (#487 partial) (#4437) 2023-09-18 09:21:30 -04:00
Wilson Snyder
f507ee56b0 Fix warning in configure sc_main compile. (#4499) 2023-09-17 08:01:54 -04:00
Wilson Snyder
cd1fe64e6c devel release 2023-09-16 21:46:01 -04:00
Wilson Snyder
cef3960a4e Version bump 2023-09-16 18:36:39 -04:00
Wilson Snyder
b1c1aa53a9 devel release 2023-08-06 10:53:16 -04:00
Wilson Snyder
f79749e7b2 Version bump 2023-08-06 10:39:35 -04:00
Andrew Miloradovsky
106a9fe67f
Fix config_build.h issues (#4380) (#4381) 2023-07-27 05:42:35 -04:00
Wilson Snyder
9dbc669199 devel release 2023-06-13 19:39:50 -04:00
Wilson Snyder
7d2d32420a Version bump 2023-06-13 19:31:57 -04:00
Wilson Snyder
66c3d6d2d1 Commentary 2023-06-12 20:52:29 -04:00
Wilson Snyder
426069a4dd Configure for faster C++ linking using 'mold', if it is installed. 2023-05-23 21:26:29 -04:00
Wilson Snyder
3e986517c3 devel release 2023-04-30 07:10:14 -04:00
Wilson Snyder
5d3a9eec7f Version bump 2023-04-30 07:08:27 -04:00
Robert Balas
fc5a5ea53d
Commentary: Fix spelling mistakes (#4080)
Co-authored-by: Robert Balas <bluewww@users.noreply.github.com>
2023-04-01 20:45:28 -04:00
Wilson Snyder
a1d4cd658e devel release 2023-03-04 11:31:58 -05:00
Wilson Snyder
21093fd1bd Version bump 2023-03-04 11:19:44 -05:00
Wilson Snyder
665758a68b devel release 2023-01-22 11:55:22 -05:00
Wilson Snyder
5b8941d717 Version bump 2023-01-22 11:52:21 -05:00
Wilson Snyder
f4865a4bb2 Fix configure; always look for std=c++17 rather than by distro.
This backs out #606b35853b, which is believed no longer needed due to
(#3881) being fixed.

If this proves wrong and additional OS dependencies are needed, we should
use a feature test macro so that the OS test doesn't need upkeep.
2023-01-22 09:53:55 -05:00
Wilson Snyder
53835355b0 Add CFG_CXXFLAGS_STD so CFG_CXXFLAGS_STD_NEWEST can still exist (#3881) 2023-01-22 09:44:50 -05:00
Kamil Rakoczy
4d453c6822
Fix to use same std flag in Verilator and Verilated design (#3881) 2023-01-17 07:11:12 -05:00
Wilson Snyder
7e4760a7e4 Commentary (#3847) 2023-01-10 07:13:08 -05:00
Larry Doolittle
2d6d1235d6
Commentary: Spelling (and grammar) fixes (#3846) 2023-01-08 18:17:24 -05:00
Sören Tempel
78fe77db0f Fix compatibility with musl libc / Alpine Linux (#3845) 2023-01-05 15:50:25 -05:00
Wilson Snyder
b24d7c83d3 Copyright year update 2023-01-01 10:18:39 -05:00
Wilson Snyder
bae60ab8ea devel release 2022-12-14 22:08:39 -05:00
Wilson Snyder
4cefccf5d2 Version bump 2022-12-14 21:59:58 -05:00
Wilson Snyder
0b0b642241 devel release 2022-10-29 17:54:12 -04:00
Wilson Snyder
52d29d238c Version bump 2022-10-29 17:45:54 -04: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
Wilson Snyder
b25b798dbe Merge branch 'master' into develop-v5 2022-07-04 13:20:03 -04:00
Felix Yan
31a83cb0d8
Fix use of C++17 on Arch Linux (#3479) 2022-06-29 11:24:30 -04:00
Wilson Snyder
e7ca4a69e3 Merge branch 'master' into develop-v5 2022-06-19 15:22:09 -04:00
Wilson Snyder
f2fba51fe2 devel release 2022-06-19 15:13:29 -04:00
Wilson Snyder
41b9b30b9b Version bump 2022-06-19 15:01:17 -04:00
Wilson Snyder
0f324c8309 Merge branch 'master' into develop-v5 2022-06-04 11:59:49 -04:00
Geza Lore
694919b9d1 CI: add ubuntu-22.04 regressions 2022-05-30 18:34:41 +01:00
Geza Lore
606b35853b Configure and compile with C++17 on Ubuntu 22.04
The packaged libsystemc on Ubuntu 22.04 uses C++17, so default to that
on that platform. Keep C++14 elsewhere.
2022-05-30 18:34:41 +01:00
Wilson Snyder
30783e6a79 devel release 2022-05-02 22:23:05 -04:00
Wilson Snyder
aa86c777f4 Version bump 2022-05-02 22:17:20 -04:00
Geza Lore
2ad0bcbba9 Merge branch 'master' into develop-v5 2022-05-01 16:49:42 +01:00
Wilson Snyder
99d39cb6ff Fix autoconf warning 2022-05-01 10:43:04 -04:00
Wilson Snyder
f4baa86b71 Devel version 5 2022-04-13 07:15:11 -04:00
Wilson Snyder
e744c21f56 devel release 2022-03-12 13:17:48 -05:00
Wilson Snyder
89a0632ecc Version bump 2022-03-12 13:09:08 -05:00
Wilson Snyder
b5ce7d5982 Add VERILATOR_VERSION_INTEGER for determining API (#3343). 2022-03-12 11:17:39 -05:00
Wilson Snyder
0e154b35ef devel release 2022-01-17 15:54:31 -05:00
Wilson Snyder
e6554e061c Version bump 2022-01-17 15:52:26 -05:00
Wilson Snyder
ffc31e2efa devel release (overdue) 2022-01-01 08:25:44 -05:00