Commit Graph

2419 Commits

Author SHA1 Message Date
rlar 5656203a6c lexical #2/6, linewrap 2012-08-03 20:12:19 +02:00
rlar 5d245c9dab lexical #1/6, cleanup 2012-08-03 20:09:34 +02:00
h_vogt 96d2ff96e0 alloc.c: exlude controlled_exit if not MS Windows
not available in some tests in cmaths and executable like ngproc2mod
2012-08-03 08:28:50 +02:00
rlar 64d00a6b43 lexical #3/3, collapse append(NULL) into cp_ccom()
the sequence
   orig_wlist = wlist;
   append(NULL);
   cp_ccom(wlist, ...);
 is transformed.

 expressions to care about in cp_ccom()
    C1 :=  (wlist->wl_next != NULL)
    C2 :=  (wlist->wl_word != NULL)
    C3 :=  wl_length(wlist)

    D1 :=  (orig_wlist != NULL)
    D2 :=  (orig_wlist->wl_word != NULL)
    D3 :=  wl_length(orig_wlist);

 cases and their significance in cp_ccom():
    orig_wlist = NULL;
    wlist = wl_cons(NULL, NULL);
      C1 == false
      D1 == false
      C2,C3 dont care

    orig_wlist = wl_cons(E1, wl_cons(E2, ... wl_cons(En, NULL)))
    wlist = wl_cons(E1, wl_cons(E2, .... wl_cons(En, wl_cons(NULL, NULL))))
     C1 == true
     D1 == true
     C2 === D2
     C3 === D3 + 1
2012-08-02 18:55:54 +02:00
rlar fec5b00a0d lexical #2/3, fix memory leaks 2012-08-02 18:55:54 +02:00
rlar 042311d0c3 lexical #1/3, move append(NULL) invokations into position 2012-08-02 18:55:54 +02:00
h_vogt 67e0cf0608 undo controlled_exit: not compatible with ancient tests in cmath under LINUX 2012-08-01 22:10:13 +02:00
rlar 1195498978 lexical #19/19, rewrite 2012-07-31 20:49:34 +02:00
rlar 5b67ecda79 lexical #18/19, rewrite
`cw' won't be looked at, thus the append + removal can be dropped
  `wl_word' is already NULL
2012-07-31 20:49:34 +02:00
rlar f990e517b5 lexical #17/19, rewrite 2012-07-31 20:49:34 +02:00
rlar fa9be4336a lexical #16/19, transform append --> append(word) 2012-07-31 20:49:34 +02:00
rlar 43a6d59c72 lexical #15/19, drop `delayed' which is never zero ... 2012-07-31 20:49:33 +02:00
rlar 47b5e9576d lexical #14/19, drop `delayed = 0' wherever its effect isn't visible
without effect, because we return or will overwrite it anyway
2012-07-31 20:49:33 +02:00
rlar 01df4e9437 lexical #13/19, delay `append'
delay its execution, until
    either `wlist' or `cw' will be accessed,
  or
    a return or goto nloop is inevitable
2012-07-31 20:49:33 +02:00
rlar cff6188fe3 lexical #12/19, use `append'
some `assumption' are no longer valid
2012-07-31 20:49:32 +02:00
rlar 5ad8382cf1 lexical #11/19, aproach `append' here 2012-07-31 20:49:32 +02:00
rlar d61f3c10a0 lexical #10/19, split off `append' from `newword' 2012-07-31 20:49:32 +02:00
rlar af0a0c2c03 lexical #9/19, aproach the `append'
cw has never been NULL here,
   because we used to survive an update of cw->wl_next here

wlist hasn't been NULL either,
  because there is no place where wlist becomes NULL without
  setting cw to NULL as well. yet cw isn't NULL (see above)
