SLiCAP release notes

../../_images/colorCode.svg

SLiCAP version 6.1 release notes

Version 6.1 combines the schematic capture for SLiCAP and NGspice with a simple SVG editor (Draw menu) to illustrate schematics, and with a symbol editor for modifying and creating SLiCAP and NGspice symbols.

  1. Symbol editor. File ‣ New symbol and File ‣ Edit symbol… on the main window open a canvas in symbol mode: the schematic editor with reduced menus, editing one symbol of a .slicap_sym or .spice_sym file in the project’s lib folder. A double click on such a file in the Project panel does the same. The artwork is drawn with the Draw menu. The terminals are placed with Place ‣ Pin…, decoration with Place ‣ Symbol text…, Place ‣ LaTeX… and Place ‣ Image…. The element attributes (prefix, model, parameters with defaults, description, info link) are set with File ‣ Symbol properties…. A LaTeX label is compiled once and stored in the symbol as plain paths together with its source. An image is embedded. The symbol therefore renders on any machine, and the label reopens for editing where LaTeX is installed. A saved symbol is offered at once in Place ‣ Symbol of every open schematic of the project. See The symbol editor.

  2. Drawing. The Draw menu has lines, rectangles, ellipses and polygons. Double-clicking a shape opens its properties: stroke colour, width and style, fill, a rotation about the shape’s centre and, for a line, the two line ends (arrow heads with their own width and length). A selected shape shows a handle at every vertex for reshaping. See Annotations.

  3. Shift + drag. Items snap in three ways. Symbols, wires, junctions and symbol pins always snap to the grid, because the connectivity is computed from their positions. Text annotations never snap. Everything else snaps to the grid, or to a fine grid of one fifth of the grid step while Shift is held during the drag: the blocks of the Place menu (parameters, model definitions, the source, detector and loop gain reference definitions, library and command lines), the border, and the drawn shapes, which snap the vertex nearest to the point where they were grabbed. In the symbol editor the fine grid is one symbol unit, which symbol artwork needs. View subgrid shows the fine grid as dots, with its own colour in the drawing preferences. See Annotations and Preferences.

  4. Assigning symbols to components and subcircuits. The component Properties dialog has a Change symbol… button. It offers the symbols with the same number of pins and, for a built-in element type, the same prefix, also those of the project’s lib folder. The wires follow the pins to their new places. For a subcircuit block the ports are assigned to the pins of the chosen symbol in a list with a preview. The result is stored in the project’s library as the block’s symbol, so that Tools ‣ Update symbols from library keeps it and other schematics of the project can use it. See Component Properties.

  5. Orientation of symbol lettering. The symbol texts and LaTeX labels of a rotated or mirrored component are read from the bottom or from the right of the sheet: upright at 0 and 180 degrees, bottom-to-top at 90 and 270 degrees, never mirrored. This holds on the canvas and in the SVG and PDF exports.

  6. Dark and light theme. File ‣ Preferences… on the main window has a colour scheme system (following the operating system), light or dark. On a dark scheme the canvases, the symbol previews and the Design data panel draw on a dark background with the lightness of every colour inverted while its hue is kept, LaTeX renders included: black shows white, white fills show dark, red stays red. A change of the desktop scheme while SLiCAP runs is followed at once. The schematic style, and therefore every SVG and PDF export, keeps the document colours. See Preferences.

  7. Wires and junctions. A selected wire turns to the selection colour with a dot on each vertex and a cross on the vertex being dragged, like a selected shape. The bounding box is gone. Two crossing wires do not connect. A junction placed on the crossing splits the wires there and connects them, and the dot appears because a connection now exists. See Wiring.

  8. Copy and paste across canvases. One clipboard serves all open schematics and symbol editors. Components and wires paste from one schematic into another. Shapes, LaTeX labels and images paste between schematics and symbols. Pins and symbol texts paste between symbols, also between the two dialects. Pasted and newly placed items follow the cursor and are put down with a click. R and M rotate and mirror a component while it is being placed.

  9. NGspice schematics. A .model block on a top-level NGspice schematic is now written into the netlist (in a subcircuit it already was). The SLiCAP and NGspice netlisters share one writer for the library, parameter and model blocks. The model dialog of an NGspice schematic offers the SPICE model types with empty parameter lines, because SPICE model parameters depend on the model level and are taken from the NGspice manual, not from SLiCAP. A voltage or current source with only a value is netlisted with that value as its dc value. Every NGspice run reports in the log which netlist it uses and whether it was regenerated from the schematic. The heading of a model block on the canvas reads model in the font of the parameter block.

  10. Upright subscripts in every report format. Every LaTeX, RST, MyST, Markdown and HTML snippet sets the subscripts that hold a letter upright on creation (R_\mathrm{a}, V_\mathrm{out}). A numeric index such as p_1 stays italic. The HTML report pages follow the same rule. Schematic labels and reports now use one convention. Reports have to be regenerated to pick it up.

  11. MS-Windows. Fixes reported by the first Windows users:

    • The documentation links of the symbols and dialogs point to the current layout of the manual. They open the local copy of the manual first.

    • The instruction file writes paths with forward slashes. This removes the SyntaxWarning for a path such as "sch\Test.slicap_sch".

    • Writing the design-data manifest is retried while Windows still holds the file (WinError 5).

    • Table cells in the parameter and model dialogs are edited on an opaque background.

  12. GUI bug fixes.

    • Run (F5) always executes the instruction file, also while a symbol editor has the focus.

    • A symbol file with an unusable symbol is still loaded. The unusable symbol is skipped with a note in the console.

    • The pin markers of a symbol (the circles in the symbol file that give the pin positions) are no longer drawn. They were rendered as black dots, invisible on a black wire, but a gap in every wire on a dark canvas.

    • Pins, symbol texts and pasted items are placed under the cursor, not at the origin.

    • A new symbol saved without a name is named after its file.

    • Save as writes the extension of the selected file type.

