some interactive testing
[gnucap-felix.git] / ChangeLog
blob73b96bfda1ae885f2ab17eb4ca7ae08c905fa226
1 Gnucap revision history
2  ------------------------------------------------------------------
3 gnucap-uf 0.0.2
5 1. several device and bm bugfixes
6 2. make subckt pluggable
7 3. ageing simulation improvements
8 4. period detection in tran (experimental)
9 5. sock continued
10 6. shared library (WIP)
11 7. interface versioning
13 gnucap-uf 0.0.1
15 1. attach modularity (experimental)
16 2. improve some error messages
17 3. NOT_INPUT initialization bug fixed.
18 4. cleanup dist
20 gnucap-uf 0.0.0
22 1. changed many things. see CHANGES.uf
24  ------------------------------------------------------------------
25 Gnucap 0.34 release notes  (02/01/2004)
27 This is a bug fix and compatibility release.
29 1. Fix bug causing incorrect interpolation of backwards tables.
30             
31 2. Fix tanh overflow bug.
32             
33 3. Fix some parsing bugs.
34             
35 4. Fix occasional "double load" bug.
36             
37 5. Fix AC sweep with one point.
38             
39 6. Transient start time really works.
40             
41 7. Fix occasional assert fail after option short is changed.
42             
43 8. Fix memory leak resulting from failure to delete unused common.
45 9. Fix a Z probe bug that sometimes gave wrong answers.
47 10. Fix a limiting bug that sometimes caused non-convergence.
49 11. Configure handles isnan.
51 12. Improvements to logic initialization.  It is still not correct.        
52  ------------------------------------------------------------------
53 Gnucap 0.33 release notes  (01/12/2003)
55 This is a bug fix and compatibility release.
57 0.32 was not widely distributed due to password problems and a heavy
58 work load, so the release notes are repeated after the current ones.
60 New features:
62 1. Add inductance probes, like capacitor.
64 Bug fixes:
66 1. Fix xprobe duplicate default arg bug - shows in g++3.2.
68 2. Fix bug that sometimes caused a crash when changing a model after
69 analysis.
71 3. Fix bug that caused an assert to fail (debug build) after removing
72 a probe from an element.
74 4. Fix a dumb typo hack bug ddHAS_READLINE.  Now history and command
75 line editing really works.  It was working, but somehow the hack
76 slipped into the release code.
77  ------------------------------------------------------------------
78 Gnucap 0.32 release notes  (09/30/2002)
80 New features:
82 1. Series resistance in the diode.  It took 5 minutes to do,
83 so it is embarrasing that it wasn't done before.
85 2. History and command line editing, using Gnu Readline.  Thanks to
86 Simon Hoffe for sending me the patch.
88 3. More parameters in the BJT model.  This gives it better
89 compatibility with commercial simulators.  These parameters are beyond
90 Spice 3f5.
92 4. "M" parameter in diode, BJT and MOS devices.  M is the number of
93 parallel devices.  Some commercial simulators have this.
97 Changes that may or may not be improvements.
99 1. The definition of the transient option "UIC" has changed.  It is
100 now Spice compatible, which means to not attempt to do any solution or
101 consistency check.  Just apply the values, assuming anything that
102 isn't specified is 0.  The old behavior was to attempt a solution
103 while holding the IC values.
106 Bug fixes:
108 1. voltage sync bug.  It still doesn't fix the MOS 2 convergence
109 problem.
111 2. Fix memory leak in POLY components.
113 3. Fix bug in Fourier that sometimes causes overrun (crash) and time
114 sync errors.
116 4. Modelgen: fix bug in list parsing.
118 5. Some changes to eliminate warnings when compiling with g++ 3.1.
120 6. Use Euler differentiation on first step, because trap used a value
121 that cannot be known then.  Usually, this doesn't make much
122 difference, but there are a few cases where the error can get
123 magnified and trigger trapezoidal ringing, leading to a totally bogus
124 result.  It most cases, you could hide it with small enough steps.
125 These cases should work with default settings now.
127 7. Fix bug that sometimes caused incorrect handling of initial
128 conditions (UIC),
130 8. Fix bug that caused continuing a transient analysis to give
131 incorrect results.
135 Significant internal changes:
137 1. The inductor uses all of the same support functions as the
138 capacitor, including "integrate", which is now correctly called
139 "differentiate".
141 2. Most of the code is in place for named nodes.  It mostly works and
142 can be turned on with the option "namednodes".  It is off by default
143 because it is not complete.  Most likely, it will be finished in the
144 next release.
148 Some things that are still partially implemented:
150 1. BSIM models, charge effects, "alpha0" parameter.  (computed then
151 ignored)
153 2. Configure still doesn't handle everything.
155 3. The model compiler still requires too much raw coding.
157 4. Named nodes.  If you set the option "namednodes", it will support
158 named nodes, but some things don't work, so it is off by default.
160 5. The preliminary IBIS code is now included.  For now, it is a
161 standalone executable, that reads an IBIS file and generates a
162 netlist.  The netlist requires some editing to use, and is not fully
163 compatible anyway.  It is included in hopes of recruiting help in
164 finishing the project.
168 Bugs (nothing new, but needs repeating):
170 1. The transmission line initial conditions are not propagated until
171 the transient analysis runs.
173 2. An occasional bogus calculation in MOSFETS occurs when a device is
174 reversed.  This sometimes causes nonconvergence.
176 3. The "modify" command with multiple arguments seems to take only the
177 first one.  It used to work, but is broken in this release.  I am not
178 sure when it broke.
179  ------------------------------------------------------------------
180 Gnucap 0.31 release notes  (03/25/2002)
182 The most significant changes are the BJT model and "binning".
185 New features:
187 1. BJT model.
189 2. "Binning" for all MOS models.
191 3. Internal element: non-quasi-static poly-capacitor. (needed by BJT).
193 4. Enhancements to the data structures and model compiler to support
194 binning in general.
196 5. A line prefixed by "*>" is not ignored, in spite of the fact that
197 "*" usually begins a comment.  This is a deliberate incompatibility
198 with Spice.  If you prefix a line by "*>" it will be interpreted as a
199 non-comment in Gnucap, but a comment in Spice.
201 6. Circuit line prefixes of ">" and command prefixes of "-->" are
202 ignored.  This is so you can copy and paste whole lines, without
203 having to manually remove the prompt string.
206 Changes that may or may not be improvements.
208 1. It is not the default to include stray resistance in device models.
209 The option "norstray" will revert to the old behavior.  This is only a
210 change to the default value of "rstray".
213 Significant internal changes:
215 1. The internal element non-quasi-static poly-capacitor actually
216 works.  It is used by the BJT model, and will eventually be used by
217 MOSFET models.
219 2. There are now two poly_g devices: "CPOLY_G" and "FPOLY_G".  There
220 are interface differences that impact modeling.  Previously, there was
221 only one, which is equivalent to the "FPOLY_G".
224 Some things that are still partially implemented:
226 1. BSIM models, charge effects, "alpha0" parameter.  (computed then
227 ignored)
229 2. Configure still doesn't handle everything.
231 3. The model compiler still requires too much raw coding.
234 General comments:
236 The new BJT model seems to pass the CircuitSim90 test cases as well as
237 anything else, except where a missing feature prevented it from
238 working.  A few files would not run because of named nodes.  One file
239 (ring11) failed completely.  This file also has MOSFETs, with level 2
240 models.  The MOS level 2 model is not as robust as the BJT.  I believe
241 the problem is due to the voltage sync bug that still impacts the MOS
242 model.
244 Most of the models have has a reasonable amount of testing in DC, but
245 inadequate testing in AC and transient.  The BJT model has had more
246 testing than the others in AC and transient.  All differences
247 (relative to other simulators) that were observed can be attributed to
248 differences in transient step size control or tolerance checking.
251 Bugs (nothing new, but needs repeating):
253 1. The transmission line initial conditions are not propagated until
254 the transient analysis runs.
255  ------------------------------------------------------------------
256 GNUCAP 0.30 release notes  (10/29/2001)
258 The primary effort has been to finish the model compiler, to the point
259 where it can handle most modeling issues.  The second change is to
260 re-release as "gnucap", and add some configuration features to be more
261 consistent with other GNU software.
264 New features:
266 1. More complete model compiler.
268 2. "./configure" makes compiling more like other GNU software.
271 Some things that are still partially implemented:
273 1. Internal element: non-quasi-static poly-capacitor.
275 2. BSIM models, charge effects, "alpha0" parameter.  (computed then ignored)
277 3. Configure still doesn't handle everything.
279 4. The model compiler still requires too much raw coding.
282 Bugs (nothing new, but needs repeating):
284 1. The transmission line initial conditions are not propagated until
285 the transient analysis runs.
286  ------------------------------------------------------------------
287 ACS 0.29 release notes  (06/30/2001)
289 The primary effort has been to implement IBIS, which is still not
290 done.  The changes here are mostly infrastructure changes needed to
291 support IBIS.
294 New features:
296 1. "Fit" function has choice of fit order and extrapolation.  You can
297 have order 0, 1, 2, or 3.
299 2. "Posy" has even and odd options, to determine what happens in the
300 negative region.
302 3. Modelgen improvements.  It now is useful for the whole device,
303 sometimes.  It now handles probes and the device side of the model.
304 The diode uses it completely.  There are still a few missing features
305 needed for the MOSFET and BJT.
307 4. Spice-3 compatible semiconductor resistor and capacitor.
309 5. "Table" model statement.
312 Improvements, bug fixes, etc.
314 1. Option "numdgt" really works.
316 2. Better error messages from modelgen.
318 3. Code changes for optimization of commons.  This should reduce
319 memory use, sometimes, by sharing commons.  Common sharing is still
320 not fully implemented.
322 4. Fix two bugs that sometimes caused problems after a "modify" or on
323 a "fault".
325 5. Better handling of "vmin" and "vmax".  It should be much less
326 likely that limiting causes convergence to a nonsense result.
329 Some things that are still partially implemented:
331 1. Internal element: non-quasi-static poly-capacitor.
333 2. BSIM models, charge effects, "alpha0" parameter.  (computed then ignored)
336 Bugs (nothing new, but needs repeating):
338 1. The transmission line initial conditions are not propagated until
339 the transient analysis runs.
341 2. The makefile does not set up the proper link for the model
342 compiler.  You need to do it manually.
344 3. On some systems, you will get a warning from the linker that "the
345 use of 'tmpnam' is dangerous".  You can ignore this warning.
346  ------------------------------------------------------------------
347 ACS 0.28 release notes  (09/05/2000)
349 New features:
351 1. New probes: diode G, mos IBD, IBS, GBD, GBS.
353 2. New options: "floor" and "vfloor".  (Floor was in the manual, but
354 not in the simulator.)
357 Improvements, bug fixes, etc.
359 1. There is a change to the way behavioral modeling conditionals are
360 handled.  It should now be 100% compatible with SPICE, considering the
361 subset that duplicates SPICE.  There are still significant extensions
362 beyond SPICE, particularly that you can have behavioral resistors,
363 capacitors, inductors, etc.
365 2. Parameter default calculations are now done in a manner consistent
366 with Spice 3f5.  Previously, it was supposedly consistent with Spice
367 2g6.
369 3. A bug in calculation of threshold voltage of the level 6 model, for
370 P channel devices, has been fixed.
372 4. A bug in calculation of Meyer capacitances when the device is
373 reversed has been fixed.  This bug sometimes caused a discontinuity at
374 vds=0.
376 5. I have added some smoothing to the Meyer mos capacitor models.
377 This improves convergence.   The down side is that sometimes the
378 answers are different.  It is probably a little better, when
379 considering closeness to reality, but it is still Meyer's model.
381 6. MOSFET parasitic diodes are now the same as those used in Spice.
383 7. There are subtle changes in the diode model.  I think this usually
384 improves convergence. 
386 8. Charge calculation in Meyer capacitors and diode capacitiors is now
387 supposedly Spice 3 compatible.
389 9. An error in BSIM3 scaling has been fixed.
392 Some things that are still partially implemented:
394 1. Internal element: non-quasi-static poly-capacitor.
396 2. BSIM models, charge effects.
399 Bugs (nothing new, but needs repeating):
401 1. The transmission line initial conditions are not propagated until
402 the transient analysis runs.
404 2. The makefile does not set up the proper link for the model
405 compiler.  You need to do it manually.
407 3. A bad setting of "vmax" and "vmin" can lead to convergence to a
408 nonsense result.  It is not as bad now as it used to be.
409  ------------------------------------------------------------------
410 ACS 0.27 release notes  (06/03/2000)
412 New features:
414 1. BSIM3 model, DC.  
415 They work for AC and transient analysis, but only the DC effects
416 actually work.  The next release should have the charge effects.  For
417 now, it fakes it with Meyer's model.
419 2. A first cut at a model compiler, to aid in development of new
420 models.  Models are described in a ".model" file, which is processed
421 to automatically generate the ".h" and ".cc" files.  This version
422 fully handles the ".model" statement part of it, but leaves the device
423 and common sections the old way.  Eventually, the entire process will
424 be automated.  The old way still works.
426 3. "Fit" behavioral modeling function, which fits a curve to a set of
427 data.  You can specify the order of the fit, which is piecewise
428 polynomials.  For now, the order may be 1 (linear, like PWL) or 3
429 (cubic splines).  You may also specify the boundary consitions.
431 4. More probes.
435 Some things that are partially implemented:
437 1. Internal element: non-quasi-static poly-capacitor.  It is needed by 
438 the BSIM3 and EKV models.  Eventually, it will be available as a
439 netlist item, but not yet.
443 Bug fixes:
445 1. PWL could fail if there were duplicate points at the beginning.  It 
446 still does, but gives a reasonable error message.
448 2. Some "dot commands" were ignored if there were spaces before the
449 dot.  This was particularly annoying if the line was supposed to be
450 ".end" which should make it exit.  It didn't, leaving it in
451 interactive mode, a major annoyance in a script.
455 Other improvements:
457 1. There is a change to the way integration in capacitors is done.  It 
458 is now strictly based on charge (i = dq/dt).  The old version was
459 based on capacitance (i = C * dv/dt) which is strictly incorrect.  The 
460 dC/dt term was missing (i = C * dv/dt + v * dC/dt).  This is a
461 non-issue when C is constant.
463 2. More documentation on internals.
467 Changes that I think are improvements, but some may disagree:
469 1. The command line is a little different.  In the old version, 
470 "acs file" would run it, and whether it exited or not depended on
471 whether there was an ".end" line.  Now, by default, it just loads the
472 file in preparation for interactive use.  If you want batch mode, say
473 "acs -b file".
475 2. The regression suite is included in the standard distribution.
479 Changes that are not really improvements:
481 1. Due to the model compiler, the build process is a little more
482 complicated.  To do a complete build, you must build the model
483 compiler first, then the simulator.  If you are not making any new
484 models, you can probably get away with just building the simulator.
485 This will change in a future release.
489 Bugs:
491 1. The transmission line initial conditions are not propagated until
492 the transient analysis runs.
494 2. The makefile does not set up the proper link for the model
495 compiler.  You need to do it manually.
496  ------------------------------------------------------------------
497 ACS 0.26 release notes  (02/02/2000)
499 New features:
501 1. BSIM1, BSIM2 models -- DC only.
502 They work for AC and transient analysis, but only the
503 DC effects actually work.   The next release should
504 have the charge effects.
506 2. New elements:
507         trans-capacitor
508         voltage controlled capacitor
509         voltage controlled conductance
510         voltage controlled resistor
511 This is a side effect of the BSIM work.
513 3. Optional new syntax, with type first so component labels can start
514 with any letter, and the choice of components is no longer limited by
515 the 26 letters.  This was necessary for a clean syntax
516 for #2.
518 4. Some new parameters on existing devices, also a side 
519 effect of the BSIM work.
521 5. The manual in HTML form.  The manual source is still in LaTeX,
522 which can be used to generate HTML, PDF, Postscript, or many other
523 formats.
526 Bug fixes:
528 1. An error causing truncation error to be underestimated has been fixed.
531 Other improvements:
533 1. MOSFET model evaluation is a little faster, due to use of one of
534 the new elements to replace several old ones.  I have seen 40%, but
535 20% is more likely.  The improvement is most evident on busy circuits,
536 where the ACS speed enhancements based on latency exploitation
537 contribute more overhead than their value, that is .. the type of
538 circuit that has run faster in Spice than ACS.
540 2. More documentation on internals.
543 Changes that I think are improvements, but some may disagree:
545 1. Truncation error based step control is disabled when Euler's method
546 is selected.  The justification for this is that the reason for
547 selecting Euler's method is to avoid the artifacts of high order
548 methods on "stiff" poles.  Without this change, a "stiff" pole would
549 cause an unreasonably small step size.  This did not appear to be much 
550 of a problem in the old release because the use of an incorrect
551 formula for estimating truncation error.  A "stiff" pole is one that
552 has a response so fast it can be thought of as instantaneous.
554 2. The "help" command, with its 4 year old help file, has been
555 removed.  The concept is really obsolete.  With the HTML form of the
556 manual, a full online manual is a better replacement.
557  ------------------------------------------------------------------
558 ACS 0.25 release notes  (11/04/99)
560 New features:
562 None!
565 Bug fixes:
567 1. A name conflict that caused compile to fail with gcc 2.95 has been
568 fixed. 
570 2. A problem that caused switches to lose state when a simulation is
571 stopped and restarted when a switch is in transition has been fixed.
573 3. Two unrelated problems with transmission lines have been fixed.
574 (Short lines and lines in subcircuits.)
577 Changes that may or may not be improvements:
579 1. Several queues have been added, to manage model evaluation
580 scheduling.  This is part of work on multi-rate and mixed-mode
581 simulation, and it replaces the traditional bypass scheme.  In this
582 release, probably the only noticeable difference will be that it runs
583 a little faster.
586 Known bugs:
588 1. The help file has not been updated for 4 years.
589  ------------------------------------------------------------------
590 ACS 0.24 release notes  (08/21/99)
592 New features:
594 1. Enhanced (now documented) behavioral modeling.
596 2. Transmission line in transient analysis.
598 3. More documentation of internals.
600 4. Better batch mode error handling.
603 Bug fixes:
605 1. Control-C trap works.
607 2. A bug that could cause a crash when a device had an improper number
608 of nodes has been fixed.  It now issues a warning, and grounds the
609 unspecified nodes.
611 3. A bug that could cause a crash when a model or subcircuit is
612 deleted then accessed has been fixed.
614 4. A scoping bug that sometimes put subckt parts in the root circuit
615 has been fixed.
617 5. A bug in "fanout" that listed internal subckt nodes incorrectly has
618 been fixed.
621 Changes that may or may not be improvements:
623 1. "Make2" files for some systems have been removed.  These have not
624 been tested in years, and ACS and the compilers have both evolved
625 significantly, so any portability patches that old are probably
626 completely wrong now.
629 Known bugs:
631 1. The help file has not been updated for 4 years.
632  ------------------------------------------------------------------
633 ACS 0.23 release notes  (06/15/99)
635 New features:
637 1. Level 6 mos model.
639 2. HSpice style PWL and POLY(1).
641 3. "Table" behavioral modeling function.
643 4. Mixed-mode digital initialization.
647 The bug fixes:
649 1. The alarm range worked backwards, now fixed.
651 2. Keep track of commons better.
653 3. Improved mixed-mode simulation.  It still has not been tested as
654 well as I would like, but is better.  Digital initialization works
655 now.
657 4. Another case of "zero time step" has been fixed.  This one was
658 relatively benign, in that it only caused a single extra full
659 evaluation, with immediate recovery to a normal step size.
661 5. "Z" probe gave wrong results when probing a voltage source.
665 Other improvements: (?)
667 1. Some subtractions now de-noise the result, eliminating the tiny
668 numbers that result from subtracting two nearly equal numbers.  The
669 threshold can be set by the option "roundofftol".  It is best left set
670 at 1e-13.  This improves speed slightly because 0 will prevent a
671 matrix reload, but any non-zero number will not.  It improves
672 convergence slightly because the tiny numbers (which result from
673 numerical problems) tend to cause further numerical problems.  These
674 tiny numbers are an artifact of the machine math, and vary depending
675 on optimization and machine implementation details.
677 2. MOS temperature effects are computed at run time, instead of at
678 load time, so you can change the temperature after loading and get
679 correct results.
681 3. The options for integration method have changed, and are more
682 flexible.  The default is still trapezoidal, but that may change in a
683 future release.  You can specify the mode individually for capacitors
684 and inductors.  The information is in the data structure for all
685 components, but it isn't always parsed.  A future release will let you
686 specify it by component or by model.  The names are Spectre
687 compatible, not Spice compatible, because it is more flexible.  The
688 Spice names are accepted, but may not act the same as they do in
689 Spice.  Choices are: unknown, euler, euleronly, trap, traponly.
690 Options accepted and coerced into something else are: gear2,
691 gear2only, trapgear, trapeuler.  In general, gear is treated as euler,
692 and each element will use either euler or trap.  The device choice
693 wins over the option command choice, but "only" wins over non-only.
695 4. Logic device syntax is changed.  There are two more nodes, so
696 power, ground, and enable are passed in.  Power and enable are not
697 used (except possibly in subckt models) but are required for
698 consistency.
700 5. In many (not all) cases, arbitrary limits, due to fixed size
701 arrays, have been removed.
703 6. More rigorous testing.  I actually have a regression suite now.  It
704 is still not rigorous enough.
706 7. More rigorous convergence criteria.  This should solve some of the
707 false convergence problems.  ACS convergence criteria has always been
708 more rigorous than Spice.
712 The cosmetic changes:
714 1. Convert most containers to STL.
716 2. Complete migration to the "common" tree, and eliminating reference
717 to the old C "x" structure extensions.
719 3. Rearrangement of MOS model hierarchy, to make it easier to install
720 other models.  (BSIM family is coming.)
721  ------------------------------------------------------------------
722 ACS 0.22 release notes  (10/16/98)
724 This release contains a few bug fixes, and a few cosmetic changes to the
725 code.
727 The bug fixes:
729 1. Fixes convergence failures in circuits with linear inductors,
730 linear mutual inductors, and linear current controlled sources.
732 2. Fixes a bypass problem, which shows as transient analysis failure
733 with the message "very backward time step".
735 3. Failed assertion on switch.
737 The cosmetic changes:
739 1. The "OMSTREAM" class, as a step in migrating the i/o to C++ style.
741 2. A cleaner event queue, using a generic heap class.
743 That's really all.  I have not been actively working on ACS, mostly
744 due to employment at a semiconductor company in their "corporate CAD"
745 department.  This will change soon, because my new employer (a CAD
746 tool vendor) says it is ok to work on ACS.
747  ------------------------------------------------------------------
748 ACS 0.21 release notes  (03/30/96)
750 There are several changes, most of which are only visible in subtle
751 ways from the outside.
753 1. The code is more conformant with the upcoming standard, particularly
754 in the use of complex, templates, lifetime of temporaries, and for
755 scope.  This should fix problems compiling with g++ 2.7.
757 2. Element commons are freed properly.
759 3. The manner in which elements are loaded into the matrix is
760 different, and should be faster for large circuits with latency.
761 Model bypass is more complete, because it is no longer necessary
762 to do anything with a latent model.  It makes little difference
763 for small circuits, and circuits that are mostly active.  Speed
764 gains on small circuits are offset by #4.
766 4. The bypass criteria are more strict.  It was possible to get
767 incorrect results through interaction between model evaluation
768 bypass and iteration damping.  This release will not bypass anything
769 when damping is in effect.  There is a slight speed penalty.
771 5. Logic devices work even when there is no analog model.  The bug
772 causing a failure in this case has been fixed.  The "bug" (that
773 could in a twisted sense be called a feature) that leads to random
774 mapping on start-up is still there.  The logic model still needs
775 work.
777 6. The code is somewhat more object-oriented.  Some classes have
778 been changed to be more general.
779  ------------------------------------------------------------------
780 ACS 0.20 release notes  (11/22/95)
782 This release adds the level-3 MOSFET model.  It is Spice compatible.
784 Actually, it was there a long time ago but was removed because it
785 didn't work correctly.  This one has been tested and seems to match
786 Spice results, and have convergence characteristics a little better
787 than Spice 2g6.  Like the level 1 and 2 models, only Meyer's
788 capacitance model is implemented. (like Spice 3).
789  ------------------------------------------------------------------
790 ACS 0.19 release notes  (10/31/95)
792 This release offers "improved" convergence.
794 Several new options have been added to control iteration damping.
795 In some cases, the program will take a partial step in an attempt
796 to tame the wild fluctuations that can occur during iteration with
797 Newton's method.  This version appears to be considerably more
798 robust than Spice 2g6.  Several test circuits that fail to converge
799 on Spice do converge on ACS.  The cost of this is sometimes slower
800 convergence.  It generally takes about 2 more iterations per step
801 than the previous version.  This can be turned off, using the
802 "dampstrategy" option at a slight cost in robustness.  See the
803 manual on the options command for more information.
804  ------------------------------------------------------------------
805 ACS 0.18 release notes  (05/12/95)
807 This release offers improved memory management and exception
808 handling, primarily aimed at MSDOS systems.
810 Bug fixes:
812 1. For all ... Out of memory exceptions are properly trapped.
813 Version 0.17 would crash if it ran out of memory.  Now you get a
814 reasonable message.  It was only a real problem on MSDOS systems.
816 2. MSDOS floating point exceptions are trapped.  In 0.17, underflow
817 exceptions and null floating point exceptions could sometimes cause
818 an abort.  I don't know why, but the 80287 can generate a null
819 exception when apparently nothing is wrong.
821 3. MSDOS only: Evade underflow in exp().  A large negative argument
822 to exp can give bogus results.  This was a known (to me) in Microsoft
823 C 5.1.  Apparently Borland has the same behavior.  It may be a
824 hardware problem.  The fix is to not call exp with an argument
825 beyond -200, and return 0 instead.
827 4. Don't use "-fast-math" with g++.  (Makefile change).  It doesn't
828 make any difference in speed, and it sometimes causes problems,
829 particularly the one in #3 above.
831 Performance improvements:
833 1. Most elements no longer store values from the past.  Only
834 inductors and capacitors do.  This means that some probes are no
835 longer available.  Some other data has been moved to improve memory
836 usage.  This change increases the capacity of the MSDOS version by
837 about 10 transistors.  Unix systems will swap less.
839 Other visible changes:
841 1. The method of attaching models to devices has been changed, to
842 improve maintainability.  There are a few noticeable side effects.
844 a. The default models -d-, -n- are no longer available.  These were
845 not documented.
847 b. Model names must now be unique.  If you have a diode model named
848 "foo", you may not also have a mosfet model named "foo".
850 c. A diode can reference a mosfet model.  The diode will be equivalent
851 to the source-bulk diode in the mosfet.  This is a byproduct of
852 using C++ derived classes.  The mosfet model is derived from the
853 diode model.
855 2. Exception handling in batch mode is different.  It is still not
856 right.
857  ------------------------------------------------------------------
858 ACS 0.17 release notes  (04/21/95)
860 The primary difference in this release is reorganization and C++.
861 A side benefit is that it is slightly faster, and uses slightly
862 less memory.  (The program is bigger, but it stores data more
863 efficiently, for a net improvement.)  It is a transitional release,
864 with some of the code still in C.  I hope to have a full C++ version
865 this summer.
867 Bug fixes:
869 1. Voltage source (vs, vcvs, ccvs) probes (current, power, etc.)
870 now really work.
872 2. Fixed bug that caused strange results with mutual inductance
873 after other parts of the circuit are changed.
875 3. Fixed memory leak in subcircuits and complex devices.
877 4. Fixed bug that caused a crash when probed elements were deleted.
878  ------------------------------------------------------------------
879 ACS 0.16 release notes  (12/10/94)
881 New features:
883 1. New components: current controlled switch, current controlled
884 current source, current controlled voltage source.  Any simple two
885 terminal element (not a diode) can be used as a probe, not just 
886 a voltage source.
888 2. Diode transit time parameter works.
890 3. Mutual inductance.  The coupled coils must be linear.  Only
891 pairs of coupled inductors are supported in this release.  A future
892 release will probably support multiply coupled inductors.
894 Bug fixes:
896 1. Continuing a transient analysis now works as documented.
897  ------------------------------------------------------------------
898 ACS 0.15 release notes  (07/31/94)
900 Version 0.15 is supposed to be a minimal bug fix release to 0.14,
901 but does have one new component.
903 1. Some additional ports are supported, including VMS.  An HP port
904 is supplied as a user contribution, but I have not tested it.
906 2. New component: voltage controlled switch.  Spice-3 compatible.
908 3. Fixed bug that caused unpredictable behavior (usually loss of
909 a probe, sometimes a crash) after replacing a component.
911 4. Fixed bug that caused incorrect evaluation and initialization
912 of logic devices when there is no analog model.
914 5. Fixed a bug in truncation error control that sometimes caused
915 it to become a no-op.  It still seems to usually work the same as
916 Spice, except that ACS will actually use at least the time steps
917 you ask for.  Spice will pick all the steps and interpolate for
918 the points you ask for.  This will usually cause ACS to use more
919 time steps than Spice, hence often slower simulations.
921 6. Fixed another bug in truncation error that sometimes caused a
922 divide by zero.
923  ------------------------------------------------------------------
924 ACS 0.14 release notes  (07/05/94)
926 Version 0.14 was supposed to be a minimal bug fix release to 0.13.
927 The same bugs are still there and there are a few small additions
928 mostly aimed at coping with convergence problems.
930 1. The truncation error formula was changed to use the third
931 derivative of charge instead of the second derivative of current.
932 These two numbers are theoretically equal, but in practice they
933 are not.  The second derivative of current uses 3 terms to compute
934 by divided differences.  The third derivative of charge uses 4
935 terms.  Using the odd number of terms catches the error due to the
936 oscillatory nature of the trapezoid rule.  An even number of terms
937 tends to lose this error.  Also, using charge tends to mask it.
938 So, I have changed it to a less accurate, more optimistic method,
939 the same as Spice.  It now seems to work about the same as Spice,
940 in the sense that it usually chooses about the same step sizes.
941 Strictly, the old method is "better" but it tends to run away on
942 stiff poles, trying for excess accuracy that doesn't matter.  Your
943 comments on this matter are welcome.  If you know of any good papers
944 on this, please let me know.
946 2. The "stiff" option has been removed from the transient command.
947 Instead, use the .options "trapezoid" or "gear".  For now, "gear"
948 implies first order and is equivalent to the old "stiff".  (A
949 cop-out.)  Actually, for stiff poles you want a first order method
950 because the error is lower.
952 3. You can specify the integration method individually on any
953 capacitor or inductor.
955 4. A bug causing the MSDOS version (2 byte integers) to mess up
956 probes of other than nodes was fixed.
958 5. A bug that sometimes caused it to perpetually repeat the same
959 time step was fixed.  (SPICE would have reported "time step too
960 small" and stopped.)
962 6. A bug that messed up step control when a dormant model wakes up
963 and finds out it has been sleeping too long has been fixed.
965 7. "Mosflags" and "diodeflags" are different and there are more of
966 them.  There are lots of them and they may be useful in taming
967 convergence problems.  They control the heuristics that are applied
968 when there appears to be a convergence problem.  I have yet to find
969 a circuit that could not be made to converge by judicious application
970 of the flags and options, but any one setting is no better than
971 Spice, and many are worse.  One combination of flags gives Spice
972 style limiting, which more often than not makes convergence worse.
974 8. "vmax" and "vmin" options as part of convergence heuristics.
975 The default value of "limit" now large enough to essentially remove
976 it.  These limits sometimes help convergence, but more often hurt.
978 9. The "damp" option actually works.
980 10. The diode "off" flag works correctly.
982 11. There is a new command "alarm" that prints a message when a
983 value exceeds a range.  The syntax is the same as the "plot" command.
984  ------------------------------------------------------------------
985 ACS 0.13 release notes  (03/11/94)
987 Version 0.13 adds several new features and has several bug fixes
988 and performance improvements.
990 1. Fourier analysis really works.
991 The "Fourier" command does a transient analysis but prints the
992 results in the frequency domain.  It is similar to the Spice command
993 of the same name but not exactly the same.  It is significantly
994 more accurate than Spice because the transient time steps are chosen
995 for the best match to the Fast Fourier Transform.  Considerably
996 more flexibility is available than in Spice.
998 2. Transient time step control by truncation error (finally).
1000 3. Several options have been added to display diagnostics.
1002 4. Fixed the default value for idsat, issat, ad, and as in the
1003 mos-diode.  In 0.12, the default area was 1 square meter, which
1004 gave mosfet capacitors in the 500 uf range.  This sometimes caused
1005 strange results.
1007 5. Added some node probes, mostly for diagnostic use.
1009 6. Fixed the "F" probe on linear elements.  (Capacitor charge,
1010 inductor flux, admittance current, resistor voltage)  It used to
1011 give an obviously bogus answer.
1014 Other changes:
1016 1. Some general changes in the interest of improving code quality
1017 in general.
1019 2. Function headers are in ANSI style, rather than K&R style.  This
1020 version will compile as either C or C++.  Future versions will
1021 require a C++ compiler.
1022  ------------------------------------------------------------------
1023 ACS 0.12 release notes  (10/09/93)
1025 Version 0.12 is a maintenance release.  It adds no features (except Ultrix
1026 support) but fixes several bugs and changes some porting details.  It
1027 should be easier to port this version than previous versions.
1029 The bug fixes are significant enough that you should upgrade to 0.12 even
1030 if you are not having any problems.
1031  ------------------------------------------------------------------
1032 ACS 0.11 release notes  (07/26/93)
1034 Version 0.11 fixes a few bugs in 0.10.  0.10 was supposed to be
1035 posted on alt.sources but due to a problem with the feed it never
1036 happened.
1038 New features:
1040 1. New MOSFET and diode probes.  All information available from
1041 the Spice 2 "op" analysis is now available as probes.  For MOSFET
1042 these include cbd, cbs, cgsovl, cgdovl, cgbovl, cgs, cgd, cgb,
1043 vdsat, vth.  Other (non-spice) new probes include cgst, cgdt, cgbt.
1044 (cgst = Cgs total = cgsovl + cgs.) These were available before by
1045 probing the value of the internal element but it was less convenient.
1046 Now it is simple and has the same name as in Spice.  These probes
1047 are also available in transient analysis, so you can see (for
1048 example) the dynamic variations in capacitance.
1050 Bugs fixed:
1052 1. Pass arguments to tr_volts and family by pointer instead of the
1053 whole structure.  This is less likely to tickle a bug in Microsoft
1054 C.  The MSDOS version of ACS 0.10 crashed frequently due to this
1055 bug.  (Strictly, this is a Microsoft-C bug, not an ACS bug but the
1056 effect is the same.)
1058 2. The AC "Z" probes work again.  They were broken in 0.10.
1060 3. The size of the buffer for text plots is increased allowing
1061 support for wider screens.  The old version would crash if you did
1062 plots with outwidth set to wider than 128.  The fix is to make it
1063 bigger, with a new constant MAXWIDTH, and trap the width setting
1064 bigger than MAXWIDTH.  The current max is 256 for MSDOS and 512
1065 for unix.  The plotting code should probably be redone.
1067 4. Width is narrower by 1 so setting width to 80 won't leave blank
1068 lines on an 80 column screen.
1070 5. MOSFET capacitance now matches Spice (Meyer model)
1072 6. Level 1 model linear region gds calculation was wrong, but close
1073 enough to often go unnoticed.  It is correct and matches Spice now.
1075 7. The value of an AC source now is compatible with Spice.  That
1076 is, plain value is the DC-tran value.  In old versions of ACS a
1077 plain value applied to all analyses including AC.  You needed to
1078 prefix the value with "DC" to make it not apply to AC.  Actually,
1079 it worked as documented.  Now it works like Spice, which makes more
1080 sense.  This was a major source of strange results in AC analysis.
1081  ------------------------------------------------------------------
1082  ------------------------------------------------------------------