aproach the `append'
2012-07-31 20:49:31 +02:00
rlar 74cc38f67a lexical #8/19, express where `wlist' and `cw' start being != NULL 2012-07-31 20:49:31 +02:00
rlar 3cbc4b0773 lexical #7/19, express verbosely where `wlist' and `cw' are NULL 2012-07-31 20:49:31 +02:00
rlar ecb2eec279 lexical #6/19, express cp_ccom() property 2012-07-31 20:49:31 +02:00
rlar 3b575d5e3d lexical #5/19, collapse into `newword' 2012-07-31 20:49:30 +02:00
rlar 348dc2d7d1 lexical #4/19, the `else' can take that job (unconditionally) 2012-07-31 20:49:30 +02:00
rlar 80191f3d44 lexical #3/19, attach and instantly remove a NULL wl_word here
this modification is faithful iff cw != NULL  and  cw->wl_next == NULL
  cw != NULL because we have just survived an update of cw->wl_word
  cw->wl_next == NULL is witnessed by:
    1) cw either NULL or pointing to a wl_cons(,NULL)
    2) cw not being modified, and no wl_next being modified
    3) check of all function invocations with wlist/cw argument
         not to modify any wl_next slot
which are:
  1) cp_ccom(wlist, ...)
  2) wl_free() always followed by goto nloop, which does a cw = wl_cons(,NULL)

and cp_ccom() doesn't modify any wl_next slot

the first part of the patch is intentionally similar to newword
`i' and `buf' can be modified here, because we will inevitably `goto done'
attach and instantly remove a NULL wl_word here
2012-07-31 20:49:30 +02:00
rlar ddebb63425 lexical #2/19, rewrite the `else if' 2012-07-31 20:49:29 +02:00
rlar f2f43bcce7 lexical #1/19, use wl_cons 2012-07-31 20:49:29 +02:00
rlar f36772419a Revert "cleanup, use wl_cons()"
This reverts parts of commit 7a7250cdbd.
There is a cleaner way to rewrite lexical.c
2012-07-31 20:48:01 +02:00
h_vogt b85f6bbc7d controlled_exit() instead of exit() 2012-07-31 17:54:51 +02:00
h_vogt 207adefcda evtprint.c: no node data: error message instead of seg fault 2012-07-30 23:32:54 +02:00
rlar 64b8dfc570 use wl_delete_slice() 2012-07-29 13:11:43 +02:00
rlar cdef8aa10e implement wl_delete_slice() 2012-07-29 13:11:42 +02:00
h_vogt d793dd6a61 variable xtrtol may override the XSPICE reduction of trtol 2012-07-29 12:53:31 +02:00
rlar 26468839d4 plotit(), cleanup wordlist processing 2012-07-28 19:55:09 +02:00
rlar 608e0473d3 copy(), allow NULL argument 2012-07-28 19:53:55 +02:00
rlar b808fcec8a fix typo in the commit `use wl_find()' 2012-07-28 14:52:17 +02:00
dwarning 3c3ba4c731 inpgmod.c: correct the range check to prevent overlap 2012-07-28 13:44:33 +02:00
dwarning fd85e8fd42 indentation 2012-07-28 13:39:00 +02:00
rlar 891d99497d use wl_find() 2012-07-28 12:29:23 +02:00
rlar e2be942b72 implement wl_find() 2012-07-28 12:29:22 +02:00
rlar 60398d113c plotit.c, prepare for usage of wl_find() 2012-07-28 12:29:19 +02:00
rlar 7a7250cdbd cleanup, use wl_cons() 2012-07-27 21:50:05 +02:00
h_vogt 1754427bee enhtrans.c: indentations 2012-07-25 23:05:28 +02:00
h_vogt 20429eec4d message "OpenMP: %d threads are requested..." removed 2012-07-25 23:04:13 +02:00
h_vogt 9b122d30a3 enhtrans.c, improved error meassage upon non 'Exxx poly' line bug 2012-07-24 22:04:31 +02:00
h_vogt 12e60822fb measure.c: indentations 2012-07-23 23:26:20 +02:00
h_vogt ed5491c179 measure.c: Update on error message for .meas 2012-07-23 23:23:42 +02:00
h_vogt d1d2ff94e4 measure, error message updated and return(NAN) in case of measure failure
test for failure with isnan()
2012-07-23 22:57:32 +02:00
rlar 05e5854268 plotit.c, whitespace cleanup 2012-07-23 19:17:25 +02:00
rlar 512644ca34 rewrite using wl_ functions 2012-07-22 11:58:29 +02:00
rlar cd2cab2a94 bug fix, cp_ioreset(): fclosing an already closed stream
causing memory corruption when using `>&' stderr redirection
2012-07-22 11:56:25 +02:00
h_vogt 4d0d0fafb9 repair broken ternary function in B-Source
failed if parameters were included in function.
fixed by finding nested parens in gettok_char()
2012-07-21 22:23:49 +02:00
h_vogt c3141d94e0 table: prevent crashes upon wrong inputs, allow time, temper, hertz as part of device or node name (e.g. Rtime), remove some memory leaks 2012-07-21 21:18:24 +02:00
rlar 1e65ea9e80 rewrite using wl_ functions
this fixed following bug as well:
   echo "echo abra ; ; echo kadabra" | ngspice -p
