Commit Graph

6867 Commits

Author SHA1 Message Date
dwarning f73d3b20a0 implement typedpnjlim as optional limiter for verilog-a models 2023-02-03 12:57:53 +01:00
Pascal Kuthe 8063e56fdf osdi: fix sigfault when using aliasparam 2023-02-03 12:07:11 +01:00
Holger Vogt 33a3557910 Safeguard against NULL pointers 2023-02-03 11:44:57 +01:00
Holger Vogt 712ed8ac77 Safeguard against stack overflow, when wrongly introduce a circular
parameter dependency
2023-02-03 11:33:36 +01:00
Holger Vogt 20711c1c25 Safeguard against NULL pointers 2023-02-01 22:35:01 +01:00
Brian Taylor 56d0c72924 Add port directions when logicexp or pindly are present. 2023-02-01 17:39:37 +01:00
Brian Taylor 9c9301eca8 Remove delay ifdefs. 2023-02-01 17:38:28 +01:00
Brian Taylor f674b64264 Remove dead code from previous commit. 2023-02-01 17:37:36 +01:00
Brian Taylor f570b04d6c For unspecified gate delays (logic and tristate gates), which PSpice would consider as zero, set the rise and fall delays to 1.e-12s (the minimum for Xspice). For dff, jkff, dlatch, and srlatch use the Xspice default 1.0ns for rise and fall delays. If the ngspice variable (ps_port_directions & 2) is true, write the translated subckt to stdout, with TRANS_OUT prefix, for debugging purposes. The user could edit and replace the translated subckt if desired. 2023-02-01 17:36:36 +01:00
Holger Vogt 26cf1a7a57 max_align_t is used to examine the largest alignment requirement,
and it is expected to check the alignment value via alignof, not sizeof.

Otherwise, __attribute__((aligned)) can complain as required alignment
being invalid, e.g. on s390x.

