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