SLiCAP Version 6.0 release notes

Version 6.0 will be the tested release: the design environment as it stands in the 5.x line, verified end to end, plus the following analysis work.

  1. API part of the manual is updated now using SLiCAP schematics instead of KiCAD.

  2. SLiCAP symbols for schematic capture with KiCAD, LTspice, gSchem, and Lepton-EDA are provided and supported by makeCircuit(). Working with schematic capture programs other than SLiCAP, however, is no longer documented. The last tested version of KiCAD remains 9.1. From version 6, the use of schematic capture tools other than SLiCAP is deprecated.

  3. State-space representation of the circuit equations: doStateSpace() returns the full (MIMO) realization dx/dt = A x + B u, y = C x + D u, obtained from the first-order MNA matrix by an exact reduction: the number of states equals the number of finite poles, also for capacitor loops, inductor cut sets, ideally coupled inductors and nullors. Improper outputs appear as a polynomial in the Laplace variable in D. Formatter method stateSpace() (LaTeX, RST, TXT), stateSpace2html() and listStateSpace(). A “State space” group in the GUI instruction editor. See the user guide page SLiCAP state-space representation.

  4. Physical state variables: doStateSpace() names its states after capacitor voltages, inductor currents and the internal states of device models wherever the network allows it.

  5. Pole-zero analysis with the state-space engine. The keyword method='state' on doPoles(), doZeros() and doPZ() (and on doMatrix(), doLaplace(), doNumer(), doDenom() for the first-order matrix) and the project setting ini.pz_method. The default engine remains the determinant.

  6. Loop gain and servo function are computed by injection at the reference: the reference is replaced by an independent source of its own gain and its returned controlling quantity is detected (the loop stays closed), instead of from the return difference. For a matched reference pair with a conversion type each reference keeps its own gain, so that a gain mismatch shows up in the cd and dc blocks like any other unbalance. Two loop gain references without a conversion type, e.g. a balanced stage in an unbalanced amplifier, give the four modal loop gains loopgaintype ‘dd’, ‘dc’, ‘cd’, ‘cc’ (servo functions only for ‘dd’ and ‘cc’).

  7. A separate exact core on Python’s fractions module for the numeric path was built, measured and REMOVED: sympy’s rational matrices were faster in every case.

  8. Several bug fixes and speed improvements.