Patch provided by Mamoru Tasaka, Fedora
2023-02-01 13:10:53 +01:00
Holger Vogt 3598a0d0c1 enable compiling of shared lib without osdi interface 2023-01-30 16:52:14 +01:00
holger b3676bb763 enable make dist 2023-01-30 13:09:15 +01:00
Holger Vogt 2e2b74c188 In the ngspice shared library the fcn ivers is called
with a NULL argument. The fix safeguards against argv0
being NULL.
In this case Spice_Exec_Path is set to NULL, it is
safeguarded against NULL when being used.
2023-01-30 10:58:50 +01:00
Holger Vogt b68f2617c7 Preliminary bug-617 fix:
Don't set temperature to a step beyond the sweep boundaries.
2023-01-29 17:05:56 +01:00
Holger Vogt 6ef94cb9f2 Prevent from endless loop 2023-01-28 17:01:03 +01:00
Holger Vogt 6da2659026 Remove the debug printout 2023-01-27 16:44:54 +01:00
Holger Vogt 4b8d575122 Add a user definable variable enable_noisy_r (for .spiceinit)
to enable noise calculation for all behavioral resistors.
May locally be switched off by instance parameter noisy=0
If enable_noisy_r is not set, noise simulation
may locally be enabled by instance parameter noisy=1.
2023-01-27 16:12:42 +01:00
Holger Vogt 167c708e69 Add searchpath for *.osdi relative to ngspice executable 2023-01-27 16:10:28 +01:00
Holger Vogt 65cd01f3c5 fix comment 2023-01-27 16:09:51 +01:00
Holger Vogt 802ab2a2c5 Do not try to load *.osdi automatically 2023-01-27 16:09:38 +01:00
Holger Vogt be6bd990db Error message to stderr 2023-01-27 16:09:19 +01:00
Holger Vogt b9eef23eed Update the example structure for OSDI/OpenVAF:
all compiled models into lib/ngspice
spinit updated to load the models via command 'osdi'
local calls with 'pre_osdi' commanted out.
2023-01-27 16:08:17 +01:00
Holger Vogt 71002aa42f Prepare for ngspice-39 2023-01-24 15:49:42 +01:00
dwarning 33a2637530 correct header entry 2023-01-24 15:17:14 +01:00
dwarning 9c26206a68 bsim4 version update from 4.8.1 to 4.8.2 2023-01-24 15:16:55 +01:00
Pascal Kuthe d0c35512ab properly abort for invalid OSDI paramters 2023-01-23 12:04:10 +01:00
Holger Vogt 653db022ea better comment 2023-01-20 15:08:26 +01:00
Holger Vogt 3260492987 Enhance the search path for osdi files: when not found rel. to
inputdir, search rel. to current working directory.
2023-01-20 15:08:14 +01:00
Holger Vogt 1280e199a3 Add boolean variables as flags when XSPICE and/or OSDI are enabled 2023-01-20 15:07:57 +01:00
Holger Vogt 49b7cb85db Add a shunt resistor of 1e15 Ohms to any X (subcircuit call) line
when the node name contain 'unconnected' and .probe alli is called.
2023-01-15 13:38:15 +01:00
Holger Vogt 02789b2c42 The modulo function a % n should accept a==0.
The fix adds this to the control section function parser. The numparam
parser already has this feature. n==0 is rejected as usual.
2023-01-15 13:37:57 +01:00
Brian Taylor dcfe4e7134 ERROR messages should be printed to stderr. 2023-01-15 13:37:42 +01:00
Brian Taylor a76f8d5149 Fix some comments. 2023-01-09 16:33:25 +01:00
Francesco Lannutti 167ff74422 enable compiling without XSPICE on specific OSs 2023-01-09 16:32:54 +01:00
Francesco Lannutti 036775efa5 OSDI: fix const declaration, unused variables 2023-01-09 16:32:30 +01:00
Holger Vogt 31b0b640de For memcpy in PREDICTOR 2023-01-09 16:32:16 +01:00
Holger Vogt ebd430e51b A preliminary fix to bug report 612
Don't set series voltage sources when flag probe_alli_nox
is set in .spiceinit
2023-01-09 16:32:00 +01:00
Holger Vogt 1a4880344f Update to fcn tprint:
allow multiple printouts in a single simulation run,
without overwriting the previous printout.
2023-01-09 16:31:44 +01:00
Holger Vogt 164ed05786 enable 'off', 'print', 'save' being part of a node name.
Only plain 'off' (case of bipolar), or 'print', 'save'
(in case of CIDER) will not be allowed.
2023-01-09 16:31:15 +01:00
Brian Taylor 6117836d01 Ensure that amatch output is not binary data. 2023-01-09 16:30:22 +01:00
Brian Taylor 90ec717f3b Add variable ps_udevice_exit. If set non-zero, ngspice will exit if there is an error processing f_logicexp or f_pindly. 2023-01-09 16:29:24 +01:00
Brian Taylor 5e6452099e Return errors from f_logicexp and f_pindly without calling exit. 2023-01-09 16:29:08 +01:00
Brian Taylor 0a3cdf8e3a Add more error checks for f_logicexp and f_pindly. 2023-01-09 16:28:43 +01:00
holger 97e0c0f37e Prevent memory leak while "PREDICTOR" is selected 2023-01-09 16:27:55 +01:00
Giles Atkinson 301f50335d Add limited support for string-valued parameters in .param lines.
The right-hand side of an assignment may be a string expression
made up from quoted strings, and identifiers for other string parameters,
optionally in braces.  There may be no un-quoted spaces.
Example: .param str4=str1"String 4"str2{str3}

