SLiCAP 3.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- SLiCAP/SLiCAP.py +175 -0
- SLiCAP/SLiCAPconfigure.py +612 -0
- SLiCAP/SLiCAPdesignData.py +297 -0
- SLiCAP/SLiCAPexecute.py +1704 -0
- SLiCAP/SLiCAPfc.py +316 -0
- SLiCAP/SLiCAPgschem.py +64 -0
- SLiCAP/SLiCAPhtml.py +1148 -0
- SLiCAP/SLiCAPinstruction.py +1714 -0
- SLiCAP/SLiCAPkicad.py +190 -0
- SLiCAP/SLiCAPlatex.py +810 -0
- SLiCAP/SLiCAPlex.py +326 -0
- SLiCAP/SLiCAPltspice.py +85 -0
- SLiCAP/SLiCAPmath.py +1947 -0
- SLiCAP/SLiCAPmatrices.py +535 -0
- SLiCAP/SLiCAPngspice.py +536 -0
- SLiCAP/SLiCAPnotebook.py +43 -0
- SLiCAP/SLiCAPplots.py +1743 -0
- SLiCAP/SLiCAPprotos.py +941 -0
- SLiCAP/SLiCAPrst.py +812 -0
- SLiCAP/SLiCAPshell.py +1374 -0
- SLiCAP/SLiCAPstatespace.py +333 -0
- SLiCAP/SLiCAPsvgTools.py +127 -0
- SLiCAP/SLiCAPyacc.py +1325 -0
- SLiCAP/__init__.py +7 -0
- SLiCAP/files/LICENCE.txt +10 -0
- SLiCAP/files/LTspice/SLABCD.asy +35 -0
- SLiCAP/files/LTspice/SLC.asy +21 -0
- SLiCAP/files/LTspice/SLD.asy +19 -0
- SLiCAP/files/LTspice/SLE.asy +36 -0
- SLiCAP/files/LTspice/SLEZ.asy +44 -0
- SLiCAP/files/LTspice/SLF.asy +42 -0
- SLiCAP/files/LTspice/SLG.asy +40 -0
- SLiCAP/files/LTspice/SLH.asy +38 -0
- SLiCAP/files/LTspice/SLHZ.asy +46 -0
- SLiCAP/files/LTspice/SLI.asy +28 -0
- SLiCAP/files/LTspice/SLJ.asy +26 -0
- SLiCAP/files/LTspice/SLJ_noise.asy +30 -0
- SLiCAP/files/LTspice/SLK.asy +12 -0
- SLiCAP/files/LTspice/SLL.asy +23 -0
- SLiCAP/files/LTspice/SLM.asy +33 -0
- SLiCAP/files/LTspice/SLMD.asy +46 -0
- SLiCAP/files/LTspice/SLM_noise.asy +30 -0
- SLiCAP/files/LTspice/SLN.asy +38 -0
- SLiCAP/files/LTspice/SLN_dcvar.asy +72 -0
- SLiCAP/files/LTspice/SLN_noise.asy +48 -0
- SLiCAP/files/LTspice/SLO.asy +29 -0
- SLiCAP/files/LTspice/SLO_dcvar.asy +31 -0
- SLiCAP/files/LTspice/SLO_noise.asy +31 -0
- SLiCAP/files/LTspice/SLQ.asy +30 -0
- SLiCAP/files/LTspice/SLQD.asy +40 -0
- SLiCAP/files/LTspice/SLQ_noise.asy +27 -0
- SLiCAP/files/LTspice/SLR.asy +27 -0
- SLiCAP/files/LTspice/SLR_r.asy +27 -0
- SLiCAP/files/LTspice/SLT.asy +44 -0
- SLiCAP/files/LTspice/SLV.asy +24 -0
- SLiCAP/files/LTspice/SLW.asy +35 -0
- SLiCAP/files/LTspice/SLXJ.asy +26 -0
- SLiCAP/files/LTspice/SLXM.asy +35 -0
- SLiCAP/files/LTspice/SLXMD.asy +48 -0
- SLiCAP/files/LTspice/SLXMPN.asy +35 -0
- SLiCAP/files/LTspice/SLXM_V.asy +35 -0
- SLiCAP/files/LTspice/SLXQ.asy +32 -0
- SLiCAP/files/LTspice/SLXQD.asy +42 -0
- SLiCAP/files/LTspice/SLiCAPsymbolsLTSpice.asc +108 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/README.md +9 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/gnet-spice-noqsi.scm +608 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/install.sh +5 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/scheme-path.scm +2 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/test/model-test.sch +30 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Models/nch.sym +48 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Models/openIP.inc +1106 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Models/pch.sym +48 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Models/submicron.inc +55 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Schematic/Comparator.sch +317 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Schematic/DISCRI.sch +237 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Simulation/DISCRItest.sch +129 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Simulation/control.cir +5 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Simulation/geda.conf +2 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/BIAS1-1.sym +59 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/Comparator.sym +47 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/DISCRI.sym +94 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/EDFFP-1.sym +96 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/INV1P-1.sym +52 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/NANDP-1.sym +63 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/NORP-1.sym +64 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/Noqsi-title-B.sym +41 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/RSFF1-1.sym +71 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/Vdd.sym +15 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/Vdd1.sym +15 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/Vss.sym +15 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/ASIC/Symbols/Vss1.sym +15 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Schematic/BBamp.sch +269 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Schematic/Board.sch +54 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Simulation/Test.sch +131 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Simulation/geda.conf +2 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Simulation/transistors.lib +54 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Symbols/BBamp.sym +58 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Symbols/Noqsi-title-B.sym +41 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/BBamp/Symbols/pwrjack-RAPC712.sym +45 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/HelloWorld/HelloWorld.sch +50 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/BBamp.png +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/Board.png +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/Comparator.png +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/DISCRI.png +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/DISCRItest.png +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/HelloWorld.png +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/Test.png +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/dB.jpg +0 -0
- SLiCAP/files/gSchem/gnet-spice-noqsi-master/tutorial/Images/dB.tiff +0 -0
- SLiCAP/files/gSchem/symbols/0.sym +19 -0
- SLiCAP/files/gSchem/symbols/ABCD.sym +84 -0
- SLiCAP/files/gSchem/symbols/C.sym +31 -0
- SLiCAP/files/gSchem/symbols/D.sym +40 -0
- SLiCAP/files/gSchem/symbols/DevicesGschem.eps +1998 -0
- SLiCAP/files/gSchem/symbols/DevicesGschem.sch +493 -0
- SLiCAP/files/gSchem/symbols/E.sym +63 -0
- SLiCAP/files/gSchem/symbols/EZ.sym +68 -0
- SLiCAP/files/gSchem/symbols/F.sym +70 -0
- SLiCAP/files/gSchem/symbols/G.sym +66 -0
- SLiCAP/files/gSchem/symbols/G_g.sym +66 -0
- SLiCAP/files/gSchem/symbols/H.sym +65 -0
- SLiCAP/files/gSchem/symbols/HZ.sym +71 -0
- SLiCAP/files/gSchem/symbols/I.sym +40 -0
- SLiCAP/files/gSchem/symbols/J.sym +51 -0
- SLiCAP/files/gSchem/symbols/K.sym +18 -0
- SLiCAP/files/gSchem/symbols/L.sym +32 -0
- SLiCAP/files/gSchem/symbols/M.sym +64 -0
- SLiCAP/files/gSchem/symbols/MD-H.sym +78 -0
- SLiCAP/files/gSchem/symbols/MD-V.sym +78 -0
- SLiCAP/files/gSchem/symbols/M_noise.sym +50 -0
- SLiCAP/files/gSchem/symbols/N.sym +62 -0
- SLiCAP/files/gSchem/symbols/N_dcvar.sym +93 -0
- SLiCAP/files/gSchem/symbols/N_noise.sym +66 -0
- SLiCAP/files/gSchem/symbols/O.sym +49 -0
- SLiCAP/files/gSchem/symbols/O_dcvar.sym +51 -0
- SLiCAP/files/gSchem/symbols/O_noise.sym +49 -0
- SLiCAP/files/gSchem/symbols/Q.sym +58 -0
- SLiCAP/files/gSchem/symbols/QD-H.sym +70 -0
- SLiCAP/files/gSchem/symbols/QD-V.sym +68 -0
- SLiCAP/files/gSchem/symbols/Q_noise.sym +46 -0
- SLiCAP/files/gSchem/symbols/Q_noise_LF.sym +50 -0
- SLiCAP/files/gSchem/symbols/R.sym +38 -0
- SLiCAP/files/gSchem/symbols/R_r.sym +38 -0
- SLiCAP/files/gSchem/symbols/T.sym +70 -0
- SLiCAP/files/gSchem/symbols/V.sym +37 -0
- SLiCAP/files/gSchem/symbols/W.sym +62 -0
- SLiCAP/files/gSchem/symbols/XJ.sym +53 -0
- SLiCAP/files/gSchem/symbols/XM.sym +68 -0
- SLiCAP/files/gSchem/symbols/XMD-H.sym +82 -0
- SLiCAP/files/gSchem/symbols/XMD-V.sym +82 -0
- SLiCAP/files/gSchem/symbols/XMV.sym +72 -0
- SLiCAP/files/gSchem/symbols/XQ.sym +70 -0
- SLiCAP/files/gSchem/symbols/XQD-H.sym +72 -0
- SLiCAP/files/gSchem/symbols/XQD-V.sym +72 -0
- SLiCAP/files/gSchem/symbols/Z.sym +30 -0
- SLiCAP/files/gSchem/symbols/detectorDef.sym +10 -0
- SLiCAP/files/gSchem/symbols/include.sym +10 -0
- SLiCAP/files/gSchem/symbols/lgrefDef.sym +10 -0
- SLiCAP/files/gSchem/symbols/modelDef.sym +10 -0
- SLiCAP/files/gSchem/symbols/parDef.sym +10 -0
- SLiCAP/files/gSchem/symbols/sourceDef.sym +10 -0
- SLiCAP/files/html/css/slicap.css +153 -0
- SLiCAP/files/html/img/Grid.png +0 -0
- SLiCAP/files/kicad/SLiCAP.kicad_prl +83 -0
- SLiCAP/files/kicad/SLiCAP.kicad_pro +407 -0
- SLiCAP/files/kicad/SLiCAP.kicad_sch +14196 -0
- SLiCAP/files/kicad/SLiCAP.kicad_sym +10314 -0
- SLiCAP/files/lepton-eda/SLiCAPcomponents.sch +532 -0
- SLiCAP/files/lepton-eda/symbols/0.sym +19 -0
- SLiCAP/files/lepton-eda/symbols/ABCD.sym +84 -0
- SLiCAP/files/lepton-eda/symbols/C.sym +31 -0
- SLiCAP/files/lepton-eda/symbols/D.sym +40 -0
- SLiCAP/files/lepton-eda/symbols/E.sym +63 -0
- SLiCAP/files/lepton-eda/symbols/EZ.sym +68 -0
- SLiCAP/files/lepton-eda/symbols/F.sym +70 -0
- SLiCAP/files/lepton-eda/symbols/G.sym +66 -0
- SLiCAP/files/lepton-eda/symbols/G_g.sym +66 -0
- SLiCAP/files/lepton-eda/symbols/H.sym +65 -0
- SLiCAP/files/lepton-eda/symbols/HZ.sym +71 -0
- SLiCAP/files/lepton-eda/symbols/I.sym +40 -0
- SLiCAP/files/lepton-eda/symbols/J.sym +51 -0
- SLiCAP/files/lepton-eda/symbols/K.sym +18 -0
- SLiCAP/files/lepton-eda/symbols/L.sym +32 -0
- SLiCAP/files/lepton-eda/symbols/M.sym +64 -0
- SLiCAP/files/lepton-eda/symbols/MD-H.sym +78 -0
- SLiCAP/files/lepton-eda/symbols/MD-V.sym +78 -0
- SLiCAP/files/lepton-eda/symbols/M_noise.sym +50 -0
- SLiCAP/files/lepton-eda/symbols/N.sym +62 -0
- SLiCAP/files/lepton-eda/symbols/N_dcvar.sym +93 -0
- SLiCAP/files/lepton-eda/symbols/N_noise.sym +66 -0
- SLiCAP/files/lepton-eda/symbols/O.sym +49 -0
- SLiCAP/files/lepton-eda/symbols/O_dcvar.sym +51 -0
- SLiCAP/files/lepton-eda/symbols/O_noise.sym +49 -0
- SLiCAP/files/lepton-eda/symbols/Q.sym +58 -0
- SLiCAP/files/lepton-eda/symbols/QD-H.sym +70 -0
- SLiCAP/files/lepton-eda/symbols/QD-V.sym +68 -0
- SLiCAP/files/lepton-eda/symbols/Q_noise.sym +46 -0
- SLiCAP/files/lepton-eda/symbols/R.sym +38 -0
- SLiCAP/files/lepton-eda/symbols/R_r.sym +38 -0
- SLiCAP/files/lepton-eda/symbols/T.sym +70 -0
- SLiCAP/files/lepton-eda/symbols/V.sym +37 -0
- SLiCAP/files/lepton-eda/symbols/W.sym +62 -0
- SLiCAP/files/lepton-eda/symbols/XJ.sym +53 -0
- SLiCAP/files/lepton-eda/symbols/XM.sym +68 -0
- SLiCAP/files/lepton-eda/symbols/XMD-H.sym +82 -0
- SLiCAP/files/lepton-eda/symbols/XMD-V.sym +82 -0
- SLiCAP/files/lepton-eda/symbols/XMV.sym +72 -0
- SLiCAP/files/lepton-eda/symbols/XQD-H.sym +72 -0
- SLiCAP/files/lepton-eda/symbols/XQD-V.sym +72 -0
- SLiCAP/files/lepton-eda/symbols/Z.sym +30 -0
- SLiCAP/files/lepton-eda/symbols/detectorDef.sym +10 -0
- SLiCAP/files/lepton-eda/symbols/include.sym +10 -0
- SLiCAP/files/lepton-eda/symbols/lgrefDef.sym +10 -0
- SLiCAP/files/lepton-eda/symbols/modelDef.sym +10 -0
- SLiCAP/files/lepton-eda/symbols/parDef.sym +10 -0
- SLiCAP/files/lepton-eda/symbols/sourceDef.sym +10 -0
- SLiCAP/files/lib/Grid.png +0 -0
- SLiCAP/files/lib/SLiCAP.lib +519 -0
- SLiCAP/files/lib/SLiCAPmodels.lib +166 -0
- SLiCAP/files/lib/slicap.css +153 -0
- SLiCAP/files/sphinx/Makefile +19 -0
- SLiCAP/files/sphinx/_static/custom.css +6 -0
- SLiCAP/files/sphinx/_static/handsontable.full.min.css +31 -0
- SLiCAP/files/sphinx/_static/handsontable.full.min.js +89 -0
- SLiCAP/files/sphinx/_static/html_logo.png +0 -0
- SLiCAP/files/sphinx/_templates/layout.html +11 -0
- SLiCAP/files/sphinx/_templates/table.html +16 -0
- SLiCAP/files/sphinx/conf.py +50 -0
- SLiCAP/files/sphinx/img/SLiCAP-h1.svg +154 -0
- SLiCAP/files/sphinx/img/SLiCAP.svg +149 -0
- SLiCAP/files/sphinx/img/colorCode.svg +242 -0
- SLiCAP/files/sphinx/index.rst +10 -0
- SLiCAP/files/sphinx/make.bat +35 -0
- SLiCAP/files/sphinx/source/Makefile +19 -0
- SLiCAP/files/sphinx/source/_templates/table.html +16 -0
- SLiCAP/files/sphinx/source/make.bat +35 -0
- SLiCAP/files/tex/SLiCAPdata/TEXsubstitutions.tex +1 -0
- SLiCAP/files/tex/preambuleSLiCAP.tex +122 -0
- slicap-3.3.dist-info/METADATA +116 -0
- slicap-3.3.dist-info/RECORD +242 -0
- slicap-3.3.dist-info/WHEEL +5 -0
- slicap-3.3.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,612 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
SLiCAP scripts for configuration management.
|
|
4
|
+
|
|
5
|
+
#. Main configuration is stored in ~/SLiCAP/SLiCAP.ini
|
|
6
|
+
#. Project configuration is stored in <project folder>/SLiCAP.ini
|
|
7
|
+
|
|
8
|
+
Configuration settings are imported as global (ini.<setting>)
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import configparser
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
import platform
|
|
15
|
+
import re
|
|
16
|
+
import inspect
|
|
17
|
+
import requests
|
|
18
|
+
from os.path import expanduser
|
|
19
|
+
from datetime import datetime
|
|
20
|
+
from sympy import Symbol
|
|
21
|
+
from time import time
|
|
22
|
+
|
|
23
|
+
if platform.system() == 'Windows':
|
|
24
|
+
import win32api
|
|
25
|
+
import windows_tools.installed_software as wi
|
|
26
|
+
|
|
27
|
+
TIMEOUT = 120
|
|
28
|
+
INSTALLVERSION = "3.2.4"
|
|
29
|
+
|
|
30
|
+
def _check_version():
|
|
31
|
+
"""
|
|
32
|
+
Checks the version with the latest SLiCAP version from Git
|
|
33
|
+
|
|
34
|
+
Returns
|
|
35
|
+
-------
|
|
36
|
+
None.
|
|
37
|
+
"""
|
|
38
|
+
latest = _get_latest_version()
|
|
39
|
+
if latest == "Unknown":
|
|
40
|
+
print("You are running SLiCAP version %s. Please check github for updates."%(INSTALLVERSION))
|
|
41
|
+
elif INSTALLVERSION != latest:
|
|
42
|
+
print("A new version of SLiCAP is available, please get it from 'https://github.com/SLiCAP/SLiCAP_python.git'.")
|
|
43
|
+
else:
|
|
44
|
+
print("SLiCAP Version matches with the latest release of SLiCAP on github.")
|
|
45
|
+
return str(latest)
|
|
46
|
+
|
|
47
|
+
def _get_latest_version():
|
|
48
|
+
"""
|
|
49
|
+
Gets the SLiCAP version from Github
|
|
50
|
+
|
|
51
|
+
Returns
|
|
52
|
+
-------
|
|
53
|
+
String Version.
|
|
54
|
+
"""
|
|
55
|
+
try:
|
|
56
|
+
response = requests.get("https://api.github.com/repos/SLiCAP/SLiCAP_python/releases/latest")
|
|
57
|
+
version = response.json()["tag_name"]
|
|
58
|
+
except BaseException:
|
|
59
|
+
print("Could not determine the latest available version of SLiCAP on github.")
|
|
60
|
+
version = "Unknown"
|
|
61
|
+
return version
|
|
62
|
+
|
|
63
|
+
def _find_installed_windows_software():
|
|
64
|
+
"""
|
|
65
|
+
Searches for installed packages from the package list
|
|
66
|
+
|
|
67
|
+
Returns
|
|
68
|
+
-------
|
|
69
|
+
Dictionary with key-value pairs: key = package name, value = command
|
|
70
|
+
"""
|
|
71
|
+
package_list = ['LTspice', 'KiCad', 'gEDA', 'NGspice']
|
|
72
|
+
commands = {}
|
|
73
|
+
search_list = []
|
|
74
|
+
# get list with installed apps
|
|
75
|
+
software_list = wi.get_installed_software()
|
|
76
|
+
# make a list of apps that we want to search for
|
|
77
|
+
for dct in software_list:
|
|
78
|
+
name = dct["name"]
|
|
79
|
+
if len(name) > 1:
|
|
80
|
+
name = name.split()[0]
|
|
81
|
+
if name in package_list:
|
|
82
|
+
search_list.append(name)
|
|
83
|
+
y_n = input("\nDo you have NGspice installed? [y/n] >>> ").lower()[0]
|
|
84
|
+
while y_n != 'y' and y_n != 'n':
|
|
85
|
+
y_n = input("\nPlease enter 'y' for 'yes' or 'n' for 'no' >>> ").lower()[0]
|
|
86
|
+
if y_n == 'y':
|
|
87
|
+
search_list.append('NGspice')
|
|
88
|
+
else:
|
|
89
|
+
commands['ngspice'] = ''
|
|
90
|
+
"""
|
|
91
|
+
for package in search_list:
|
|
92
|
+
y_n = input("\nDo you want SLiCAP to search for the {} command? [y/n] >>> ".format(package)).lower()[0]
|
|
93
|
+
while y_n != 'y' and y_n != 'n':
|
|
94
|
+
y_n = input("\nPlease enter 'y' for 'yes' or 'n' for 'no' >>> ").lower()[0]
|
|
95
|
+
if y_n == 'y':
|
|
96
|
+
pass
|
|
97
|
+
else:
|
|
98
|
+
commands[package.lower()] = ''
|
|
99
|
+
"""
|
|
100
|
+
# search for the command to start each app
|
|
101
|
+
if len(search_list) > 0:
|
|
102
|
+
found_all = False
|
|
103
|
+
t_start = time()
|
|
104
|
+
time_out = False
|
|
105
|
+
print("\nSearching installed software, this will time-out after {} seconds!\n".format(str(TIMEOUT)))
|
|
106
|
+
for drive in win32api.GetLogicalDriveStrings().split('\000')[:-1]:
|
|
107
|
+
for root, dirs, files in os.walk(drive):
|
|
108
|
+
t_now = time()
|
|
109
|
+
if t_now - t_start >TIMEOUT:
|
|
110
|
+
time_out = True
|
|
111
|
+
for name in dirs:
|
|
112
|
+
for package in search_list: # Only search for installed software
|
|
113
|
+
p_name = package.lower()
|
|
114
|
+
if p_name not in commands.keys():
|
|
115
|
+
#print("Searching for installation of:", package)
|
|
116
|
+
found = False
|
|
117
|
+
if package == 'LTspice':
|
|
118
|
+
if re.match('LT(S|s)pice*', name, flags=0):
|
|
119
|
+
if os.path.exists(os.path.join(root,name,'XVIIx64.exe')):
|
|
120
|
+
print("LTSpice command set as:", os.path.join(root,name,'XVIIx64.exe'))
|
|
121
|
+
commands[p_name] = os.path.join(root,name,'XVIIx64.exe')
|
|
122
|
+
found = True
|
|
123
|
+
elif os.path.exists(os.path.join(root,name,'LTspice.exe')):
|
|
124
|
+
print("LTSpice command set as:", os.path.join(root,name,'LTspice.exe'))
|
|
125
|
+
commands[p_name] = os.path.join(root,name,'LTspice.exe')
|
|
126
|
+
found = True
|
|
127
|
+
elif os.path.exists(os.path.join(root,name,'ltspice.exe')):
|
|
128
|
+
print("LTSpice command set as:", os.path.join(root,name,'ltspice.exe'))
|
|
129
|
+
commands[p_name] = os.path.join(root,name,'ltspice.exe')
|
|
130
|
+
found = True
|
|
131
|
+
elif package == 'KiCad':
|
|
132
|
+
try:
|
|
133
|
+
if re.match('KiCad', name, flags=0):
|
|
134
|
+
version=os.listdir(os.path.join(root, name))[0]
|
|
135
|
+
file_name = os.path.join(root, name, version, 'bin','kicad-cli.exe')
|
|
136
|
+
if os.path.exists(file_name):
|
|
137
|
+
print("KiCad command set as:", os.path.join(root,name,'kicad-cli.exe'))
|
|
138
|
+
commands[p_name] = file_name
|
|
139
|
+
found = True
|
|
140
|
+
except:
|
|
141
|
+
print("Could not find the KiCad command 'kicad-cli.exe'. " +
|
|
142
|
+
"Please add this command manually to the ~/SLiCAP/SLiCAP.ini file!")
|
|
143
|
+
elif package == 'gEDA':
|
|
144
|
+
if re.match('gEDA', name, flags=0):
|
|
145
|
+
file_name = os.path.join(root, name, 'gEDA', 'bin' ,'gnetlist.exe')
|
|
146
|
+
if os.path.exists(file_name):
|
|
147
|
+
print("gnetlist command set as:", os.path.join(root,name,'gnetlist.exe'))
|
|
148
|
+
commands[p_name] = file_name
|
|
149
|
+
found = True
|
|
150
|
+
elif package == 'NGspice':
|
|
151
|
+
if re.match('Spice64', name, flags=0):
|
|
152
|
+
file_name = os.path.join(root, name, 'bin' ,'ngspice.exe')
|
|
153
|
+
if os.path.exists(file_name):
|
|
154
|
+
print("NGspice command set as:", os.path.join(root,name,'ngspice.exe'))
|
|
155
|
+
commands[p_name] = file_name
|
|
156
|
+
found = True
|
|
157
|
+
if found:
|
|
158
|
+
# Stop walking is all packages are found
|
|
159
|
+
found_all = True
|
|
160
|
+
for item in search_list:
|
|
161
|
+
if item.lower() not in list(commands.keys()):
|
|
162
|
+
found_all = False
|
|
163
|
+
break
|
|
164
|
+
if found_all == True or time_out:
|
|
165
|
+
break
|
|
166
|
+
if found_all or time_out:
|
|
167
|
+
break
|
|
168
|
+
if found_all or time_out:
|
|
169
|
+
break
|
|
170
|
+
found_list = list(commands.keys())
|
|
171
|
+
if found_all:
|
|
172
|
+
print("SLiCAP found all installed apps!")
|
|
173
|
+
elif time_out:
|
|
174
|
+
print("\nSearching time for apps aborted due to time-out!\n")
|
|
175
|
+
for app in search_list:
|
|
176
|
+
if app.lower() not in found_list:
|
|
177
|
+
print("-", app, ": installed but not found")
|
|
178
|
+
print("\nIf you want SLiCAP to make calls to these apps, please edit " +
|
|
179
|
+
"the main configuration file: 'SLiCAP.ini' in the ~/SLiCAP/ " +
|
|
180
|
+
"folder. More information is available in the SLiCAP HTML help.")
|
|
181
|
+
# Complete the commands dictionary
|
|
182
|
+
if len(found_list) != len(package_list):
|
|
183
|
+
for package in package_list:
|
|
184
|
+
p_name = package.lower()
|
|
185
|
+
if p_name not in found_list:
|
|
186
|
+
commands[p_name] = ''
|
|
187
|
+
if package not in search_list:
|
|
188
|
+
print("-", package, ": not installed")
|
|
189
|
+
if len(search_list) != len(package_list):
|
|
190
|
+
print("After installation of missing apps, delete the 'SLiCAP.ini' " +
|
|
191
|
+
"file in the ~/SLiCAP/ folder. It will be recreated with the " +
|
|
192
|
+
"next SLiCAP import.")
|
|
193
|
+
commands['lepton-eda'] = ''
|
|
194
|
+
return commands
|
|
195
|
+
|
|
196
|
+
def _find_LTspice_wine():
|
|
197
|
+
"""
|
|
198
|
+
Searches for LTspice under Linux or MacOS
|
|
199
|
+
|
|
200
|
+
Returns
|
|
201
|
+
-------
|
|
202
|
+
LTspice command
|
|
203
|
+
"""
|
|
204
|
+
cmd = ''
|
|
205
|
+
try:
|
|
206
|
+
home = expanduser("~")
|
|
207
|
+
drives = [os.path.join(home, '.wine', 'drive_c')]
|
|
208
|
+
for drive in drives:
|
|
209
|
+
drive = os.path.join(drive, 'Program Files')
|
|
210
|
+
for root, dirs, files in os.walk(drive, topdown=True):
|
|
211
|
+
for name in dirs:
|
|
212
|
+
if re.match('LT(S|s)pice*', name, flags=0):
|
|
213
|
+
if os.path.exists(os.path.join(root,name,'XVIIx64.exe')):
|
|
214
|
+
cmd = os.path.join(root,name,'XVIIx64.exe')
|
|
215
|
+
elif os.path.exists(os.path.join(root,name,'LTspice.exe')):
|
|
216
|
+
cmd = os.path.join(root,name,'LTspice.exe')
|
|
217
|
+
elif os.path.exists(os.path.join(root,name,'ltspice.exe')):
|
|
218
|
+
cmd = os.path.join(root,name,'ltspice.exe')
|
|
219
|
+
return cmd
|
|
220
|
+
except:
|
|
221
|
+
pass
|
|
222
|
+
return cmd
|
|
223
|
+
|
|
224
|
+
def _find_installed_software():
|
|
225
|
+
system = platform.system()
|
|
226
|
+
commands = {}
|
|
227
|
+
commands['ltspice'] = _find_LTspice_wine()
|
|
228
|
+
commands['kicad'] = 'kicad-cli'
|
|
229
|
+
commands['geda'] = 'gnetlist'
|
|
230
|
+
commands['lepton-eda'] = 'lepton-cli'
|
|
231
|
+
commands['ngspice'] = 'ngspice'
|
|
232
|
+
if system != "Linux":
|
|
233
|
+
commands['kicad'] = '/Applications/KiCad/KiCad.app/Contents/MacOS/kicad-cli'
|
|
234
|
+
for key in commands.keys():
|
|
235
|
+
if key != "ltspice":
|
|
236
|
+
cmd = "which " + commands[key]
|
|
237
|
+
found = os.system(cmd)
|
|
238
|
+
if found == 256:
|
|
239
|
+
commands[key] = ""
|
|
240
|
+
if system != 'Windows' and commands['lepton-eda'] != '':
|
|
241
|
+
commands['geda'] = 'lepton-netlist'
|
|
242
|
+
# print not installed packages
|
|
243
|
+
not_installed = []
|
|
244
|
+
for key in commands.keys():
|
|
245
|
+
if commands[key] == '':
|
|
246
|
+
not_installed.append(key)
|
|
247
|
+
if len(not_installed) > 0:
|
|
248
|
+
print("The following apps have not been installed:")
|
|
249
|
+
for app in not_installed:
|
|
250
|
+
print("-", app)
|
|
251
|
+
print("After installation of missing apps, delete the 'SLiCAP.ini' " +
|
|
252
|
+
"file in the ~/SLiCAP/ folder. It will be recreated with the " +
|
|
253
|
+
"next SLiCAP import.")
|
|
254
|
+
return commands
|
|
255
|
+
|
|
256
|
+
def _generate_project_config():
|
|
257
|
+
os.path.abspath('.') + '/'
|
|
258
|
+
project_paths = {"html" : 'html/',
|
|
259
|
+
"cir" : 'cir/',
|
|
260
|
+
"lib" : 'lib/',
|
|
261
|
+
"csv" : 'csv/',
|
|
262
|
+
"txt" : 'txt/',
|
|
263
|
+
"img" : 'img/',
|
|
264
|
+
"mathml" : 'mathml/',
|
|
265
|
+
"sphinx" : 'sphinx/',
|
|
266
|
+
"tex" : 'tex/'
|
|
267
|
+
}
|
|
268
|
+
SLiCAPconfig = configparser.ConfigParser()
|
|
269
|
+
SLiCAPconfig['math'] = {"laplace" : "s",
|
|
270
|
+
"frequency" : "f",
|
|
271
|
+
"numer" : "ME",
|
|
272
|
+
"denom" : "ME",
|
|
273
|
+
"lambdify" : "numpy",
|
|
274
|
+
"stepfunction" : True,
|
|
275
|
+
"factor" : True,
|
|
276
|
+
"maxrecsubst" : 15,
|
|
277
|
+
"reducematrix" : True,
|
|
278
|
+
"reducecircuit" : True
|
|
279
|
+
}
|
|
280
|
+
SLiCAPconfig['plot'] = {"axisheight" : 5,
|
|
281
|
+
"axiswidth" : 7,
|
|
282
|
+
"defaultcolors" : "r,b,g,c,m,y,k",
|
|
283
|
+
"defaultmarkers" : "",
|
|
284
|
+
"legendloc" : "best",
|
|
285
|
+
"plotfontsize" : 12,
|
|
286
|
+
"plotfiletype" : "svg",
|
|
287
|
+
"linewidth" : 2,
|
|
288
|
+
"markersize" : 7,
|
|
289
|
+
"linetype" : "-",
|
|
290
|
+
"svgmargin" : 1
|
|
291
|
+
}
|
|
292
|
+
SLiCAPconfig['gaincolors'] = {"asymptotic" : "r",
|
|
293
|
+
"gain" : "b",
|
|
294
|
+
"loopgain" : "k",
|
|
295
|
+
"servo" : "m",
|
|
296
|
+
"direct" : "g",
|
|
297
|
+
"vi" : "c"
|
|
298
|
+
}
|
|
299
|
+
SLiCAPconfig['display'] = {'Hz' : True,
|
|
300
|
+
'Digits' : 4,
|
|
301
|
+
'notebook' : False,
|
|
302
|
+
'scalefactors' : False,
|
|
303
|
+
'engnotation' : True}
|
|
304
|
+
try:
|
|
305
|
+
_author = os.getlogin()
|
|
306
|
+
except:
|
|
307
|
+
_author = 'default'
|
|
308
|
+
|
|
309
|
+
SLiCAPconfig['project'] = {'author' : _author,
|
|
310
|
+
'created' : datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
|
311
|
+
'last_updated' : '',
|
|
312
|
+
'title' : ''
|
|
313
|
+
}
|
|
314
|
+
SLiCAPconfig['projectpaths'] = project_paths
|
|
315
|
+
SLiCAPconfig['html'] = {'current_index' : 'index.html',
|
|
316
|
+
'current_page' : 'index.html',
|
|
317
|
+
'pages' : '',
|
|
318
|
+
'prefix' : ''
|
|
319
|
+
}
|
|
320
|
+
SLiCAPconfig['labels'] = {
|
|
321
|
+
}
|
|
322
|
+
return SLiCAPconfig
|
|
323
|
+
|
|
324
|
+
def _generate_main_config():
|
|
325
|
+
install_path = inspect.getfile(_find_installed_software).replace('\\', '/').split('/')
|
|
326
|
+
install_path = '/'.join(install_path[0:-2]) + '/'
|
|
327
|
+
slicap_home = expanduser("~").replace('\\', '/')
|
|
328
|
+
home_path = slicap_home + '/'
|
|
329
|
+
install_paths = {"install" : install_path,
|
|
330
|
+
"user" : home_path,
|
|
331
|
+
"docs" : os.path.join(install_path, 'SLiCAP/docs/html/'),
|
|
332
|
+
"libs" : os.path.join(install_path, 'SLiCAP/files/lib/'),
|
|
333
|
+
"kicadsyms" : os.path.join(install_path, 'SLiCAP/files/kicad/SLiCAP.kicad_sym'),
|
|
334
|
+
"gedasyms" : os.path.join(install_path, 'SLiCAP/files/gSchem/'),
|
|
335
|
+
"leptonsyms" : os.path.join(install_path, 'SLiCAP/files/lepton-eda/'),
|
|
336
|
+
"ltspicesyms" : os.path.join(install_path, 'SLiCAP/files/LTspice/'),
|
|
337
|
+
"latexfiles" : os.path.join(install_path, 'SLiCAP/files/tex/'),
|
|
338
|
+
"sphinxfiles" : os.path.join(install_path, 'SLiCAP/files/sphinx/'),
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
if platform.system() == 'Windows':
|
|
342
|
+
commands = _find_installed_windows_software()
|
|
343
|
+
else:
|
|
344
|
+
commands = _find_installed_software()
|
|
345
|
+
SLiCAPconfig = configparser.ConfigParser()
|
|
346
|
+
SLiCAPconfig['version'] = {"install_version" : INSTALLVERSION,
|
|
347
|
+
"latest_version" : _check_version()}
|
|
348
|
+
SLiCAPconfig['installpaths'] = install_paths
|
|
349
|
+
SLiCAPconfig['commands'] = commands
|
|
350
|
+
return SLiCAPconfig
|
|
351
|
+
|
|
352
|
+
def _generate_default_config():
|
|
353
|
+
default_config = {'version':{'install_version' : '',
|
|
354
|
+
'latest_version' : ''},
|
|
355
|
+
'installpaths':{"install" : '',
|
|
356
|
+
"user" : '',
|
|
357
|
+
"docs" : '',
|
|
358
|
+
"libs" : '',
|
|
359
|
+
"kicadsyms" : '',
|
|
360
|
+
"gedasyms" : '',
|
|
361
|
+
"leptonsyms" : '',
|
|
362
|
+
"ltspicesyms" : '',
|
|
363
|
+
"latexfiles" : '',
|
|
364
|
+
"sphinxfiles" : ''},
|
|
365
|
+
'commands':{'ltspice' : '',
|
|
366
|
+
'kicad' : '',
|
|
367
|
+
'geda' : '',
|
|
368
|
+
'lepton-eda' : '',
|
|
369
|
+
'ngspice' : ''}
|
|
370
|
+
}
|
|
371
|
+
return default_config
|
|
372
|
+
|
|
373
|
+
def _get_home_path():
|
|
374
|
+
slicap_home = expanduser("~").replace('\\', '/') + '/'
|
|
375
|
+
return slicap_home
|
|
376
|
+
|
|
377
|
+
def _read_project_config():
|
|
378
|
+
try:
|
|
379
|
+
if os.path.isfile("./SLiCAP.ini"):
|
|
380
|
+
config_dict = configparser.ConfigParser()
|
|
381
|
+
with open("SLiCAP.ini") as f:
|
|
382
|
+
config_dict.read_file(f)
|
|
383
|
+
else:
|
|
384
|
+
print("Generating project configuration file: SLiCAP.ini.\n")
|
|
385
|
+
config_dict = _generate_project_config()
|
|
386
|
+
_write_project_config(config_dict)
|
|
387
|
+
except:
|
|
388
|
+
config_dict = configparser.ConfigParser()
|
|
389
|
+
return config_dict
|
|
390
|
+
|
|
391
|
+
def _read_main_config():
|
|
392
|
+
try:
|
|
393
|
+
path = _get_home_path() + "SLiCAP.ini"
|
|
394
|
+
if os.path.isfile(path):
|
|
395
|
+
config_dict = configparser.ConfigParser()
|
|
396
|
+
with open(path) as f:
|
|
397
|
+
config_dict.read_file(f)
|
|
398
|
+
else:
|
|
399
|
+
print("Generating main configuration file: ~/SLiCAP/SLiCAP.ini.\n")
|
|
400
|
+
config_dict = _generate_main_config()
|
|
401
|
+
_write_main_config(config_dict)
|
|
402
|
+
except:
|
|
403
|
+
config_dict = configparser.ConfigParser()
|
|
404
|
+
return config_dict
|
|
405
|
+
|
|
406
|
+
def _write_project_config(config_dict):
|
|
407
|
+
with open("SLiCAP.ini", "w") as f:
|
|
408
|
+
config_dict.write(f)
|
|
409
|
+
|
|
410
|
+
def _write_main_config(config_dict):
|
|
411
|
+
with open(_get_home_path() + "SLiCAP.ini", "w") as f:
|
|
412
|
+
config_dict.write(f)
|
|
413
|
+
|
|
414
|
+
def _update_project_config():
|
|
415
|
+
config_dict = _read_project_config()
|
|
416
|
+
config_dict['project']['title'] = project_title
|
|
417
|
+
config_dict['project']['author'] = author
|
|
418
|
+
config_dict['project']['last_updated'] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
419
|
+
config_dict["html"]["current_page"] = html_index
|
|
420
|
+
config_dict["html"]["current_index"] = html_page
|
|
421
|
+
config_dict["html"]["prefix"] = html_prefix
|
|
422
|
+
config_dict["html"]["pages"] = (',').join(html_pages)
|
|
423
|
+
config_dict["labels"] = html_labels
|
|
424
|
+
_write_project_config(config_dict)
|
|
425
|
+
|
|
426
|
+
def _update_ini_files():
|
|
427
|
+
generate = False # Will be set to True is main config is corrupted
|
|
428
|
+
main_config = _read_main_config()
|
|
429
|
+
main_keys = main_config.keys()
|
|
430
|
+
default_config = _generate_default_config()
|
|
431
|
+
default_keys = default_config.keys()
|
|
432
|
+
for default_key in default_keys:
|
|
433
|
+
if default_key not in main_keys:
|
|
434
|
+
generate = True
|
|
435
|
+
else:
|
|
436
|
+
sub_keys = default_config[default_key].keys()
|
|
437
|
+
main_sub_keys = main_config[default_key].keys()
|
|
438
|
+
for sub_key in sub_keys:
|
|
439
|
+
if sub_key not in main_sub_keys:
|
|
440
|
+
generate is True
|
|
441
|
+
if generate:
|
|
442
|
+
print("Updating main configuration file; this may take a while.")
|
|
443
|
+
main_config = _generate_main_config()
|
|
444
|
+
_write_main_config(main_config)
|
|
445
|
+
|
|
446
|
+
# Update the project data from the project configuration file
|
|
447
|
+
project_config = _read_project_config()
|
|
448
|
+
proj_keys = project_config.keys()
|
|
449
|
+
default_config = _generate_project_config()
|
|
450
|
+
main_keys = default_config.keys()
|
|
451
|
+
for main_key in main_keys:
|
|
452
|
+
if main_key not in proj_keys:
|
|
453
|
+
project_config[main_key] = default_config[main_key]
|
|
454
|
+
sub_keys = default_config[main_key].keys()
|
|
455
|
+
prj_sub_keys = project_config[main_key].keys()
|
|
456
|
+
for sub_key in sub_keys:
|
|
457
|
+
if sub_key not in prj_sub_keys:
|
|
458
|
+
project_config[main_key][sub_key] = default_config[main_key][sub_key]
|
|
459
|
+
_write_project_config(project_config)
|
|
460
|
+
|
|
461
|
+
return main_config, project_config
|
|
462
|
+
|
|
463
|
+
def dump():
|
|
464
|
+
"""
|
|
465
|
+
Prints the global SLiCAP settings.
|
|
466
|
+
|
|
467
|
+
:return None:
|
|
468
|
+
:rtype NoneType:
|
|
469
|
+
|
|
470
|
+
:example:
|
|
471
|
+
|
|
472
|
+
>>> import SLiCAP as sl
|
|
473
|
+
>>> sl.ini.dump()
|
|
474
|
+
"""
|
|
475
|
+
main_config = _read_main_config()
|
|
476
|
+
# Global variables from main configuration file
|
|
477
|
+
print('ini.install_version =', main_config['version']['install_version'])
|
|
478
|
+
print('ini.latest_version =', main_config['version']['latest_version'])
|
|
479
|
+
print('ini.install_path =', main_config['installpaths']['install'])
|
|
480
|
+
print('ini.home_path =', main_config['installpaths']['user'])
|
|
481
|
+
print('ini.main_lib_path =', main_config['installpaths']['libs'])
|
|
482
|
+
print('ini.doc_path =', main_config['installpaths']['docs'])
|
|
483
|
+
print('ini.ltspice =', main_config['commands']['ltspice'])
|
|
484
|
+
print('ini.gnetlist =', main_config['commands']['geda'])
|
|
485
|
+
print('ini.kicad =', main_config['commands']['kicad'])
|
|
486
|
+
print('ini.ngspice =', main_config['commands']['ngspice'])
|
|
487
|
+
print('ini.lepton_eda =', main_config['commands']['lepton-eda'])
|
|
488
|
+
print('ini.ltspice_syms =', main_config['installpaths']['ltspicesyms'])
|
|
489
|
+
print('ini.gnetlist_syms =', main_config['installpaths']['gedasyms'])
|
|
490
|
+
print('ini.kicad_syms =', main_config['installpaths']['kicadsyms'])
|
|
491
|
+
print('ini.lepton_eda_syms =', main_config['installpaths']['leptonsyms'])
|
|
492
|
+
print('ini.latex_files =', main_config['installpaths']['latexfiles'])
|
|
493
|
+
print('ini.sphinx_files =', main_config['installpaths']['sphinxfiles'])
|
|
494
|
+
|
|
495
|
+
project_config = _read_project_config()
|
|
496
|
+
# Global variables from main configuration file
|
|
497
|
+
print('ini.html_path =', project_config['projectpaths']['html'])
|
|
498
|
+
print('ini.cir_path =', project_config['projectpaths']['cir'])
|
|
499
|
+
print('ini.img_path =', project_config['projectpaths']['img'])
|
|
500
|
+
print('ini.csv_path =', project_config['projectpaths']['csv'])
|
|
501
|
+
print('ini.txt_path =', project_config['projectpaths']['txt'])
|
|
502
|
+
print('ini.tex_path =', project_config['projectpaths']['tex'])
|
|
503
|
+
print('ini.user_lib_path =', project_config['projectpaths']['lib'])
|
|
504
|
+
print('ini.mathml_path =', project_config['projectpaths']['mathml'])
|
|
505
|
+
print('ini.sphinx_path =', project_config['projectpaths']['sphinx'])
|
|
506
|
+
print('ini.html_prefix =', project_config['html']['prefix'])
|
|
507
|
+
print('ini.html_index =', project_config['html']['current_index'])
|
|
508
|
+
print('ini.html_page =', project_config['html']['current_page'])
|
|
509
|
+
print('ini.html_pages =', project_config['html']['pages'].split(','))
|
|
510
|
+
print('ini.html_labels =', project_config['labels'])
|
|
511
|
+
print('ini.disp =', eval(project_config['display']['digits']))
|
|
512
|
+
print('ini.hz =', eval(project_config['display']['Hz']))
|
|
513
|
+
print('ini.notebook =', eval(project_config['display']['notebook']))
|
|
514
|
+
print('ini.scalefactors =', eval(project_config['display']['scalefactors']))
|
|
515
|
+
print('ini.eng_notation =', eval(project_config['display']['engnotation']))
|
|
516
|
+
print('ini.last_updated =', project_config['project']['last_updated'])
|
|
517
|
+
print('ini.project_title =', project_config['project']['title'])
|
|
518
|
+
print('ini.created =', project_config['project']['created'])
|
|
519
|
+
print('ini.author =', project_config['project']['author'])
|
|
520
|
+
print('ini.laplace =', Symbol(project_config['math']['laplace']))
|
|
521
|
+
print('ini.frequency =', Symbol(project_config['math']['frequency']))
|
|
522
|
+
print('ini.numer =', project_config['math']['numer'])
|
|
523
|
+
print('ini.denom =', project_config['math']['denom'])
|
|
524
|
+
print('ini.lambdify =', project_config['math']['lambdify'])
|
|
525
|
+
print('ini.step_function =', eval(project_config['math']['stepfunction']))
|
|
526
|
+
print('ini.factor =', eval(project_config['math']['factor']))
|
|
527
|
+
print('ini.max_rec_subst =', eval(project_config['math']['maxrecsubst']))
|
|
528
|
+
print('ini.reduce_matrix =', eval(project_config['math']['reducematrix']))
|
|
529
|
+
print('ini.reduce_circuit =', eval(project_config['math']['reducecircuit']))
|
|
530
|
+
print('ini.gain_colors =', dict(project_config['gaincolors']))
|
|
531
|
+
print('ini.plot_fontsize =', eval(project_config['plot']['plotfontsize']))
|
|
532
|
+
print('ini.axis_height =', eval(project_config['plot']['axisheight']))
|
|
533
|
+
print('ini.axis_width =', eval(project_config['plot']['axiswidth']))
|
|
534
|
+
print('ini.line_width =', eval(project_config['plot']['linewidth']))
|
|
535
|
+
print('ini.marker_size =', eval(project_config['plot']['markersize']))
|
|
536
|
+
print('ini.line_type =', project_config['plot']['linetype'])
|
|
537
|
+
print('ini.legend_loc =', project_config['plot']['legendloc'])
|
|
538
|
+
print('ini.default_colors =', project_config['plot']['defaultcolors'].split(','))
|
|
539
|
+
print('ini.default_markers =', project_config['plot']['defaultmarkers'].split(','))
|
|
540
|
+
print('ini.plot_fontsize =', project_config['plot']['plotfontsize'])
|
|
541
|
+
print('ini.plot_file_type =', project_config['plot']['plotfiletype'])
|
|
542
|
+
print('ini.svg_margin =', eval(project_config['plot']['svgmargin']))
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
# Define global variables from ini files
|
|
546
|
+
|
|
547
|
+
main_config, project_config = _update_ini_files()
|
|
548
|
+
|
|
549
|
+
install_version = main_config['version']['install_version']
|
|
550
|
+
latest_version = main_config['version']['latest_version']
|
|
551
|
+
install_path = main_config['installpaths']['install']
|
|
552
|
+
home_path = main_config['installpaths']['user']
|
|
553
|
+
main_lib_path = main_config['installpaths']['libs']
|
|
554
|
+
doc_path = main_config['installpaths']['docs']
|
|
555
|
+
ltspice_syms = main_config['installpaths']['ltspicesyms']
|
|
556
|
+
netlist_syms = main_config['installpaths']['gedasyms']
|
|
557
|
+
kicad_syms = main_config['installpaths']['kicadsyms']
|
|
558
|
+
lepton_eda_syms = main_config['installpaths']['leptonsyms']
|
|
559
|
+
latex_files = main_config['installpaths']['latexfiles']
|
|
560
|
+
sphinx_files = main_config['installpaths']['sphinxfiles']
|
|
561
|
+
ltspice = main_config['commands']['ltspice']
|
|
562
|
+
gnetlist = main_config['commands']['geda']
|
|
563
|
+
kicad = main_config['commands']['kicad']
|
|
564
|
+
ngspice = main_config['commands']['ngspice']
|
|
565
|
+
lepton_eda = main_config['commands']['lepton-eda']
|
|
566
|
+
html_path = project_config['projectpaths']['html']
|
|
567
|
+
cir_path = project_config['projectpaths']['cir']
|
|
568
|
+
img_path = project_config['projectpaths']['img']
|
|
569
|
+
csv_path = project_config['projectpaths']['csv']
|
|
570
|
+
txt_path = project_config['projectpaths']['txt']
|
|
571
|
+
tex_path = project_config['projectpaths']['tex']
|
|
572
|
+
user_lib_path = project_config['projectpaths']['lib']
|
|
573
|
+
mathml_path = project_config['projectpaths']['mathml']
|
|
574
|
+
sphinx_path = project_config['projectpaths']['sphinx']
|
|
575
|
+
html_prefix = project_config['html']['prefix']
|
|
576
|
+
html_index = project_config['html']['current_index']
|
|
577
|
+
html_page = project_config['html']['current_page']
|
|
578
|
+
html_pages = project_config['html']['pages'].split(',')
|
|
579
|
+
html_labels = project_config['labels']
|
|
580
|
+
disp = eval(project_config['display']['digits'])
|
|
581
|
+
scalefactors = eval(project_config['display']['scalefactors'])
|
|
582
|
+
eng_notation = eval(project_config['display']['engnotation'])
|
|
583
|
+
last_updated = project_config['project']['last_updated']
|
|
584
|
+
project_title = project_config['project']['title']
|
|
585
|
+
created = project_config['project']['created']
|
|
586
|
+
author = project_config['project']['author']
|
|
587
|
+
laplace = Symbol(project_config['math']['laplace'])
|
|
588
|
+
frequency = Symbol(project_config['math']['frequency'])
|
|
589
|
+
numer = project_config['math']['numer']
|
|
590
|
+
denom = project_config['math']['denom']
|
|
591
|
+
lambdify = project_config['math']['lambdify']
|
|
592
|
+
step_function = eval(project_config['math']['stepfunction'])
|
|
593
|
+
factor = eval(project_config['math']['factor'])
|
|
594
|
+
max_rec_subst = eval(project_config['math']['maxrecsubst'])
|
|
595
|
+
reduce_matrix = eval(project_config['math']['reducematrix'])
|
|
596
|
+
reduce_circuit = eval(project_config['math']['reducecircuit'])
|
|
597
|
+
hz = eval(project_config['display']['Hz'])
|
|
598
|
+
gain_colors = project_config['gaincolors']
|
|
599
|
+
plot_fontsize = eval(project_config['plot']['plotfontsize'])
|
|
600
|
+
axis_height = eval(project_config['plot']['axisheight'])
|
|
601
|
+
axis_width = eval(project_config['plot']['axiswidth'])
|
|
602
|
+
line_width = eval(project_config['plot']['linewidth'])
|
|
603
|
+
marker_size = eval(project_config['plot']['markersize'])
|
|
604
|
+
svg_margin = eval(project_config['plot']['svgmargin'])
|
|
605
|
+
line_type = project_config['plot']['linetype']
|
|
606
|
+
legend_loc = project_config['plot']['legendloc']
|
|
607
|
+
default_colors = project_config['plot']['defaultcolors'].split(',')
|
|
608
|
+
default_markers = project_config['plot']['defaultmarkers'].split(',')
|
|
609
|
+
plot_file_type = project_config['plot']['plotfiletype']
|
|
610
|
+
notebook = False
|
|
611
|
+
|
|
612
|
+
SLiCAPPARAMS = {} # Entries will be generated during circuit check
|