Commit Graph

6040 Commits

Author SHA1 Message Date
Holger Vogt d239a523e0 remove memory leak 2021-01-20 16:48:46 +01:00
Holger Vogt ed15d6f975 replace controlles_exit by error return,
delete netlist cc when returning upon error.
2021-01-20 16:48:27 +01:00
Holger Vogt 058f474f90 Prevent crash if netlist input is something like
H n1
2021-01-20 16:48:08 +01:00
Holger Vogt a86a500b07 checkspeed: use startclock instead of lastclock to ensure
Linux compatibility.
2021-01-20 16:47:48 +01:00
Holger Vogt 2a2a488f7d If 'set ngdebug', and if transient simulation,
create a vector speedcheck in the tran plot
which contains the real time versus simulated time,
to check for obstacles during the course of the
transient simulation. If command 'save' is given,
one has to add speedcheck to obtain this vector.
2021-01-20 16:47:27 +01:00
Holger Vogt 65cb50a243 redo the reading for ngate parameter
if larger than 1.000001e24, assume m3 instead of cm3
2021-01-20 16:47:11 +01:00
Holger Vogt c891bf846c reduce precision to avoid false rounding 2021-01-20 16:46:59 +01:00
Holger Vogt c9eeb0ceea Modify get_number_terminals() and make it non-static.
Use modified function to replace fixed node number.
2021-01-20 16:46:37 +01:00
Holger Vogt b640e57c39 re-enable getting correct node numbers for bipolar
using TSMC cv018bcd
2021-01-20 16:46:27 +01:00
Holger Vogt 273b0fb4a3 fix a plotting bug with xlog axis and ylabels 2021-01-20 16:45:54 +01:00
Holger Vogt 822a63974f Unused binning models are removed.
Flag 'nf', when given on the x lines, is
recognized.
Tested with TSMC, Skywater, and X-Fab model
files.
2021-01-20 16:44:57 +01:00
Holger Vogt e601325149 Avoid any buffer overflow if user provides a large TABLE:
Replace fixed length strings and fcn 'cat' by dstrings.
2021-01-20 16:44:19 +01:00
Holger Vogt 059e869754 free the wordlist wle to avoid memory leaks 2021-01-20 16:42:33 +01:00
Holger Vogt 02630c0af2 fix a bug in printing the compatibility status 2021-01-20 16:41:53 +01:00
Holger Vogt 5af7f0ff78 sort instance list entries: RHS numbers (like nf=2) come first,
expression then follow.
2021-01-20 16:41:25 +01:00
Holger Vogt 4a6fff05b6 typo 2021-01-05 23:11:50 +01:00
dwarning a81a84c208 allow strobe and finish commands 2021-01-05 21:57:48 +01:00
Holger Vogt 4a8065c3ee replace strncpy by memcpy to prevent valgrind error message
on uninitialized string.
2021-01-05 17:21:23 +01:00
dwarning aedf9d0eb5 correct choice for both r model types 2021-01-05 11:18:07 +01:00
dwarning 08700f8147 include verilog-a r2_cmc resistor model 2021-01-05 11:12:09 +01:00
dwarning b654296230 rm independent terms from ddx() operator 2021-01-05 11:07:29 +01:00
dwarning 43e9a8f594 activate command 2021-01-05 11:07:24 +01:00
Holger Vogt 8a21f6f2c0 enable OP information for hicum0 and mextram 2021-01-05 11:07:05 +01:00
Holger Vogt 176023f470 Remove compiler warnings 2021-01-03 14:28:22 +01:00
Holger Vogt eedb5b9027 Update for ngspice-34 2021-01-03 08:47:47 +01:00
Holger Vogt 0d4685f459 preliminarily turn off fcn nlist_model_find()
to avoid compiler warning
2021-01-02 23:29:35 +01:00
Holger Vogt e2650a2897 Patially undo commit [f9d9b6]:
macOS gcc/llvm complauns about non-existing -Wunused-but-set-variable
2021-01-02 23:00:19 +01:00
Holger Vogt 94eac89749 Remove 'comment out any unused models' for now, it
has been working, but led to spurious error messages.
Has to be checked more thoroughly.