building a circular list and looping forever
2012-07-21 18:22:10 +02:00
rlar 561d30e5bf implement wl_chop() 2012-07-21 14:42:18 +02:00
h_vogt 87c80b842c gettok_char(), return(NULL) if substring not found 2012-07-19 23:16:15 +02:00
rlar fee664bc19 untabify 2012-07-19 20:26:13 +02:00
rlar 31ee05ceef mw_coms.c, fix the cleanup using wl_cons() 2012-07-19 20:25:06 +02:00
rlar 8d0306c27a cpif.c, whitespace, indentation, cleanups 2012-07-19 20:15:33 +02:00
rlar 75d6f6da5e cpitf.c, cleanup using wl_ functions 2012-07-19 20:15:30 +02:00
rlar 3062e25184 mw_comms.c, whitespace, indentation, cleanups 2012-07-19 18:49:27 +02:00
rlar 95978d3697 mw_coms.c, cleanup using wl_cons() 2012-07-19 18:49:25 +02:00
rlar 2b859633a1 fix the fix wl_reverse() for empty lists 2012-07-15 19:42:09 +02:00
rlar a890a55937 fix wl_reverse() for empty lists 2012-07-14 12:39:13 +02:00
rlar 5859f1a61d comments for wl_cons(), wl_append_word() and wl_chop_rest() 2012-07-14 12:39:02 +02:00
rlar 9655b9885a cleanup, use wl_cons(), wl_append_word() and wl_chop_rest() 2012-07-14 10:23:51 +02:00
rlar d9ddaec784 implement wl_cons(), wl_append_word() and wl_chop_rest() 2012-07-14 09:18:39 +02:00
h_vogt 8defa56cf6 remove second call to tmpfile() 2012-07-14 00:10:21 +02:00
rlar 2a22c1b23c bug fix, missing update of a wordlist's wl_prev pointer 2012-07-12 20:44:53 +02:00
rlar e1f8033f1c bug fix, incorrect update of a wordlist's wl_prev pointer 2012-07-12 18:49:01 +02:00
h_vogt 4ca6e56863 printf() ---> out_printf(): allow output redirection into file 2012-07-11 18:56:19 +02:00
rlar 9b34d99e51 emphasize the adms3 `U' device hijack 2012-07-07 20:13:05 +02:00
rlar 84b58ebd3b don't mess with libtools --enable-static / --enable-shared
tie libspice to -shared
    ngspice et al to -static

and use $(STATIC) elsewhere
  which is governed by configure.ac
2012-07-07 14:51:43 +02:00
rlar cb0a48801d introduce AM_CFLAGS = $(STATIC) 2012-07-07 14:51:39 +02:00
h_vogt a0b64a8624 spfactor.c, indentations 2012-07-07 10:04:21 +02:00
h_vogt 2bff8985e3 Adding TD to the fopen() is sufficient in MS Windows
to reliably unlink the temporary file
2012-07-07 09:53:35 +02:00
dwarning c9b729032d no double count of area for capacitances 2012-07-04 22:41:56 +02:00
dwarning dcc22ada60 new scalable diode model including tunnel component 2012-07-04 08:14:33 +02:00
h_vogt cc44d34f70 tmpfile() on MS Windows
create temporary files with Microsoft specific fopen() flags "TD"
and (propably redundant) remove them with an atexit() handler

see bug report #3535348
  "sp*.tmp file created, but not deleted when Windows UAC is en"
  https://sourceforge.net/tracker/?func=detail&atid=423915&aid=3535348&group_id=38962
2012-07-03 18:38:30 +02:00
h_vogt 3a603cf17c Visual Studio: isatty --> _isatty 2012-07-02 19:45:43 +02:00
h_vogt 14914025c0 measure_at(), allow real valued data for meas ac 2012-06-26 23:43:50 +02:00
h_vogt 0207dc7239 no exchange of ' ' by { } inside .control section 2012-06-26 23:28:31 +02:00
h_vogt 188acd0060 correct usage of `unlink()' error return value -1 2012-06-25 15:13:02 +02:00
dwarning 4a75ce744d dioload.c, diosetup.c, correct knee current parameter defaults 2012-06-25 07:43:27 +02:00
dwarning a7ffb7d69f dio/dioload.c, whitespace change 2012-06-25 07:31:03 +02:00
rlar f661a1032d bug fix, ltra and tra, (initial conditions)
reported in
  https://sourceforge.net/tracker/?func=detail&atid=423915&aid=3535544&group_id=38962

