Verilog-A

Last updated

Verilog-A is an industry standard modeling language for analog circuits. It is the continuous-time subset of Verilog-AMS. A few commercial applications may export MEMS designs in Verilog-A format.

Contents

History

Verilog-A was created out of a need to standardize the Spectre behavioral language in face of competition from VHDL (an IEEE standard), which was absorbing analog capability from other languages (e.g. MAST). Open Verilog International (OVI, the body that originally standardized Verilog) agreed to support the standardization, provided that it was part of a plan to create Verilog-AMS a single language covering both analog and digital design. Verilog-A was an all-analog subset of Verilog-AMS that was the first phase of the project.

There was considerable delay (possibly procrastination) between the first Verilog-A language reference manual and the full Verilog-AMS, and in that time Verilog moved to the IEEE, leaving Verilog-AMS behind at Accellera.

The email log from AD 2000 can be found here.

Standard Availability

Verilog-A standard does not exist stand-alone - it is part of the complete Verilog-AMS standard. Its LRM is available at the Accellera website. [1] However, the initial and subsequent releases can be found here, with what will probably be the final release here since future work will leverage the new net-type capabilities in SystemVerilog. Built-in types like "wreal" in Verilog-AMS will become user-defined types in SystemVerilog more in line with the VHDL methodology.

Compatibility with the C programming language

A subset of Verilog-A can be translated automatically to the C programming language using the Automatic Device Model Synthesizer (ADMS). This feature is used for example to translate the BSIM Verilog-A transistor models, which are no more released in C, for use in simulators like ngspice. [2]

Code example

This first example gives a first demonstration of modeling in Verilog-A:

`include"constants.vams"`include"disciplines.vams"moduleexample(a,b,c,d,e,f);parameterrealR=1m;parameterrealC=1u;parameterrealL=1u;parameterintegergain=2;inputa;outputb;inoutc,d,e,f;electricala,b,c,d,e,f;analogbegin// Modelling lumped elements//ResistorV(c,d)<+R*I(c,d);//Inductor// Multiple current or voltage assignments are accumulatedV(c,d)<+L*ddt(I(c,d));//CapacitorI(e,f)<+C*ddt(V(e,f));// Simple amplifier// Voltages are referenced to ground if no second node is givenV(b)<+gain*V(a);endendmodule

This Verilog-AMS example implements an ideal diode, by defining the current through the branch (a,c) depending on voltage at branch terminals (a), (c), and the ambient temperature of the simulated circuit:

// Ideal Diodemodulediode(a,c);inouta,c;electricala,c;parameterrealIS=1.0e-14;// User-configurable saturation currentrealidio;/*     *  Calculate nonlinear current through diode depending on     *   - thermal voltage $vt (at ambient temperature of simulated circuit) and     *   - voltage between terminals     */analogbeginidio=IS*(limexp(V(a,c)/$vt)-1);I(a,c)<+idio;endendmodule

For a simple DC voltage source, the branch voltage is set to the constant (DC) value:

// DC Sourcemodulevsrc(p,n);parameterrealdc=1.0;inoutp,n;electricalp,n;analogbegin// Assign constant DC voltage at each time step:V(p,n)<+dc;endendmodule

A sine voltage generator can use the built-in sin() function:

// A Sinusoidal Voltage Source`include"constants.vams"modulevsin(p,n);parameterrealamplitude=1.0;parameterrealfreq=50.0;parameterrealphase=0.0;inoutp,n;electricalp,n;analogbeginV(p,n)<+amplitude*sin(`M_TWO_PI*freq*$abstime+phase);$bound_step(0.1/freq);// demand at least 10 points per cycle to avoid aliasing issuesendendmodule

See also

Related Research Articles

<span class="mw-page-title-main">Electrical network</span> Assemblage of connected electrical elements

An electrical network is an interconnection of electrical components or a model of such an interconnection, consisting of electrical elements. An electrical circuit is a network consisting of a closed loop, giving a return path for the current. Thus all circuits are networks, but not all networks are circuits. Linear electrical networks, a special type consisting only of sources, linear lumped elements, and linear distributed elements, have the property that signals are linearly superimposable. They are thus more easily analyzed, using powerful frequency domain methods such as Laplace transforms, to determine DC response, AC response, and transient response.

<span class="mw-page-title-main">VHDL</span> Hardware description language

The VHSIC Hardware Description Language (VHDL) is a hardware description language (HDL) that can model the behavior and structure of digital systems at multiple levels of abstraction, ranging from the system level down to that of logic gates, for design entry, documentation, and verification purposes. Since 1987, VHDL has been standardized by the Institute of Electrical and Electronics Engineers (IEEE) as IEEE Std 1076; the latest version of which is IEEE Std 1076-2019. To model analog and mixed-signal systems, an IEEE-standardized HDL based on VHDL called VHDL-AMS has been developed.

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 also used in the verification of analog circuits and mixed-signal circuits, as well as in the design of genetic circuits. In 2009, the Verilog standard was merged into the SystemVerilog standard, creating IEEE Standard 1800-2009. Since then, Verilog is officially part of the SystemVerilog language. The current version is IEEE standard 1800-2017.

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.

