Verilator
   HOME

TheInfoList



OR:

Verilator is a free and open-source software tool which converts
Verilog Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is als ...
(a
hardware description language In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, and most commonly, digital logic circuits. A hardware description language en ...
) to a cycle-accurate behavioral model in
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
or SystemC. The generated models are cycle-accurate and 2-state; as a consequence, the models typically offer higher performance than the more widely used
event-driven simulator Event driven may refer to: The term event-driven refers to a methodology that focuses on events and event dependencies. Examples include * Event-driven finite-state machine, finite-state machine where the transition from one state to another ...
s, which can model behavior ''within'' the clock cycle. Verilator is now used within academic research, open source projects and for commercial semiconductor development. It is part of the growing body of free EDA software.


Usage

Verilator has seen its widest adoption in the academic and open source communities. The semiconductor industry has been more cautious in its adoption of an open source tool, and has the financial means to use commercial alternatives.


Academic

Researchers have used Verilator to develop new co-simulation environments, as part of general ASIC and FPGA design flows and in performance and power analysis. Verilator is also a popular tool for student dissertations, for example.


Open Source

Verilator is an open source tool, and has in turn been adopted by a number of other projects. The Fedora Electronic La

has adopted Verilator as part of its open source design flow for Fedora 11. The
OpenRISC OpenRISC is a project to develop a series of open-source hardware based central processing units (CPUs) on established reduced instruction set computer (RISC) principles. It includes an instruction set architecture (ISA) using an open-source lic ...
architecture from
OpenCores OpenCores is a community developing digital open-source hardware through electronic design automation (EDA), with a similar ethos as the free software movement. OpenCores hopes to eliminate redundant design work and slash development costs. A ...
includes a cycle accurate reference model, generated from Verilog using Verilator. A recent paper described how the regression test suite for GCC could be run against a Verilator model of the OpenRISC 1200 as a way of detecting errors in the Verilog RTL implementation. TestDrive Profiling Maste

tool provides the virtual FPGA environment using Verilator.


Commercial

Commercially, Philips Semiconductors (now NXP) have led the way. Their use of Verilator is becoming more widespread, for example within application notes. More recently Art of Silicon have described their use of Verilator on a farm of Linux processors as a route to faster regression testing of their commercial designs. The current maintainer of Verilator identified 27 companies and universities who had reported use of Verilator or contributed to its development, including Intel, Arm, CSR, Broadcom, Raytheon, Infineon, Stanford University, Imperial College London and Embecosm.


History

Verilator's user manual provides a short history.Wilson Snyder, "Verilator-3.700", 7 January 2009
/ref> The tool originated in 1994 with a team led by Paul Wasson at the Core Logic Group at
Digital Equipment Corporation Digital Equipment Corporation (DEC ), using the trademark Digital, was a major American company in the computer industry from the 1960s to the 1990s. The company was co-founded by Ken Olsen and Harlan Anderson in 1957. Olsen was president un ...
(DEC). It was used to convert Verilog code to C for co-simulation with a C based CPU model of the Alpha processor. During the mid-1990s Duane Galbi took over responsibility for development and the technology was adopted by other groups in DEC. In 1998 DEC released the source code. Since 2001 the technology has been developed by Wilson Snyder and others as part of the Veripool open source project. A SystemC mode was added and the tool rewritten from scratch in C++, leading to an increase in performance. In 2022 Verilator Version 5 added an IEEE-compliant scheduler and delay semantics, relaxing previous restrictions that ignored all delays.


Technology and key features

Verilator converts Verilog to C++ or SystemC. It can handle all versions of Verilog and also some SystemVerilog assertions. The approach is closer to synthesis than event-driven simulation. The entire design is flattened (that is, all modules are expanded to create one module). Static analysis is used to eliminate wires and schedule all processes ''at model generation time''. A C++ class is generated with a function which takes 2-state values on input ports and advance them to values on output ports at the next clock edge. SystemC is supported by providing a wrapper class using SystemC ports and with sensitivity to the clock(s), which will drive the ports of the underlying C++ model. Verilator supports automatically partitioning designs into multiple threads, also potentially improving performance.


Using with MATLAB

Verilator converts synthesizable Verilog to C++, while C++ library could be compiled into a
MEX file A MEX file is a type of computer file that provides an interface between MATLAB or Octave and functions written in C, C++ or Fortran. It stands for "MATLAB executable". When compiled, MEX files are dynamically loaded and allow external functions ...
using MATLAB interface to C++. This is how
Verilog Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is als ...
designs can be directly simulated from MATLAB. Using compiled C++ models with MATLAB is faster than using co-simulation interfaces with a separate HDL simulator. There is an open-source project calle
vmodel
that compiles Verilog into a
MEX file A MEX file is a type of computer file that provides an interface between MATLAB or Octave and functions written in C, C++ or Fortran. It stands for "MATLAB executable". When compiled, MEX files are dynamically loaded and allow external functions ...
using Verilator and provides a set of functions for model simulation from MATLAB.


See also

*
Comparison of EDA software This page is a comparison of electronic design automation (EDA) software which is used today to design the near totality of electronic devices. Modern electronic devices are too complex to be designed without the help of a computer. Electronic dev ...
*
List of HDL simulators HDL simulators are software packages that simulate expressions written in one of the hardware description languages, such as VHDL, Verilog, SystemVerilog. This page is intended to list current and historical HDL simulators, accelerators, emul ...
*
OpenCores OpenCores is a community developing digital open-source hardware through electronic design automation (EDA), with a similar ethos as the free software movement. OpenCores hopes to eliminate redundant design work and slash development costs. A ...
*
OpenRISC OpenRISC is a project to develop a series of open-source hardware based central processing units (CPUs) on established reduced instruction set computer (RISC) principles. It includes an instruction set architecture (ISA) using an open-source lic ...
*
Verilog Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is als ...


References


External links

* {{CAD software Free electronic design automation software Electronic design automation software for Linux