bug was introduced in this commit:
  Date:   Wed Dec 31 17:02:46 2003 +0000
  Cleaned up LTRA, TRA and URC code and updated DEVICES file.
2012-06-16 13:06:28 +02:00
dwarning 9648238ed7 call omp_set_num_threads once in central place instead in model routines 2012-06-15 23:14:08 +02:00
rlar b398d39772 xpsice, use the CFLAGS when linking .cm code models 2012-06-13 19:15:28 +02:00
dwarning 9ea4897d06 use unified macro USE_OMP and nthreads is set in setup once - not in load as clause 2012-06-13 19:15:27 +02:00
h_vogt fde8c46356 add ac and dc simulation to memristor model 2012-06-13 19:15:25 +02:00
h_vogt f53eb5cf78 memristor code model in extradev 2012-06-13 19:15:24 +02:00
h_vogt 7bfd4edefc FABS() --> fabs() 2012-06-13 19:15:23 +02:00
h_vogt ff11ccda20 In B source the argument to 'log' may be 0 upon start of simulation, allow recovery like in function 'ln' 2012-06-13 19:15:22 +02:00
h_vogt 0a087a47c8 enable B source debugging in behavioral models, exit on error if variable strict_errorhandling is set 2012-06-13 19:15:21 +02:00
h_vogt 07727f74f0 commands.c: 'options' equivalent to 'option' and allow 'loadsnap' and 'savesnap'
which have been EXPERIMENTAL_CODE so far
2012-06-13 19:15:14 +02:00
dwarning 1c4f960b45 update `bsim3soi' aka `b4soi' 2012-06-13 19:15:07 +02:00
rlar 5bb4c56165 outitf.c, cleanup 2012-06-12 21:26:31 +02:00
rlar 05fd5a03d6 outitf.c, cleanup cancer of the semicolon 2012-06-12 21:26:31 +02:00
rlar 4202354704 outitf.c, cleanup comment 2012-06-12 21:26:31 +02:00
rlar ccea57570e outitf.c, cleanup return 2012-06-12 21:26:31 +02:00
rlar 486ffc9429 outitf.c, whitespace 2012-06-12 21:26:31 +02:00
h_vogt c78d71c363 .nodeset all = value added to set all voltage nodes at once 2012-06-12 21:26:31 +02:00
rlar a34cbdbeab tiny cleanup 2012-06-12 21:26:30 +02:00
rlar b1cbebaa99 fix tcl module compilation
test programs don't compile when compiling for TCL_MODULE
due to redefinition of fprintf()
2012-06-12 21:26:30 +02:00
rlar 6ae6223250 misccoms.c, com_quit(), implement exitcode 2012-06-12 21:26:30 +02:00
rlar 5436de5bab misccoms.c, tiny rewrite 2012-06-12 21:26:30 +02:00
rlar 8dcf132199 misccoms.c, shrink scope 2012-06-12 21:26:30 +02:00
rlar cc32eae60b misccoms.c, collect byemessage() 2012-06-12 21:26:30 +02:00
rlar b9c0159cd6 misccoms.c, noask 2012-06-12 21:26:30 +02:00
rlar 41de8d95ff misccoms.c, collapse strings 2012-06-12 21:26:30 +02:00
rlar 11878ee4ad misccoms.c, use strncasecmp() 2012-06-12 21:26:30 +02:00
rlar 5f3b453a30 misccoms.c, indentation and whitespace cleanup 2012-06-12 21:26:30 +02:00
rlar f65cdd2f84 Changed line ending of several files from DOS to UNIX 2012-06-12 21:26:29 +02:00
rlar 3d34b22ebf fix file modes 2012-06-12 21:26:29 +02:00
h_vogt a212be67bc Exit with error if file not found: fgets() cannot read from NULL 2012-06-12 21:26:29 +02:00
rlar 14f884729c raw_write() always fopen("wb"), even on windows use "\n" line termination 2012-06-12 21:26:29 +02:00
rlar 10e5dbfbcc raw_read() always fopen("rb") even on windows, always swallow "\r" 2012-06-12 21:26:29 +02:00
rlar e598598d70 Reverting "NUMDdump(): add binary mode"
This reverts commit 40e8f868da
2012-06-12 21:26:29 +02:00
rlar d8105873db remove error.h, use fteext.h for controlled_exit() 2012-06-12 21:26:29 +02:00
rlar a9eb96e164 avoid `ambiguous else' Warning 2012-06-12 21:26:29 +02:00
h_vogt 023374fa79 update `making xspice' within actual ngspice 2012-06-12 21:26:27 +02:00
h_vogt 40e8f868da NUMDdump(): add binary mode
fopen() with wb
write operating point (external state) for true binary output
2012-06-12 21:26:27 +02:00
h_vogt 80ca57eb76 beautify code 2012-06-12 21:26:27 +02:00
h_vogt d65259fd45 error return only if variable `error' is set 2012-06-12 21:26:27 +02:00
h_vogt ca8e9b2d2d prevent false outputs of @dev[param], when not defined in ac simulation 2012-06-12 21:26:27 +02:00
h_vogt fe86d3d5c7 Enable ctrl-c to interrupt a simulation also for Windows GUI 2012-06-12 21:26:27 +02:00
h_vogt a820a7cba8 Independent variable `temper' now returns the temperature in degree C 2012-06-12 21:26:27 +02:00
h_vogt a51953d93e allow `time', `temper', and `hertz' in expressions of behavioral R,L,C devices 2012-06-12 21:26:27 +02:00
rlar bde3536ecc subckt.c, doit(): fix another memory leak 2012-06-12 21:26:27 +02:00
rlar e3402554f0 subckt.c, doit(): fix a memory leak 2012-06-12 21:26:27 +02:00
h_vogt dcde15afd2 exclude circuits with XSPICE 'A' devices from using 'savesnap'
XSPICE data storage is not yet implemented
2012-06-12 21:26:26 +02:00
rlar 58b0614467 fix memory leaks in ASRC and in INPgetTree()
implement a reference counter `usecnt' for the elements
  of the `INPparseTree'