Subcircuits may have default and actual string parameters, but the values
must be single identifiers, not quoted strings or string expressions.
2023-01-09 16:26:59 +01:00
Brian Taylor fe52771aff Remove the old inverter code. 2022-12-27 14:21:05 +01:00
Brian Taylor 3578deda80 Refactor new_gen_output_models. 2022-12-27 14:20:43 +01:00
dwarning 26e73c09b3 add instance parameter mulu0 for mobility reduction bsim4.5 and 4.6 2022-12-27 14:20:20 +01:00
Holger Vogt 199b9deee6 For OSDI n devices: Enable model translation,
if model has been inside subcircuit.
2022-12-27 14:19:37 +01:00
Pascal Kuthe d0bd945c00 slightly optimize predictor 2022-12-27 14:11:07 +01:00
Pascal Kuthe 5791a2d449 ensure config.h is always included in cktdefs.h to ensure correct
type signature
2022-12-27 14:10:16 +01:00
Pascal Kuthe a7fced9327 ensure compilation succedes without OSDI 2022-12-27 14:09:52 +01:00
Pascal Kuthe 79b2d2d520 removed unneded changes 2022-12-27 14:09:22 +01:00
Pascal Kuthe b285fa6e1c fix opvar readout 2022-12-27 14:08:46 +01:00
Pascal Kuthe 06229c2a46 fix typos 2022-12-27 14:08:26 +01:00
Pascal Kuthe 3be143423a add openmp support for osdi 2022-12-27 14:08:08 +01:00
Holger Vogt a4d13dae24 Suppress model type warning when device is of type N. 2022-12-27 14:04:56 +01:00
Holger Vogt 771155e463 Prevent double definition error when both OSDI and XSPICE are enabled. 2022-12-27 14:04:09 +01:00
Holger Vogt 8f0eab90ee Replace 'a' by 'n' for OSDI device 2022-12-27 14:03:39 +01:00
Holger Vogt e6265a3eed Move reference designator from A to N
replace inp2n by a copy of inp2a
OSDI is now called in case N: in inppas2
2022-12-27 14:03:18 +01:00
Holger Vogt a95b114768 Revert previous commit: now treat a devices like ordinary devices. 2022-12-27 13:59:42 +01:00
Holger Vogt d8eb685fcc Preliminary fix to get_number_terminals:
check for tokens with '=' to stop and get number of nodes by
stepping back.
2022-12-27 13:59:20 +01:00
Holger Vogt 6ece9b5748 Exclude XSPICE specific error message.
Don't call fcn get_adevice_model_name().

