Jeff Young
94ec6cc362
Convert inline models in Sim.Params fields to SPICE syntax.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/14157
(cherry picked from commit 14f1f3ec79
)
2023-03-03 18:18:32 +00:00
Jeff Young
c216ed2d1f
Make SME prop-grid hack Mac-only.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13852
(cherry picked from commit dcba555d44
)
2023-03-02 14:59:57 +00:00
Jeff Young
3a95826b42
Move only-write-model-if-it-contains-overrides up to base class.
...
It's necessary to keep us from writing out model lines for included
models and fall-backs of included models.
(cherry picked from commit f5edcf82f2
)
2023-03-01 13:44:26 +00:00
aris-kimi
ff6f658f9d
Simulator: Fix some cases with initial conditions
...
(cherry picked from commit 4a761179d0
)
2023-02-28 21:31:45 +00:00
jean-pierre charras
764ddd4773
Fix compil warnings.
2023-02-28 18:00:22 +01:00
Graham Keeth
f7d9f1f69d
Fix SPICE pins for BJTs and MESFETs
...
- MESFETs don't have a substrate/bulk pin
- BJTs have a substrate pin, and HICUM/VBIC have TJ
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13848
(cherry picked from commit 6af3dadaee
)
2023-02-28 14:21:12 +00:00
Jeff Young
42efd2d005
Make substrate and thermal junction nodes optional.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/14083
(cherry picked from commit 1fdc81e68d
)
2023-02-28 14:21:12 +00:00
Jeff Young
d32e13daee
Clear model name when switching to internal model.
...
Also fixes a bug to ensure that a modelLine gets written when using
an internal model.
Fixes https://gitlab.com/kicad/code/kicad/issues/14083
(cherry picked from commit 2e5bf0210a
)
2023-02-28 14:21:12 +00:00
Jeff Young
d028b381fa
Make SIM_MODEL_SPICE_FALLBACK act more like the model it's a fallback for.
...
In particular, install/show the parameters, and keep the existing name
field.
Fixes https://gitlab.com/kicad/code/kicad/issues/14102
(cherry picked from commit 281fde71b9
)
2023-02-28 14:21:11 +00:00
Fabien Corona
46c8985661
sim - switches: open <-> closed in description
2023-02-27 19:04:48 +01:00
Jeff Young
b3c6f559b2
Don't eval empty string.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13756
(cherry picked from commit 79f13ea9c7
)
2023-02-26 23:14:40 +00:00
Jeff Young
4aba595b2b
Add second instance of "don't mess up user formatting" fix.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13989
(cherry picked from commit 4b427b2d0c
)
2023-02-26 22:00:20 +00:00
Jeff Young
f604bcb557
Only write included models if they have overridden parameters.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13953
(cherry picked from commit 5a12e5ee76
)
2023-02-24 20:47:22 +00:00
Jeff Young
eccf9eb4a4
Change strategy for committing values from SIM_MODEL propGrid.
...
Note that the PCB editor's propGrid doesn't seem to need this workaround,
but I haven't yet figured out what's different between it and the sim model
propGrid.
Fixes https://gitlab.com/kicad/code/kicad/issues/13852
(cherry picked from commit c188318174
)
2023-02-24 20:47:22 +00:00
Jeff Young
39403fa885
Cleanup some dead code, and add a potentially needed fix for non-Mac.
...
(The Mac bug is fixed in 4e5b1da81fce7cd9ffedaec878ed07bfcfff4fe2 in
our wxWidgets fork.)
(cherry picked from commit 200a06a677
)
2023-02-24 20:47:22 +00:00
Jeff Young
5e7cc30564
Don't mess up user formatting if eval'ing didn't actually change value.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13989
(cherry picked from commit 8059edff0e
)
2023-02-24 20:47:22 +00:00
Jeff Young
f942b4c657
Don't allow extra text in Sim.* fields.
...
(In particular, the field name.)
Fixes https://gitlab.com/kicad/code/kicad/issues/13996
(cherry picked from commit 71df3f9edb
)
2023-02-24 20:47:22 +00:00
Jeff Young
f5aeb5b068
More dead code removal and a bit of formatting and const& for strings.
...
(cherry picked from commit a126d961d8
)
2023-02-24 20:47:22 +00:00
Jeff Young
7f6cb9b07b
Remove most of SIM_VALUE in favour of good old wxString.
...
This allows us to save the user's intent, including units, formatting,
and crucially variable references.
(cherry picked from commit 68fe146861
)
2023-02-24 20:47:22 +00:00
Jeff Young
db3657d411
Terminology and more dead code.
...
(cherry picked from commit 29f21cdde6
)
2023-02-24 20:47:22 +00:00
Jeff Young
38e5da724d
Remove dead and redundant code.
...
(cherry picked from commit 90adc26b73
)
2023-02-24 20:47:22 +00:00
Jeff Young
962b2d45ef
Implement default levels for JFETs, MOSFETs and MESFETs.
...
(cherry picked from commit fe2679d965
)
2023-02-22 18:04:23 +00:00
Jeff Young
7894b41277
Don't allow 0 field text size.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13987
(cherry picked from commit cb71ea872b
)
2023-02-22 18:04:23 +00:00
Jeff Young
7b992a1dc4
Correctly netlist a voltage source with both AC and DC values.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13912
(cherry picked from commit c618bb7046
)
2023-02-22 18:04:21 +00:00
Fabien Corona
17241b3543
sim - missing assignment
2023-02-20 18:15:37 +01:00
Fabien Corona
a4a859f47b
sim - Check FindParam() results before using them
2023-02-20 18:14:48 +01:00
Fabien Corona
b66ed8bc41
sim - don't write dc parameter twice
2023-02-20 18:13:44 +01:00
Fabien Corona
754feff5e7
sim - allow sources that are both AC and TRAN
2023-02-20 18:12:36 +01:00
Fabien Corona
cd1b425a80
sim: VSIN - allow user to specify a phase
...
TD is not the same as PHASE.
TD is the delay before the source turns on.
PHASE is ... the phase
If only TD is set, the signal starts later, but the phase is still 0 when compared to the t=0 of the simulation.
(cherry picked from commit 39a1b14a0f
)
2023-02-20 08:45:09 +00:00
Jeff Young
53a4ed6b24
ReadDataFields must be a separate step from Create.
...
Create() is done without execption processing, while ReadDataFields
should have exception processing.
(This also fixes a case where exception processing on ReadDataFields
was missing.)
Also fixes a bug where the pinSelect menu wasn't checked for -1 before
fetching.
Fixes https://gitlab.com/kicad/code/kicad/issues/13856
2023-02-13 12:42:42 +00:00
Jeff Young
7e2ccbf909
Prepend correct SPICE prefix when necessary for plotting currents.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13850
(cherry picked from commit a22964a977
)
2023-02-13 10:59:32 +00:00
Marek Roszko
b24ee1c44f
Prevent a crash when a spice SW_I lacks two pin net names
...
Fixes KICAD-5D
(cherry picked from commit 2cc3d8e9bc
)
2023-02-13 03:32:07 +00:00
Alex
81a55c42a1
Fix unintentional string change in IBIS parser.
2023-02-11 02:19:06 +03:00
jean-pierre charras
3d23d0e16a
Fix compatibility with wxWidgets 3.0.5
...
Fixes #13808
https://gitlab.com/kicad/code/kicad/issues/13808
2023-02-07 21:09:03 +01:00
jean-pierre charras
4065e413ea
Ibis parser: do not report activity when there are no errors.
...
The dialog to add a library expects no message when there are no error.
Fixes #13794
https://gitlab.com/kicad/code/kicad/issues/13794
2023-02-06 12:55:52 +01:00
Jeff Young
d1f6ba77e8
Better error reporting, and don't infer models with library references.
2023-02-04 20:55:52 +00:00
Jeff Young
56a1cdb4dc
Allow a limited set of un-braced expressions in SPICE model values.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13768
2023-02-04 19:49:48 +00:00
Jeff Young
e8397a33bb
Refrain from copying SPICE_INFO.
2023-02-04 00:05:50 +00:00
Graham Keeth
a51dc8c9de
HiSIM_HV MOSFET models are *not* the default type
...
The ngspice manual does not indicate that there is any default
model type. This change ensures we get a `level=xy` written out to the
.model line when we select a HiSIM_HV model.
2023-02-04 00:03:25 +00:00
Graham Keeth
5abe1a201b
spice: generate .model lines for all device types
...
- generate .model lines in spice netlist for all device types that need
one
- add "level=<n>" to .model line for non-default model levels. This is
necessary to allow more sophisticated models to be used, and some
devices *always* need a level specified (e.g. JFETs)
- add "version=<n>" to .model line for models that have multiple
versions available (AFAIK only affects HiSIM_HV MOSFET models)
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13775
2023-02-04 00:03:25 +00:00
Graham Keeth
41c4ee2245
ngspice requires J prefix for JFETs in netlist
...
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13774
2023-02-04 00:03:25 +00:00
Jeff Young
ed5fb2769f
Allow more characters (in particular '_') in code model names.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13769
2023-02-03 23:49:53 +00:00
Jeff Young
8b03c093f9
Move potentiometer pin model to r0, wiper, r1, and remove flipping code.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13741
2023-02-02 16:22:13 +00:00
Jeff Young
ab0c4dd292
Must do pin swap in model pins, not item pins.
...
Item pins might not be in the same order.
Fixes https://gitlab.com/kicad/code/kicad/issues/13741
2023-02-02 12:44:55 +00:00
Jeff Young
b4a75cd1d5
Write out a diode .model for built-in diodes.
2023-02-01 12:36:27 +00:00
Jeff Young
123467c8dd
Don't throw up debug message when signal is deleted.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13711
2023-01-30 21:32:18 +00:00
Jeff Young
c939b1ef76
Followed-by-3-digits doesn't guarantee a thousands separator.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13708
2023-01-30 21:22:48 +00:00
Jeff Young
4e50c5313d
More safety for array access.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13583
2023-01-24 00:07:40 +00:00
Seth Hillbrand
00f93db2ff
Convert wide chars before reading model
...
The PEGTL parser used by KiCad for SPICE models only handles ASCII
characters. Despite the docs stating that you can, in theory, parse a
UTF-8 character by reading the base string, in pratice this does not
work as the UTF-8 string is represented by unsigned chars and the PEGTL
string is based on signed char.
To work around this, we need to convert micro and mu to the ASCII 'u'
equivalent
Fixes https://gitlab.com/kicad/code/kicad/issues/13642
2023-01-23 15:23:41 -08:00
Jeff Young
542719c753
Add "all" mode to HSPICE emulation.
2023-01-21 19:32:25 +00:00
Seth Hillbrand
4d7ddf619a
Remove unused var and cleanup
2023-01-20 13:26:11 -08:00
Jeff Young
f7ebaf1bab
Add compatibility mode for netlist code.
...
(The non-A compatibility modes only run on included files.)
Fixes https://gitlab.com/kicad/code/kicad/issues/13589
2023-01-20 18:06:17 +00:00
Wayne Stambaugh
ee3e285393
Correctly parent simulator netlist error dialogs.
2023-01-19 07:59:30 -05:00
Jeff Young
0e778f17db
Add context menu for simulation cursors.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13580
2023-01-19 12:50:21 +00:00
Jeff Young
959e20f52c
A fall-back model for FOO should supply FOO's pin names.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13589
2023-01-19 12:14:50 +00:00
Stefan Brüns
1df81b10e6
Explicitly convert std::string to wxString
...
In wxWidgets STL builds the compiler has multiple, ambigous choices
for converting - both arguments to std::string first, or just the
first to wxString.
Fixes #13432 .
2023-01-14 22:58:54 +00:00
Jeff Young
4c5a344629
Allow editing of raw SPICE models through code tab.
2023-01-14 02:43:34 +00:00
Jeff Young
098d2b30a2
Support for simulation options in workbook and simulation command dlg.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13524
Fixes https://gitlab.com/kicad/code/kicad/issues/13523
Fixes https://gitlab.com/kicad/code/kicad/issues/13431
2023-01-14 00:21:45 +00:00
Jeff Young
e7e2085b2a
Allow vector param values.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13431
2023-01-13 21:59:06 +00:00
Jeff Young
7fbad183db
Gracefully handle Quit when simulator window is open.
2023-01-13 16:35:45 +00:00
Jeff Young
4391fc7a7a
Don't be annoying about refusing to create traces when there's no data.
2023-01-13 16:35:45 +00:00
Jeff Young
52163c7b31
Hold off on one-library-per-SIM_LIB_MGR. It's too risky for 7.0.
2023-01-12 16:29:51 +00:00
Jeff Young
d839f11d49
Rip out parsing of SPICE libraries for netlisting.
...
We only need to parse the libraries for the Sim Model Editor dialog
(so that we can determine the models to put in the popup). Doing it
for netlisting just opens us up to incorrectly parsing the SPICE, and
returns no value.
This also means that a SIM_LIB_MGR manages a single library, and
never multiple libraries.
This also allows the tidying-up of some error reporting structures to
better inform the user what went wrong.
Fixes https://gitlab.com/kicad/code/kicad/issues/13431
2023-01-12 14:51:03 +00:00
Jeff Young
c43050b91b
Remove safety around reading default parameter from Value field.
...
This should be OK now because we should be writing out all parameters
now (even if they're default value).
But perhaps more to the point, if we have the safety in there then
we miss cases where we really can't parse the model (value of "{VCC}")
and we need to fall back to a raw spice model.
Fixes https://gitlab.com/kicad/code/kicad/issues/13444
2023-01-09 15:24:45 +00:00
Jeff Young
d65cf1b457
Check parameters before assuming we can handle the model.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13444
2023-01-08 18:00:22 +00:00
Jeff Young
4d7642a26c
Add number of pulses parameter to pulsed voltage/current sources.
...
Also don't suppress writing "0" valued parameters.
Fixes https://gitlab.com/kicad/code/kicad/issues/13401
Fixes https://gitlab.com/kicad/code/kicad/issues/13402
2023-01-06 13:45:56 +00:00
Jeff Young
7af718f1a5
Don't use std::string for things with wxString APIs.
...
It's too bug-prone.
Fixes https://gitlab.com/kicad/code/kicad/issues/13380
2023-01-05 14:16:39 +00:00
Seth Hillbrand
cbe6cd3048
Don't move local vars
...
Copy ellision allows optimization if we don't explicitly move a local
variable in the return
2023-01-03 10:20:18 -08:00
Jeff Young
baa13b885f
Don't add Sim.Params unless it contains data, and update sallen key demo.
2023-01-03 17:20:23 +00:00
Jeff Young
9583b28063
Fix store-in-value bugs.
...
1) Always honour the dialog checkbox value.
2) Don't expect the absence of the primary parameter in Sim.Params to
mean that Value stores it. It might be the default parameter value.
3) Update spiceTypeInfo when matching legacy data to an internal model.
4) Initialize the store-in-value checkbox depending on whether or not
we found the primary parameter in the Value field.
2023-01-03 17:20:23 +00:00
Jeff Young
9b9795a87d
Reduce reliance on exception processing -- it's waay too bugy at present.
...
This moves some stuff to REPORTER APIs. Moving more stuff would be good,
but it probably too high-risk at present. We'll wait for 8.0 for that....
Fixes https://gitlab.com/kicad/code/kicad/issues/13359
2023-01-03 17:20:23 +00:00
Jeff Young
fdc8f9c59d
Fix accidental deletion in "TEXT_ATTRIBUTES" commit.
2023-01-03 01:23:18 +00:00
Jeff Young
7f35323416
Re-enable sim model ERC testing.
2023-01-03 00:59:14 +00:00
Jeff Young
277cd73204
TEXT_ATTRIBUTES doesn't hold the position.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13350
2023-01-02 17:36:21 +00:00
jean-pierre charras
e8114dc49a
Minor compil and Coverity warnings fixes.
2023-01-02 10:21:42 +01:00
Jeff Young
62f0843579
Fix grammar error in warning string.
2022-12-31 18:54:36 +00:00
Jeff Young
55b8f0bc00
Gracefully fall back to raw spice when we can't parse the data.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13329
2022-12-31 18:52:26 +00:00
Jeff Young
77b361a077
Add reference material to SPICE model pin assignment tab.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13309
2022-12-31 18:52:26 +00:00
Jeff Young
5deee405da
Fill in built-in-model-type (which might not be the same as initial spice type).
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13324
2022-12-31 01:07:46 +00:00
Jeff Young
62bec69d8c
Migrate field text attrs from legacy fields.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13323
2022-12-30 23:41:46 +00:00
Jeff Young
d50b3550af
Signals header is repetitive.
2022-12-28 10:40:23 +00:00
Jeff Young
ef6001bfe6
Use consistent terminology: opposite of Add is Remove.
...
Note: violating string freeze because this change should ease translation,
not make it harder.
2022-12-28 10:40:23 +00:00
Jeff Young
e11d39b0f2
If magnitude or phase is specified, don't add both.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13202
2022-12-28 10:40:23 +00:00
Jeff Young
3767716f20
Menu IDs of 0 don't work on Mac.
2022-12-28 10:40:23 +00:00
Jeff Young
572c10b2c4
If we don't recognize a var then it's an error, not 0.0.
2022-12-27 13:50:44 +00:00
Jeff Young
39a23fa9bc
Only eval numeric properties.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13201
2022-12-27 13:50:44 +00:00
Jeff Young
80f3abe082
Event safety.
...
Sentry crash probably happens when an update title event fires either
too early or too late to have a simulator or simulator settings.
Sentry issue https://sentry.io/organizations/kicad/issues/3669444623/events/fce0179f7d5e4ff3a7dbb0d90a0570b4/
2022-12-26 20:33:04 +00:00
Jeff Young
424cdf6699
Overflow safety.
...
Sentry issue https://sentry.io/organizations/kicad/issues/3419671947/events/11212297e66c47c7af7144b5f075e88c/
2022-12-26 20:33:04 +00:00
Jeff Young
bf1c4e7bcd
Allow translation of simulation error messages.
2022-12-24 11:30:56 +00:00
Jeff Young
6f44468385
Fix more lifetime issues in simulator tuning.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13257
2022-12-23 22:03:24 +00:00
Jeff Young
981254543a
Allow line-continuations in name=value parameters.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13255
2022-12-23 20:05:16 +00:00
Jeff Young
8069e5d5d6
Fix sim bug running a command the first time when no command in doc.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/11366
2022-12-23 18:21:26 +00:00
Jeff Young
bfd3b40672
Bug fixes for tuning.
...
1) Don't save SCH_ITEM pointers in long-lived structures. Use KIIDs
instead.
2) Use the correct sheet for the referenced item, not the current sheet.
2022-12-23 17:40:36 +00:00
Jeff Young
604d7a72d6
Fix bug in tuning when value is stored in Value field.
2022-12-23 17:40:36 +00:00
Jeff Young
3f49fa5361
Don't write sim.params for library model unless we actually have overrides.
2022-12-23 12:46:18 +00:00
Jeff Young
cd7be966c0
Fix typo when un-escaping parameter name.
2022-12-23 12:46:18 +00:00
Jeff Young
7f60b87d1d
Implement fallback models for SPICE .lib models that we can't parse.
2022-12-22 22:35:09 +00:00
Jeff Young
7abfa46531
Inferred sim value improvements, and a unit test for them.
2022-12-21 17:03:49 +00:00
Jeff Young
e64852c833
Clearer naming.
2022-12-21 17:03:46 +00:00
Jeff Young
e7e3f3bced
SIM_MODEL code simplification.
...
1) Reduce API surface.
2) Prefer for(int) loops when what we're looking for is the index of
the item to be found
3) Move "_" escape processing to SIM_MODEL_NGSPICE (which is the only
model which uses the escape mechanism)
2022-12-21 17:01:58 +00:00