2019-11-08 00:52:56 +00:00
// Github doesn't render images unless absolute URL
:!toc:
ifdef::env-github[]
image:https://img.shields.io/badge/License-LGPL%20v3-blue.svg[license LGPLv3,link=https://www.gnu.org/licenses/lgpl-3.0]
image:https://img.shields.io/badge/License-Artistic%202.0-0298c3.svg[license Artistic-2.0,link=https://opensource.org/licenses/Artistic-2.0]
2020-04-21 01:52:29 +00:00
image:https://api.codacy.com/project/badge/Grade/fa78caa433c84a4ab9049c43e9debc6f[Code Quality,link=https://www.codacy.com/gh/verilator/verilator]
2020-05-16 19:02:22 +00:00
image:https://codecov.io/gh/verilator/verilator/branch/master/graph/badge.svg[Coverage,link=https://codecov.io/gh/verilator/verilator]
2020-12-04 22:06:18 +00:00
image:https://github.com/verilator/verilator/workflows/build/badge.svg[Build Status (GitHub),link=https://github.com/verilator/verilator/actions?query=workflow%3Abuild]
2019-11-08 00:52:56 +00:00
endif::[]
ifdef::env-github[]
:link_verilator_contributing: link:docs/CONTRIBUTING.adoc
:link_verilator_install: link:docs/install.adoc
endif::[]
ifndef::env-github[]
2019-11-08 01:13:00 +00:00
:link_verilator_contributing: https://github.com/verilator/verilator/blob/master/docs/CONTRIBUTING.adoc
2019-11-08 00:52:56 +00:00
:link_verilator_install: https://verilator.org/install
endif::[]
2020-01-18 14:18:57 +00:00
:link_verilator_commercial_support: https://verilator.org/verilator_commercial_support
2019-11-08 00:52:56 +00:00
== Welcome to Verilator
2020-05-16 22:53:18 +00:00
[cols="a,a",indent=0,frame="none",grid="rows"]
2019-11-08 00:52:56 +00:00
|===
2020-05-16 22:53:18 +00:00
^.^| *Welcome to Verilator, the fastest Verilog/SystemVerilog simulator.*
2019-11-08 00:52:56 +00:00
+++ <br/> +++ • Accepts synthesizable Verilog or SystemVerilog
+++ <br/> +++ • Performs lint code-quality checks
2020-02-28 00:35:49 +00:00
+++ <br/> +++ • Compiles into multithreaded {cpp}, or SystemC
2019-11-08 00:52:56 +00:00
+++ <br/> +++ • Creates XML to front-end your own tools
<.^|image:https://www.veripool.org/img/verilator_256_200_min.png[Logo,256,200]
>.^|image:https://www.veripool.org/img/verilator_multithreaded_performance_bg-min.png[,388,178]
^.^| *Fast*
+++ <br/> +++ • Outperforms many commercial simulators
+++ <br/> +++ • Single- and multi-threaded output models
^.^| *Widely Used*
+++ <br/> +++ • Wide industry and academic deployment
+++ <br/> +++ • Out-of-the-box support from Arm, and RISC-V vendor IP
<.^|image:https://www.veripool.org/img/verilator_usage_400x200-min.png[,400,200]
2020-01-18 14:18:57 +00:00
>.^|image:https://www.veripool.org/img/verilator_community_400x125-min.png[,400,125]
2019-11-08 00:52:56 +00:00
^.^| *Community Driven & Openly Licensed*
+++ <br/> +++ • Guided by the https://chipsalliance.org/[CHIPS Alliance] and https://www.linuxfoundation.org/[Linux Foundation]
+++ <br/> +++ • Open, and free as in both speech and beer
+++ <br/> +++ • More simulation for your verification budget
2020-01-18 14:18:57 +00:00
^.^| *Commercial Support Available*
+++ <br/> +++ • Commercial support contracts
+++ <br/> +++ • Design support contracts
+++ <br/> +++ • Enhancement contracts
<.^|image:https://www.veripool.org/img/verilator_support_400x125-min.png[,400,125]
2019-11-08 00:52:56 +00:00
|===
== What Verilator Does
Verilator is invoked with parameters similar to GCC or Synopsys's VCS. It
2020-04-05 20:09:18 +00:00
"Verilates" the specified Verilog or SystemVerilog code by
2019-11-08 00:52:56 +00:00
reading it, performing lint checks, and optionally inserting assertion
checks and coverage-analysis points. It outputs single- or multi-threaded
.cpp and .h files, the "Verilated" code.
The user writes a little {cpp}/SystemC wrapper file, which instantiates the
"Verilated" model of the user's top level module. These {cpp}/SystemC
files are then compiled by a {cpp} compiler (gcc/clang/MSVC++). The
resulting executable performs the design simulation. Verilator also
supports linking its generated libraries, optionally encrypted, into other
simulators.
Verilator may not be the best choice if you are expecting a full featured
replacement for NC-Verilog, VCS or another commercial Verilog simulator, or
if you are looking for a behavioral Verilog simulator e.g. for a quick
class project (we recommend http://iverilog.icarus.com[Icarus Verilog] for
2020-04-05 20:09:18 +00:00
this.) However, if you are looking for a path to migrate SystemVerilog to
2020-05-16 22:53:18 +00:00
{cpp} or SystemC, or your team is comfortable writing just a touch of {cpp}
code, Verilator is the tool for you.
2019-11-08 00:52:56 +00:00
== Performance
2020-04-05 20:09:18 +00:00
Verilator does not simply convert Verilog HDL to {cpp} or SystemC. Rather,
Verilator compiles your code into a much faster optimized and optionally
thread-partitioned model, which is in turn wrapped inside a
2020-05-16 22:53:18 +00:00
{cpp}/SystemC module. The results are a compiled
2020-04-05 20:09:18 +00:00
Verilog model that executes even on a single-thread over 10x faster than
standalone SystemC, and on a single thread is about 100 times faster than
interpreted Verilog simulators such as http://iverilog.icarus.com[Icarus
2019-11-08 00:52:56 +00:00
Verilog]. Another 2-10x speedup might be gained from multithreading
(yielding 200-1000x total over interpreted simulators).
2020-04-05 21:01:33 +00:00
Verilator has typically similar or better performance versus the
closed-source Verilog simulators (Carbon Design Systems Carbonator,
Modelsim, Cadence Incisive/NC-Verilog, Synopsys VCS, VTOC, and Pragmatic
CVer/CVC). But, Verilator is open-sourced, so you can spend on computes
rather than licenses. Thus Verilator gives you the best cycles/dollar.
2019-11-08 00:52:56 +00:00
For more information on how Verilator stacks up to some of the other
2020-04-05 20:09:18 +00:00
closed-sourced and open-sourced Verilog simulators, see the
2019-11-08 00:52:56 +00:00
https://www.veripool.org/verilog_sim_benchmarks.html[Verilog Simulator
Benchmarks]. (If you benchmark Verilator, please see the notes in the
https://verilator.org/verilator_doc.pdf[Verilator manual (PDF)], and also
if possible post on the forums the results; there may be additional tweaks
possible.)
2019-11-08 00:55:11 +00:00
== Installation & Documentation
2019-11-08 00:52:56 +00:00
For more information:
* {link_verilator_install}[Verilator installation and package directory
2019-11-08 01:13:00 +00:00
structure]
2019-11-08 00:52:56 +00:00
* https://verilator.org/verilator_doc.html[Verilator manual (HTML)],
2019-11-08 01:13:00 +00:00
or https://verilator.org/verilator_doc.pdf[Verilator manual (PDF)]
2019-11-08 00:52:56 +00:00
2020-05-03 20:10:02 +00:00
* https://github.com/verilator/verilator-announce[Subscribe to verilator announcements]
2019-11-08 01:13:00 +00:00
* https://verilator.org/forum[Verilator forum]
2019-11-08 00:52:56 +00:00
2020-05-03 20:10:02 +00:00
* https://verilator.org/issues[Verilator issues]
2019-11-08 00:55:11 +00:00
2020-01-18 14:18:57 +00:00
== Support
2019-11-08 00:52:56 +00:00
Verilator is a community project, guided by the
https://chipsalliance.org/[CHIPS Alliance] under the
https://www.linuxfoundation.org/[Linux Foundation].
We appreciate and welcome your contributions in whatever form; please see
{link_verilator_contributing}[Contributing to Verilator]. Thanks to our
https://verilator.org/verilator_doc.html#CONTRIBUTORS[Contributors and
Sponsors].
2020-01-18 14:18:57 +00:00
Verilator also supports and encourages commercial support models and
organizations; please see {link_verilator_commercial_support}[Verilator
Commercial Support].
2019-11-08 00:52:56 +00:00
== Related Projects
* http://gtkwave.sourceforge.net/[GTKwave] - Waveform viewer for Verilator
traces.
* http://iverilog.icarus.com[Icarus Verilog] - Icarus is a full featured
interpreted Verilog simulator. If Verilator does not support your needs,
perhaps Icarus may.
== Open License
2020-01-06 23:05:53 +00:00
Verilator is Copyright 2003-2020 by Wilson Snyder. (Report bugs to
2019-11-08 00:52:56 +00:00
https://verilator.org/issues[Verilator Issues].)
Verilator is free software; you can redistribute it and/or modify it under
the terms of either the GNU Lesser General Public License Version 3 or the
2020-01-10 01:29:36 +00:00
Perl Artistic License Version 2.0. See the documentation for more
details.