Return a fixed value (5) for number of nodes:
This is wrong. It has to be replaced by a safe
method to figure out the number of terminals for
varying Verilog-A device models.
2022-12-27 13:57:20 +01:00
Holger Vogt 638ddbc91f Add case 'a' to fcn translate.
This is a hack, to be removed/altered when switching to
reference designator N instead of A.
2022-12-27 13:56:50 +01:00
Holger Vogt f75e970ecf Initialze sim_param_vals 2022-12-27 13:56:24 +01:00
Holger Vogt 77a86647f7 remove __attribute__, replace by __declspec 2022-12-27 13:55:53 +01:00
Holger Vogt 6e08bb3090 Add include file shlwapi.h 2022-12-27 13:55:18 +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
Brian Taylor 0805856fb7 Distinguish between set/reset delays when possible. 2022-12-19 12:43:00 +01:00
Brian Taylor 253df17949 Make it optional to use zl/zh/lz/hz delays for utgate. 2022-12-19 12:42:36 +01:00
Brian Taylor 4c457a3cd4 Avoid unnecessary calculations for utgate. 2022-12-19 12:42:06 +01:00
Brian Taylor a4b609fb6a For utgate timing models, if hl/lh are not present use zl/zh/lz/hz to give a more accurate tristate delay. 2022-12-19 12:41:18 +01:00
Brian Taylor 021982799e More conservative delay estimates for timing model type ugff. 2022-12-19 12:40:50 +01:00
Brian Taylor 11f6eace68 For dff/jkff, obtain more conservative estimates for clk_delay, set_delay and reset_delay. 2022-12-19 12:40:06 +01:00
Holger Vogt cc8b651562 re-enable making old app nutmeg 2022-12-11 15:47:22 +01:00
Holger Vogt d4fcef9bf6 Repair the broken --enable-oldapps option 2022-12-11 15:47:05 +01:00
Holger Vogt e28d3feee0 Remove unused variable debarr.
Add another example.
2022-12-11 15:39:10 +01:00
Holger Vogt 6c1be283a7 Add a function ddt (derivative versus time) to the B-source funtion parser. 2022-12-11 15:38:22 +01:00
Brian Taylor 47260e2eb8 Rewrite extract_model_param. 2022-12-11 15:38:08 +01:00
Brian Taylor 0924fbb7eb Modify the delay calculation for non-conforming timing model in .subckt CD4572UB. 2022-12-11 15:37:34 +01:00
Holger Vogt a5eaac128a For monotonic plotting find out the majority of increasing or decreasing
x-axis values, add a warning to add 'retraceplot' to plot all if more than
10% of the values deviate from the majority.
2022-12-11 15:37:14 +01:00
Holger Vogt 9613625840 Prevent seg fault after strange input like
*no circuit
.save all
.probe alli
.op
.end
2022-12-11 15:36:22 +01:00
Pascal Kuthe 744002dc49 fix sigfault on older c compilers 2022-12-11 15:35:53 +01:00
Giles Atkinson 7ead974a5a Prevent crash when cm_analog_set_temp_bkpt() is called during OPtran(). 2022-12-11 15:35:31 +01:00
Giles Atkinson 73e8fed0fc Fix warnings from gcc 10.2.1. 2022-12-11 15:35:14 +01:00
Brian Taylor 929d1f5190 Added xor/xnor for logicexp timing models. 2022-12-11 15:34:56 +01:00
Brian Taylor 7ff8f3773f Handle cases where logicexp has a timing model but no pindly. This is rare, only 22 tests from the digital libraries. Move digital examples, add missing .spiceint file. 2022-12-11 15:34:33 +01:00
Brian Taylor a0cf65ca1a Add B-source note 2022-12-11 15:33:24 +01:00
Holger Vogt 631ff35c34 The 8th parameter on a voltage or current source now is 'number of pulses'.
Previous usage had been PHASE, introduced by XSPICE, which has
been redundant to DELAY. PHASE is again available when compatibility flag
xs has been set.
2022-12-11 15:32:51 +01:00
Holger Vogt e967b31c94 Add a new compatibility mode xs (for XSPICE) 2022-12-11 15:32:30 +01:00
Holger Vogt 27fb6cd0a6 Allow resetting the limit for warning mesaages, when a new run is started. 2022-12-11 15:32:11 +01:00
Holger Vogt 8e175f1e77 Replace obscure warning "singular matrix: check nodes mymode1 and mynode1" by
"singular matrix: check node mynode1", if both node names are equal.
2022-12-11 15:31:41 +01:00
Brian Taylor 1511214874 Add more debug instrumentation. 2022-12-11 15:31:09 +01:00
Brian Taylor fe733a8ca2 Use tilde '~' inputs instead of creating inverters. 2022-12-11 15:30:41 +01:00
Holger Vogt 59e28ac2a2 Remove mentioning line number 0, which has been incomprehensible. 2022-12-11 15:30:12 +01:00
Holger Vogt 59413a7f71 Add error messages when controlled_exit is called:
No exit without message.
2022-12-11 15:29:47 +01:00
Pascal Kuthe 75c2a3c621 calculate log frequency sweep such that start frequency and stop frequency are always exactly included 2022-12-11 15:29:19 +01:00
Pascal Kuthe c5d5da15ee fix: allow hicum/l2 to compile with older c++ compilers 2022-12-11 15:28:59 +01:00
Holger Vogt f13aa89626 Add new functions for operators x**y or x^y
compatmode hs: x>0 pow(x, y), x<0 pow(x, round(y)), X=0 0
compatmode lt: x>0 pow(x, y), x<0 pow(x, y) if y is close to integer, else 0
2022-12-11 15:27:26 +01:00
Holger Vogt d0f686727d Add new functions for operators x**y or x^y
compatmode hs: x>0 pow(x, y), x<0 pow(x, round(y)), X=0 0
compatmode lt: x>0 pow(x, y), x<0 pow(x, y) if y is close to integer, else 0
2022-12-11 15:27:02 +01:00
Brian Taylor 9932a78e39 Add safety braces. 2022-12-11 15:26:42 +01:00
Brian Taylor 5726c9ff0b Tidy up debug tracing code. 2022-12-11 15:26:16 +01:00
Brian Taylor aa2f3b7bbb Fix memory leaks. 2022-12-11 15:25:52 +01:00
Brian Taylor 4294f49968 Add more vectors to behavioral 283 circuit. Add tristate buffer circuit which shows glitches until inertial delays are implemented. 2022-12-11 15:25:24 +01:00
Brian Taylor cefa6b380c When the gen_tab has only one entry, do not call optimize_gen_tab, it is not necessary. 2022-12-11 15:25:00 +01:00
Brian Taylor 029df5a3d6 Check that the bparse gen_tab optimization loop finishes when no more improvements occur. 2022-12-11 15:24:35 +01:00
Holger Vogt 6af73bc97f remove unused 2022-12-11 15:24:04 +01:00
Holger Vogt d77e36dc1b To find the nearest integer, use nearbyint(). trunc() has delivered
only one-sided answers.
2022-12-11 15:23:20 +01:00
Holger Vogt 47f2b7c6af AlmostEqualUlps setting has been too strict: it failed in MINGW gcc.
3 --> 10
2022-12-11 15:22:54 +01:00
Holger Vogt ba6ff75dab Trim trailing spaces 2022-12-11 15:22:30 +01:00
Holger Vogt f26c9146f5 Don't allocate memory for control array at every time step
Use loc instead, setting it up once during INIT
2022-12-11 15:22:01 +01:00
Brian Taylor aff20b9db1 Remove asserts, replace fixed size lexer_buf. 2022-12-11 15:21:09 +01:00
Brian Taylor d54c1fc091 Add pindly tristate example. Cleanup error handling. 2022-12-11 15:20:27 +01:00
Brian Taylor 0627af435a Remove most asserts. 2022-12-11 15:20:03 +01:00
Brian Taylor b142be7fde Add behavioral (LOGICEXP, PINDLY) test for 283 circuit. There are glitches in the simulation for some of the s* outputs. Probably due to not having inertial delays. And why not set 'zero' delays as close to zero as permitted by XSPICE. 2022-12-11 15:19:39 +01:00
Brian Taylor 4e76586b6b Reduce the delays of 'zero' delay gates to 1.0e-11. Add decoder test for logicexpr and pindly. 2022-12-11 15:19:17 +01:00
Brian Taylor 13c01abf0d Fix a typo, add more comments. 2022-12-11 15:18:52 +01:00
Brian Taylor 68f0d49f58 Add support for TRISTATE: in PINDLY. 2022-12-11 15:18:32 +01:00
Brian Taylor 363179ce2f Fix potential memory leak, clean out debug code. 2022-12-11 15:18:12 +01:00
Brian Taylor 499bef097e Better estimates of rise/fall delays in PINDLYs with outputs separated by CASE. 2022-12-11 15:17:51 +01:00
Brian Taylor a01edf2f36 Fix visualc compiler warnings. 2022-12-11 15:17:33 +01:00
Brian Taylor 22a3af8a1e Improve delay estimates for pindly output buffers. 2022-12-11 15:17:17 +01:00
Brian Taylor 64c2c1ee05 Initial handling of PINDLY. Output buffers without rise/fall delay estimates. 2022-12-11 15:16:57 +01:00
Brian Taylor 62aab3885d Move f_logicexp, f_pindly calls to u_process_instance. Use u_add_instance to copy gate instances and models to the replacement cards. 2022-12-11 15:16:37 +01:00
Brian Taylor 7c699a599f Fix potential memory leak. 2022-12-11 15:16:20 +01:00
Brian Taylor a54aa4d1f7 Initial logicexp parser and gate generator. 2022-12-11 15:16:02 +01:00
Brian Taylor 4a904cdf18 Add drive 0/1 for $d_lo/$d_hi. 2022-12-11 15:15:44 +01:00
Holger Vogt e47049f31a Add STATIC_VAR_TABLE locdata
Add CALLBACK cm_d_pwm_callback
Reserve memory for x, y arrays only once during INIT
2022-12-11 15:15:22 +01:00
Holger Vogt f1165052ad We are developing towards ngspice-39 2022-11-06 11:23:17 +01:00
Holger Vogt 14f42f805d Add info on new function ngCM_Input_Path 2022-10-29 15:48:58 +02:00
Holger Vogt eb70d81dab Add function
char* ngCM_Input_Path(const char* path);
to shared  ngspice API
to send file path for code model input files (e.g. dsource).
Such path cannot be extracted automatically when netlist has
been sent by ngSpice_Circ
2022-10-28 14:12:53 +02: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 7eafd48cc0 Add udevices.h to makefile.am for 'make dist' 2022-10-24 20:27:57 +02:00
Holger Vogt a6c28e44ff Add info on shared library 2022-10-24 17:04:45 +02:00
Holger Vogt 638a09b718 Make doxygen documentation complete as an example. 2022-10-22 19:51:32 +02:00
Holger Vogt 70f38ec25f Update for doxygen: add function names to \brief 2022-10-22 19:51:06 +02:00
Holger Vogt b6d2a50e42 Update to comments for doxygen 2022-10-22 19:50:40 +02:00
Holger Vogt 3288d5ac99 Test for doxygen documentation 2022-10-22 19:48:12 +02:00
Holger Vogt ed6f802948 Add a guard on parameter 'position', limit to
1e-9 to 0.999999999
FIXME: the given parameter limits from ifspec.ifs are not recognized.
2022-10-22 15:54:12 +02:00
Holger Vogt 2d8ea17d65 Update on author 2022-10-22 15:54:01 +02:00
Holger Vogt 61d23b99ff Patch required to allow compiling at Fedora with -Werror=format-security
Provided by Mamoru Tasaka
2022-10-22 15:53:45 +02:00
Holger Vogt 7fa5c7ad87 Typo 2022-10-22 15:53:32 +02:00
Holger Vogt 27ba1e39df Small correction to previous commit. 2022-10-17 16:47:51 +02:00
Holger Vogt 06d349ff06 Add a limit of 0.999 to bipolar parameters mje, mjc, and mjs.
The bipolar model is restricted to values < 1.
Fixes bug 583
2022-10-17 16:03:36 +02:00
Holger Vogt 5bc1660773 prepare ngspice-38 2022-10-16 16:59:34 +02:00
Holger Vogt e2defea752 The derivative of pow shall use the new pow function as well,
when compat mode LT is selected.
2022-10-14 14:56:09 +02:00
Giles Atkinson 01c4a5dff2 Fix memory leak reported by Brian Taylor. 2022-10-14 13:52:34 +02:00
Giles Atkinson 9801d06795 Fix XSPICE's node prefix '~' when PSPICE compatability is used. 2022-10-14 13:52:17 +02:00
Holger Vogt d7485d7136 Fix typo 2022-10-14 13:51:16 +02:00
Holger Vogt edab163192 If compatmode is lt, change the pow(x,y) and x**y functions:
If x < 0, output only if y is integer number, otherwise output 0
2022-10-14 13:50:37 +02:00
Holger Vogt 933b1fdb2b Add some comment 2022-10-14 13:50:20 +02:00
Brian Taylor 150839dd1a Remove VisualC compile warnings. 2022-10-09 10:21:51 +02:00
Holger Vogt 7f486febe9 Search for .spiceinit (or spice.rc) firstly in a user defined directory,
when the directory path is set in the environmental variable
SPICE_USERINIT_DIR.
If not found then search in the current directory, then in HOME, then
in USERPROFILE.
2022-10-09 10:21:39 +02:00
Holger Vogt 2547115eeb Prevent Visual Studio compiler warnings 2022-10-09 10:21:06 +02:00
Giles Atkinson e67261be29 Fix a crash that sometimes occurs on Linux when interrupting from
the terminal a simulation that was started directly from the command
line.  A gdb backtrace showed rl_cleanup_after_signal() calling
fwrite() with a NULL file pointer.
2022-10-08 16:58:26 +02:00
Holger Vogt ffc09208bf send error message to stderr, not to stdout 2022-10-08 16:51:02 +02:00
Holger Vogt 9166f202a6 Streamline the simple diode model. 2022-10-08 16:50:47 +02:00
Holger Vogt ec6a902fb9 Fix a bug in simple diode, when ilimit is set, but not epsilon.
Make model more similar to LTSPICE
Add an example
2022-10-08 16:50:38 +02:00
Holger Vogt 7bb581b1b3 Remove parameter noiseless in simple diode model.
The model is noiseless anyway.
2022-10-08 16:50:26 +02:00
Brian Taylor 266d944745 Remove unnecessary hierarchical level check. 2022-10-08 16:50:15 +02:00
Brian Taylor bd00738a49 Fix memory leaks in ff/latch code. 2022-10-08 16:50:03 +02:00
Brian Taylor e2652d813d If ps_udevice_msgs >= 2, print complete line of unsupported PSpice instance. For debugging purposes. 2022-10-08 16:49:38 +02:00
Giles Atkinson c704854b3c Fix bug reported by Anant Devi in user discussion 22/9/22.
A function call, vi(v) was misparsed as the special token i(vsource)
for the current in a voltage source.
2022-10-08 16:49:02 +02:00
Giles Atkinson d9952575dd Correct the digital state resolution table, that was previously asymmetric.
An equivalent change is mentioned in the SPICE OPUS change history.
2022-10-08 16:48:20 +02:00
Giles Atkinson 372d9b2c87 Add bidirectional digital/analog bridge. 2022-10-08 16:48:11 +02:00
Giles Atkinson e80b724460 Add two functions to the Code Model Library: cm_get_node_name()
makes circuit node names available to diagnostics, while
cm_probe_node() is needed for a bidirectional A/D bridge.
2022-10-08 16:47:50 +02:00
Giles Atkinson 8cc9d8522f Fix bug #602 "Warning message trying to linearize a transient analysis vector"
by changing the way "ngspice -a" (autorun option) works.  The inserted code
now checks whether a simulation has already run by examining $curplot
before forcing "run".  Also at most one simulation is forced to run.
2022-10-08 16:47:30 +02:00
Giles Atkinson 06131d8107 Rewrite code with Visual Studio complaints. 2022-10-08 16:47:09 +02:00
Holger Vogt 56d07aab31 Transfer i(xx) to xxx#branch only when i is the first
character of the token or preceeded by a space.
2022-10-08 16:46:51 +02:00
Holger Vogt 92ba8ac88e Just to notify that this might need a better solution 2022-10-08 16:46:18 +02:00
Holger Vogt f832380dc9 FIXME: This is a hack to re-enable 'make check'
Do not print warning if in batch mode.
2022-10-08 16:46:01 +02:00
Holger Vogt 98763c0add Note: ix: dc value used for op instead of transient time=0 value
Former warning message or note only issued when dc value and
value at transient time=0 differ.
2022-10-08 16:45:38 +02:00
Holger Vogt 7483f6224d Note: vs: dc value used for op instead of transient time=0 value
Former warning message or note only issued when dc value and
value at transient time=0 differ.
2022-10-08 16:45:14 +02:00
Holger Vogt 6037450952 Warning message, when 'run' is called without job
(tran, op, ac etc.) is defined.
2022-10-08 16:44:48 +02:00
Holger Vogt 3af627db44 Change error messages to warning messages, because simulator moves on
and command is ignored.
Make messages more verbose (which command?).
2022-10-08 16:44:30 +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 519ce44227 safeguard against circuit not being abvailable,
avoid crash
2022-10-08 16:43:41 +02:00
Holger Vogt 4713cf0bf7 add parameter description 2022-10-08 16:43:16 +02:00
Brian Taylor e703bd9142 Add comment about ps_udevice_msgs variable. Set to 1 will print PSpice instance names and types which are not supported and are found when processing a subckt. 2022-10-07 13:48:37 +02:00
Brian Taylor e9855be595 If variable ps_port_directions >= 2, also show the translated Xspice statements. 2022-10-07 13:48:05 +02:00
Holger Vogt 1d026475a2 pwlts: a pwl v/i source with time input, smoothing and limiting functions 2022-10-07 13:39:16 +02:00
Holger Vogt 0754ea7657 Make the Error message a Warning message,
because ngspice may move on
2022-10-07 13:38:20 +02:00
Holger Vogt 0af4932c6f Prevent a crash if (due to input error) the node_table is not available. 2022-10-07 13:37:57 +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
Holger Vogt e6772f4e4e Prevent crash in gettok() and similar functions by checking for NULL
input. Return NULL instead.
2022-10-07 13:23:25 +02:00
Holger Vogt 2126230b64 Prevent crashes when nodes or tables are not available,
e.g. due to missing input file.
2022-10-07 13:22:59 +02:00
Holger Vogt 037293c81e Improved error message: more info on the bad set form 2022-10-07 13:22:43 +02:00
Giles Atkinson a0357b3432 Remove search for "family" parameters on subcircuits in XSPICE
automatic bridging support as string-valued parameter support is
not yet intgrated.
2022-10-07 13:20:34 +02:00
Giles Atkinson 4115064fd5 Latest auto-bridge code from development branch. 2022-10-07 13:20:17 +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 07bb809158 Iterations for op or dc may start with arguments 0 for ln().
To cope with this, and potential overflow in exp function,
some limits have been added.
2022-10-07 13:19:22 +02:00
Holger Vogt d39c60542d Enable power measurement for W switch 2022-10-07 13:18:51 +02:00
Holger Vogt 79bb8edc90 Allow individual current measurements in switches or
linear dependent sources.
2022-10-07 13:18:15 +02:00
Holger Vogt 7e610c8487 .probe alli improved:
* Enable current mesurement for I source
* Look at only the first 2 nodes of S and W switches
and F and G controlled current sources, measure current
with = voltage source added to second node. So we get
I(Fx), I(Gx), I(Sx), and I(Wx).
2022-10-07 13:17:30 +02:00
Giles Atkinson 04445e42ea Make FROM/TO work in TRIG/TARG and WHEN variants of .meas/meas command.
Discussion at
https://sourceforge.net/p/ngspice/discussion/133842/thread/973e152274/
2022-10-07 13:16:28 +02:00
Holger Vogt a1dd1f5563 Check for tran at first when linearize is called. 2022-10-07 13:16:03 +02:00
Brian Taylor 3ca91aa1ac Make a trivial change to support (n)and3a, (n)or3a, (n)xor3a types. These are not used in any of the Micro Cap libraries. Completes support for Pspice tristate gate types. 2022-10-07 13:15:45 +02:00
Brian Taylor abd4af1ae6 Ignore IO models in a subckt. Setting variable ps_port_directions to a non-zero int prints the directions (IN, OUT, INOUT) of subckt ports. 2022-10-07 13:14:58 +02:00
Brian Taylor 2d9f86c742 Check for name collisions between nodes generated during translation from Pspice to Xspice and instance pin or subckt port names. These are reported as ERRRORs. 2022-10-07 13:14:35 +02:00