Quite Universal Circuit Simulator
Screenshot of QUCS
|Original author(s)||Michael Margraf, Stefan Jahn et al.|
|Initial release||December 8, 2003|
|Stable release||0.0.18 / 31 August 2014|
|Operating system||Mac OS, Windows, GNU/Linux, Solaris, FreeBSD|
Quite Universal Circuit Simulator (Qucs) is an open-source electronics circuit simulator software released under GPL. It gives you 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.
Analysis types include S-parameter (including noise), AC (including noise), DC, Transient Analysis, Harmonic Balance (not yet finished), Digital simulation (VHDL and Verilog-HDL) and Parameter sweeps.
Features at a glance
QUCS has a graphical interface for schematic capture. Simulation data can be represented in various types of diagrams, including Smith-Chart, Cartesian, Tabular, Polar, Smith-Polar combination, 3D-Cartesian, Locus Curve, Timing Diagram and Truth Table.
The documentation offers many useful tutorials (WorkBook), reports (ReportBook) and a technical description of the simulator.
Other features include the transmission line calculator, Filter synthesis, Smith-Chart tool for power and noise matching, Attenuator design synthesis, Device model and subcircuit library manager, Optimizer for analog designs, the Verilog-A interface, Support for multiple languages (GUI and internal help system), Subcircuit (including parameters) hierarchy, Powerful data post-processing possible using equations and symbolically defined nonlinear and linear devices.
Qucs consists of several standalone programs interacting with each other through the GUCS.
The GUI is used to create schematics, setup simulations, display simulation results, writing VHDL code, etc.
The analog simulator is a command line program which is run by the GUI in order to simulate the schematic which you previously setup. It takes a netlist, checks it for errors, performs the required simulation actions, and finally produces a dataset.
The text editor is used to display netlists and simulation logging information, and to edit files included by certain components (e.g. SPICE netlists, or Touchstone files).
The filter synthesis application can be used to design various types of filters.
The transmission line calculator can be used to design and analyze different types of transmission lines (e.g. microstrips, coaxial cables).
The component library manager holds models for real life devices (e.g. transistors, diodes, bridges, opamps). It can be extended by the user.
The attenuator synthesis application can be used to design various types of passive attenuators.
The command line conversion program tool is used by the GUI to import and export datasets, netlists and schematics from and to other CAD/EDA software. The supported file formats as well as usage information can be found on the manpage of qucsconv.
Additionally, the GUI steers other EDA tools. For digital simulations (via VHDL) the program FreeHDL  is used. For circuit optimization (minimization of a cost function), ASCO  is configured and run.
The following categories of components are provided:
- Lumped components (R, L, C, amplifier, phase shifter, etc.)
- Transmission lines
- Nonlinear components (diodes, transistors, etc.)
- Digital components
- File containers (S-parameter datasets, SPICE netlists)
There is also a Component library that includes various standard components available in the market (bridges, diodes, varistors, LEDs, JFETs, MOSFETS, and so on).
QUCS provides many transistor models. These include:
- HICUM L0 v1.12
- HICUM L0 v1.2
- HICUM L2 v2.1
- HICUM L2 v2.22
- HICUM L2 v2.23
- MESFET (Curtice, Statz, TOM-1 and TOM-2)
- SGP (SPICE Gummel-Poon)
- EPFL-EKV MOSFET v2.6.
The following operations and functions can be applied in QUCS equations:
- max(x,y) returns the greater of the values x and y
- min(x,y) returns the lesser of the values x and y
- rms(x) root mean square of a vector
- sum(x) sum of values in vector
- prod(x) product of values in vector
- diff(y,x) differentiates vector y with respect to x
- diff(y,x,n) differentiates vector y with respect to x n-times
- integrate(x,h) integrates vector x numerically assuming a constant step-size h
- real(x) real part of complex number
- imag(x) imaginary part of complex number
- abs(x) absolute value, magnitude of complex number
- mag(x) same as abs(x)
- norm(x) square of mag(x)
- conj(x) conjugate complex
- phase(x) phase in degree
- angle(x) phase in radians
- arg(x) same as angle(x)
- deg2rad(x) converts degrees to radians
- rad2deg(x) converts radians to degrees
- dB(x) voltage decibel
- dbm(x) convert voltage to power in dB
- dbm2w(x) convert power in dBm to power in Watts
- w2dbm(x) convert power in Watts to power in dBm
- sqr(x) square (x to the power of two)
- sqrt(x) square root
- exp(x) exponential function to basis e
- ln(x) natural logarithm
- log10(x) decimal logarithm
- log2(x) binary logarithm
- sin(x) sine
- cos(x) cosine
- tan(x) tangent
- sinh(x) sine hyperbolicus
- cosh(x) cosine hyperbolicus
- tanh(x) tangent hyperbolicus
- arcsin(x) arcus sine
- arccos(x) arcus cosine
- arctan(x[,y]) arcus tangent
- arccot(x) arcus cotangent
- coth(x) cotangent hyperbolicus
- ceil(x) rounds to the next higher integer
- fix(x) truncates decimal places from real number
- floor(x) rounds to the next lower integer
- round(x) rounds to nearest integer
- sign(x) computes the signum function
- sinc(x) returns sin(x)/x and one at x=0
- fft(x) computes the fast fourier transformation (FFT) of the vector x
- ifft(x) computes the inverse fast fourier transformation (IFFT) of the vector x