<span class="mw-page-title-main">Accellera</span>

Accellera Systems Initiative (Accellera) is a standards organization that supports a mix of user and vendor standards and open interfaces development in the area of electronic design automation (EDA) and integrated circuit (IC) design and manufacturing. It is less constrained than the Institute of Electrical and Electronics Engineers (IEEE) and is therefore the starting place for many standards. Once mature and adopted by the broader community, the standards are usually transferred to the IEEE.

SystemC is a set of C++ classes and macros which provide an event-driven simulation interface. These facilities enable a designer to simulate concurrent processes, each described using plain C++ syntax. SystemC processes can communicate in a simulated real-time environment, using signals of all the datatypes offered by C++, some additional ones offered by the SystemC library, as well as user defined. In certain respects, SystemC deliberately mimics the hardware description languages VHDL and Verilog, but is more aptly described as a system-level modeling language.

<span class="mw-page-title-main">SystemVerilog</span> Hardware description and hardware verification language

SystemVerilog, standardized as IEEE 1800, is a hardware description and hardware verification language used to model, design, simulate, test and implement electronic systems. SystemVerilog is based on Verilog and some extensions, and since 2008, Verilog is now part of the same IEEE standard. It is commonly used in the semiconductor and electronic design industry as an evolution of Verilog.

<span class="mw-page-title-main">Ngspice</span> Analog circuit simulator software

Ngspice is an open-source mixed-level/mixed-signal electronic circuit simulator. It is a successor of the latest stable release of Berkeley SPICE, version 3f.5, which was released in 1993. A small group of maintainers and the user community contribute to the ngspice project by providing new features, enhancements and bug fixes.

<span class="mw-page-title-main">Quite Universal Circuit Simulator</span>

Quite Universal Circuit Simulator (Qucs) is a free-software electronics circuit simulator software application released under GPL. It offers the ability to set up a circuit with a graphical user interface and simulate the large-signal, small-signal and noise behaviour of the circuit. Pure digital simulations are also supported using VHDL and/or Verilog. Only a small set of digital devices like flip flops and logic gates can be used with analog circuits. Qucs uses its own SPICE-incompatible backend simulator Qucsator, however the Qucs-S fork supports some SPICE backends.

Verilog-AMS is a derivative of the Verilog hardware description language that includes Analog and Mixed-Signal extensions (AMS) in order to define the behavior of analog and mixed-signal systems. It extends the event-based simulator loops of Verilog/SystemVerilog/VHDL, by a continuous-time simulator, which solves the differential equations in analog-domain. Both domains are coupled: analog events can trigger digital actions and vice versa.

Electronic circuit design comprises the analysis and synthesis of electronic circuits.

<span class="mw-page-title-main">Electronic circuit simulation</span>

Electronic circuit simulation uses mathematical models to replicate the behavior of an actual electronic device or circuit. Simulation software allows for modeling of circuit operation and is an invaluable analysis tool. Due to its highly accurate modeling capability, many colleges and universities use this type of software for the teaching of electronics technician and electronics engineering programs. Electronics simulation software engages its users by integrating them into the learning experience. These kinds of interactions actively engage learners to analyze, synthesize, organize, and evaluate content and result in learners constructing their own knowledge.

Open Verification Library (OVL) is a library of property checkers for digital circuit descriptions written in popular Hardware Description Languages (HDLs). OVL is currently maintained by Accellera.

The Design Automation Standards Committee (DASC) is a subgroup of interested individuals members of the Institute of Electrical and Electronics Engineers (IEEE) Computer Society and Standards Association. It oversees IEEE Standards that are related to computer-aided design. It is part of the IEEE Computer Society.

VHDL-AMS is a derivative of the hardware description language VHDL. It includes analog and mixed-signal extensions (AMS) in order to define the behavior of analog and mixed-signal systems.

SystemVerilog DPI is an interface which can be used to interface SystemVerilog with foreign languages. These foreign languages can be C, C++, SystemC as well as others. DPIs consist of two layers: a SystemVerilog layer and a foreign language layer. Both the layers are isolated from each other.

The following outline is provided as an overview of and topical guide to electronics:

Automatic Device Model Synthesizer (ADMS) is public domain software used in the semiconductor industry to translate Verilog-A models into C-models which can be directly read by a number of SPICE simulators, including Spectre Circuit Simulator, Ngspice and HSpice.

SystemC AMS is an extension to SystemC for analog, mixed-signal and RF functionality. The SystemC AMS 2.0 standard was released on April 6, 2016 as IEEE Std 1666.1-2016.

<span class="mw-page-title-main">SPICE OPUS</span> Analog circuit simulator software

SPICE OPUS is a free general purpose electronic circuit simulator, developed and maintained by members of EDA Group, University of Ljubljana, Slovenia. It is based on original Berkeley’s SPICE analog circuit simulator and inlcudes various improvements and advances, such as memory-leak bug fixes and plotting tool improvements. SPICE OPUS is specially designed for fast optimization loops via its built-in optimizer.

References

  1. Verilog-AMS Standard
  2. "Verilog-A to C conversion guidelines". ngspice. Retrieved 2019-07-17.