Add a ngbehaviour setting 'mc', needed for running
'make check'. It will unset all other compatibility modes
and suppress the note on compatibility settings which
led to a 'make check' failure just due to its printout.
2021-01-02 19:12:26 +01:00
Holger Vogt 89f0fb6d74 sharedspice: make reading .spiceinit as robust as in
the standard executable.
2021-01-02 19:11:51 +01:00
Holger Vogt 1234c3bdf8 Update to the compatibility mode:
Rename new_compat_mode() to set_compat_mode().
Add fcn print_compat_mode() to print out
the selected compatibility mode.
2021-01-02 19:11:44 +01:00
Holger Vogt 164d3dd20c Enable models with parens by using gettok_parens() like
.model NP NPN(BF=125 Cje=.5p Cjc=.5p Rb=500)
2021-01-02 19:11:29 +01:00
dwarning a5cb4f2d20 hicum0 prevent crash in self heating mode 2021-01-02 19:10:42 +01:00
Holger Vogt 9485a51928 Re-enable the 'hardcopy' command
Fixes support-requests #53 by Paolo M.
2021-01-02 19:10:30 +01:00
dwarning 0e9d1c50a4 add latest available psp103 version to adms 2021-01-02 19:07:55 +01:00
Holger Vogt 70d1647cfa Update to ps .model selection for MOS,
add support for bipolar (Mextram, lateral pnp),
enable 'level = nn' (with spaces).
2021-01-02 19:07:16 +01:00
Holger Vogt 3c354092ff Line endings from \r\n to \n 2021-01-02 19:06:58 +01:00
Holger Vogt 2e9a51f2f7 Each model is checked only once
(not the same model check for every instance).
Add model comparison warning to file.
2021-01-02 19:06:37 +01:00
Holger Vogt 8602915942 level for ekv2.6 is 44 2021-01-02 19:06:17 +01:00
Holger Vogt 50ec89e284 PS compatibility: select appropriate level for MOS models 2021-01-02 19:05:41 +01:00
Markus Mueller f9d9b6deba fix "unused but set variable" warnings 2021-01-02 19:05:18 +01:00
Holger Vogt b1daabbe95 update the model checking 2021-01-02 19:05:01 +01:00
Holger Vogt 03a68683ca Update on error checking for bsim4.6 model 2021-01-02 19:04:24 +01:00
dwarning fdf7a6a868 More effective check for BSIM3 model parameter 2021-01-02 19:04:07 +01:00
Holger Vogt 49890fe302 Fix the error message when fatal model parameter fail occurs 2021-01-02 19:03:53 +01:00
Holger Vogt 2e34b9d9a3 Improved visibility of model check error 2021-01-02 19:03:42 +01:00
dwarning 420d47cc75 fix max terminal count for vbic and hicum2 adms enabled 2021-01-02 19:03:20 +01:00
Holger Vogt a147a3b190 If we encounter tc1= or tc2= (temp coeffs.) or m= (multiplier),
the expression is done, thus keeping the brackets as is.
Enables tcx={} or m={} with their own expressions, dealt with
by numparam.
2021-01-02 19:02:44 +01:00
Holger Vogt 98eb5bf475 bug #537: remove memcopy with overlapping strings
Bug reported by Ronan BARZIC
2021-01-02 19:02:29 +01:00
Holger Vogt 86f5a9b819 Only print the devices that are really used in the circuit
(don't print the 0 occurencies).
2021-01-02 19:02:07 +01:00
dwarning aaec6be4c6 only one .va file for psp model 2021-01-02 19:01:44 +01:00
dwarning b44f1ad595 only one .va file for psp model 2021-01-02 19:01:31 +01:00
dwarning 336bb3480b psp102 update to latest available version 102.5.0 2021-01-02 19:01:05 +01:00
Holger Vogt e8aea4967c Remove some compiler warnings 2021-01-02 19:00:48 +01:00
Holger Vogt 2359f28812 Remove compiler warning
cast between incompatible function types from
‘void (*)(int,  int)’ to ‘void (*)(int)’
2021-01-02 19:00:29 +01:00
Holger Vogt 19fa671832 Check for correctness of the BSIM4.5 parameters:
If parameter excursions are found, put the warning or error message into a wordlist.
Only then open a file bsim4v5.out and print the data into the file.
2020-12-22 17:56:19 +01:00
Holger Vogt 7bd12a60a6 Enable multiplier 'm' for behavioral resistor
(R using a B source).
2020-12-22 17:56:19 +01:00
Holger Vogt 03556b2215 Add multiplier 'm' to the ASRC instance line.
Default value is 1.
A new 'reciprocm' will determine, if m is multiplied
into numerator or denominator.
2020-12-22 17:56:19 +01:00
dwarning 30ccbc9a18 include ceil and floor function 2020-12-22 17:56:19 +01:00
dwarning 7cef1871bb white spaces, formatting and verilog-a conformity 2020-12-22 17:56:19 +01:00
dwarning 8e4db91099 adms bsimbulk and bsimcmg implementation based on work from Robert Larice 2020-12-22 17:56:19 +01:00
dwarning 9a33791bc1 take care for different types of output variables in analogfunctions 2020-12-22 17:56:19 +01:00
Holger Vogt 014dfe1b7b The old inp_deckcopy() is a safer way of copying, while retaining
the correct line numbers for parameter substitution.
2020-12-22 17:56:19 +01:00
Holger Vogt b1d062668c When there is no model found, and we have an m devices,
set the number of nodes to 4. This has to be fixed (find
a way to detect the number of nodes automatically).
2020-12-22 17:56:19 +01:00
Holger Vogt b0a2ab5729 A FIXME: The number of nodes is fixed to 4!
Better make this flexible, but how to detect this number safely?
2020-12-22 17:56:19 +01:00
dwarning fc70256828 psp102 white spaces and admsXml adaptions 2020-12-22 17:56:19 +01:00
dwarning 1a5016cd49 psp102 rm unused files 2020-12-22 17:56:19 +01:00
dwarning 1f2455d4df PSP102 add description noise functions 2020-12-22 17:56:19 +01:00
dwarning 8ce89a2b80 update version and improve veriloga compatibility 2020-12-22 17:56:19 +01:00
dwarning 46122bab52 extend veriloga compatibility for admsXml compiler 2020-12-22 17:56:19 +01:00
dwarning db1126c1bb update version and improve veriloga compatibility 2020-12-22 17:56:19 +01:00
dwarning 0155d0722b improve veriloga compatibility 2020-12-22 17:56:19 +01:00
Holger Vogt 5366f946eb Remove more compiler warnings 2020-12-22 17:56:19 +01:00
Holger Vogt 238f8d393a Suppress some compiler warnings 2020-12-22 17:56:19 +01:00
Holger Vogt 3c2f6585e0 Add some comment. 2020-12-22 17:56:19 +01:00
Holger Vogt e1eb851ec4 Add function rem_unused_mos_models()
Netlist is flat at this stage, all numbers expanded,
but not yet parsed into the circuit structure.
So again try to remove unused MOS models.
All binning models are still here when w or l have been
determined by an expression from within the PDK.
2020-12-22 17:56:18 +01:00
Holger Vogt 19fb3ec38f make some functions non-ststic to support function
rem_unused_mos_models() in inps.c
2020-12-22 17:56:18 +01:00
Holger Vogt 5ee6a98e4b Add a comment 2020-12-22 17:56:18 +01:00
Holger Vogt 043634b60e Jump over the HSPICE-specific key words 2020-12-22 17:56:18 +01:00
Holger Vogt 8c253524af With the new inp_deckcopy_ln treat the first line
in the deck equal to all other lines.
2020-12-22 17:56:18 +01:00
Holger Vogt 8b376b4581 Remove dot lines somewhat later. 2020-12-22 17:56:18 +01:00
Holger Vogt 777cfcf477 Reduce the memory requirements if there is a PDK with
a lot of binning models.
This is a hack and needs testing!
inpcom.c: If an x line, add w and l to the netlist card,
if available.
subckt.c: select a suitable model bin, discard the rest
for each subcircuit, depending on w and l from above.
inpgmod.c: less restrictive equal for real numbers,
allow both min and max boundaries (problem of equating
real numbers), when the selected device has w or l on
the boundary between two model bins.
2020-12-22 17:56:18 +01:00
Holger Vogt 06ce137741 Remove #ifdef XSPICE from ISRC_CURRENT definition 2020-12-22 17:56:18 +01:00
Holger Vogt cbf4305ff8 Remove the XSPICE dependency of the phase parameter for the
independent voltage source.
2020-12-22 17:56:18 +01:00
Holger Vogt 52f3bd7900 Remove the XSPICE dependency of the phase parameter for the
independent current source.
2020-12-22 17:56:18 +01:00
Holger Vogt fc6f41ae9b Remove the XSPICE limitation of flag "current" (here->ISRCcurrent) 2020-12-22 17:56:18 +01:00
Holger Vogt d6b4184625 typo 2020-12-22 17:56:18 +01:00
Holger Vogt 12ee985a68 Restrict #pragma warning to Visual Studio only. 2020-12-22 17:56:18 +01:00
Markus Mueller c7f732b098 fix hicum warnings 2020-12-22 17:56:18 +01:00
Holger Vogt 79d6f27d74 fix a typo 2020-12-22 17:56:18 +01:00
Holger Vogt f58b38a1ed suppress warning that is not relevant (we don't use floats) 2020-12-22 17:56:18 +01:00
Holger Vogt 9072f40b9a bug 535: re-enale tc1, tc2 even if tokens tc1 or tc2
may be part of other tokens as well.
2020-12-22 17:56:18 +01:00
Holger Vogt aee35e6ef3 No brackets around instance parameters dtemp, temp 2020-12-22 17:56:18 +01:00
Holger Vogt fe24a4135c spice2g6 poly(19 compat:
When counting token, count an expression {...} for the
gain as a single token, even if it contains spaces.
2020-12-22 17:56:18 +01:00
Holger Vogt ced7604fc4 fix comment 2020-12-22 17:56:18 +01:00
Holger Vogt ff3904e1ac re-enable 'external' as an instance parameter for current source. 2020-12-22 17:56:18 +01:00
Holger Vogt 03f9ac82b3 Relax the numerical precision a little bit when
comparing real valued time values.
Fixes bug no 536 reported by Victor Kuchynsky
2020-12-22 17:56:18 +01:00
dwarning cffd55363d prevent c++ compiler warning 2020-12-22 17:56:18 +01:00
Holger Vogt c43c6f6ca4 improve comment 2020-12-22 17:56:18 +01:00
Holger Vogt d24aa7134c E_constant Vconst 0 TABLE {Max(V(DP)-V(GN),0)}=((20,120))
Allow such strange construct, where a single pair x,y will
simplay return a constant y (120 in the above example).
This is used in external devices models and aknowledged
by other simulators.
2020-12-22 17:56:18 +01:00
Holger Vogt df913fb260 If T is below 1 uK, lets set it to 0 (avoid slightly negative values due to numerical issues) 2020-12-22 17:56:18 +01:00