2012-06-12 21:26:26 +02:00
rlar 4fb75fbd51 INPgetTree(), express the live range of some globals 2012-06-12 21:26:26 +02:00
rlar d21b3a3cd5 mkfnode(), minor rewrite 2012-06-12 21:26:26 +02:00
rlar e889c821d1 configure.ac, fix `NO_X' and `has_no_help'
drop configure options `--enable-x' and `--disable-x'
use `--with-x' and `--without-x' provided by AC_PATH_X

bug tracker item:
  [ngspice-Bugs-3515015] Startup error message without x11
  https://sourceforge.net/tracker/index.php?func=detail&aid=3515015&group_id=38962&atid=423915
2012-04-06 16:19:49 +02:00
rlar 7641450b29 inpptree.c, fix differentiation of PTF_FLOOR PTF_CEIL and PTF_POW 2012-04-05 21:55:44 +02:00
rlar 149345068f update bison generated files 2012-04-05 21:33:54 +02:00
rlar 3bb2bd8e05 fix memory leak in PTparse() 2012-04-05 21:30:41 +02:00
rlar 15bda2b9e0 fix memory leak in PPparse() 2012-04-05 21:30:05 +02:00
rlar 76336fa21b fix memory leak in cp_vset() 2012-04-05 21:25:04 +02:00
rlar 9a75774e36 inpptree.c, polish comments 2012-04-05 21:24:48 +02:00
rlar 42653f7c3d inpptree.c, fix premature memory allocation 2012-04-05 21:24:25 +02:00
Michael Woodworth 3375e1b976 fix a memory leak in parse_line()
This has a HUGE affect on memory usage
2012-04-05 20:49:09 +02:00
h_vogt 8b780fa42b bug_fix: R,L,C instantiations, tc1, tc2, numbers followed by `:'
Ternary function was not recognized in R, C, or L lines
  if no voltage or current node was part of the expression,
  because then B-Source is not used.
In these cases now inp_fix_ternary_operator_str() is called explicitly.

tc1, tc2 were sometimes recognized falsely,
  if part of a token e.g. tc1end.

R, C, and L models are never commented out,
  because their names may be token no. 4 or 5 in an R, C, or L line,
  and will not be recognized if 5.

INPevaluate() will now correctly evaluate a number if followed by ':'
  (number may be part of the ternary function).
2012-03-31 23:42:37 +02:00
h_vogt 232270cbc4 bug fix, inp_bsource_compat(): `tc1=' `tc2=' `reciproctc=' `}'
don't substitute `tc1=' `tc2=' `reciproctc='
don't fail when processing tokens followed by `}' chars
2012-03-30 22:56:15 +02:00
rlar e91e3c4ec7 lingrid(), avoid buffer overflow
Bug ID: `Buffer overflow detected - ID: 3510521'
    reported by Zsolt Makaró

  The variable `mag3' sometimes seems to take
    unexpected values
    (for example log10 can be -Inf, which will be casted to 0x80000000)
  and seems then to have overflown a buffer buf[LABEL_CHARS]