SLiCAP Version 5.x release notes

Note

The 5.x series is the development line of the design environment. The analysis engine is stable; the graphical environment is not finished yet: dialogs, menus and the on-disk layout of new features (subcircuit packages, instruction files) may still change until 6.0. Projects and scripts written with the analysis functions are unaffected.

  1. Schematic capture GUI. SLiCAP now includes its own schematic editor; KiCad, LTspice, gSchem, or Lepton-EDA are no longer required for drawing circuits (they remain supported). The GUI is started from the command line with slicap (full environment with instruction editing and simulation) or slicap-schematics (schematic editing only), or from Python with sl.startSchematic(). It supports two schematic types:

    • SLiCAP schematics (.slicap_sch): symbolic analysis netlists

    • NGspice schematics (.spice_sch): numeric simulation netlists

    Features include netlist generation, drawing-size SVG/PDF export with LaTeX-rendered labels, hierarchical subcircuits, an instruction editor with analysis dialogs, and a log panel. See Schematic capture.

  2. NGspice simulations from the GUI. Instruction dialogs generate and run OP, DC, AC, TRAN, and NOISE analyses, including parameter stepping and per-instruction parameter overrides (params=). All values use SLiCAP notation (case-sensitive scale factors: m = milli, M = mega); SLiCAP translates automatically wherever values are written into NGspice input (1M → 1E6). See Value notation.

  3. Instruction editing, traces, axes and figures. Analyses are composed through dialogs that offer only what the circuit has — its sources, detectors, loop-gain references and parameters — so an instruction is correct by construction. Results are turned into plots in three steps, each one statement in the instruction file: Instruction ‣ Create / Edit Traces and Measurements…, Instruction ‣ Create / Edit Axes… and Instruction ‣ Create / Edit Figures… (main window). All of these dialogs can edit existing definitions: pick a name, the fields prefill from the instruction file, and the regenerated statement is appended — the later definition wins when the file runs; removing the superseded line is up to you.

  4. Circuit objects are explicit. A circuit object is created from its own schematic (Instruction ‣ Create circuit object…) and appended to the instruction file; instructions are then composed for the circuit objects of the schematic you are editing. One instruction file can hold the circuits and instructions of any number of schematics.

  5. Project management in the GUI. The main window’s File menu creates, opens, saves, and closes SLiCAP projects:

    • File ‣ New project… asks for a project name, directory, and author, generates the project main.py, and runs it once to create the project structure and its SLiCAP.ini.

    • File ‣ Select project folder… shows the project’s files in a Project panel on the left; double-clicking a schematic opens it in the editor, any other file opens with its default application. A directory without a SLiCAP.ini offers to create a project there.

    • File ‣ Save project saves every open panel with unsaved content; File ‣ Close project returns to the welcome screen. One project is open at a time; switching projects prompts for unsaved work first.

  6. No more disk-wide search for installed programs. SLiCAP no longer walks the disk looking for KiCad, LTspice, gEDA/Lepton-EDA or NGspice; on MS-Windows that search could take up to two minutes and broke whenever a program changed its installation layout. Detection is now non-interactive and cheap: programs on the search PATH are picked up, plus the default MS-Windows install locations (e.g. C:\Spice64\bin for NGspice).

    • The commands are stored in the [commands] section of ~/SLiCAP.ini and can be edited there directly, or from the GUI with File ‣ Edit main configuration file; see Installation.

    • The pywin32 and windows_tools dependencies have been dropped.

    • A dedicated Configure SLiCAP… dialog (enter, auto-detect and test the program paths) is still to come.

  7. Faster startup.

    • import SLiCAP no longer contacts the internet. The check for new releases moved to the GUI menu Help ‣ Check for updates… (also available as sl.ini.check_for_updates()).

    • The built-in libraries are compiled once and cached (~/SLiCAP_libcache.pkl); repeated initProject() calls are nearly instant. The cache refreshes automatically when SLiCAP, sympy, or a library file changes.

  8. initProject() accepts an optional author argument that is stored in the project configuration file, e.g. sl.initProject("My project", author="Me").

  9. GUI refinements.

    • Schematics open as tabs; each keeps the full canvas width.

    • Closing the last schematic returns to the welcome screen; File ‣ Exit (Ctrl+Q) quits the application.

    • The main window and the schematic panel now have separate File menus: the main window creates/opens schematics, the schematic panel acts on its own schematic only (Save schematic, Schematic properties…, Export netlist…, Print schematic…, Schematic drawing preferences…).

  10. Packaging. Dependencies are declared in pyproject.toml. Install from source with python -m pip install .. A requirements.txt mirroring those dependencies is kept for the documentation build on GitHub, which installs from it.

