ngspice/FAQ

300 lines
12 KiB
Plaintext

NG-Spice F.A.Q.
Frequently Asked Questions
(and Answers)
Maintened by Daniele Foci <d.foci@ieee.ing.uniroma1.it>
Last update: 29/08/1999
CONTENTS
1. INTRODUCTION AND GENERAL INFORMATION
1.1 What is NG-Spice?
1.2 Why resurrecting Berkeley's Spice?
1.3 What is the project's goal?
1.4 What you are going to do ?
1.5 Legal issues
1.6 What mailing lists exist for NG-Spice?
1.7 Are the mailing lists archived anywhere?
1.8 What newsgroups exist for NG-Spice?
1.9 Where can I get a copy of NG-Spice?
1.10 Where should I look on the World Wide Web for NG-Spice stuff?
2. DEVELOPMENT
2.1 What is the current version?
2.2 What are the latest features in the current release?
2.3 What does it look like ?
2.4 Who are the authors of ng-spice ?
2.5 How can I report a bug/request for a feature?
2.6 How can I join the development?
3. SOLUTIONS TO COMMON MISCELLANEOUS PROBLEMS
3.1 What systems are supported?
3.2 I get errors when I try to compile the source code, why?
3.3 This document didn't answer my question. Where else can I look for
an answer?
4. ADMINISTRATIVE INFORMATION AND ACKNOWLEDGEMENTS
4.1 Feedback
4.2 Formats in which this FAQ is available
4.3 Authorship and acknowledgements
4.4 Disclaimer and Copyright
-------------------------------------------------------------------------------
1. INTRODUCTION AND GENERAL INFORMATION
1.1 What is NG-Spice?
NG-spice is the name of a project and of a program in the project. Spice is
the famous circuit simulator developed by the CAD Group of the University
of California at Berkeley (UCB). The NG prefix has a lot of meanings: Next
Generation, New Good, etc. Choose or invent the one you prefer. The NG-spice
project aims to improve the capabilities of the Spice3 circuit simulator.
The heart of the project is the ng-spice program, a circuit simulator
derived from spice3f5.
1.2 Why resurrecting Berkeley's Spice?
Berkeley's Spice can be considered the father of most circuit simulators
available today. It is an old but still good piece of software, it may not
be the fastest or the most reliable but it's free, it's available in
source code and most of the electrical simulators inherited it's syntax.
On the more technical side, spice3 uses good numerical algorithms
( most commercial implementations have only strengthened them), implements
most of the models for MOSFET submicron designs and has a powerful set of
analyses. On the more "social" side, spice3 it's well introduced in the
academic environment.
1.3 What is the project's goal?
The final goal of NG-spice project is to develop a reliable, fast and
friendly circuit simulator for mixed signal/mixed level simulation.
Easy isn't it ;-).
1.4 What you are going to do?
The NG-spice project is divided in two main overlapping phases. The first
phase is strictly pertinent to the spice3f5 code: during this phase the
original spice3f5 code will be "cleaned" and corrected and small improvements
made to it. In phase one the Autoconf interface will replace the Berkeley's
one and this will lead to a different structure of the sources.
The second phase is the development of improvements in the ngspice code
(the old spice3f5 code cleaned and corrected) and of some programs that will
interface with it, like a schematic editor and a waveform viewer. A list of
proposed improvements follows:
1) The framework (or Graphic User Interface):
Spice is (and should continue to be) a command line or a text tool, but
this makes very difficult to design large circuits. To overcome this
difficulty, a schematic entry tool and a waveform viewer tools are needed.
Nevertheless, there are other tools that can be useful: a parts database,
an editor which higlights the syntax, a symbol editor, etc.
Most of these program already exists in the open source world, so they
need only to be integrated in a common EDA environment.
2) Documentation:
Commercial simulators have very good manuals with tutorials, models
equations explained, example of use, suggestions, etc. This line of
development has the task of providing the final spice user with an ordered
and comprehensive set of information on the program and its features.
The documentation should be useful for the student as well as for the
circuit professional.
3) Improvements to the Spice code:
This is the hard part. The target of this direction is to make ngspice a
commercial grade simulator. This means improving it's speed, its
numerical strenght, include the latest models available and some other
important features:
* Numerical Algorithms:
- More stable algorithms for integration (as Runge-Kutta Methods).
- Better convergence in Operating Point Calculation replacing the
Newton-Raphson algorithm, a modified version of Fixed-Point
Homotopy.
* Devices:
- Behavioral device: enhance the B device of spice3 to accepts IF THEN
ELSE conditions, and digital keywords like DELAY,
HIGHV, LOWV, etc. to simulate simple digital
device.
- Dynamically Loadable Devices: reduce the memory occupied by the
simulator by using shared object code
for devices. Each device is a .so
library that is inserted only if the
circuit contains an element modeled by
the device. If we are simulating CMOS,
we do not need BJT or SOI (in most of
the situations).
- Code Level Modeling: let users write their devices in C and use
them in the simulator.
- Improving device: include additional parameters to some devices as
HDIF, LDIF, etc.
* New types of analysis, oriented to circuits syntesis and optimization:
- Network analysis: given four nodes, extract z,y,s and the other
double bipole paramters.
- Monte Carlo analysis: statistical simulation based on device
tolerances.
- Worst Case analysis: find the worst case of operation of a given
circuit based on device tolerances.
- Parametric analysis: repeat an analysis when one or more parameters
assumes different values.
* Faster handling of sparse matrices.
* Possibility to mesure circuit pameters, like the delay between two
nodes, etc.
* ... whatever else can be judged useful.
1.5 Legal issues
[not written yet: GPL vs. Berkeley]
1.6 What mailing lists exist for NG-Spice?
Only one. Send an empty message to <ng-spice-help@ieee.ing.uniroma1.it> to
have information on subscription.
1.7 Is the mailing lists archived anywhere?
Yes, the list is archived. Send an empty message to
<ng-spice-help@ieee.ing.uniroma1.it> to have information on how to retrieve
old messages.
1.8 What newsgroups exist for NG-Spice?
None. Sorry.
1.9 Where can I get a copy of NG-Spice?
You can download NG-Spice from:
ftp://ieee.ing.uniroma1.it/pub/ng-spice/distribution/
1.10 Where should I look on the World Wide Web for NG-Spice stuff?
There is a WWW page for NG-Spice. The URL is:
http://geda.seul.org under the tools section.
2. DEVELOPMENT
2.1 What is the current version?
0.3 (released on 30/08/1999)
2.2 What are the latest features in the current release?
* New features:
- Autoconf interface.
- BSIM 3.2.2 Model.
- PS jfet Model (jfet level 2).
- Temperature and resistance sweeps.
- "spec" command for spectrum analysis.
* Bug fixes:
- Altermod command connected to the parser.
- Some memory leaks closed.
- Spice3f5 fixes available on the net.
2.3 What does it look like ?
This is a command line utility, no screenshots!
2.4 Who are the authors of ng-spice ?
The development is open to anyone who wish to contribute.
People who contributed are:
* Daniele Foci <d.foci@ieee.ing.uniroma1.it>
* Paolo Nenzi <pnenzi@ieee.ing.uniroma1.it>
* Arno Peters <A.W.Peters@ieee.org>
* Serban-Mihai Popescu <serbanp@ix.netcom.com>
* Emmanuel Rouat <emmanuel.rouat@wanadoo.fr>
* Michael Widlok <widlok@uci.agh.edu.pl>
This list is surely incomplete (due to open development group), there are
many people who contributed with improvements, pieces of code, bux fixes,
etc. If you have contributed and do not appear, write to:
ng-spice@ieee.ing.uniroma1.it
and ask to be included.
2.5 How can I report a bug/request for a feature?
Write in the mailing list.
2.6 How can I join the development?
To join the development just code the feature you want to add and send your
patch in the mailing list. Before you start coding check the latest
development release of NG-Spice from our CVS. It might be that your feature
has already been implemented.
To access the anonymous CVS do the following:
1) Install cvs on your machine (version 1.9.x - 1.10.x are just fine).
2) Set one of the following environment variables:
For bash:
export CVSROOT=:pserver:anonymous@ieee.ing.uniroma1.it:/var/services/cvsroot
For csh/tcsh:
setenv CVSROOT :pserver:anonymous@ieee.ing.uniroma1.it:/var/services/cvsroot
3) Login to the cvs server by running:
$> cvs login
The password is 'guest' (without the quotes of course). You will only
have to do this once.
4) Checkout the appropriate files executing the following commands:
$> mkdir somedirectory
$> cd somedirectory
$> cvs co ng-spice
5) Wait for the cvs logout.
3. SOLUTIONS TO COMMON MISCELLANEOUS PROBLEMS
3.1 What systems are supported?
This is the updated list:
Hardware O.S. Compiler Functional?
---------------- ------------------ -------------- -----------
i386 Linux (RedHat) gcc yes
i386 Linux (Debian) gcc yes
i386 Linux (SuSE) gcc yes
IBM Risc 6000 AiX lcc no
SUN Solaris 7 gcc yes
SUN Solaris 7 SUN Workshop ?
3.2 I get errors when I try to compile the source code, why?
[not written yet]
3.3 This document didn't answer my question. Where else can I look for
an answer?
Read old messages from the mailing list archive, search the web site or read
the docs. Upgrade to the latest version of NG-Spice, many problems are fixed
in the new versions. If you still can't find an answer, post your question
to the mailing list.
4. ADMINISTRATIVE INFORMATION AND ACKNOWLEDGEMENTS
4.1 Feedback
Send your comments about this F.A.Q. to <d.foci@ieee.ing.uniroma1.it>.
Send your comments about NG-Spice to <ng-spice@ieee.ing.uniroma1.it>.
4.2 Formats in which this FAQ is available
This document is available only in ASCII format in the NG-Spice source
package.
4.3 Authorship and acknowledgements
Parts of the questions and answers are originate from Paolo Nenzi.
4.4 Disclaimer and Copyright
This document is provided as is. The information in it is not warranted to
be correct: you use it at your own risk.