2012-03-27 21:07:12 +02:00
rlar 6e829f7cc4 rewrite subckt.c
transform doit() into a true recursive version,
    drop usage of global variables
  reduce scope of many variables
  cleanup and readability

  FIXME,
    an opportunity to plug a memory leak is visible now.
2012-03-25 20:19:42 +02:00
rlar da06afb895 bug fix, numnodes()
in response to the `ex-41.cir' test case
    distilled from a Dietmar Warning Bug report in
      "Subject: Re: subckt, param"

  translate() is called recursively and depends on
    `num of nodes' provided by numnodes().
  numnodes() depends on availability of `su_numargs'.
  But the processing allows non-processing of subckt instantiations
    in inner recursions (which will be processed later)
    which means `su_numargs' is not always available.
2012-03-25 18:54:10 +02:00
rlar a1ea1b3193 round to next nearest integer for the rise, fall and cross arguments of `measure'
Simon Guan reported
  Bug item #3509528, `Meas goes wrong when put in a while loop'

In a .control block a `let' variable was passed to the `measure' command.

The value of this variable would have been a plain integer,
  yet it was converted internally to an internal ascii representation
    with exponential representation  (203 ==> 2.03e2)
  and then processed by `ft_numparse()' where it was converted back to
    double floating point.
  Because the intermediate 2.03 has
    no exact representation in the space of double floating point numbers
    this conversion was lossy and resulted in a non-integer value.
  This non-integer was then truncated towards minus infinity in com_measure
    yielding an error of -1

This commit implements round to nearest in com_measure2
  to avoid the problem.

FIXME,
  the internal intermediate conversion of double floating point machine
    values to ascii representations must be dropped,
  or replaced with an exact/lossless ascii representation.
    (for example GNU printf/scanf %a or 64bit hexadecimal representation)
2012-03-25 11:08:48 +02:00
h_vogt b4516b08ca bug fix, iplot(): Buffer overflow
Thanks to Zsolt Makaró for the bug report in
  Buffer overflow detected - ID: 3510521
  http://sourceforge.net/tracker/?func=detail&aid=3510521&group_id=38962&atid=423915
2012-03-24 18:29:36 +01:00
h_vogt 0a2e031cb1 bug fix, inp_fix_subckt(): problem when parsing a .subckt line
this worked
  .subckt psub a b p2 = {p1*2-1} p1 = 1
but this failed
  .subckt psub a b p2 = { p1 * 2 - 1 }  p1 = 1

thanks to Ivan Riis Nielsen for the report in Message
  [Ngspice-devel] parsing problem (ngspice-24 tarball)
2012-03-24 18:29:36 +01:00