Commit Graph

288 Commits

Author SHA1 Message Date
Vogt f95e8c2e3a Error and warning messages to stderr 2024-08-01 13:28:32 +02:00
Holger Vogt 36bc67ecbb Save the wordlist sourceinfo to the current circuit.
Remove sourceinfo only upon 'quit'.
2024-05-14 16:30:59 +02:00
Holger Vogt e151b691fb Add an additional funtion parameter 'filename' to fcn inp_readall
to transfer not only the folder, but also the file name of the
current input
2024-05-14 16:28:40 +02:00
Giles Atkinson 5f59d76a03 Suppress some warnings from MSVC. 2024-05-01 10:31:25 +02:00
Holger Vogt 054a65c2d5 Fix a bug in 'reset', where .subckt are not transformed
due to wrong line count in dynmaxline.
2024-03-15 19:20:47 +01:00
Holger Vogt f5c0a1420c Upon a warning on a model issue, ngspice should not bail out,
even if strict_error is set, as typically the simulation will
run and foreign models often have additional unsupported, but
less important parameters.

It shall however, exit if the simulation is interrupted due
to an error and strict_errorhandling is set.
2024-03-09 23:41:34 +01:00
Giles Atkinson 07ce9c788e Recognise *ng_script_with_params" in the first line of the first
program input file to mean that the file is a pure interpreter
script that receives any remaining command arguments.
In winmain.c ensure that the argv array is NULL-terminated
and tidy some code.
2023-11-27 17:06:39 +00:00
Holger Vogt 86e991515e Enable compiling with MINGW under MS Windows 2023-11-18 20:09:49 +01:00
Holger Vogt 70e366021b Generate seed numbers from a microseconds clock, not a seconds clock 2023-11-17 18:35:21 +01:00
Holger Vogt 29bfe94318 Exclude some code under a unified #undef REM_USED 2023-11-13 12:32:15 +01:00
dwarning 2cf2693706 few code cleanings 2023-11-12 17:04:36 +01:00
Holger Vogt 39443fafdd Removing unused models takes much more time than keeping them
for large circuits.

