195 Commits

Author SHA1 Message Date
Mikolaj Wielgus
c857e533a9 Sim: Fix crash when a field tries to set an inexistent parameter
Refactored SetParamValue() and friends to use exceptions instead of
return values.
2022-10-12 04:27:48 +02:00
Mikolaj Wielgus
72402cf687 Sim: Override base model type if there's a Sim_Type field 2022-10-09 20:46:05 +02:00
Mikolaj Wielgus
120b569048 Sim: Support ako models 2022-10-04 17:48:10 +02:00
Mikolaj Wielgus
0d369f700f Sim: Basic cleanup after KIBIS merge
- Some preliminary refactoring,
- Use multiple types for IBIS drivers instead of a wftype variable,
- Remove the m_requiresUIUpdate variable and its accessors.
2022-09-30 16:17:00 +02:00
jean-pierre charras
46b0c116cd fix a compil warning. 2022-09-29 13:06:50 +02:00
Fabien Corona
7e486327d9 Ibis differential and PRBS models 2022-09-29 08:35:01 +00:00
Fabien Corona
528fe4d371 Add Ibis to spice model editor
ADDED: IBIS models are now supported in Sim Model Editor
2022-09-27 20:47:00 +00:00
Mikolaj Wielgus
e4865ce543 Excise wxString from simulation 2022-09-22 07:41:52 +02:00
Mikolaj Wielgus
8599323dce Sim: Move Spice model parsing to a separate class hierarchy
Roughly analogous to the SPICE_GENERATOR hierarchy.
2022-09-19 07:24:46 +02:00
Mikolaj Wielgus
0efc1149af Sim: Create a common base class for models sourced from Spice libs 2022-09-18 21:25:28 +02:00
Marek Roszko
63295cfb9e Remove unused vars 2022-09-18 08:49:07 -04:00
Mikolaj Wielgus
a8d7a845b6 Sim: Rename SIM_MODEL_SPICE to SIM_MODEL_RAW_SPICE 2022-09-18 07:25:56 +02:00
Mikolaj Wielgus
15b5b48992 Sim: More descriptive parsing errors in all Spice parsers
In my previous commit, which changed Spice parsing errors to be more
descriptive, I forgot to apply this to all invocations of the Spice
parser. This commit corrects that.
2022-09-17 08:46:45 +02:00
Mikolaj Wielgus
5fa0a1a064 Sim: Output more descriptive parsing errors 2022-09-17 08:29:18 +02:00
Mikolaj Wielgus
4ae2225b6d Sim: Replace all wxStrings with std::strings in SIM_VALUE 2022-09-16 06:11:14 +02:00
Mikolaj Wielgus
d19b2dbfe4 Sim Model Editor: Display error when failing to set parameter 2022-09-16 05:44:23 +02:00
Mikolaj Wielgus
907ad27e7f Sim: Move SPICE_GENERATOR class to a new file 2022-09-15 05:26:23 +02:00
Mikolaj Wielgus
e4c5bc6c66 Sim: Refactor Spice code generation to a new SPICE_GENERATOR class 2022-09-14 09:36:49 +02:00
Mikolaj Wielgus
ba723d36c9 Sim: Don't generate .model line when there's no instance param overrides 2022-09-14 03:16:53 +02:00
Mikolaj Wielgus
0e0d1a34f5 Sim: Spice grammar fixes
- Fix parsing .model lines with model names containingnon-alphanumeric
  characters like - and _,
- Fix parsing libraries in which EOF is not preceded by a newline.

Fixes https://gitlab.com/kicad/code/kicad/issues/12394
2022-09-12 04:05:17 +02:00
Mikolaj Wielgus
e56635a02b Sim: Add mutual inductor model 2022-09-11 19:23:01 +02:00
Mikolaj Wielgus
1b7ff376b0 Sim: Simplify generated .model cards
One parameter per line instead of wrapping after a certain line width.
Consistent with the formatting in the recently added generation of
.subckt cards from the schematic.
2022-09-10 02:45:48 +02:00
Mikolaj Wielgus
f6b1ff821b Sim Model Editor: Improve raw model code preview
- Show whole file below the item line for reference
- Fix pin sequence in item line (was not displayed)
2022-09-03 16:20:41 +02:00
Mikolaj Wielgus
cfdf6c097d Sim: Fix crash due to accessing param 0 of TYPE::NONE model 2022-09-02 20:21:09 +02:00
Mikolaj Wielgus
94bbb2e267 Sim: Skip NC pins of raw Spice models when generating netlist
Unconnected pins were erroreously placed in raw Spice item
instantiations, resulting in passing more pins than model had.
2022-09-01 11:41:43 +02:00
Mikolaj Wielgus
748324f4cd Sim: Use O-devices to simulate all tlines (much faster than T-devices) 2022-08-31 15:50:11 +02:00
Mikolaj Wielgus
3b3131ad74 Create class for voltage and current -controlled switches
Unfortunately, along the way it turned out that Ngspice's .probe alli
breaks current-controlled switches. So they won't work in that case for
now.
2022-08-29 03:49:41 +02:00
Mikolaj Wielgus
963900ab83 Sort sim model pins by symbol pin number in sim model dialog 2022-08-26 04:36:48 +02:00
Mikolaj Wielgus
a0400791c0 Fix exporting Spice instance lines for multi-part symbols
Only pins from the current symbol part were used: the rest was
incorrectly set to Not Connected.

