Esim Manual 2
Esim Manual 2
Prepared By:
eSim Team
FOSSEE, IIT Bombay
February 2022
i
Contents
1 Introduction 2
2 Architecture of eSim 4
2.1 Modules used in eSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Eeschema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 CvPcb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 Pcbnew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.4 KiCad to Ngspice converter . . . . . . . . . . . . . . . . . . . . . 6
2.1.5 Model Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.6 Subcircuit Builder . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.7 Ngspice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.8 NGHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.9 NgVeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.10 Makerchip-App . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.11 SandPiper SaaS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.12 Verilator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.13 OpenModelica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Work flow of eSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Installing eSim 11
3.1 eSim installation in Ubuntu OS . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 eSim installation in Windows OS . . . . . . . . . . . . . . . . . . . . . . 11
4 Getting Started 13
4.1 How to launch eSim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 eSim User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.1 Menubar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.2 Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2.3 Project Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.4 Dockarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.5 Console Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5 Schematic Creation 21
5.1 Familiarizing the Schematic Editor interface . . . . . . . . . . . . . . . . 21
5.1.1 Top menu bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.1.2 Top toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.1.3 Toolbar on the right . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.1.4 Toolbar on the left . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.1.5 Hotkeys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2 eSim component libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3 Schematic creation for simulation . . . . . . . . . . . . . . . . . . . . . . 27
5.3.1 Selection and placement of components . . . . . . . . . . . . . . 27
5.3.2 Wiring the circuit . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3.3 Assigning values to components . . . . . . . . . . . . . . . . . . . 30
5.3.4 Annotation and ERC . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3.5 Netlist generation . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.4 Tools for creating the PCB layout . . . . . . . . . . . . . . . . . . . . . 31
5.4.1 FootPrint Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.4.2 PCB Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6 Simulation 33
6.1 Kicad to Ngspice Conversion . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1.1 Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.1.2 Source Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.1.3 Ngspice Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.1.4 Device Modelling . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.1.5 Sub Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2 Simulating the schematic . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2.1 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2.2 Multimeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7 Model Editor 40
7.1 Creating New Model Library . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2 Editing Current Model Library . . . . . . . . . . . . . . . . . . . . . . . 42
7.3 Uploading external .lib file to eSim repository . . . . . . . . . . . . . . . 43
8 SubCircuit Builder 44
8.1 Creating a SubCircuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.2 Edit a Subcircuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8.3 Upload subcircuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
iii
9 NGHDL: Mixed Signal Simulation 51
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
9.2 Digital Model creation using NGHDL . . . . . . . . . . . . . . . . . . . 53
9.3 Schematic Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
10 OpenModelica 63
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.1.1 OMEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.1.2 OMOptim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.2 OpenModelica in eSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
10.2.1 OM Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
11 Solved Examples 71
11.1 Solved Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
11.1.1 Basic RC Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
11.1.2 Half Wave Rectifier . . . . . . . . . . . . . . . . . . . . . . . . . . 78
11.1.3 Inverting Amplifier . . . . . . . . . . . . . . . . . . . . . . . . . . 81
11.1.4 Half Adder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.1.5 Full Wave Rectifier using SCR . . . . . . . . . . . . . . . . . . . 88
11.1.6 Oscillator Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
11.1.7 Characteristics of BJT in Common Base Configuration . . . . . . 95
12 PCB Design 99
12.1 Schematic creation for PCB design . . . . . . . . . . . . . . . . . . . . . 99
12.1.1 Removing components required for simulation from the schematic 99
12.1.2 Mapping of components using Cvpcb . . . . . . . . . . . . . . . . 100
12.1.3 Familiarising with Cvpcb Window . . . . . . . . . . . . . . . . . 100
12.1.4 Viewing footprints in 2D and 3D . . . . . . . . . . . . . . . . . . 102
12.1.5 Mapping of components in the circuit . . . . . . . . . . . . . . . 102
12.1.6 Netlist generation for PCB . . . . . . . . . . . . . . . . . . . . . 104
12.2 Creation of PCB layout . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
12.2.1 Launching Pcbnew . . . . . . . . . . . . . . . . . . . . . . . . . . 105
12.2.2 Familiarizing the Layout Editor tool . . . . . . . . . . . . . . . . 105
12.2.3 Hotkeys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
12.2.4 Designing PCB layout for 7805VoltageRegulator circuit . . . . . 107
13 Appendix 116
13.1 Appendix A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
13.1.1 Backing up important data before uninstalling eSim . . . . . . . 116
13.1.2 Uninstalling eSim . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
13.2 Appendix B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
13.2.1 Pin types in KiCad . . . . . . . . . . . . . . . . . . . . . . . . . . 117
iv
13.2.2 ERC Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
13.3 Appendix C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
13.3.1 Shortcut keys in Schematic editor . . . . . . . . . . . . . . . . . 118
13.3.2 Shortcut keys in PCB editor . . . . . . . . . . . . . . . . . . . . 119
13.4 Appendix D: ERC errors . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
13.5 Appendix E: Checks to be done before Simulation in NGHDL . . . . . . 121
13.6 Appendix F: Common Errors in NGHDL . . . . . . . . . . . . . . . . . 123
13.6.1 NGHDL Upload Errors . . . . . . . . . . . . . . . . . . . . . . . 123
13.6.2 Simulation Related Errors . . . . . . . . . . . . . . . . . . . . . . 123
13.6.3 Model Deletion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
13.7 Appendix G: References . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
v
Acknowledgement
There have been many people contributing towards the software development and/or the
electronic system design and simulation for eSim. The following people have contributed
in some way.
Development:
Technical Guidance:
Financial Sponsorship:
If someone helped in the development/simulation and has not been inserted in this
list, then this omission was unintentional. If you feel you should be on this list, then
please feel free to contact us at [email protected].
1
Chapter 1
Introduction
Electronic systems are an integral part of human life. They have simplified our lives
to a great extent. Starting from small systems made of a few discrete components to
the present day integrated circuits (ICs) with millions of logic gates, electronic systems
have undergone a sea change. As a result, design of electronic systems too have become
extremely difficult and time consuming. Thanks to a host of computer aided design
tools, we have been able to come up with quick and efficient designs. These are called
Electronic Design Automation or EDA tools.
Let us see the steps involved in EDA. In the first stage, the specifications of the
system are laid out. These specifications are then converted to a design. The design
could be in the form of a circuit schematic, logical description using an HDL language,
etc. The design is then simulated and re-designed, if needed, to achieve the desired
results. Once simulation achieves the specifications, the design is either converted to
a PCB, a chip layout, or ported to an FPGA. The final product is again tested for
specifications. The whole cycle is repeated until desired results are obtained
A person who builds an electronic system has to first design the circuit, produce a
virtual representation of it through a schematic for easy comprehension, simulate it and
finally convert it into a Printed Circuit Board (PCB). There are various tools available
that will help us do this. Some of the popular EDA tools are those of Cadence, Synopys,
Mentor Graphics and Xilinx. Although these are fairly comprehensive and high end,
their licenses are expensive, being proprietary.
There are some free and open source EDA tools like gEDA, KiCad and Ngspice. The
main drawback of these open source tools is that they are not comprehensive. Some
of them are capable of PCB design (e.g. KiCad) while some of them are capable of
performing simulations (e.g. gEDA). To the best of our knowledge, there is no open
source software that can perform circuit design, simulation and layout design together.
eSim is capable of doing all of the above.
eSim is a free and open source EDA tool. It is an acronym for Electronics Simulation.
eSim is created using open source software packages, such as KiCad, Ngspice and
Python. Using eSim, one can create circuit schematics, perform simulations and design
PCB layouts. It can create or edit new device models, and create or edit subcircuits for
simulation.
Because of these reasons, eSim is expected to be useful for students, teachers and
other professionals who would want to study and/or design electronic systems. eSim is
also useful for entrepreneurs and small scale enterprises who do not have the capability
to invest in heavily priced proprietary tools.
This book introduces eSim to the reader and illustrates all the features of eSim with
examples. The software architecture of eSim is presented in Chapter 2 while Chapter 3
gives the user step by step instructions to install eSim on a typical computer system.
Chapter 4 gets the user started with eSim. It takes them through a tour of eSim
with the help of a simple RC circuit example. Chapter 5 illustrates how to create the
circuit schematic in esim and Chapter 6 explains simulating the circuit schematic. The
advanced features of eSim such as Model Builder and Sub circuit Builder are covered
in Chapter 7 and Chapter 8 respectively. Additional features in eSim like mixed mode
simulation and OpenModelica are covered in Chapter 9 and Chapter 10 respectively.
Chapter 11 illustrates how to use eSim for solving circuit simulation problems. The last
chapter, Chapter 12 explains how eSim can be used to do PCB layout.
The following convention has been adopted throughout this manual.All the menu
names, options under each menu item, tool names, certain points to be noted, etc.,
are given in italics. Some keywords, names of certain windows/dialog boxes, names of
some files/projects/folders, messages displayed during an activity, names of websites,
component references, etc., are given in typewriter font. Some key presses, e.g. Enter
key, F1 key, y for yes, etc., are also mentioned in typewriter font.
3
Chapter 2
Architecture of eSim
eSim is a CAD tool that helps electronic system designers to design, test and analyse
their circuits. But the important feature of this tool is that it is open source and hence
the user can modify the source as per his/her need. The software provides a generic,
modular and extensible platform for experiment with electronic circuits. This software
runs on Ubuntu Linux LTS distributions 18.04 and 20.04, and Microsoft Windows 7, 8
and 10. It uses Python 3, KiCad 4.0.7, Makerchip, GHDL, Verilator and Ngspice.
The objective behind the development of eSim is to provide an open source EDA
solution for electronics and electrical engineers. The software should be capable of
performing schematic creation, PCB design and circuit simulation (analog, digital and
mixed-signal). It should provide facilities to create new models and components. The
architecture of eSim has been designed by keeping these objectives in mind.
2.1.1 Eeschema
Eeschema is an integrated software where all functions of circuit drawing, control, layout,
library management and access to the PCB design software are carried out. It is the
schematic editor tool used in KiCad. Eeschema is intended to work with PCB layout
software such as Pcbnew. It provides netlist that describes the electrical connections
of the PCB. Eeschema also integrates a component editor which allows the creation,
editing and visualization of components. It also allows the user to effectively handle
the symbol libraries i.e; import, export, addition and deletion of library components.
Eeschema also integrates the following additional but essential functions needed for a
modern schematic capture software:
1. Design rules check (DRC) for the automatic control of incorrect connections and
inputs of components left unconnected. 2. Generation of layout files in POSTSCRIPT or
HPGL format. 3. Generation of layout files printable via printer. 4. Bill of materials
generation. 5. Netlist generation for PCB layout or for simulation.
This module is indicated by the label 1 in Fig. 2.1.
As Eeschema is originally intended for PCB Design, there are no fictitious com-
ponents1 such as voltage or current sources. Thus, we have added a new library for
different types of voltage and current sources such as sine, pulse and square wave. We
have also built a library which gives printing and plotting solutions. This extension,
developed by us for eSim, is indicated by the label 2 in Fig. 2.1.
2.1.2 CvPcb
CvPcb is a tool that allows the user to associate components in the schematic to compo-
nent footprints when designing the printed circuit board. CvPcb is the footprint editor
tool in KiCad. Typically the netlist file generated by Eeschema does not specify which
printed circuit board footprint is associated with each component in the schematic.
However, this is not always the case as component footprints can be associated dur-
ing schematic capture by setting the component’s footprint field. CvPcb provides a
convenient method of associating footprints to components. It provides footprint list
filtering, footprint viewing, and 3D component model viewing to help ensure that the
correct footprint is associated with each component. Components can be assigned to
their corresponding footprints manually or automatically by creating equivalence files.
Equivalence files are look up tables associating each component with its footprint. This
interactive approach is simpler and less error prone than directly associating footprints
in the schematic editor. This is because CvPcb not only allows automatic association,
but also allows to see the list of available footprints and displays them on the screen to
ensure the correct footprint is being associated. This module is indicated by the label
3 in Fig. 2.1.
2.1.3 Pcbnew
Pcbnew is a powerful printed circuit board software tool. It is the layout editor tool
used in KiCad. It is used in association with the schematic capture software Eeschema,
which provides the netlist. Netlist describes the electrical connections of the circuit.
CvPcb is used to assign each component, in the netlist produced by Eeschema, to a
module that is used by Pcbnew. The features of Pcbnew are given below:
1
Signal generator or power supply is not a single component but in circuit simulation, we consider
them as a component. While working with actual circuit, signal generator or power supply gives input
to the circuit externally thus, doesn’t require for PCB design.
5
• It manages libraries of modules. Each module is a drawing of the physical com-
ponent including its footprint - the layout of pads providing connections to the
component. The required modules are automatically loaded during the reading of
the netlist produced by CvPcb.
• This tool provides a rats nest display, a hairline connecting the pads of modules
connected on the schematic. These connections move dynamically as track and
module movements are made.
• It has an active Design Rules Check (DRC) which automatically indicates any error
of track layout in real time.
• It has a simple but effective auto router to assist in the production of the circuit.
An export/import in SPECCTRA dsn format allows to use more advanced auto-
routers.
• It provides options specifically for the production of ultra high frequency circuits
(such as pads of trapezoidal and complex form, automatic layout of coils on the
printed circuit).
• Pcbnew displays the elements (tracks, pads, texts, drawings and more) as actual
size and according to personal preferences such as:
6
2.1.5 Model Builder
This tool provides the facility to define a new model for devices such as, 1. Diode
2. Bipolar Junction Transistor (BJT) 3. Metal Oxide Semiconductor Field Effect Tran-
sistor (MOSFET) 4. Junction Field Effect Transistor (JFET) 5. IGBT and 6. Magnetic
core. This module also helps edit existing models. It is developed by us for eSim and it
is indicated by the label 5 in Fig. 2.1.
2.1.7 Ngspice
Ngspice is a general purpose circuit simulation program for nonlinear dc, nonlinear
transient, and linear ac analysis. Circuits may contain resistors, capacitors, inductors,
mutual inductors, independent voltage and current sources, four types of dependent
sources, lossless and lossy transmission lines (two separate implementations), switches,
uniform distributed RC lines, and the five most common semiconductor devices: diodes,
BJTs, JFETs, MESFETs, and MOSFET. This module is indicated by the label 9 in
Fig. 2.1.
2.1.8 NGHDL
NGHDL, a module for mixed signal circuit simulation, is also integrated with eSim.
It makes use of VHDL code. It uses ghdl for digital simulation and the mixed signal
simulation happens through Ngspice.
2.1.9 NgVeri
NgVeri, a module for mixed signal circuit simulation, is also integrated with eSim.
It makes use of Verilog/System Verilog/Transaction-Level Verilog code. It uses Sand-
Piper SaaS and Verilator for digital simulation and the mixed signal simulation happens
through Ngspice.
2.1.10 Makerchip-App
Makerchip is a cloud based browser application developed by Redwood EDA to do digital
circuit design. One can simulate Verilog/SystemVerilog/Transaction-Level Verilog code
7
in Makerchip. eSim is interfaced with Makerchip using a Python based application
called Makerchip-App which launches the Makerchip IDE.
2.1.12 Verilator
Verilator is a Verilog/SystemVerilog simulator tool. It converts the Verilog/SystemVerilog
code to C++ object files. These object files are linked with that of Ngspice thus enabling
mixed signal simulation in eSim.
2.1.13 OpenModelica
OpenModelica (OM) is an open source modeling and simulation tool based on Modelica
language. Two modules of OpenModelica, OMEdit, an IDE for modeling and simulation
and OMOptim, an IDE for optimisation are integrated with eSim.
• Schematic Editor
• Circuit Simulators
Here we explain the role of each block in designing electronic systems. Circuit design
is the first step in the design of an electronic circuit. Generally a circuit diagram is drawn
on a paper, and then entered into a computer using a schematic editor. Eeschema is
the schematic editor for eSim. Thus all the functionalities of Eeschema are naturally
available in eSim.
Libraries for components, explicitly or implicitly supported by Ngspice, have been
created using the features of Eeschema. As Eeschema is originally intended for PCB
design, there are no fictitious components such as voltage or current sources. Thus, a
new library for different types of voltage and current sources such as sine, pulse and
square wave, has been added in eSim. A library which gives the functionality of printing
and plotting has also been created.
8
Figure 2.1: Work flow in eSim. (Boxes with dotted lines denote the modules developed
in this work).
The schematic editor provides a netlist file, which describes the electrical connections
of the design. In order to create a PCB layout, physical components are required to be
mapped into their footprints. To perform component to footprint mapping, CvPcb is
used. Footprints have been created for the components in the newly created libraries.
Pcbnew is used to draw a PCB layout.
After designing a circuit, it is essential to check the integrity of the circuit design.
In the case of large electronic circuits, breadboard testing is impractical. In such cases,
electronic system designers rely heavily on simulation. The accuracy of the simulation
results can be increased by accurate modeling of the circuit elements. Model Builder
provides the facility to define a new model for devices and edit existing models. Complex
circuit elements can be created by hierarchical modeling. Subcircuit Builder provides
an easy way to create a subcircuit.
The netlist generated by Schematic Editor cannot be directly used for simulation due
to compatibility issues. Netlist Converter converts it into Ngspice compatible format.
The type of simulation to be performed and the corresponding options are provided
through a graphical user interface (GUI). This is called KiCad to Ngspice Converter in
eSim.
eSim uses Ngspice for analog, digital, mixed-level/mixed-signal circuit simulation.
Ngspice is based on three open source software packages
9
• Spice3f5 (analog circuit simulator)
It is a part of gEDA project. Ngspice is capable of simulating devices with BSIM, EKV,
HICUM, HiSim, PSP, and PTM models. It is widely used due to its accuracy even for
the latest technology devices.
10
Chapter 3
Installing eSim
$ unzip eSim-2.2.zip
$ cd eSim-2.2
$ chmod +x install-eSim.sh
$ ./install-eSim.sh --install
$ esim
or you can double click on eSim icon created on Desktop after installation.
3. If MinGW and/or MSYS is already installed in your machine, then remove it from
the PATH environment variable as it may interfere with eSim and might not work
as intended.
4. Now, double click on the exe file to start the installation process. If a window
appears, click Yes to complete the installation.
6. eSim icon will be created on desktop. You can double click on the eSim icon
created on the Desktop after installation.
12
Chapter 4
Getting Started
In this chapter we will get started with eSim. Referring to this chapter will make one
familiar with eSim and will help plan the project before actually designing a circuit.
The first window that appears is the workspace dialog as shown in Fig. 4.1.
1. Menubar
2. Toolbar
3. Project explorer
4. Dockarea
5. Console area
14
4.2.1 Menubar
• New Project: New projects are created in the eSim-Workspace. When this menu
is selected, a new window opens up with Enter Project name field. Type the
name of the new project and click on OK. A project directory will be created in
eSim-Workspace. The name of this folder will be the same as that of the project
created. Make sure that the project name does not have any spaces in between.
This project is also added to the project explorer.
• Open Project: This opens the file dialog of default eSim-Workspace where the
projects are stored. Select the required project and click on Open. The selected
project is added to the project explorer.
• Change workspace : Clicking on this will open the window shown in Fig. 4.1.
If you have chosen a default workspace location but wish to change it later on,
launch eSim, click on this icon and do the necessary changes.
• Mode Switch : Using this feature user can decide whether to fetch latest foot-
prints(refer Section :PCB Designing) from the internet or use the locally available
footprints.
Note : By switching to online mode, you will require a stable and high-speed
internet connection, if it is not available to you then please always remain in the
offline mode.
• Help : Clicking on this icon will launch the eSim user manual for that particular
version of eSim.
4.2.2 Toolbar
The toolbar consists of the following buttons. See Fig. 4.3.
Open Schematic
The first button on the toolbar is the Schematic Editor. Clicking on this button will
open the schematic editor. If a new project is being created, one will get a dialog
box confirming the creation of a schematic. This is illustrated in See Fig. 4.4. How-
ever, if an already existing project is opened, the schematic editor window is opened.
To know how to use the schematic editor to create circuit schematics, refer to Chapter 5.
When one right clicks on a particular project : three options appear, their functions
listed below:
15
Figure 4.3: Toolbar
1. Rename Project : This will rename the project and the underlying files. Note
that all project files must be closed from all running applications that access them
before renaming a project.
2. Remove Project : This will remove the project selected from the Project Explorer
list.
3. Refresh : At times, all the files under a project will not be displayed. In that case,
selecting this option will update the latest files under a project.
16
Convert KiCad to Ngspice
In the schematic editor window, after creating the schematic a netlist is to be generated
which contains information about the components present in the schematic created and
their values specified . Although this netlist is present, it cannot be directly fed to the
simulator. Here the KiCad-to-Ngspice converter comes into play. This tool converts
the netlist generated from the schematic into another netlist which is compatible with
Ngspice, the simulator used in eSim. The Convert KiCad to Ngspice window consists
of five tabs namely Analysis, Source Details, Ngspice Model, Device Modeling
and Subcircuits. The details of these tabs are as follows.
• Analysis: This feature helps the user to enter the parameters for performing
different types of analysis such as Operating point analysis, DC analysis, AC
analysis, transient analysis, DC Sweep Analysis.
It has the facility to select the
– Type of analysis and
– The simulation parameter values for analysis
• Source Details:eSim sources are added from eSim Sources library in the
schematic. Sources such as SINE, AC, DC, PULSE, PWL are in this library.
The parameter values to all the sources added in the schematic can be given
through ’Source Details’ tab in the KiCad-To-Ngspice window.
• Ngspice Model:Ngspice has in-built model such as basic logic gates,
flip-flops, gain, summer, buffer, DAC and ADC blocketc. which can be
utilised while building a circuit. eSim allows to add and modify Ngspice model
parameter through Ngspice Model tab.
• Device Modeling:Devices like Diode, JFET, MOSFET, IGBT, MOS etc used in
the circuit can be modeled using device model libraries. eSim also provides editing
and adding new model libraries. While converting KiCad to Ngspice, these library
files are added to the corresponding devices used in the circuit.
• Subcircuits:eSim allows you to build subcircuits. The subcircuits can again
have components having subcircuits and so on. This enables users to build com-
monly used circuits as subcircuits and then use it across circuits. The subcircuits
are added to the main circuits using this facility. We can also edit already existing
subcircuits.
Once the values have been entered, press the Convert button. This will gener-
ate the .cir.out file in the same project directory. Note that KiCad to Ngspice
Converter can only be used if the KiCad spice netlist .cir file is already generated.
17
Simulation
The netlist generated using the KiCad to Ngspice converter is simulated using Simu-
lation button on the eSim left toolbar. This will run the Ngspice simulation for current
project. eSim have two options to see the simulation output. The first one is the Python
plotting window which opens up in the dock area, as shown in Fig. 4.5. The second is
the Ngspice window with the simulation data. The user can type in Ngspice commands
to view the plots.
Note: If the user has used the plot components (available under eSim Plot library)
at various nodes in the circuit schematic the Ngspice plots are displayed automatically.
Model Editor
eSim also gives an option to re-configure the model library of a device. It facilitates
the user to change model library of devices such as diode, transistor, MOSFET, etc. It
also facilitates the user to load the spice library externally and use it for the existing or
newly added models.To know more about Model Editor, refer to Chapter 7.
Subcircuit
eSim also allows the user to build subcircuits. The subcircuits can again have compo-
nents having subcircuits and so on. This enables users to build commonly used circuits
as subcircuits and then use it across circuits. For example, one can build an Op-Amp
18
as a subcircuit and then use it as just a single component across circuits without having
to recreate it. Clicking on Subcircuit Builder tool will allow one to edit or create a
subcircuit. To know how to make a subcircuit, refer to Chapter 8.
NGHDL
NGHDL is an add on to eSim for mixed signal circuit simulation. By using the foreign
language interface of GHDL, NGHDL communicates with Ngspice and accomplishes
mixed signal simulation. Using NGHDL, user can create custom digital model using
VHDL language. From simple multiplexers, counters to microcontrollers and ASICs,
any custom component in the digital domain can be realized using the NGHDL tool.
The created digital model can be used in either mixed signal circuit or a standalone
circuit operating in digital domain. NGHDL gives user the liberty to edit existing
models supplied with eSim per their needs, either for experimenting new ideas or to
change the model per their specific requirement.
Modelica Converter
OpenModelica (OM) is an open source modeling and simulation tool based on Modelica
language. Modelica is an object oriented language. The Modelica Converter in eSim
interface, converts the ngspice netlist to Modelica format. This facility will be only
available if you have OpenModelica already installed in the system. More details on
how to use this module is available in Chapter 10.
OM Optimisation
OMOptimisation (OMOptim) is a powerful and interactive tool for performing design
optimisation. It has a good library of electrical components called Modelica Standard
Library (MSL). OMOptim is stable and robust. It is very easy to add objective functions
to the OMOptim interface.
4.2.4 Dockarea
This area is used to open the following windows.
19
2. Ngspice plotting
3. Python plotting
4. Model builder
5. Subcircuit builder
20
Chapter 5
Schematic Creation
The first step in the design of an electronic system is the design of its circuit. This
circuit is usually created using a Schematic Editor and is called a Schematic. eSim
uses Eeschema as its schematic editor. Eeschema is the schematic editor of KiCad.
It is a powerful schematic editor software. It allows the creation and modification of
components and symbol libraries and supports multiple hierarchical layers of printed
circuit design.
2. Place - The place menu has shortcuts for placing various items like components,
wire and junction, on to the schematic editor window. See Sec. 5.1.5 to know
more about various shortcut keys (hotkeys).
3. Preferences - The preferences menu has the following options:
22
(a) Component Libraries - Select component libraries and library paths. This
enables the user to add the libraries, if the libraries are not loaded in the
Eeschema.
(b) Schematic Editor Options - Select colors for various items, display options
and set hot keys.
(c) Language - Shows the current list of available languages. Use default.
(d) Import and Export - Contain options to load and save preferences and im-
port/ export hot key configuration files. See Sec. 5.1.5 to know about various
hotkeys.
23
5.1.3 Toolbar on the right
The toolbar on the right side of the schematic editor window has many important tools.
Some of them are marked in Fig. 5.4. Let us now look at each of these tools and their
uses.
1. Place a component - Load a component to the schematic. See Sec. 5.3.1 for more
details.
2. Place a power port - Load a power port (Vcc, ground) to the schematic.
3. Place wire - Draw wires to connect components in schematic.
4. Place bus - Place a bus on the schematic.
5. Place a no connect - Place a no connect flag, particularly useful in ICs.
6. Place a local label - Place a label or node name which is local to the schematic.
7. Place a global label - Place a global label (these are connected across all schematic
diagrams in the hierarchy).
8. Create a hierarchical sheet - Create a sub-sheet within the root sheet in the hier-
archy. Hierarchical schematics is a good solution for big projects.
9. Place a text or comment - Place a text or comment in the schematic.
24
5.1.4 Toolbar on the left
Some of the important tools in the toolbar on the left are discussed below. They are
marked in Fig. 5.5.
1. Show/Hide grid - Show or Hide the grid in the schematic editor. Pressing the tool
again hides (shows) the grid if it was shown (hidden) earlier.
2. Show hidden pins - Show hidden pins of certain components, for example, power
pins of certain ICs.
5.1.5 Hotkeys
A set of keyboard keys are associated with various operations in the schematic editor.
These keys save time and make it easy to switch from one operation to another. The
list of hotkeys can be viewed by going to Preferences in the top menu bar. Choose
Schematic Editor Options and select Controls tab. The hotkeys can also be edited
here. Some frequently used hotkeys, along with their functions, are given below:
• F1 - Zoom in
• F2 - Zoom out
• Ctrl + Z - Undo
• Delete - Delete item
• M - Move item
• C - Copy item
• A - Add/place component
• P - Place power component
• R - Rotate item
• X - Mirror component about X axis
• Y - Mirror component about Y axis
• E - Edit schematic component
• W - Place wire
• T - Add text
• S - Add sheet
25
Note: Both lower and upper-case keys will work as hotkeys.
26
• eSim Hybrid - Includes components like ADC and DAC.
• eSim Miscellaneous - Contains components like ic(used for giving initial conditions
in circuit) and port(used in creating subcircuits).
• eSim Plot - Contains plotting components like plot v1 (plot voltage at a node),
plot v2 (plot voltage between 2 nodes), plot i2 (plot current through branch),
plot log (plot logarithmic voltage at a node).
• eSim Power - Includes power components like DIAC, TRIAC and SCR.
• eSim Sources - Contains sources for the circuits like AC voltage source, DC voltage
source, sine source and pulse source.
• eSim Subckt - Contains subcircuit components like Op-Amp(UA 741), IC 555,
Half adder and full adder.
• eSim User - A repository for all user created components
27
Figure 5.7: Placing a resistor using the Place a Component tool
the component SINE and click on OK. Place the sine source on the schematic editor by
a single click. Similarly select and place gnd, a ground terminal from the power library.
The plot components can be found under the eSim Plot library. Select the plot v1
component and place the component. Once all the components are placed, the schematic
editor would look like as in Fig. 5.8.
Let us rotate the resistor to complete the circuit. To rotate the resistor, place the
28
cursor on the resistor as shown in Fig. 5.9 and press the key R. This applies to all
components.
Figure 5.9: Placing the cursor (cross mark) on the resistor component
If one wants to move a component, place the cursor on top of the component and
press the key M. The component will be tied to the cursor and can be moved in any
direction.
(a) Initial stages (b) Wiring done (c) Final schematic with
PWR FLAG
the wires between all terminals and the final schematic would look like Fig. 5.10b.
29
5.3.3 Assigning values to components
We need to assign values to the components in our circuit i.e., resistor and capacitor.
Note that the sine voltage source has been placed for simulation. The specifications of
sine source will be given during simulation. To assign value to the resistor, place the
cursor above the letter R (not R?) and press the key E. Choose Field value. Type 1k in
the Edit value field box as shown in Fig. 5.11. 1k means 1kΩ. Similarly give the value
1u for the capacitor. 1u means 1µF .
30
Figure 5.12: Steps in annotating a schematic: 1. First click on Annotation then 2. Click
on OK then 3. Click on close
information. To do so, click on the Generate netlist tool from the top toolbar. Click on
Spice from the window that opens up. Check the option Default Format. Then click
on Generate. This is shown in Fig. 5.15. Save the netlist. This will be a .cir file. Do
not change the directory while saving. Now the netlist is ready to be simulated. Refer
to [?] or [?] to know more about Eeschema.
31
Figure 5.14: Green arrow pointing to Ground terminal indicating an ERC error
Figure 5.15: Steps in generating a Netlist for simulation: 1. Click on Spice then
2. Check the option Default Format then 3. Click on Generate
32
Chapter 6
Simulation
6.1.1 Analysis
In order to simulate a circuit, the user must define the type of analysis to be done on
the circuit. This tab is used to insert the type of analysis and value of the analysis
parameters to the netlist. eSim supports three types of analyses: 1. DC Analysis (Op-
erating Point and DC Sweep) 2. AC Small-signal Analysis 3. Transient Analysis These
are explained below.
In the current example for simulating an RC circuit, select the analysis type as
transient analysis and enter the values as shown in the Fig. 6.1.
Figure 6.1: KiCad to Ngspice Window
34
(a) Source Details of Half-Adder (b) Source Details of RC circuit
35
src/deviceModelLibrary/Diode/ if you are using versions lower than 2.0
After Filling up the values in all the above mentioned fields the convert button is
pressed. The Ngspice netlist, .cir.out file is generated. A message box pops up, as
shown in Fig. 6.7. Click on OK.
36
Figure 6.6: Assigning appropriate subcircuit file
simulations are displayed. In the present example of the RC circuit, the plot will be
displayed as shown in Fig. 6.8. By changing the values of capacitor and resistor, the
output can be varied.We can also use the option Function from the right side of the
python plot window to plot combination of waveforms for example plot V1+V2.
Pressing the Simulation button also opens up the Ngspice terminal and plot win-
dows. The Ngspice plots for all the nodes (where we have used the plot components in
37
Figure 6.9: Ngspice voltage simulation for RC circuit
the schematic) will be displayed. In the current example, we have used two plot com-
ponents and the Ngspice simulations for these two nodes are displayed as in Fig. 6.9.
If the Plot components are not used in the schematic, the simulations are not dis-
played automatically. To see the Ngspice simulations, type the following commands in
the Ngspice terminal window.
• plot v(node-name) - Plot a waveform of the node-name voltage source e.g. plot
v(out) will plot the voltage at node out
6.2.2 Multimeter
Multimeter is another feature that is available in eSim. Using this facility the user can
view the voltage and current values in various nodes and branches respectively. To use
38
Figure 6.10: Multimeter feature in eSim
the multimeter select the required nodes from the plot window and press Multimeter
button, shown in Fig. 6.10. Windows equal to the number of selected nodes will open.
Now open the schematic window and place these pop up windows near the appropriate
nodes on the schematic to get the voltage of each node. Similarly current through each
branches in the schematic can also be found using the multimeter facility.
39
Chapter 7
Model Editor
Spice based simulators include a feature which allows accurate modeling of semicon-
ductor devices such as diodes, transistors etc. eSim Model Editor provides a facility to
define a new model for devices such as diodes, MOSFET, BJT, JFET, IGBT, Magnetic
core etc. Model Editor in eSim lets the user enter the values of parameters depending on
the type of device for which a model is required. The parameter values can be obtained
from the data-sheet of the device. A newly created model can be exported to the model
library and one can import it for different projects, whenever required. Model Editor
also provides a facility to edit existing models. The GUI of the model editor is as shown
in Fig. 7.1
41
Figure 7.4: Adding the Parameter in a Library
New parameters can be added or current parameters can be removed using ADD and
REMOVE buttons. Also the values of parameters can be changed in the table. Adding
and removing the parameters in library files is shown in the Fig. 7.4 and Fig. 7.5
After the editing of the model library is done, the file can be saved by selecting the
SAVE button. These libraries are saved in the User Libraries folder under deviceModel-
Library directory.
42
Figure 7.6: Editing Existing Model Library
43
Chapter 8
SubCircuit Builder
44
Figure 8.2: New Sub circuit Window
the number of input and output pin. The circuit will look like Fig. 8.4 after adding
PORT to it. The PORT component can be found in the eSim Miscellaneous
library as shown in Fig. 8.5. Select a different port for each node (input or output),
the PORT has 26 such components named alphabetically as Unit A, Unit B to Unit
Z, meaning you can create a subcircuit up-to 26 pins(input, output combined).
• Next step is to save the schematic and generate KiCad netlist as explained in
Chapter 5.
• To use this subcircuit in other schematics, create a block in the schematic editor
by following steps given below as one should have a symbol corresponding to the
newly created subcircuit that can be used in other schematics:
45
Figure 8.4: Half-Adder Subcircuit
46
Figure 8.6: Selecting Working Library
47
Figure 8.7: Creating New Component
10. In order to save this file, press Ctrl+S keys and click yes for confirmation
purposes.
11. Note : A good practice to retain this created subcircuit would be to take
a backup of this library. To do that, click on File from the library editor
window and select the Save Current Library as option. A location needs
to be selected, please select eSim-Workspace as the location for storing this
file and give relevant name e.g. eSim-Subckt-backup. Later other users
can use this in their circuits.
1. A .sub file is nothing but textual representation that is passed to the simu-
lator which essentially informs the simulator about the nodes, and behavior
of the subcircuit block. Remember the Fig. 8.4 circuit? It will be saved in a
.sub file once we complete this process!
2. Switch to the eSim main window and click on Convert KiCad to Ngspice
button in the subcircuit builder tool. as shown in Fig. 8.1
3. You need not assign any values in the transient parameters section.
Assign the values to any voltage or current sources present in your internal
circuit, if any.
Add the appropriate device libraries or subcircuit libraries if you have used
any Device Models or Subcircuits, if any.
48
Figure 8.8: Half-Adder Subcircuit Block
• After launching the Subcircuit tool, click on Edit Subcircuit Schematic button.
It will open a dialog box where you can select any subcircuit for editing.
49
• After selecting the subcircuit it will open it in the schematic editor, where you
can edit the subcircuit.
• Next step is to save the schematic and generate the .cir netlist.
• If you have edited the number of ports then you have to change the block exaplained
in section Creating a Subcircuit accordingly.
Note:
• User can also import or append the schematic of different projects in the cur-
rent page using the Append Schematic Sheet from the File menu. This will im-
port(copy) the schematic that user has defined to the current schematic editor
page.
• User can also import the model in the part library editor page using the option
Import Component from the top toolbar.
50
Chapter 9
NGHDL feature facilitates creation of user-defined models for mixed-signal circuit simu-
lation in eSim. By interfacing GHDL and Ngspice, we achieve mixed-signal simulation.
Digital models are simulated using GHDL and XSPICE engine of Ngspice.
9.1 Introduction
Ngspice supports mixed-signal simulation, i.e. it can simulate both digital and analog
component. It defines a model which has the functionality of the circuit component,
which can be used in the netlist. For example you can create an adder model in Ngspice
and use it in any circuit netlist of Ngspice.
However, it is not feasible to define complex digital models without a complete un-
derstanding of Ngspice and XSPICE architectures and is a time-consuming process.
Also, most of the users are familiar with GHDL and can write the models using VHDL
code with ease. Hence, NGHDL provides an interface to write VHDL code for a digital
model and install it as model in Ngspice. So whenever Ngspice looks for that model, it
will actually interface with VHDL code to get the result.
Fig. 9.1 shows the overview of NGHDL indicating its architecture at the abstract
level. The values for the digital models present in the netlist are fetched from the
GHDL side of the interface whereas the values of the analog part are fetched from
Ngspice’s spice3f5 engine. Digital and Analog components in Fig. 9.1 are connected to
each other with the help of the hybrid ADC and DAC models provided by Ngspice.
This helps in the signal level switching when simulation is performed. As analog signals
Figure 9.1: Overview of NGHDL
are in continuous time domain and Digital signals are in discrete time domain, hybrid
components help bridge the gap. More information on the parameters of ADC and DAC
present in Appendix : D.
52
9.2 Digital Model creation using NGHDL
1. Click on NGHDL button on left side pane of main window, the Ngspice Digital
Model Creator window will appear as shown in Fig. 9.3
2. Now browse and locate the VHDL file to upload. Select the VHDL file and click
on the Upload button. This process will create Ngspice model and corresponding
component drawing inside the KiCad library (eSim Nghdl.lib) of the VHDL block
to be used in mixed-signal simulations. An acknowledgement message will appear
upon sucessful processing of the VHDL code as shown in Fig. 9.4.
Note : "Add files" option allow you to use a smaller entity / subpart / submod-
ule to support the main VHDL file. That is, a digital model will be generated
corresponding to that file that has been browsed. The file that has been "added"
to Nghdl upload window will only be placed along with the model under model’s
DUTghdl folder to support the model.
Hence, "browsing" one file and "adding" several files won’t create that many
number of models, but only one model will be created corresponding to the
browsed file.
53
Figure 9.3: NGHDL interface
1. Click on New Project icon to create a new project as shown in Fig. 9.5, be careful
of the naming conventions.
2. After successful upload of the model using the VHDL code, you can create the
schematic of your design by clicking on Open Schematic button on the left pane of
the eSim window. Then go to Preferences option on top of the schematic editor
window and click on Component Libraries to add the library eSim Nghdl.lib in
KiCad. Following window will appear as shown in Fig. 9.6, where you will have to
54
Figure 9.5: Creation of a new project
click on Add button and select the eSim Nghdl library. Refer Fig. 9.6 and Fig. 9.7.
55
Figure 9.7: Selection of library
3. Next step is to locate the component in eSim Nghdl library as shown in Fig. 9.8
and place it on the schematic editor as shown in Fig. 9.9.
56
Figure 9.9: Placement of component on editor
4. Now create the schematic as shown in Fig. 9.10, annotate, perform ERC, create
the netlist and save the schematic by following the steps given in Chapter 5.
57
Figure 9.11: Analysis Part I
6. Now click on Source Details and enter the values for Source v1 and source v2
as shown in figure Fig. 9.13 and Fig. 9.14
7. Now select the option Ngspice Model, window as shown in Fig. 9.15 will ap-
pear. The values of the parameters listed can be changed per user’s require-
ment. If you have used any semicnductor devices and Subcircuits in your design,
then please specify the Spice models and subcircuits in the Device Modeling and
Subcircuits tabs of the KiCad-to-Ngspice converter window. After that click
on Convert button. This step will create the simulation compatible netlist.
8. Now click on Simulation button, it will display the following windows as shown
in Fig. 9.16. This is the Ngspice terminal and Python plot window.
58
Figure 9.13: Value of Source v1
9. Now select the required nodes and click on Plot button. You can see the plots of
input source v1, input source v2 and output as shown in Fig. 9.17, Fig. 9.18, and
Fig. 9.19 respectively.
59
Figure 9.15: Model Parameters
60
Figure 9.17: Plot of Source V1
61
Figure 9.19: Plot of output
62
Chapter 10
OpenModelica
10.1 Introduction
OpenModelica (OM) is an open source modeling and simulation tool based on Modelica
language. Modelica is an object oriented language. As a result, it has all the features
of an object oriented language such as inheritance. Models or circuits are defined in
the form of classes, with in which there are components, functions, connection and
placement information. The OM suite has the following major tools.
10.1.1 OMEdit
An IDE for modeling and simulation. It supports a lot of electrical components. It has
a good graphical interface to drag and drop components and create the circuit. One
can only do transient simulation using this interface. An attractive feature of OMEdit
is the plotting interface. All the parameters in the circuit like voltages and currents
through each component, parameters like frequency, delay etc. will be displayed as a
list, after simulation. The user can choose the variables to be plotted in an interactive
manner from this list. On choosing the variable to plot, it will be plotted on the plot
window. One can also create multiple plot windows.
10.1.2 OMOptim
An IDE for optimisation. It lists all the variables in the given model. One can choose
the variables to be optimised from the list. Multiple models can be loaded for a given
optimisation problem. One can do multi objective optimisations as well. It supports
various optimisation algorithms such as Particle Swarm Optimisation (PSO) and Sim-
ulated Annealing (SA). The results are displayed graphically.
10.2 OpenModelica in eSim
The above two functionalities can be accessed through the Modelica Converter and OM
Optimisation tools on the eSim left toolbar. The two examples given below illustrates
how to use OpenModelica in eSim.
1. Open the schematic and create the circuit as shown in Fig. 10.1.
2. Create the KiCad netlist. Now the analysis and analysis parameters are given as
shown in Fig. 10.2.
3. The source details are given as in Fig. 10.3. The generated KiCad netlist is then
converted to ngspice compatible netlist.
4. Simulate the ngspice netlist. The simulation curves are shown in Fig. 10.4.
64
Figure 10.2: Analysis parameters: Low pass filter
left that is appended in OpenModelica main window. Make sure you are in text
view to see the Modelica code as shown in Fig. 10.5 Figure shows that LPF circuit
is being used as a model, the initialisation of sources and components are in the
beginning followed by the connection information. n3, n0,n2 are the nodes.
Default Modelica libary is used for electrical sources and components. This has
to imported so that it can be used in the current circuit. This is available in the
left side of main window.
6. Click on Simulation Setup on the toolbar at the top. A window opens as shown
in Fig. 10.6. Give start and stop time. Click OK.
7. A plotting window opens. Click on the node at the right to display the waveform.
The window is shown in Fig. 10.7.
10.2.1 OM Optimisation
Now let us explore how to use OpenModelica for optimisation through an example.
Find the value of resistance R2 that maximises the power dissipated through it for the
65
Figure 10.4: Simulation: Low pass filter
circuit in Fig. 10.8. This is an illustration of the Maximum Power Transfer Theorem.
The power is maximum when R2 = R1, i.e., when R2 = 100. So maximum power would
be Pmax = 0.0625. Let us now see the steps to be followed find the value of R2 using
eSim.
1. Follow all the steps as above and generate the Modelica model using the Ngspice
to Modelica converter.
66
Figure 10.6: OpenModelica: Simulation setup
3. Select OMOptim from eSim left toolbar, in the displayed window click on New
67
Figure 10.8: Circuit schematic for optimisation
Project. Then save the project. It is stored with an extension .min. Now se-
lect Models and then Load Modelica Library. Now select Load mo file under
Models. It will be added on the left.
4. Click Problems and then Optimisation. Select the model to be optimised. Note
that for optimising, that model has to be loaded in OpenModelica as stated before.
Clicking blue turnover icon will display all the variables used in the model. Add
details like optimsation variables and objective.
The OMOptim project for this problem is given in Fig. 10.9. Power is the objective
function that has to be maximized. r2.R is the variable that will be varied. r2.R
is limited between 0 and 1000.
5. Click on Parameters tab to select the type of algorithm and its parameters. In this
example, the optimisation algorithm used is PSO (Particle Swarm Optimisation).
The various parameter values given are as follows: population size as 50, Inertia
factor as 1, Learning factor: alpha and beta as 2, Population saving frequency was
1. Iteration limit is also specified. Select the .mo file to be simulated from Files
tab. Click on Launch. The results of optimisation for various values of Iteration
Limit are given in Fig. 10.10.
68
Figure 10.9: OMOptim project
6. Depending on the type of algorithm, the time for optimisation varies. Optimised
result is graphically displayed as shown in Fig. 10.11.
69
Figure 10.11: Optimised value of resistance for maximum power
70
Chapter 11
Solved Examples
Solution:
• Creating a Project: The new project is created by clicking the New icon on the
menubar. The name of the project is given in the pop up window as shown in
Fig. 11.1.
• Creating the Schematic: To create the schematic, click the very first icon of the
left toolbar as shown in the Fig. 11.2. This will open KiCad Eeschema.
To create a schematic in KiCad, we need to place the required components.
Fig. 11.3 shows the icon on the right toolbar which opens the component library.
Figure 11.1: Creating New Project
After all the required components of the simple RC circuit are placed, wiring is
done using the Place Wire option as shown in the Fig. 11.4
72
Figure 11.3: Place Component Icon
Next step is ERC (Electric Rules Check). Fig. 11.5 shows the icon for ERC.
Fig. 11.6 shows the RC circuit after connecting the components by wire.
73
Figure 11.5: Electric Rules Check Icon
After clicking the ERC icon a window opens up. Click the Run button to run rules
check. The errors are listed in as shown in Fig. 11.7a. This error is handled by
adding Power Flag as shown in Fig. 11.7b.
After adding the Power Flag the completed RC circuit is shown in Fig. 11.8a and
the netlist is generated as shown in Fig. 11.8b.
74
(a) ERC Run (b) Power Flag
75
Figure 11.9: Convert KiCad to Ngspice Icon
• Simulation: To run Ngspice simulation click the simulation icon in the tool bar as
shown in the Fig. 11.11.
In eSim, there are two types of plot. First is normal Ngspice plot and second is
interactive python plot as shown in Fig. 11.12a and Fig. 11.12b respectively.
In the interactive python plot you can select any node or branch to plot voltage
or current across it. Also it has the facility to plot basic functions across the node
like addition, substraction, multiplication, division and v/s.
76
Figure 11.11: Simulation Icon
77
11.1.2 Half Wave Rectifier
Problem Statement:
Plot the Input and Output Waveform of Half Wave Rectifier circuit where the input
voltage (Vs) is 50Hz, 2V peak to peak. The value for Resistor (R) is 1k.
Solution:
The new project is created by clicking the New icon on the menubar. The name of the
project is given in the window shown in Fig. 11.1.
• Creating Schematic: To create the schematic, click the very first icon of the left
toolbar as shown in the Fig. 11.2. This will open KiCad Eeschema.
After the KiCad window is opened, to create a schematic we need to place the
required components. Fig. 11.3 shows the icon on the right toolbar which opens
the component library.
After all the required components of the simple Half Wave rectifier circuits are
placed, wiring is done using the Place Wire option as shown in the Fig. 11.4
Next step is ERC (Electric Rules Check). Fig. 11.5 shows the icon for ERC.
After completing all the above steps the final Half Wave Rectifier schematic will
look like Fig. 11.13.
78
Figure 11.13: Schematic of Half Wave Rectifier circuit
• Convert KiCad to Ngspice: After creating KiCad netlist, click on the KiCad-Ngspice
converter button. This will open converter window where you can enter details
of Analysis, Source values and Device library.
79
(a) Half Wave Rectifier Analysis (b) Half Wave Rectifier Source Details
Under device library you can add the library for diode used in the circuit. If you
do not add any library it will take default Ngspice model.
• Simulation: Once the KiCad-Ngspice converter runs successfully, you can run
simulation by clicking the simulation button in the toolbar.
80
(a) Ngspice Plot of Half Wave Rectifier
Solution:
• Creating Schematic: To create the schematic, click the very first icon of the left
toolbar as shown in the Fig. 11.2. This will open KiCad Eeschema.
After the KiCad window is opened, to create a schematic we need to place the
required components. Fig. 11.3 shows the icon on the right toolbar which opens
the component library.
After all the required components of the inverting amplifier circuit are placed,
81
wiring is done using the Place Wire option as shown in the Fig. 11.4.
Next step is ERC (Electric Rules Check). Fig. 11.5 shows the icon for ERC.
The Fig. 11.17 shows the complete Precision Rectifier schematic after removing
the errors.
This will open converter window where you can enter details of Analysis, Source
values, Device library and Subcircuit.
Subcircuit of Op-Amp is shown in Fig. 11.19d
82
Figure 11.18: Inverting Amplifier circuit Netlist Generation
Under subcircuit tab you have to add the subciruit used in your circuit. If you
forget to add subcircuit, it will throw an error.
83
(a) Inverting Amplifier Ngspice Plot
• Simulation: Once the KiCad-Ngspice converter runs successfully, you can run
simulation by clicking the simulation button in the toolbar.
84
11.1.4 Half Adder
Problem Statement:
Plot the Input and Output Waveform of Half Adder circuit.
Solution:
• Creating Schematic: To create the schematic, click the very first icon of the left
toolbar as shown in the Fig. 11.2. This will open KiCad Eeschema.
After the KiCad window is opened, to create a schematic we need to place the
required components. Fig. 11.3 shows the icon on the right toolbar which opens
the component library.
After all the required components of the Half Adder circuit are placed, wiring is
done using the Place Wire option as shown in the Fig. 11.4.
Next step is ERC (Electric Rules Check). Fig. 11.5 shows the icon for ERC.
The Fig. 11.21 shows the complete Half Adder schematic after removing the errors.
85
Figure 11.22: Half Adder circuit Netlist Generation
This will open converter window where you can enter details of Analysis, Source
values, Ngspice model and Subcircuit.
(c) Half Adder Ngspice Model (d) Half Adder Subcircuit Model
86
Figure 11.24: Half Adder Subcircuit
• Simulation: Once the KiCad-Ngspice converter runs successfully, you can run
simulation by clicking the simulation button in the toolbar.
87
11.1.5 Full Wave Rectifier using SCR
Problem Statement:
Plot the Input and Output Waveform of Full Wave Rectifier using SCR.
Solution:
• Creating Schematic: To create the schematic, click the very first icon of the left
toolbar as shown in the Fig. 11.2. This will open KiCad Eeschema.
After the KiCad window is opened, to create a schematic we need to place the
required components. Fig. 11.3 shows the icon on the right toolbar which opens
the component library.
After all the required components of the Full Wave Rectifier using SCR circuit are
placed, wiring is done using the Place Wire option as shown in the Fig. 11.4.
Next step is ERC (Electric Rules Check). Fig. 11.5 shows the icon for ERC.
The Fig. 11.26 shows the complete Rectifier circuit using SCR after removing the
errors.
88
The KiCad netlist is generated as shown in Fig. 11.27.
89
• Convert KiCad to Ngspice: After creating KiCad netlist click on KiCad-Ngspice
converter button.
This will open converter window where you can enter details of Analysis, Source
values, Ngspice model and Subcircuit.
(a) Full Wave Rectifier using SCR Analysis (b) Full Wave Rectifier using SCR Source Details
90
Figure 11.29: SCR Subcircuit
• Simulation: Once the KiCad-Ngspice converter runs successfully, you can run
simulation by clicking the simulation button in the toolbar.
91
(a) Full Wave Rectifier using SCR Ngspice Plot
Solution:
The new project is created by clicking the New icon on the menubar. The name of the
project is given in the window shown in Fig. 11.1.
• Creating Schematic: To create the schematic, click the very first icon of the left
92
toolbar as shown in the Fig. 11.2. This will open KiCad Eeschema.
After the KiCad window is opened, to create a schematic we need to place the
required components. Fig. 11.3 shows the icon on the right toolbar which opens
the component library.
After all the required components of the Oscillator circuits are placed, wiring is
done using the Place Wire option as shown in the Fig. 11.4
sss
Next step is ERC (Electric Rules Check). Fig. 11.5 shows the icon for ERC. Af-
ter completing all the above steps the Oscillator schematic will look like Fig. 11.31.
93
KiCad netlist is generated as shown in the Fig. 11.32
• Convert KiCad to Ngspice: After creating KiCad netlist, click on the KiCad-Ngspice
converter button. This will open converter window where you can enter details
of Analysis, Source values and Device library.
(a) Phase Shift Oscillator Analysis (b) Phase Shift Oscillator Details
Under device library you can add the library for diode used in the circuit. If you
do not add any library it will take default Ngspice model.
• Simulation: Once the KiCad-Ngspice converter runs successfully, you can run
simulation by clicking the simulation button in the toolbar.
94
(a) Ngspice Plot of Phase Shift Oscillator
Solution:
The new project is created by clicking the New icon on the menubar. The name of the
project is given in the window shown in Fig. 11.1.
• Creating Schematic: To create the schematic, click the very first icon of the left
toolbar as shown in the Fig. 11.2. This will open KiCad Eeschema.
95
After the KiCad window is opened, to create a schematic we need to place the
required components. Fig. 11.3 shows the icon on the right toolbar which opens
the component library.
After all the required components of the simple Half Wave rectifier circuits are
placed, wiring is done using the Place Wire option as shown in the Fig. 11.4
Next step is ERC (Electric Rules Check). Fig. 11.5 shows the icon for ERC.
After completing all the above steps the BJT in CB Configuration schematic will
look like Fig. 11.35.
96
KiCad netlist is generated as shown in the Fig. 11.36
• Convert KiCad to Ngspice: After creating KiCad netlist, click on the KiCad-Ngspice
converter button. This will open converter window where you can enter details
of Analysis, Source values and Device library.
Under device library you can add the library for diode used in the circuit. If you
do not add any library it will take default Ngspice model.
• Simulation: Once the KiCad-Ngspice converter runs successfully, you can run
simulation by clicking the simulation button in the toolbar.
97
(a) Ngspice Plot of BJT in CB Configuration
98
Chapter 12
PCB Design
Printed Circuit Board (PCB) design is an important step in electronic system design.
Every component of the circuit needs to be placed and connections routed to minimise
delay and area. Each component has an associated footprint. Footprint refers to the
physical layout of a component that is required to mount it on the PCB. PCB design
involves associating footprints to all components, placing them appropriately to min-
imise wire length and area, connecting the footprints using tracks or vias and finally
extracting the required files needed for printing the PCB. Let us see the steps to design
PCB using eSim.
Figure 12.2: Schematic after adding connectors and removing the probes and sources.
Screw Terminal (Screw Terminal 01x02) is used to transmit the input signal on board.
Do the annotation and test for ERC. Refer to Chapter 5 to know more about basic
steps in schematic creation.
Once the schematic for PCB Design is created, one needs to map each component in
the schematic to the appropriate footprint. The tool Cvpcb is used for this.
Cvpcb can be launched by clicking the icon Run Cvpcb to associate footprints
and components in Eeschema or by going under the Tools menu and selecting Assign
Component Footprint option.
I. When one opens Cvpcb after annotating and running ERC on the schematic intended
for PCB Design a window as shown in Fig. 12.3 will be obtained. The Toolbar for using
Cvpcb will be available in the top-most left corner.
II. The left pane has a list of all footprint libraries in the database.
100
Figure 12.3: Cvpcb window
III. The middle pane displays the list of components present in the schematic and if any
footprint is assigned/associated to them.
IV. The right pane has a list of available footprints for each component depending upon
how of libraries.
Cvpcb Toolbar
Some of the important tools in the toolbar are shown in Fig. 12.4. They are explained
below (Order of operation should ideally be from RIGHT to LEFT):
1. Filter footprints list by library : We recommend the use of only this as a filtering
method if you are completely new to eSim and/or PCB Design as it narrows
down footprints based on libraries of the type of the component. When a filter is
selected, it’s icon will be highlighted in light red color as seen in Fig. 12.4.
2. Filter footprints list by pin count : This will filter the footprints based on number
of pins the footprint has. This can be used to narrow down your search after
sorting footprints by their library type.
3. Filter footprints list by keyword - This filters the footprints in the database based
on keywords.
4. Automatic footprint association - Perform footprint association for each compo-
nent automatically. Footprints will be selected from the list of footprints available.
101
Note: This method of association is not recommended at all.
5. Delete all associations - Delete all the footprint associations made. This will erase
all your association till now so be very careful in selecting this.
6. Select next unlinked component: Using this you can go to the next component in
the list of components for associating a footprint.
7. Select previous unlinked component: Using this you can go to the previous com-
ponent in the list of components for associating a footprint.
8. View selected footprint - View the selected footprint in 2D. See Sec. 12.1.4 for
more details.
Before clicking on this, make sure that a footprint is selected. Order of this
operation should be
1. Selection of footprint library from the left-most pane
2. Selecting a footprint from the right-most pane
3. Click on View selected footprint
9. Edit footprint library table - One should familiarize themselves with Cvpcb first
and then only choose to use this. This impacts the footprints that you can choose,
so be careful before making any severe changes.
10. Save netlist and footprint files - Save the netlist and the footprints that are as-
sociated with it. One ought to save the association after having assigned proper
footprints to all the components.
To view a footprint in 2D, select the component for which you wish to view the available
footprints, then select the library from left-most pane and now from the right pane and
click on the desired footprint and click on View selected footprint from the menu
bar. Let us view a footprint for C1 from the Capacitors THT footprint library. Choose
C1 from the middle pane as shown, click on Capacitors THT in the left-most pane and
select the View selected footprint tool. On clicking the View selected footprint tool,
the Footprint window with the view in 2D will be displayed. 2D view of the footprint
CP Radial D5.0mm P2.50mm is shown in Fig. 12.6.
Click on the 3D Display icon in the Footprint window, as shown in Fig. 12.6. A top
view of the selected footprint in 3D is obtained. Click on the footprint and rotate it
using the computer mouse to get 3D views from various angles. One such view of the
footprint in 3D is shown in Fig. 12.7.
102
Figure 12.5: Viewing footprint for C1
2. Similarly choose the footprints per Fig. 12.8 where the footprint association for
all the footprints is shown in Fig. 12.8. Save the footprint association by click-
ing on the Save footprint association in schematic component footprint
fields tool from the CvPcb toolbar.
.
103
Figure 12.7: 3D view of the footprint
104
Figure 12.9: Netlist generation for PCB
4. Click on Save in the Save netlist file dialog box that opens up. Do not change the
directory or the name of the netlist file. Note that the netlist for PCB has
an extension .net. The netlist created for simulation has an extension
. cir.
105
Figure 12.10: Layout editor with menu bar, toolbars and layer options
Top toolbar
Some of the important menu options in the top menu bar are shown in Fig. 12.10. They
are explained below:
1. Save board - Save the printed circuit board
2. Plot - This enables users to import their design in Gerber, PDF, SVG and few
more formats depending on the requirement.
3. Read netlist - Import the netlist whose layout needs to be created.
4. Perform design rules check - Check for design rules, unconnected nets, etc., in the
layout.
5. Select working layer - Selection of working layer.
Note: Selection of working layer can also be done from the Layers toolbar on
the right-most side of the Pcbnew tool window.
12.2.3 Hotkeys
A list of few important hotkeys is given below:
1. F1 - Zoom in
2. F2 - Zoom out
3. Delete - Delete Track or Footprint
4. X - Add new track
5. V - Add Via
6. M - Move Item
7. F - Flip Footprint
8. R - Rotate Item
9. G - Drag Footprint
10. Ctrl+Z - Undo
106
Figure 12.11: Default Hotkeys
107
Figure 12.12: Importing netlist file to layout editor: 1. Browse netlist Files, 2. Choose
the appropriate .net file, 3. Read Netlist file, 4. Close
and select Footprint J1 on F.Cu. and select the Rotate + option from the list
as shown in Fig. 12.15
7. Using similar methods, we have moved and rotated all other footprints as shown
in Fig. 12.16
108
Figure 12.13: Cluttered footprints
109
Figure 12.15: Rotating the footprint
will be made such that all tracks are of the width 1.25mm will be checked.
4. Click on Ok button and close the Design Editor Rules window.
110
Figure 12.17: Design Rules Editor Window: Global Design Rules
between two nodes or points on a PCB) must lie inside this board outline.
2. We will also choose a board outline of rectangular shape. Select working layer as
Edge.Cuts from the Layers menu on the far-right side of Pcbnew.
3. Click on Place from the top-left tool bar of the Pcbnew window and select Line
or Polygon. A pencil icon will appear to be tied to the cursor.
4. Click once on the layout editor to start drawing the outline. Drag the cursor either
horizontally or vertically. When it comes to the corner of the board, click once
and drag the cursor in perpendicular direction. Do this till you reach the origin of
the outline, and double click to finish drawing the rectangular outline. Completed
outline is as shown in Fig. 12.18.
111
Figure 12.19: Track placed on B.Cu. between Screw Terminal 01x02 connector and D3
Diode
Placing Tracks
1. Select the working layer as B.Cu from the Layers menu on the far-right side of
Pcbnew.
2. Click on Place from the top-left tool bar of the Pcbnew window and select Track.
A pencil icon will appear to be tied to the cursor.
3. The procedure to place a track between Node 2 of Screw Terminal 01x02 to Node
1 of D3 diode, as shown in Fig. 12.18 is described in below steps.
4. Working layer is B.Cu., Place Track tool is selected earlier. Click the pencil
icon tied to cursor on the Node 2 of Screw Terminal 01x02 and drag the cursor
till Node 1 of D3 diode and double click on Node 2 of D3. By double clicking the
track will end at Node 2 of D3. Please refer Fig. 12.19 for the mentioned track
being placed.
5. Similarly, all the tracks have been placed as shown in Fig. 12.20. Please note that
tracks shown in green color are on B.Cu. layer whereas the tracks in red color are
placed on the F.Cu. layer.
112
Figure 12.20: All tracks placed
errors in the design present, there will not be any errors in the message window
as shown in Fig. 12.21
113
Figure 12.22: Plot Window before generating gerber files
sages’ window at the bottom of the Plot tool window as shown in Fig. 12.23.
114
Figure 12.24: Loading gerber files in the gerbview
115
Chapter 13
Appendix
13.1 Appendix A
13.1.1 Backing up important data before uninstalling eSim
Locate the folders : SubcircuitLibrary and deviceModelLibrary in the eSim instal-
lation directory, compress them in .zip or .rar format on your Desktop or some other
location which does not contain eSim related files.
The projects created and stored in eSim-Workspace will not be deleted when one unin-
stalls eSim, hence there is no need to backup these project files.
Newly created subcircuits and device models should be backed up as explained above.
A way to take backup of the subcircuit blocks (external outlook) which appears in the
schematic editor (not to be confused with internal circuit of the subcircuit) is explained
in the Subcircuit section of this manual.
116
13.2 Appendix B
13.2.1 Pin types in KiCad
• Input: is a unidirectional input.
• Tri-state:is an output that can drive high or low, but can also be placed in a
high-impedance state where it floats. The 74125 is a chip with tri-state outputs
(sometimes called three-state outputs: high, low, and high-impedance).
• Unspecified: is, unspecified. User would use that when no other classification
fits.
• Power input: is a pin where power comes in to a chip. Both the VCC and GND
pins of chips would be classified as power inputs.
• Power outputs: are where power comes out of a chip. The outputs of voltage
regulators are the most common example of this pin type.
• Open collector output pins: are outputs that can be driven low, but float
otherwise. These are good for wired-AND connections where the output goes low
if any of the attached open-collector pins goes low, but the output is pulled high
by a pull-up resistor if all the pins are floating. The 7401 is a NAND gate chip
with open-collector outputs.
• Open emitter output pins: can be driven high, but float otherwise. These are
good for wired-OR connections where the output goes high if any of the attached
open-emitter pins goes high, but the output is pulled low by a pull-down resistor
if all the pins are floating.
117
Figure 13.1: ERC Table
13.3 Appendix C
13.3.1 Shortcut keys in Schematic editor
• Open the schematic editor and press Shift and ? keys simultaneously. This will
display the total shortcut keys, also called as Hotkeys. Please note that, if the
shortcut key is related to a component, for example, changing its value or its
orientation etc, then your cursor must be located on that component.
• A: This calls the place component tool through which you can add components
in your schematic.
• M: This moves a component. After pressing M key, the component you chose will
be tied to the cursor and you can place it anywhere in the schematic by clicking
once on the schematic editor.
118
• C: This copies a component. After pressing C key, the component you chose will
be tied to the cursor and you can place it anywhere in the schematic by clicking
once on the schematic editor.
• Ctrl + H: This is to create a Global label. After pressing Ctrl + H keys simulta-
neously, the global label will be tied to the cursor and you can place it anywhere
in the schematic by clicking once on the schematic editor.
• W: This calls the place wire tool through which you can add components in your
schematic.
• ErrType(2): Pin not connected and no No Connect Symbol. Check the pin and
wire overlaps or place No connect symbol if pin should be left unconnected.
• ErrType(3): Pin connected to some others pins but no pin to drive it. This
means there is a power input pin and there is no power connected to the pin. This
is typically solved by adding a PWR FLAG symbol to the schematic.
• ErrType(4): Conflict problem between pins. Severity: warning. Two pins con-
nected but their function needs complementary signals (for ex. input -¿ output).
You can have many power input pins connected to power output but no two power
output pins should be connected together.
119
• ErrType(7): A no connect symbol is connected to more than 1 pin. ”No connect”
symbol should be put at the end of the pin,and this pin should be left unconnected
at all costs.
• ErrType(8): Global label not connected to any other global label. There is a
global label which has no pair in other sheet(s).
• ErrType(9): Two labels are equal for case insensitive comparisons Review schematic
labels to find possible duplicates, watch for similarity of large and small letters.
• ErrType(10): Two global labels are equal for case insensitive comparisons. Re-
view global labels in hierarchy to find possible duplicates, watch for similarity of
large and small letters.
120
13.5 Appendix E: Checks to be done before Simulation in
NGHDL
1. VHDL filename should be in small letters without any space or special characters
(Underscore is allowed).
2. Entity name, architecture declaration and the VHDL file name should match
exactly.
3. Port declaration can be either std logic or std logic vector. No other declara-
tions are allowed.
4. All in ports should be declared before out ports.
5. Maximum number of output ports that a VHDL entity under simulation can have
is 64, provided the port names are not too lengthy to overflow the buffer.
6. Be extremely careful while dealing with Arithmetic Operations.
(See nghdl/Example/counter/counter.vhdl for further reference)
7. If structural style is used, then the main entity of your VHDL code which is to be
simulated, should be declared first in the file with inclusion of libraries for subse-
quent declaration of each supporting entity. See nghdl/Example/full adder/
full adder structural.vhdl for further reference.
8. Do not use sudo or root permissions while working with Mixed Signal Simulation
and eSim.
9. If there are more than one VHDL file to be uploaded, then do it one-by-one, as
described below:
(a) Click on NGHDL button on eSim or type nghdl/ in terminal. A new window
will be opened.
(b) Upload your first VHDL file and wait for the process to be completed.
(c) Check if there are any Errors on the console. If possible, try to debug it and
report your error and its solution to us. Otherwise, you can send the error
to us. If there are no errors, upload your second model and repeat the steps
mentioned above.
You can upload as many models as required.
10. Do not upload two or more VHDL files simultaneously :
Add files option allow you to use a smaller entity / subpart / submodule to sup-
port the main VHDL file. That is, a digital model will be generated corresponding
to that file that has been browsed. The file that has been added to Nghdl upload
window will only be placed along with the model under model’s DUTghdl folder
to support the model.
Hence, browsing one file and adding several files won’t create that many number
models, but only model will be created corresponding to the browsed file.
11. Maximum number of NGHDL models that can be simulated at once is restricted
to 512.
12. Next simulation should be started only after the completion of the previous/current
121
simulation. No two simulations should be executed at once.
13. While providing parameters to the adc-dac bridges that correspond to any NGHDL
model, make sure that the rise and fall delays of ADC and DAC bridges are
comparable to the simulation time parameters passed. Some examples are given
below:
122
13.6 Appendix F: Common Errors in NGHDL
Before concluding anything about NGHDL’s working or about eSim’s Mixed Signal
Simulation, do check the console for outputs and logs. Kindly see the following errors
on User’s end that can be rectified there itself:
123
whether the Ngspice engine used is of system built or that of the NGHDL. To
check the same, follow the steps:
– If a vhdl file is saved as dummycode.vhdl and the entity and architecture are
declared as for example, codedummy or dummy or something other than the
name of the actual vhdl file itself, one will get the above error.
– If structural style is being used and above error is seen, then kindly make
the necessary changes by referring our example found at:
nghdl/Example/full adder/full adder structural.vhdl
Kindly check with the GHDL documentation and online resources too are available
regarding this GHDL error.
124
events are generated rapidly due to which the convergence would fail for those
models), then the initial conditions won’t converge and the transient solution will
fail. Follow these steps to resolve it:
1. Open the corresponding project’s cir.out file (\*.cir.out").
2. Just below the “.control” statement and above the “run” statement, insert
a new line.
3. On this new line, type “option noopalter”.
4. Save the file and exit.
5. Run the simulation once again.
• doAnalyses: TRAN : Timestep too small; time = ... , timestep = . . . ;
trouble with node ... run simulation(s) aborted :
As the error says :
– Check if the time-step is too small as compared to the stop-time.
– If the time-step is of the same order(scalable) as that of the stop-time, then
check the delays of the adc-dac bridges and make them comparable to simu-
lation stop-time.
– If the delays are comparable, then check the parameters provided to the
digital and analog models and set them appropriately.
• chmod : changing permissions of ‘any file’: Operation not permitted :
This error, displayed on xterm by Ngspice, is similar to that of Permission
Denied error. Kindly refer section 13.4.1 for the same.
125
13.7 Appendix G: References
1 A. S. Sedra and K. C. Smith, Microelectronic Circuits - Theory and Applications.
Oxford University Press, 2009.
17 P. Nenzi and H. Vogt. (2020) Ngspice users manual version 31. [Online].
Available: http://ngspice.sourceforge.net/docs/ngspice-manual.pdf
126
18 K. M. Moudgalya, “LATEX Training through Spoken Tutorials,” TUGboat, vol.
32, no. 3, pp. 251–257, 2011.
127