Changed behaviour in the 5.x line

These are corrections and design changes rather than additions; they can make existing output or projects look different.

  1. ``parDefs`` in the LaTeX formatter produced the wrong table. LaTeXformatter.parDefs() listed the circuit’s elements instead of its parameter definitions (the RST and HTML formatters were always correct). Reports that include a LaTeX parDefs table have to be regenerated: the table is now Name / Symbolic / Numeric, and considerably narrower.

  2. One entry point for expression typesetting. The private _latex_ENG moved from SLiCAPhtml to SLiCAPlatex and is now the public exprLatex(expr) — the counterpart of symbolLatex(name), used by the report formatters and the schematic environment alike. The old name still resolves, so existing code keeps working.

  3. An expression that does not parse is no longer rendered. A component value or table entry that is not a valid SLiCAP expression used to be passed to LaTeX as if it were LaTeX code, which silently typeset something wrong. Such a value now produces an error message and is shown as plain text.

  4. A subcircuit is a package in ``lib/``. Saving a schematic as a subcircuit writes the library, the block symbol and the subcircuit’s own schematic into the project’s lib/ folder, so the subcircuit can be copied into another project complete. Subcircuit schematics saved earlier in sch/ are still found.

SLiCAP Version 4.0 release notes

  1. RMS noise calculations have been improved:

    • Integration methods can be selected

    • Noise weighting (filter) functions can be added

  2. The netlist syntax and the matrix stamps of F, H, and HZ element models has been made SPICE-compatible. All SLiCAP symbol libraries, model libraries, and the netlist parser have been updated accordingly and are NO LONGER compatible with earlier versions.

  3. Element branch current names have all been set to I_<refdes>, where refdes is the reference designator of the element. This is NOT compatible with previous versions.

  4. Improved output of noise and dcvar analysis for balanced circuits with convtype='dd' or convtype='cc'. By default, paired noise or dcvar sources are renamed to common-mode or differential-mode sources.

  5. Added checyshev1Poly() returns a normalized Chebyshev type 1 polynomial.

  6. Added filterFunc() for creating unity-gain low-pass, high-pass, band-pass, band-reject, and all-pass transfer functions, based on normalized Butterworth, Bessel, and Chebyshev type-1 (pass-band ripple) polynomials.

  7. Added DIN_A(), which returns a DIN_A weighting funcion.

  8. The code has strongly been simplified: the allResults object is replaced with a modified instruction object.

  9. The function ini.dump() has been modified. It displays settings per section. Settings for a specific section are displayed after giving the section name as argument.

    >>> import SLiCAP as sl
    >>> sl.ini.dump("version")
    
    VERSION
    -------
    ini.install_version        = 4.0.11
    ini.latest_version         = 4.0.11
    
  10. The execution of the reduce_circuit and the reduce_matrix options have been improved. reduce_matrix now also works for matrices that do not include Laplace expressions and it only performs multiplication and addition on symbolic expressions.

  11. listPZ displays frequencies in rad/s if ini.hz=False

  12. Canceling of poles and zeros in doPZ() also works for symbolic pole-zero analysis

  13. RST and LaTeX snippets for tables are improved

  14. RST snippet for equations now supports multiline expressions

  15. The documentation has been updated. It automatically generates rst and LaTeX snippets by executing manual.py when running make html.

  16. Examples (Python scripts and Jupyter Notebooks) have been added to the SLiCAP Examples reporitory

  17. SLiCAP 4.0 has an improved interface with NGspice:

    1. Added a KiCAD SPICE symbol library with NGspice symbols for all standard NGspice devices (no Xspice devices yet)

    2. A simple python instruction for the following analysis types including (non-nested) parameter stepping:

      1. .OP

      2. .DC

      3. .AC

      4. .NOISE

      5. .TRAN

      These NGspice analyses return a dictionary with traces that can be plotted with the SLiCAP plot() function, or added to an existing plot using addTraces().

      The results of an operating point information (without parameter stepping) can be displayed on the KiCAD schematic and its svg and pdf image files.

  18. Library files have been updated; some names of subcircuits modeling the noise behavior of CMOS devices have been modified. See Subcircuits with noise.

  19. The function _reduce_circuit and its associated ini setting ini.reduce_circuit have been removed. The improved matrix reduction algorithm made it obsolete.

  20. Clean-up code and minor bug fixes.