Probably a hash table may help here (t.b.d.).
2023-10-18 14:36:08 +02:00
Holger Vogt 9edf34495e Don't say 'issue in line no. 0', as this 'info' does not tell
where the line with position 0 really is in the input deck.
2023-10-09 23:19:30 +02:00
Holger Vogt e449c894ce Prepend title line by '*' if printed by 'listing r'.
This allows skipping all pre-processing.
2023-09-27 15:51:16 +02:00
Holger Vogt 64307ba907 Add a title line to 'listing r', so the resulting output may be
re-loaded by the 'source' command.
2023-09-10 13:44:18 +02:00
Holger Vogt 0f14c690d5 Stat. functions: safeguard against divide by zero, return nominal value 2023-08-26 10:15:08 +02:00
Holger Vogt 9c2a87a469 Remove buggy if clause, add safeguards against buggy input 2023-08-12 15:11:21 +02:00
Holger Vogt d3dccc68b2 Error print output consistenly only to stderr.
Replace out_printf by fprint(stderr, ...
2023-07-15 11:28:25 +02:00
Holger Vogt 4421d95379 improve comment 2023-07-15 11:27:14 +02:00
Holger Vogt 53b72a7693 Skip title line when resorting .params, .meas, .temp 2023-07-15 11:25:27 +02:00
Holger Vogt d295fe3ac6 Slightly improve error handling and warning message 2023-05-27 10:50:02 +02:00
Holger Vogt 823465ceb8 .csparam: Add some safeguarding against wrong input and crash,
allow multiple parameters in a .csparam row (like .param).
2023-05-27 10:49:53 +02:00
Holger Vogt 8f8f7ff8ab Command 'listing r': No extra formatting, truncation etc.
of netlist lines when printing to file or console.
2023-04-01 13:50:17 +02:00
Holger Vogt d2fb3fb16b Prevent memory leak.
Remove use controls.
Safeguard against NULL.
2023-03-18 14:34:57 +01:00
Holger Vogt 50173ac617 Enable potential calls to tprint() for debugging 2023-03-18 14:32:04 +01:00
Pascal Kuthe acfaf023b3 prototype for Verilog-A integration using OSDI and OpenVAF
This initial prototype is capable of performing DC, transient and AC
analysis. Not all features of OSDI are supported yet and there are still
some open questions regarding ngspice integration. However many usecase
already work very well and a large amount of CMC models are supported.
The biggest missing feature right now is noise analysis.

test: test case for diode DC working with SH

test: add transient analysis to osdi_diode test

test: added docu text to osdi_diode test

test: added test case directories

fix: bug in osdi_load

test: small change to netlist

fix: implement DEVunsetup

fix: correct behaviour for MODEINITSMSIG

test: osdi diode enable all analysis modes

removed netlist

ignoring test results

added the build of the diode shared object to the python test script

deleting old stuff and always rebuilding the shared object

added diode_va.c to the repo

preparing CI

Create .gitlab-ci.yml file

(testing) add res, cap and multiple devices test

feat: use osdi command to load files

Previously OSDI shared object files were loaded from fixed directories.
This was unreliable, inconvenient and caused conflicts with XSPICE.

This commit remove the old loading mechanism and instead introduces the
`osdi` command that can load (a list of) osdi object files (like the
codemodel command for XSPICE). A typical usecase will use this as a
precommand in the netlist:

.control
pre_osdi foo.osdi
.endc

If the specified file is a relative path it is first resolved relative
to the parent directory of the netlist. If the osdi command is invoked
from the interactive prompt the file is resolved relative to the current
working directory instead.

This commit also moves osdi from the devices folder to the root src
folder like xspice. This better reflects the role of the code as users
may otherthwise (mistakenly) assume that osdi is just another
handwritten model.

test: update tests to new command

fix: do not ignore first parameter

feat: implement log message callback

fix: don't generate ddt matrix/rhs in DC sweep

fix: missing linker script

update to osdi 0.3

(testing) simplify test cases, fix bug

(testing) multiple devices test improvement

(testig) node collapsing bugfix

test: increase tolerance in tests

feat: update to newest OSDI header

fix: temperature update dt behaviour

fix: ignored models

fix: compilation script

fix: allow hicum/l2 to compile with older c++ compilers

fix: set required compiler flags for osdi

fix: disable x by default

fix: add missing SPICE functions

fix: update diode to latest ngspice version

feat: implement python CMC test runner

doc: Add README_OSDI.md

fix: make testing script work with python version before 3.9

fix: free of undefined local variable

fix: do not calculate time derivative during tran op

update osdi version

fixes for compilation on windows
2022-12-27 13:51:57 +01:00
Holger Vogt 59e28ac2a2 Remove mentioning line number 0, which has been incomprehensible. 2022-12-11 15:30:12 +01:00
Holger Vogt 4b15632f9b Function ngSpice_Circ() may receive empty lines.
Skip these lines while setting the netlist.
2022-10-26 22:24:52 +02:00
Holger Vogt 97ee2d8047 Fix typo 2022-10-26 17:48:34 +02:00
Holger Vogt 1bcbe8e6d8 Don't send error message to stdout, but to stderr. 2022-10-08 16:44:01 +02:00
Holger Vogt 43c5ffaae8 Add special savecurrents options:
options savecurrents_bsim3, savecurrents_bsim4, and savecurrents_mos1
will save all device currents as listed in chapts 31.6.1, .8 and .9
of the ngspice manual. Pure savecurrents will yield a subset of MOS1
currents, as seen before.
2022-10-07 13:24:12 +02:00
Giles Atkinson b1341c8e30 Insert XSPICE bridging devices automatically when an analogue node
has the same name as an XSPICE event node (including digital nodes).
The function Evtcheck_nodes() is replaced by a new version in its
own file.
2022-10-07 13:19:59 +02:00
Holger Vogt 3da97fa277 Handle .if ... .else ... .endif before .csparam is executed,
thus allowing parameter entry to .control section being dependent
on .if
2022-10-07 13:10:31 +02:00
Holger Vogt 9e1eac0613 Correct comment: Command circbyline is not involved,
we are sending the netlist as an array.
2022-10-07 13:03:18 +02:00
Holger Vogt c26e4c990a Move evaluation of statistical functions inside of a B source
to after numparam expansion, thus allow parameters in functions agauss etc.

Replace gettok by new gettok_np to ignore characters ( ) ,
which may be left over after parameter expansion.

This fixes bug 593.
2022-10-07 13:01:33 +02:00
Holger Vogt c76efd47ed If the 'source' command fails, fall back to the input
only if in interactive mode. Otherwise exit.
2022-10-07 11:36:07 +02:00
Holger Vogt 597bc9edd0 Remove a typo: runable --> runnable 2022-04-26 10:34:11 +02:00
Holger Vogt 632f8c033d Make numoparam error messages more user friendly.
Add line number of netlist to the message.

Original line number added to new lines in inpcom.c.
Internal error messages only when 'ngdebug' is set
2022-01-15 13:43:26 +01:00
Holger Vogt 1558c5abcb Add a suitable error message and fallback to default temperature
if an error in the temperature entry is found.
2022-01-13 14:48:35 +01:00
Holger Vogt 5a065c1657 Originally only '.temp 125' had been accepted.
There has not been any error message if '=' was used,
the temperature just had been set to 0°C.
Now also '.temp=125' or .temp='param' are accepted.
2022-01-13 10:06:27 +01:00
Holger Vogt b59d2aabd1 .probe: Add function call to modprobenames()
Function resides in inpc_probe.c.
The function renames all current measurement instances
vcurr_instance:node#branch to instance:node#branch by
modifying the global instance table (tab).
2021-12-13 21:47:37 +01:00
Holger Vogt bd0113ea9a Feature request 85: Enable .save within subcircuits
inp.c: Add .save to wl_first only after subcircuit expansion
subckt.c: treat .save like .ic
2021-10-29 16:40:06 +02:00
Holger Vogt 5d116d1fb9 command listing: add option r (runable)
listing r > $inputdir/mycirc_runable.cir
will save the expanded netlist without line numbers,
ready to be sourced again and run in ngspice.
2021-09-29 20:29:26 +02:00
Holger Vogt f06496c912 Enable command 'optran' in spinit or .spiceinit,
when the circuit is not yet loaded.
Then the optran data are stored in static variables,
until optran is called again with arg NULL from inp.c,
to set the data in ft_curckt->ci_defTask.
2021-09-29 20:15:13 +02:00
Holger Vogt 0f25c25c7e Remove a memory leak
Make inp_rem_levels non-static
and use it to remove 'root' after it has been used.
2021-07-05 19:42:14 +02:00
Holger Vogt 36069467fb Clarify that 'scale set to ...'
is not a query, but a statement
by 'scale is set to ...'..
2021-07-05 14:25:49 +02:00
Holger Vogt c2d11728c4 enable usage of parameters in .options lines. 2021-07-05 14:11:26 +02:00
Holger Vogt 78eee72b36 .temp could not apply params like
.ttemp {tmpparam}:
move evaluation of .temp to a later stage
2021-07-05 14:11:03 +02:00
Holger Vogt 4fd7de9e34 Partially re-introduce and improve code that has been
inadvertently deleted in commit

83592c456 ("unify the evaluation of '.options scale=xx'
.option in a netlist will override 'options' from spinit,
.spiceinit or a script '.options scalm=xx' yields a warning,
it is not supported.", 2021-04-05)

The code transforms the option statements and adds them
to the current circuit.
2021-07-05 14:09:56 +02:00
Holger Vogt 2536b78acb Allow tailing '\0'
Remove potentially user induced buffer overflow by replacing
sprintf by snprintf.
2021-07-02 11:57:30 +02:00