Also slightly change generation of names for Not Connected nets.
2022-08-25 08:47:31 +02:00
Mikolaj Wielgus
8a6a0ff7dc Allow inferred voltage/current sources to have a single float in Value
Update Opamp test to use this feature.
2022-08-24 06:19:38 +02:00
Mikolaj Wielgus
ffab57ffd0 Fix default pin assignment for subcircuit sim models
Instead of using a linear order that incorrectly starts from 0, have all
pins unassigned by default.
2022-08-24 00:09:05 +02:00
Mikolaj Wielgus
6fad25f8ed Allow mapping sim model pins to arbitrary string symbol pin numbers
This change removes the incorrect assumption that symbol pin numbers are
integers and are the same as indexes in the vector storing the symbol
pins.

"~" is now used to denote a floating sim model pin.
2022-08-22 08:13:26 +02:00
jean-pierre charras
34b38eb95b Sim: on parameters parsing error, give a better info than tao::pegtl::eof error. 2022-08-17 11:11:36 +02:00
Roberto Fernandez Bautista
3e11506fa2 Fix a few unused variable warnings on msvc 2022-08-15 20:47:21 +01:00
Mikolaj Wielgus
bd809bf31c Sim: Fix reading the legacy Spice_Node_Sequence field 2022-08-11 02:42:16 +02:00
Mikolaj Wielgus
0040ffc567 Convert strings to UTF8 before they are input to PEGTL
Otherwise there are QA failures under non-UTF-8 locales.
2022-08-10 14:20:52 +02:00
Seth Hillbrand
e8627c89df Fix initial compile error on Linux.
Still getting link error with DIALOG_SIM_MODEL
2022-07-31 16:43:52 -07:00
Mikolaj Wielgus
7cf5138c63 Sim: Bugfixes, mostly for MS Windows compilation errors
Unfortunately, Windows headers define a lot of macros for common words,
so we had to rename some enums to not collide.

We also fix some of the many bugs related to the new simulation
architecture and the Spice Model Editor dialog.
2022-07-30 02:25:34 +00:00
Mikolaj Wielgus
739b9255d9 Sim Model Editor improvements
- Tab-switching,
- Automatic expansion of categories on tab-switch,
- Various minor simulation improvements,
- Various new simulation-related bugfixes.
2022-07-30 02:25:34 +00:00
Mikolaj Wielgus
6984f63af8 Sim: Transmission line models
Implement transmission line models and perform some adjustments to
the current models. Add some QA tests.
2022-07-30 02:25:34 +00:00
Mikolaj Wielgus
fe38c622a9 Sim: Improvements to model serialization
Don't serialize parameters in certain models for default values. Infer
models from Value field for some kinds of models. Resolve synonyms when
loading models from Spice libraries.
2022-07-30 02:25:34 +00:00
Mikolaj Wielgus
6450ec6b85 Sim: Spice netlist exporter rewrite
Rewrite the spice exporter to work with the new simulation model
architecture and data model, with many bugfixes related to the latter
two along the way.
2022-07-30 02:25:34 +00:00
Mikolaj Wielgus
ce84a48037 Sim: Implement loading Spice library files
Implement parsing and loading Spice libraries into KiCad. This is done
without any involvement of Ngspice -- we create our own in-tree parser
using PEGTL -- because Ngspice doesn't offer any intermediate output we
could plug ourselves into. We don't parse everything -- just the library
content, so this won't be that much effort.

We implement some basic Spice code preview to give the user a hint what
Spice code eir model will correspond to.
2022-07-30 02:25:34 +00:00
Mikolaj Wielgus
978f01553b Sim Model Editor: Serialize models in fields
Implemented serialization and deserialization of models in symbol fields
through the SIM_VALUE class. We don't carry the Spice legacy of
case-insensitive suffixes, instead we conform to the SI standard (i.e. M
is Mega, not milli, P is peta, p is pico).

Parameter grid value validation is implemented by simply not allowing
any characters that will make the value invalid (instead of highlighting
the field in a red color). This will likely be changed at some point in
the future.
2022-07-30 02:25:34 +00:00
Mikolaj Wielgus
c5a256291e Sim Model Editor: Display model parameters
This commit adds parameter display functionality, via a wxPropertyGrid
widget, to the Sim Model Editor. To faciliate that, a SIM_VALUE class is
created to serialize, deserialize, and validate numeric values in the
new parameter grid.

SPICE_MODEL is renamed to SIM_MODEL and split into several subclasses
that correspond to different model kinds.
2022-07-30 02:25:34 +00:00