forked from pool/gnucap
251 lines
8.6 KiB
Diff
251 lines
8.6 KiB
Diff
--- gnucap-0.35/doc/whatisit.debian 2000-08-16 10:15:00.000000000 +0200
|
|
+++ gnucap-0.35/doc/whatisit 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -1,4 +1,4 @@
|
|
-ACS is a general purpose circuit simulator. It performs nonlinear
|
|
+Gnucap is a general purpose circuit simulator. It performs nonlinear
|
|
dc and transient analyses, fourier analysis, and ac analysis
|
|
linearized at an operating point. It is fully interactive and
|
|
command driven. It can also be run in batch mode or as a server.
|
|
@@ -6,7 +6,7 @@
|
|
for the MOSFET (level 1-7) and diode are included in this
|
|
release.
|
|
|
|
-ACS is not based on Berkeley Spice, but some of the models have been
|
|
+Gnucap is not based on Berkeley Spice, but some of the models have been
|
|
derived from the Berleley models.
|
|
|
|
Since it is fully interactive, it is possible to make changes and
|
|
@@ -19,7 +19,7 @@
|
|
bipolar design.
|
|
|
|
In batch mode it is mostly Spice compatible, so it is often possible
|
|
-to use the same file for both ACS and Spice.
|
|
+to use the same file for both Gnucap and Spice.
|
|
|
|
The analog simulation is based on traditional nodal analysis with
|
|
iteration by Newton's method and LU decomposition. An event queue
|
|
@@ -36,11 +36,11 @@
|
|
experimental and needs work. There will be substantial improvements
|
|
in future releases.
|
|
|
|
-ACS also has a simple behavioral modeling language that allows
|
|
+Gnucap also has a simple behavioral modeling language that allows
|
|
simple behavioral descriptions of most components including capacitors
|
|
and inductors.
|
|
|
|
-ACS uses an object oriented approach to modeling. Complex models like
|
|
+Gnucap uses an object oriented approach to modeling. Complex models like
|
|
MOSFETS are made of simpler ones like resistors, capacitors, diodes,
|
|
and any other models that may already exist. The model designer does
|
|
not need to worry about details like convergence checking, bypass
|
|
@@ -54,17 +54,13 @@
|
|
If you are tired of Spice and want a second opinion, you want to
|
|
play with the circuit and want a simulator that is interactive, or
|
|
you want to study the source code and want something easier to
|
|
-follow than Spice, try ACS.
|
|
+follow than Spice, try Gnucap.
|
|
|
|
-ACS is an ongoing research project. It is being released in a
|
|
+Gnucap is an ongoing research project. It is being released in a
|
|
preliminary phase in hopes that it will be useful and that others
|
|
will use it as a thrust or base for their research. I also hope
|
|
for some comments that may help me direct my research.
|
|
|
|
-ACS ftp sites:
|
|
- ftp://sunsite.unc.edu/pub/Linux/apps/circuits/acs-0.27.tar.gz
|
|
- ftp://ftp.geda.seul.org/pub/geda/dist/acs-0.27.tar.gz
|
|
- http://www.geda.seul.org/dist/acs-0.27.tar.gz
|
|
|
|
Albert Davis
|
|
aldavis@ieee.org
|
|
--- gnucap-0.35/src/bm.cc.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/bm.cc 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -141,7 +141,8 @@
|
|
/*--------------------------------------------------------------------------*/
|
|
void EVAL_BM_ACTION_BASE::tr_finish_tdv(ELEMENT* d, double val)const
|
|
{
|
|
- d->_y0 = FPOLY1(CPOLY1(ioffset(d->_y0.x), 0., val));
|
|
+ CPOLY1 cp1(ioffset(d->_y0.x), 0., val);
|
|
+ d->_y0 = FPOLY1(cp1);
|
|
tr_final_adjust(&(d->_y0), false);
|
|
}
|
|
/*--------------------------------------------------------------------------*/
|
|
--- gnucap-0.35/src/e_card.h.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/e_card.h 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -35,6 +35,7 @@
|
|
class CARD_LIST;
|
|
class CS;
|
|
class COMMON_COMPONENT;
|
|
+CARD_LIST::fat_iterator findbranch(CS&,CARD_LIST::fat_iterator);
|
|
/*--------------------------------------------------------------------------*/
|
|
class CARD : public CKT_BASE {
|
|
private:
|
|
--- gnucap-0.35/src/d_vcvs.cc.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/d_vcvs.cc 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -61,7 +61,8 @@
|
|
assert(_y0.f0 != LINEAR);
|
|
store_values();
|
|
q_load();
|
|
- _m0 = CPOLY1(_y0);
|
|
+ CPOLY1 cp1(_y0);
|
|
+ _m0 =cp1;
|
|
_m0 *= -_loss0;
|
|
}else{
|
|
assert(conchk(_loss0, 1./OPT::shortckt));
|
|
--- gnucap-0.35/src/u_sdp.h.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/u_sdp.h 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -32,6 +32,9 @@
|
|
/*--------------------------------------------------------------------------*/
|
|
class OMSTREAM;
|
|
class CARD_LIST;
|
|
+class SDP;
|
|
+bool get(CS& cmd, const std::string& key, SDP* value,
|
|
+ AP_MOD mod, double scale);
|
|
/*--------------------------------------------------------------------------*/
|
|
class SDP {
|
|
friend bool get(CS& cmd, const std::string& key, SDP* value);
|
|
--- gnucap-0.35/src/e_storag.cc.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/e_storag.cc 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -78,7 +78,8 @@
|
|
_dt = NOT_VALID;
|
|
_i0 = _q[0] = _q[1] = _q[2] = FPOLY1(0., 0., 0.);
|
|
_it1_f0 = 0.;
|
|
- _m1 = _m0 = CPOLY1(0., 0., 0.);
|
|
+ CPOLY1 cp1(0., 0., 0.);
|
|
+ _m1 = _m0 = cp1;
|
|
assert(_loss0 == 0.);
|
|
assert(_loss1 == 0.);
|
|
if (!using_tr_eval()) {
|
|
--- gnucap-0.35/src/d_admit.cc.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/d_admit.cc 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -57,7 +57,8 @@
|
|
assert(_y0.f0 != LINEAR);
|
|
store_values();
|
|
q_load();
|
|
- _m0 = CPOLY1(_y0);
|
|
+ CPOLY1 cp1(_y0);
|
|
+ _m0 = cp1;
|
|
}else{
|
|
assert(_y0.f0 == LINEAR);
|
|
assert(_y0.f1 == value());
|
|
@@ -172,7 +173,8 @@
|
|
bool DEV_CPOLY_G::do_tr()
|
|
{
|
|
assert(_values);
|
|
- _m0 = CPOLY1(0., _values[0], _values[1]);
|
|
+ CPOLY1 cp1(0., _values[0], _values[1]);
|
|
+ _m0 = cp1;
|
|
return do_tr_con_chk_and_q();
|
|
}
|
|
/*--------------------------------------------------------------------------*/
|
|
@@ -195,7 +197,8 @@
|
|
}
|
|
}
|
|
trace2("", _values[0], c0);
|
|
- _m0 = CPOLY1(0., c0, _values[1]);
|
|
+ CPOLY1 cp1(0., c0, _values[1]);
|
|
+ _m0 = cp1;
|
|
|
|
return do_tr_con_chk_and_q();
|
|
}
|
|
--- gnucap-0.35/src/e_compon.h.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/e_compon.h 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -43,6 +43,9 @@
|
|
}
|
|
/*--------------------------------------------------------------------------*/
|
|
enum {CC_STATIC=27342}; // mid-sized arbitrary positive int
|
|
+class COMMON_COMPONENT;
|
|
+void attach_common(COMMON_COMPONENT* c, COMMON_COMPONENT** to);
|
|
+void detach_common(COMMON_COMPONENT** from);
|
|
// pass this as an argument to a common constructor to mark it as static,
|
|
// so it won't be deleted
|
|
/*--------------------------------------------------------------------------*/
|
|
--- gnucap-0.35/src/d_cap.cc.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/d_cap.cc 2007-02-14 13:05:47.000000000 +0100
|
|
@@ -47,7 +47,8 @@
|
|
_i0.x = _y0.x;
|
|
_i0.f0 = differentiate();
|
|
_i0.f1 = tr_c_to_g(_q[0].f1, _i0.f1);
|
|
- _m0 = CPOLY1(_i0);
|
|
+ CPOLY1 cp1(_i0);
|
|
+ _m0 = cp1;
|
|
return converged();
|
|
}
|
|
/*--------------------------------------------------------------------------*/
|
|
@@ -191,7 +192,8 @@
|
|
assert(_vi0[i] == _vi0[i]);
|
|
}
|
|
|
|
- _m0 = CPOLY1(0., _vi0[0], _vi0[1]);
|
|
+ CPOLY1 cp1(0., _vi0[0], _vi0[1]);
|
|
+ _m0 = cp1;
|
|
return do_tr_con_chk_and_q();
|
|
}
|
|
/*--------------------------------------------------------------------------*/
|
|
--- gnucap-0.35/src/l_timer.h.debian 2006-08-28 08:15:43.000000000 +0200
|
|
+++ gnucap-0.35/src/l_timer.h 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -26,6 +26,8 @@
|
|
#define U_TIMER_H
|
|
#include "io_.h"
|
|
/*--------------------------------------------------------------------------*/
|
|
+class TIMER;
|
|
+TIMER operator-(const TIMER&,const TIMER&);
|
|
class TIMER {
|
|
private:
|
|
enum {_T_NAME_LEN = 8};
|
|
--- gnucap-0.35/modelgen/mg_.h.debian 2006-08-28 07:45:36.000000000 +0200
|
|
+++ gnucap-0.35/modelgen/mg_.h 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -120,7 +120,7 @@
|
|
}
|
|
T* p = new T(file);
|
|
{if (!file.stuck(&here)) {
|
|
- _list.push_back(p);
|
|
+ this->_list.push_back(p);
|
|
}else {
|
|
delete p;
|
|
file.warn(0, "not valid here");
|
|
@@ -141,7 +141,7 @@
|
|
int here = file.cursor();
|
|
T* m = new T(file);
|
|
{if (!file.stuck(&here)) {
|
|
- _list.push_back(m);
|
|
+ this->_list.push_back(m);
|
|
}else{
|
|
delete m;
|
|
file.warn(0, "what's this??");
|
|
--- gnucap-0.35/examples/runall.debian 2000-09-05 06:22:00.000000000 +0200
|
|
+++ gnucap-0.35/examples/runall 2007-02-14 13:04:05.000000000 +0100
|
|
@@ -1,16 +1,16 @@
|
|
-#
|
|
-$1 -b eq2-145.ckt
|
|
-$1 -b eq2-289.ckt
|
|
-$1 -b eq2-577.ckt
|
|
-$1 -b eq3-1153.ckt
|
|
-$1 -b eq4-2305.ckt
|
|
-$1 -b eqboost.ckt
|
|
-$1 -b eqflat.ckt
|
|
-$1 -b eqmodify.ckt
|
|
-$1 -b killzap.ckt
|
|
-$1 -b nmos100.ckt
|
|
-$1 -b nmos18.ckt
|
|
-$1 -b nmos30.ckt
|
|
-$1 -b nmp100.ckt
|
|
-$1 -b opamp-ol.ckt
|
|
-$1 -b opamp-vf.ckt
|
|
+#!/bin/sh
|
|
+gnucap -b eq2-145.ckt
|
|
+gnucap -b eq2-289.ckt
|
|
+gnucap -b eq2-577.ckt
|
|
+gnucap -b eq3-1153.ckt
|
|
+gnucap -b eq4-2305.ckt
|
|
+gnucap -b eqboost.ckt
|
|
+gnucap -b eqflat.ckt
|
|
+gnucap -b eqmodify.ckt
|
|
+gnucap -b killzap.ckt
|
|
+gnucap -b nmos100.ckt
|
|
+gnucap -b nmos18.ckt
|
|
+gnucap -b nmos30.ckt
|
|
+gnucap -b nmp100.ckt
|
|
+gnucap -b opamp-ol.ckt
|
|
+gnucap -b opamp-vf.ckt
|