12003-07-08 Stefan Jones <stefan.jones@multigig.com> 2 * quote.c: return the pointer to the start of malloced 3 memory so it can be freeded 4 52003-05-02 Stuart Brorson <SDB@cloud9.net> 6 * Major changes in subckt.c to handle POLY attributes in 7 dependent sources. Added new case to switch in "translate" to 8 handle E, F, G, H sources. Many other fixes. 9 10 * Moved location of call to ENHtranslate_poly in inp.c. This was 11 necessary to correctly process POLY attributes and the associated 12 netlists and voltage sources. 13 142003-04-10 Stuart Brorson <sdb@cloud9.net> 15 * modified inp_readall (inpcom.c) to ignore blank 16 lines terminated by \r\n *and * \n. This fixes problems 17 associated with importing files from Windozeland. 18 * Added explanatory comments to many modules. 19 202002-01-03 Paolo Nenzi <p.nenzi@ieee.org> 21 22 * wdisp: added an entire directory containing windows frontend code 23 (Holger Vogt patch). Files in wdsip: ftegraf.h, makedefs, Makefile.am, 24 windisp.c and winprint.c. 25 26 * Makefile.am: Windows code compilation rules added to makefile. 27 28 * display.c, outitf.c, rawfile.c, resource.c, runcoms.c: added 29 defines for Windows (Holger Vogt patch). 30 31 322001-12-14 Paolo Nenzi <p.nenzi@ieee.org> 33 34 * control.c, control.h, com_cdump.c, com_cdump.h, variable.c, variable.h: 35 Patched the code with the one contributed by Charles Williams. The patches 36 addresses some memory leaks. 37 382001-11-25 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 39 40 * circuits.h: transfered definition of structure 'circ' to ftedefs.h 41 422001-02-07 Paolo Nenzi <p.nenzi@ieee.org> 43 44 * outitf.c: From a message Alan sento to the mailing list: 45 ---------- Forwarded message ---------- 46 Date: Tue, 6 Feb 2001 11:11:56 -0000 47 From: "Gillespie, Alan" <Alan.Gillespie@analog.com> 48 Reply-To: ng-spice-devel@ieee.ing.uniroma1.it 49 To: "Ng-Spice-Devel (E-mail)" <ng-spice-devel@ieee.ing.uniroma1.it> 50 Subject: [ng-spice-devel] Reference variable update in interactive mode 51 52 53 I've tweaked outitf.c so that the reference variable value 54 is updated to the screen in interactive mode. I forgot to 55 save the old version first, though, so I couldn't do a diff, 56 so I'm just attaching the whole new outitf.c file. Also, I've 57 updated the documentation as follows :- 58 59 60 61 Modifications to "outitf.c" 62 --------------------------- 63 64 A number of modifications have been applied to outitf.c in 65 order to achieve the following "improvements" :- 66 67 1) Spice3, by default, saved all node voltages, including 68 nodes internal to the devices. These extra nodes add 69 dramatically to the amount of data saved, but don't add 70 significantly to the useful information about the circuit. 71 So, instead of saving these nodes, a "hack" has been 72 introduced which checks a new spice option, and either 73 discards the internal node, or saves some device currents 74 instead. 75 76 2) During long simulations, spice would sit "staring back 77 blankly", giving no clue as to how well the simulation 78 was, or wasn't, proceeding. In order to give a little 79 more feedback, another "hack", in the data writing routine, 80 writes the value of the reference variable to the error 81 stream, which is usually the screen. In order to minimize 82 the CPU time "wasted" doing this, the routine will only 83 reprint the value if more than a quarter of a second since 84 the last screen update. The result is that this feedback 85 adds no significant extra time to performance of the 86 simulation. 87 88 3) The original file writing routines used to write each data 89 value to the file individually. A buffering scheme was added, 90 which collects each row of data in a buffer, and the writes 91 the whole buffer in one call. This gave a significant 92 performance improvement (up to 20%) on HPUX, with all currents 93 saved in large circuits, although there was no significant 94 difference on Windows 95. The improvement has not been 95 measured on Linux. 96 97 4) A check was added to make sure the file write was successful. 98 Spice3 could easily fill the hard disk, but would continue to 99 churn away, producing no more useful data. Now it will exit 100 gracefully. I can't remember why I thought this was important, 101 but at least it means that a PC with power management will be 102 able to power down after a long overnight simulation has 103 ceased to produce any more useful data. 104 105 Changes 106 ------- 107 The routine beginPlot is called at the beginning of the simulation 108 to select which nodes and variables will be saved. The first 109 modification is at the point where it checks the "save" list. This 110 is the list of tokens attached to the .save lines read from the 111 spice source file. The routine now checks for "allv" and "alli" 112 as well as "all". "allv" is treated as a synonym for "all". If 113 "all" or "allv" is found, then a saveall flag is set, and if "alli" 114 is found then a new savealli flag is set. 115 116 Next, the addDataDesc routine is called for every variable to be 117 saved. This is done by stepping through an array called dataNames[]. 118 I'm not quite sure where this array comes from, but it was quite 119 easy to add an if statement to stop it calling addDataDesc if 120 dataNames[i] points to a string containing any of the following - 121 122 #internal 123 #source 124 #drain 125 #collector 126 #emitter 127 #base 128 129 That seems to catch all the internal device nodes. 130 The next addition is a new pass through the dataNames[] array 131 specifically looking for those strings. (This pass is only performed 132 if the savealli flag has been set). When one of the strings is found, 133 a bunch of if-then-else statements creates a corresponding string 134 which is submitted to the add addSpecialDesc routine. This saves the 135 relevant device current. Note that since mosfets have only two 136 internal nodes, but four terminal currents, and bipolars have three 137 internal nodes and four terminal currents, some internal nodes have 138 to save more than one terminal current. 139 140 This last change is a clumsy hack, and only works if the devices in 141 question actually have internal nodes. Resistors and capacitors, for 142 instance, never have internal nodes, and so their terminal currents 143 will not cannot be saved with the .save alli card. Also, any bipolar, 144 mosfet or diodes with zero valued parasitic resistances (rd, rs, rc, 145 rb, re) will not be allocated internal nodes, and so their terminal 146 currents will not be saved by this hack, either. 147 148 Further down outitf.c, the OUTpData routine is called whenever a 149 new row of data is ready to be written to file. Near the top of this, 150 the reference variable is written to file separately from the rest of 151 the variables. This is a convenient point for a couple of statements 152 which check the elapsed time since the last update, and write the 153 reference value to stderr if it's time. Slightly further down the 154 routine is the section for writing data to a "plot", i.e. retaining 155 it in memory. A similar statement or two writes the reference value 156 to the screen for this case, i.e. interactive mode. At the end of the 157 OUTpData routine, a new check has been added to see if there was an 158 error writing to the rawfile. If so, the shouldstop flag is set to 159 TRUE, and the simulation will abort. 160 161 Scanning down outitf.c, the next modification is in the fileInit 162 routine. The first statement initialises the lastclock variable. 163 This is used later when deciding if it's time to write the reference 164 value to the screen. 165 166 Next, the fileInit_pass2 routine writes the name strings to the start 167 of the rawfile. At the end of this routine there is now a statement 168 which checks if this will be a binary rawfile, and if so, it allocates 169 a row buffer of the correct length. 170 171 The fileStartPoint routine seems to be called before each row of data 172 is written, and so this is a convenient point to reset the buffer 173 pointer to zero. 174 175 The fileAddRealValue and fileAddComplexValue routines now simply write 176 the relevant values to the buffer, and increment the buffer pointer. 177 Previously they called the fwrite library routine to actually write 178 the data. If the rawfile is not a binary one, however, they just write 179 the text as before. 180 181 The fileEndPoint routine was previously empty. Now it actually calls 182 fwrite to write the whole buffer to the file (if it's a binary file). 183 184 Finally the fileEnd routine prints the total number of data points to 185 the screen, and de-allocates the row buffer (if it was a binary 186 rawfile). 187 188 Congratulations to whoever put these dummy routines in in the first 189 place, since that allowed the buffering to be added very easily. 190 1912001-01-23 Paolo Nenzi <p.nenzi@ieee.org> 192 193 * subckt.c: added some code (very, very experimental) 194 to support mos devices with variable number of nodes 195 (5 to 7) in subcircuit expansion. This hack is necessary 196 since SOI devices can have up to 7 nodes. 197 1982000-11-07 Arno W. Peters <A.W.Peters@ieee.org> 199 200 * com_history, com_alias, parser/cshpar.c, parser/complete.c: 201 Applied patch by Michael Widlok. It fixes command completion and 202 history list. In the process, Michael also fixed a memory leak. 203 2042000-09-09 Arno W. Peters <A.W.Peters@ieee.org> 205 206 * commands.c: Use fourier.h. 207 208 * dotcards.c: Update to prevent segfault. 209 210 * fourier.c, fourier.h: com_fourier is now calling fourier(), a 211 function with more parameters. 212 213 * dotcards.c: Added assertions to guard a double indirection, now 214 ngspice will bomb out on an assertion instead of a segfault. 215 2162000-07-18 Arno W. Peters <A.W.Peters@ieee.org> 217 218 * com_ahelp.c, com_help.c, com_plot.c, com_set.c, com_unset.c: 219 Updated header file includes. 220 221 * quote.c: Code formatting changes. 222 2232000-07-16 Arno W. Peters <A.W.Peters@ieee.org> 224 225 * com_set.h: New header file. 226 227 * com_state.c, com_state.h: Separated from debugcom.c. 228 229 * com_dump.c, com_dump.h: Separated from debugcom.c. 230 231 * debugcom.c, debugcom.h: Removed. 232 233 * Makefile.am: Updates for added/removed files. 234 2352000-03-22 Paolo Nenzi <p.nenzi@ieee.org> 236 237 * rawfile.c: Applied Michael Widlok patch. 238 239 * spiceif.c: Applied Michael Widlok patch. 240 2412000-03-12 Paolo Nenzi <p.nenzi@ieee.org> 242 243 * x11.c: Cleared the code. Rewmoved some empty return on void 244 functions. 245 2461999-12-20 Paolo Nenzi <p.nenzi@ieee.org> 247 248 * outif.c: To fix various "save"-related segmentation faults, make 249 this one-line patch to outitf.c: line 356, change unique = 250 devname; to unique = copy(devname); 251 2521999-12-20 Paolo Nenzi <p.nenzi@ieee.org> 253 254 * subckt.c: Bug: Current controlled switch subcircuit does not 255 expand the controlling source correctly: vsrc expands to 256 name:vsrc, not to v:name:src. 257 258 Fix: changed this file to indicate that w device has only 2 not 3 259 nodes and 1 not zero controlling sources. 260 2611999-09-07 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 262 263 * *.c: put back static functions declarations back in the .c files 264 (shouldn't be in .h files!) 265 2661999-09-07 Arno <A.W.Peters@ieee.org> 267 268 * aspice.c: template to fprintf now conform to argument types. 269 270 * cmath1.c: 271 272 * cmath2.c: removed most warnings about possible use of 273 uninitialized variables. Only two remain in cx_sqrt(). 274 2751999-09-06 Arno Peters <A.W.Peters@ieee.org> 276 277 * dotcards.c: Put proper braces around an 278 ambiguous if/else construct. 279 280 * postcoms.c: 281 282 * postsc.c: Removed unused variables. 283 2841999-09-04 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 285 286 * Makefile.am (libfte_a_SOURCES): forgot display.h in list 287 288 * typesdef.c: moved types.c to typesdef.c 289 290 * signal_handler.c: moved signal.c to signal_handler.c 291 292 * *.c: added header file for all .c files 293 2941999-09-01 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 295 296 * *.c: removed lots of unnecessary HAS_XX tests and code 297 298 * Makefile.am (libfte_a_SOURCES): removed mfb.c from sources 299 300 * signal.c (ft_sigintr): removed HAS_MFB test 301 3021999-08-30 Paolo Nenzi <pnenzi@ieee.ing.uniroma1.it> 303 304 * Removed #include "suffix.h" and replaced GENERIC with void. 305 3061999-08-28 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 307 308 * Makefile.am (libfte_a_SOURCES): removed x10.c from source files 309 310 * clip.c: removed MAX/MIN #defines 311 312 * Removed all #includes of misc.h and util.h (now in spice.h) 313 3141999-08-19 Paolo Nenzi <pnenzi@ieee.ing.uniroma1.it> 315 316 * Makefile.am: added spec.c. 317 318 * spcmdtab.c: added code for spec command support. The original 319 patch came from ftp.mpce.mq.edu.au. 320 321 * spec.c: added this file containing the spec command code. 322 3231999-08-08 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 324 325 * Makefile.am (DEFS): removed -DWANT_MFB (don't need it) 326 327 * resource.c : removed HAS_RLIMIT_ tests 328 329 * error.c: removed HAS_VAXFPERROR code 330 331 * cmath3.c: removed HAS_SHORTMACRO code 332 333 * display.c : removed HAS_X10 code 334 335 * mfb.c (Mfb_Init): removed HAS_PCTERM code 336 337 * resource.c: removed all code related to HAS_MEMAVL 338 3391999-08-06 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 340 341 * resource.c: removed tests on HAS_UNIX_SEGMENT_HACK 342 343 * xgraph.c (ft_xgraph), options.c (cp_usrset), misccoms.c: removed 344 tests on HAS_SYSTEM 345 346 * nutinp.c, inp.c (com_source, doedit): removed tests on 347 HAS_SYSTEM (always true?) 348 349 * doplot.c (com_hardcopy): removed tests on HAS_UNLINK (always 350 true), removed tests on HAS_SYSTEM (always true?) 351 352 * signal.c: 353 * evaluate.c (doop): 354 * error.c (fatal): 355 * aspice.c: removed test on HAS_UNIX_SIGS (always true) 356 357 * signal.c: 358 * evaluate.c: removed test on HAS_LONGJUMP (always true) 359 3601999-08-04 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 361 362 * aspice.c: changed HAS_WAIT into HAVE_SYS_WAIT_H 363 364 * inpcom.c, breakp.c: changed HAS_CTYPE into HAVE_CTYPE_H 365 3661999-08-03 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 367 368 * signal.c, resource.c, evaluate.c, aspice.c: changed SIGNAL_TYPE 369 into RETSIGTYPE 370 3711999-07-31 Emmanuel Rouat <emmanuel.rouat@wanadoo.fr> 372 373 * Makefile.am: added @X_CFLAGS@ (X11 header files) to INCLUDES and 374 removed unused LIBS list. 375 37628-07-1999 emmanuel.rouat@wanadoo.fr (Manu Rouat) 377 378 * graf.c, display.c, doplot.c, x11.c: changed HAS_X11 define 379 to X_DISPLAY_MISSING, which is supplied by autoconf in config.h 380 381 * Makefile.am: removed -DWANT_X11 382 383