2019-06-11 00:29:58 +00:00
|
|
|
The contributors listed below have certified their Verilator contributions
|
2020-04-20 23:54:07 +00:00
|
|
|
under the Developer Certificate of Origin (https://developercertificate.org/).
|
2019-06-11 00:29:58 +00:00
|
|
|
|
2020-04-20 23:38:21 +00:00
|
|
|
Please see the Verilator manual for 200+ additional contributors. Thanks to all.
|
2019-06-11 00:29:58 +00:00
|
|
|
|
2021-12-09 22:30:04 +00:00
|
|
|
Adrien Le Masle
|
2019-10-10 10:46:03 +00:00
|
|
|
Ahmed El-Mahmoudy
|
2022-08-29 12:39:41 +00:00
|
|
|
Aleksander Kiryk
|
2019-06-14 22:42:27 +00:00
|
|
|
Alex Chadwick
|
2021-02-03 19:40:21 +00:00
|
|
|
Àlex Torregrosa
|
2022-04-23 19:11:46 +00:00
|
|
|
Aliaksei Chapyzhenka
|
2021-05-13 18:26:53 +00:00
|
|
|
Ameya Vikram Singh
|
2021-02-21 13:22:52 +00:00
|
|
|
Andreas Kuster
|
2022-07-11 10:21:35 +00:00
|
|
|
Arkadiusz Kozdra
|
2019-10-10 10:46:03 +00:00
|
|
|
Chris Randall
|
2022-03-09 08:57:55 +00:00
|
|
|
Chuxuan Wang
|
2020-06-11 11:39:37 +00:00
|
|
|
Conor McCullough
|
2020-05-06 23:16:41 +00:00
|
|
|
Dan Petrisko
|
2021-09-02 11:41:10 +00:00
|
|
|
Daniel Bates
|
2020-05-29 01:35:38 +00:00
|
|
|
David Horton
|
2021-04-14 20:52:14 +00:00
|
|
|
David Metz
|
2020-04-03 21:59:19 +00:00
|
|
|
David Stanford
|
2021-03-01 23:20:56 +00:00
|
|
|
David Turner
|
2022-03-12 16:24:32 +00:00
|
|
|
Drew Ranck
|
2021-03-14 18:11:57 +00:00
|
|
|
Drew Taussig
|
2019-12-06 23:49:54 +00:00
|
|
|
Driss Hafdi
|
2020-08-13 12:23:02 +00:00
|
|
|
Edgar E. Iglesias
|
2019-10-07 21:31:33 +00:00
|
|
|
Eric Rippey
|
2020-07-01 21:32:15 +00:00
|
|
|
Fan Shupei
|
2021-06-29 03:18:14 +00:00
|
|
|
Felix Yan
|
2019-12-03 23:22:17 +00:00
|
|
|
Garrett Smith
|
2020-01-22 00:54:14 +00:00
|
|
|
Geza Lore
|
2019-07-06 17:02:36 +00:00
|
|
|
Gianfranco Costamagna
|
2020-05-26 23:12:19 +00:00
|
|
|
Glen Gibb
|
2021-04-20 13:08:29 +00:00
|
|
|
Graham Rushton
|
2022-01-23 14:15:09 +00:00
|
|
|
Guokai Chen
|
2022-07-25 15:36:34 +00:00
|
|
|
Gustav Svensk
|
2020-06-28 15:00:57 +00:00
|
|
|
Harald Heckmann
|
2019-09-04 01:28:15 +00:00
|
|
|
Howard Su
|
2020-05-13 23:18:56 +00:00
|
|
|
Huang Rui
|
2022-05-31 11:10:58 +00:00
|
|
|
Huanghuang Zhou
|
2022-01-08 03:42:46 +00:00
|
|
|
HungMingWu
|
2021-03-14 18:11:57 +00:00
|
|
|
HyungKi Jeong
|
2021-09-02 12:10:52 +00:00
|
|
|
Iru Cai
|
2021-08-18 19:19:02 +00:00
|
|
|
Ivan Vnučec
|
2019-10-10 10:46:03 +00:00
|
|
|
Iztok Jeras
|
2020-04-21 22:11:53 +00:00
|
|
|
James Hanlon
|
2020-05-25 14:54:09 +00:00
|
|
|
James Hutchinson
|
2020-09-27 14:10:44 +00:00
|
|
|
James Pallister
|
2021-03-14 18:11:57 +00:00
|
|
|
Jamey Hicks
|
2022-02-26 17:52:24 +00:00
|
|
|
Jamie Iles
|
2020-05-25 12:13:12 +00:00
|
|
|
Jan Van Winkel
|
2020-10-27 17:33:25 +00:00
|
|
|
Jean Berniolles
|
2019-07-06 17:02:36 +00:00
|
|
|
Jeremy Bennett
|
2019-06-11 00:29:58 +00:00
|
|
|
John Coiner
|
2020-05-01 11:42:29 +00:00
|
|
|
John Demme
|
2021-05-08 12:18:08 +00:00
|
|
|
Jonathan Drolet
|
2020-07-15 21:58:59 +00:00
|
|
|
Josh Redford
|
2021-11-18 10:15:02 +00:00
|
|
|
Julie Schwartz
|
2019-12-04 00:12:18 +00:00
|
|
|
Julien Margetts
|
2020-11-06 22:56:15 +00:00
|
|
|
Kaleb Barrett
|
2022-04-28 10:11:31 +00:00
|
|
|
Kamil Rakoczy
|
2019-06-11 00:29:58 +00:00
|
|
|
Kanad Kanhere
|
2021-09-22 11:42:59 +00:00
|
|
|
Keith Colbert
|
2019-10-10 10:46:03 +00:00
|
|
|
Kevin Kiningham
|
2020-11-07 00:51:21 +00:00
|
|
|
Krzysztof Bieganski
|
2019-12-20 11:58:05 +00:00
|
|
|
Kuba Ober
|
2022-02-27 10:01:44 +00:00
|
|
|
Larry Doolittle
|
2020-05-22 11:09:47 +00:00
|
|
|
Ludwig Rogiers
|
2019-09-23 11:56:07 +00:00
|
|
|
Lukasz Dalek
|
2019-07-26 16:57:42 +00:00
|
|
|
Maarten De Braekeleer
|
2020-04-03 22:06:24 +00:00
|
|
|
Maciej Sobkowski
|
2020-04-02 21:32:06 +00:00
|
|
|
Marco Widmer
|
2022-07-04 14:23:31 +00:00
|
|
|
Mariusz Glebocki
|
2020-10-11 01:17:39 +00:00
|
|
|
Markus Krause
|
2020-10-27 01:55:27 +00:00
|
|
|
Marlon James
|
2020-07-14 10:33:04 +00:00
|
|
|
Marshal Qiao
|
2021-06-06 13:27:44 +00:00
|
|
|
Martin Schmidt
|
2022-05-12 01:33:05 +00:00
|
|
|
Martin Stadler
|
2019-11-20 02:53:17 +00:00
|
|
|
Matthew Ballance
|
2020-05-31 13:03:51 +00:00
|
|
|
Michael Killough
|
2021-11-26 15:51:11 +00:00
|
|
|
Michaël Lefebvre
|
2019-10-10 10:46:03 +00:00
|
|
|
Mike Popoloski
|
2021-06-04 16:04:55 +00:00
|
|
|
Miodrag Milanović
|
2021-02-03 19:38:34 +00:00
|
|
|
Morten Borup Petersen
|
2022-07-25 21:46:22 +00:00
|
|
|
Mostafa Gamal
|
2020-12-22 12:52:38 +00:00
|
|
|
Nandu Raj
|
2020-04-11 22:11:53 +00:00
|
|
|
Nathan Kohagen
|
2020-04-09 23:00:27 +00:00
|
|
|
Nathan Myers
|
2019-10-07 21:31:33 +00:00
|
|
|
Patrick Stewart
|
2021-01-10 17:40:03 +00:00
|
|
|
Paul Wright
|
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 12:26:32 +00:00
|
|
|
Pawel Sagan
|
2020-04-30 11:20:31 +00:00
|
|
|
Peter Horvath
|
2020-01-15 12:40:22 +00:00
|
|
|
Peter Monsson
|
2019-07-06 22:07:15 +00:00
|
|
|
Philipp Wagner
|
2021-01-15 12:31:48 +00:00
|
|
|
Pierre-Henri Horrein
|
2020-01-15 12:32:45 +00:00
|
|
|
Pieter Kapsenberg
|
2020-07-15 11:39:58 +00:00
|
|
|
Piotr Binkowski
|
2020-04-23 11:14:20 +00:00
|
|
|
Qingyao Sun
|
2020-10-08 11:54:01 +00:00
|
|
|
Rafal Kapuscik
|
2022-02-16 05:10:34 +00:00
|
|
|
Raynard Qiao
|
2019-06-12 01:38:17 +00:00
|
|
|
Richard Myers
|
2020-08-18 16:12:52 +00:00
|
|
|
Rupert Swarbrick
|
2022-08-18 11:03:05 +00:00
|
|
|
Ryszard Rozak
|
2021-01-28 20:01:33 +00:00
|
|
|
Samuel Riedel
|
2020-03-29 14:29:12 +00:00
|
|
|
Sean Cross
|
2020-04-03 21:59:19 +00:00
|
|
|
Sebastien Van Cauwenberghe
|
2020-05-25 13:16:40 +00:00
|
|
|
Sergi Granell
|
2019-06-11 00:29:58 +00:00
|
|
|
Stefan Wallentowitz
|
2020-05-11 22:44:28 +00:00
|
|
|
Stephen Henry
|
2021-07-25 01:06:06 +00:00
|
|
|
Steven Hugg
|
2021-10-26 16:20:45 +00:00
|
|
|
Teng Huang
|
2020-05-04 22:42:15 +00:00
|
|
|
Tim Snyder
|
2020-01-15 12:40:22 +00:00
|
|
|
Tobias Rosenkranz
|
2020-02-16 00:17:23 +00:00
|
|
|
Tobias Wölfel
|
2019-09-30 13:33:17 +00:00
|
|
|
Todd Strader
|
2020-05-29 01:35:38 +00:00
|
|
|
Tomasz Gorochowik
|
2020-05-25 17:36:24 +00:00
|
|
|
Tymoteusz Blazejczyk
|
2021-04-01 22:17:42 +00:00
|
|
|
Udi Finkelstein
|
2020-12-10 16:15:30 +00:00
|
|
|
Unai Martinez-Corral
|
2022-08-25 23:29:11 +00:00
|
|
|
Varun Koyyalagunta
|
2020-05-24 01:58:45 +00:00
|
|
|
Vassilis Papaefstathiou
|
2020-04-04 22:02:23 +00:00
|
|
|
Veripool API Bot
|
2021-03-14 18:11:57 +00:00
|
|
|
Victor Besyakov
|
2022-07-13 10:38:03 +00:00
|
|
|
William D. Jones
|
2019-06-11 00:29:58 +00:00
|
|
|
Wilson Snyder
|
2022-03-17 13:04:47 +00:00
|
|
|
Xi Zhang
|
2022-04-27 22:40:36 +00:00
|
|
|
Yoda Lee
|
2020-05-10 18:27:22 +00:00
|
|
|
Yossi Nivin
|
2020-05-23 20:30:36 +00:00
|
|
|
Yuri Victorovich
|
2019-12-10 00:17:52 +00:00
|
|
|
Yutetsu TAKATSUKASA
|
2019-10-02 22:47:06 +00:00
|
|
|
Yves Mathieu
|
2021-09-28 11:28:02 +00:00
|
|
|
Zhanglei Wang
|