SLiCAP Version 3.5 release notes

  1. SLiCAP version 3.5 has an improved interface to LaTeX and Sphinx:

SLiCAP Version 3.4 release notes

  1. SLiCAP 3.4 is compatible with KiCad 9

SLiCAP Version 3.3 release notes

  1. SLiCAP Version 3.3 is prepared for PyPi pip install:

    • Examples are no longer part of the package, they can be pulled of downloaded from github.

    • Libraries are no longer placed in the ~/SLiCAP/ folder. Library locations are found in ~/SLiCAP.ini under the section [installpaths]. Settings for symbol library locations in schematic editors (KiCAD, LTspice, etc.) need to be adjusted accordingly.

SLiCAP Version 3.2 release notes

  1. SLiCAP Version 3.2 is compatible with previous versions. The use of the instruction object for creating instructions, however, is deprecated and no longer described in this documentation.

  2. Version 3.2.4 has a KiCAD library symbol, SLiCAP CMOS18 sub circuits, and extra math functions for the design of a feedback amplifiers’ MOS input stage based on its noise performance.

  3. From version 3.2.3 the analysis time for large circuits has been considerably reduced. By default, two methods will be applied:

    1. Reduction of the circuit through elimination of all independent voltage sources that are not used as signal source or current detector.

      This circuit reduction can be switched off by setting

      reduce_circuit = False
      

      in the [math] section of the SLiCAP.ini file in the project directory

    2. Reduction of the size of the MNA matrix before calculation of the determinant, for matrices with Laplace expressions.

      This matrix reduction can be switched off by setting

      reduce_matrix = False
      

      in the [math] section of the SLiCAP.ini file in the project directory

  4. KiCAD is the preferred schematic capture program for SLiCAP version 3.2. From version 3.2.3 Inkscape is no longer needed for creating image-size svg and pdf files of KiCAD schematics. SLiCAP uses dedicated Python scrips for this purpose.

  5. The function ENG(<number>, scaleFactors=False) has been added to write numbers in enginering notation. It is used in the following functions:

    • elementData2html

    • params2html

    • expr2html

    • eqn2html

    • pz2html

    • specs2html

    If ini.scalefactors=True, scale factors from \(y=10^{-24}\cdots P=10^{15}\) are used. If ini.scalefactors=False and ini.eng_notation=True, engineering notation will be used (powers of 10 are an integer multiple of 3).

    Application of this function is defined in the [display] section of the SLiCAP.ini file in the project folder. Default setting are:

    scalefactors = False
    eng_notation = True
    
  6. The SLiCAP.ini files in the ~/SliCAP/ folder and in the project folder are automatically updated in case in which they are corrupted or incomplete.

../../_images/colorCode.svg