Commit Graph

344 Commits

Author SHA1 Message Date
Wilson Snyder
33e999e01a devel release 2024-04-05 06:23:30 -04:00
Wilson Snyder
522bead374 Version bump 2024-04-05 05:52:00 -04:00
Wilson Snyder
881c6ee655 devel release 2024-02-24 07:52:19 -05:00
Wilson Snyder
d8b2993974 Version bump 2024-02-24 07:39:16 -05:00
Wilson Snyder
efff630763 Fix tautological-compare warnings. 2024-02-07 22:16:08 -05:00
Wilson Snyder
74ec50f933 Support interface class diamond relationship. 2024-01-23 22:07:35 -05:00
Anthony Donlon
f80c167d65
Fix warnings in verilated_sc_trace.h for Clang. No functional change. (#4807) (#4827) 2024-01-17 19:30:42 -05:00
Wilson Snyder
3eaed3b6f5
Remove deprecated 32-bit pointer mode (#4791). 2024-01-01 10:16:48 -05:00
Wilson Snyder
22de598456 devel release 2024-01-01 03:46:48 -05:00
Wilson Snyder
5c5314b39c Version bump 2024-01-01 03:42:12 -05:00
Wilson Snyder
e76f29e5ba Copyright year update 2024-01-01 03:19:59 -05:00
Rasfunk
2d7e8b58e4
Require C++14 or newer (#4784) (#4786) 2023-12-29 10:39:00 -05:00
Wilson Snyder
839315b271 devel release 2023-10-31 19:53:03 -04:00
Wilson Snyder
67dfa37c56 Version bump 2023-10-31 19:50:01 -04:00
Wilson Snyder
a27abab65f Fix PCH to recompile on version change 2023-10-31 08:10:41 -04:00
Mariusz Glebocki
c7a0613c57
Support Clang 16 (#4592) 2023-10-20 15:47:09 -04:00
Wilson Snyder
493f1da266 Fix compile warning on unused member function variable (#4567). 2023-10-18 08:09:54 -04:00
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