From 687a4bf4cd1e027df9fb371d5c173c02d7db767b Mon Sep 17 00:00:00 2001 From: fahim Date: Fri, 5 Jun 2015 12:25:17 +0530 Subject: Subject: Changes in device library,ModelEditor.py,Convert.py. Added more kicad library Description: Changes in device library,ModelEditor.py,Convert.py. Added more --- kicadSchematicLibrary/eSim_Devices.dcm | 24 +++ kicadSchematicLibrary/eSim_Devices.lib | 144 +++++++++++++- kicadSchematicLibrary/eSim_Sources.dcm | 3 + kicadSchematicLibrary/eSim_Sources.lib | 216 +++++++++++++++++++++ src/deviceModelLibrary/Diode/D.lib | 23 ++- src/deviceModelLibrary/Diode/D.xml | 24 +-- src/deviceModelLibrary/IGBT/NIGBT.lib | 21 +- src/deviceModelLibrary/IGBT/NIGBT.xml | 15 +- src/deviceModelLibrary/IGBT/PIGBT.xml | 2 +- src/deviceModelLibrary/JFET/NJF.xml | 2 +- src/deviceModelLibrary/JFET/PJF.xml | 2 +- src/deviceModelLibrary/MOS/NMOS-0.5um.xml | 2 +- src/deviceModelLibrary/MOS/NMOS-180nm.xml | 2 +- src/deviceModelLibrary/MOS/NMOS-5um.xml | 2 +- src/deviceModelLibrary/MOS/PMOS-0.5um.xml | 2 +- src/deviceModelLibrary/MOS/PMOS-180nm.xml | 2 +- src/deviceModelLibrary/MOS/PMOS-5um.xml | 2 +- src/deviceModelLibrary/Misc/CORE.lib | 11 +- src/deviceModelLibrary/Misc/CORE.xml | 12 +- src/deviceModelLibrary/Templates/CORE.lib | 11 +- src/deviceModelLibrary/Templates/CORE.xml | 12 +- src/deviceModelLibrary/Templates/D.xml | 2 +- src/deviceModelLibrary/Templates/NIGBT.xml | 2 +- src/deviceModelLibrary/Templates/NJF.xml | 2 +- src/deviceModelLibrary/Templates/NMOS-0.5um.xml | 2 +- src/deviceModelLibrary/Templates/NMOS-180nm.xml | 2 +- src/deviceModelLibrary/Templates/NMOS-5um.xml | 2 +- src/deviceModelLibrary/Templates/NPN.xml | 2 +- src/deviceModelLibrary/Templates/PIGBT.xml | 2 +- src/deviceModelLibrary/Templates/PJF.xml | 2 +- src/deviceModelLibrary/Templates/PMOS-0.5um.xml | 2 +- src/deviceModelLibrary/Templates/PMOS-180nm.xml | 2 +- src/deviceModelLibrary/Templates/PMOS-5um.xml | 2 +- src/deviceModelLibrary/Templates/PNP.xml | 2 +- .../User Libraries/userDiode.lib | 20 ++ .../User Libraries/userDiode.xml | 1 + src/frontEnd/Application.py | 1 - src/kicadtoNgspice/Convert.py | 2 +- src/modelEditor/ModelEditor.py | 149 ++++++++++++-- 39 files changed, 616 insertions(+), 117 deletions(-) create mode 100644 kicadSchematicLibrary/eSim_Sources.dcm create mode 100644 kicadSchematicLibrary/eSim_Sources.lib create mode 100644 src/deviceModelLibrary/User Libraries/userDiode.lib create mode 100644 src/deviceModelLibrary/User Libraries/userDiode.xml diff --git a/kicadSchematicLibrary/eSim_Devices.dcm b/kicadSchematicLibrary/eSim_Devices.dcm index fb0e8ff6..bcdca7fe 100644 --- a/kicadSchematicLibrary/eSim_Devices.dcm +++ b/kicadSchematicLibrary/eSim_Devices.dcm @@ -1,13 +1,37 @@ EESchema-DOCLIB Version 2.0 # +$CMP D +D Diode +$ENDCMP +# +$CMP MOS_N +D Transistor N-MOSFET, collector connected to mounting plane (general) +K nmos n-mos n-mosfet transistor +$ENDCMP +# +$CMP MOS_P +D Transistor P-MOSFET, collector connected to mounting plane (general) +K pmos p-mos p-mosfet transistor +$ENDCMP +# $CMP NJF D Transistor N-JFET (general) K njfet n-jfet transistor $ENDCMP # +$CMP NPN +D Transistor NPN (general) +K npn transistor +$ENDCMP +# $CMP PJF D Transistor P-JFET (general) K pjfet p-jfet transistor $ENDCMP # +$CMP PNP +D Transistor PNP (general) +K pnp transistor +$ENDCMP +# #End Doc Library diff --git a/kicadSchematicLibrary/eSim_Devices.lib b/kicadSchematicLibrary/eSim_Devices.lib index d5d3af9f..442795e7 100644 --- a/kicadSchematicLibrary/eSim_Devices.lib +++ b/kicadSchematicLibrary/eSim_Devices.lib @@ -1,11 +1,87 @@ EESchema-LIBRARY Version 2.3 #encoding utf-8 # +# D +# +DEF D D 0 40 N N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "D" 0 -100 50 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + Diode_* + D-Pak_TO252AA + *SingleDiode + *_Diode_* + *SingleDiode* +$ENDFPLIST +DRAW +P 2 0 1 6 50 50 50 -50 N +P 3 0 1 0 -50 50 50 0 -50 -50 F +X A 1 -150 0 100 R 40 40 1 1 P +X K 2 150 0 100 L 40 40 1 1 P +ENDDRAW +ENDDEF +# +# MOS_N +# +DEF MOS_N M 0 0 Y N 1 F N +F0 "M" 0 -150 50 H V R CNN +F1 "MOS_N" 100 -50 50 H V R CNN +F2 "" 300 -300 29 H V C CNN +F3 "" 100 -200 60 H V C CNN +DRAW +C 150 -200 111 0 1 10 N +P 2 0 1 10 130 -290 130 -250 N +P 2 0 1 0 130 -270 200 -270 N +P 2 0 1 10 130 -220 130 -180 N +P 2 0 1 0 130 -200 200 -200 N +P 2 0 1 10 130 -150 130 -110 N +P 2 0 1 0 130 -130 200 -130 N +P 2 0 1 0 200 -300 200 -270 N +P 2 0 1 0 200 -130 200 -100 N +P 3 0 1 10 110 -275 110 -125 110 -125 N +P 3 0 1 0 200 -200 300 -200 300 -250 N +P 4 0 1 0 140 -200 180 -215 180 -185 140 -200 F +X D 1 200 0 100 D 50 50 1 1 E +X G 2 -100 -200 210 R 50 50 1 1 I +X S 3 200 -400 100 U 50 50 1 1 C +X B 4 300 -350 98 U 47 47 1 1 I +ENDDRAW +ENDDEF +# +# MOS_P +# +DEF MOS_P M 0 0 Y N 1 F N +F0 "M" -50 50 50 H V R CNN +F1 "MOS_P" 50 150 50 H V R CNN +F2 "" 250 100 29 H V C CNN +F3 "" 50 0 60 H V C CNN +DRAW +C 100 0 111 0 1 10 N +P 2 0 1 0 80 -70 150 -70 N +P 2 0 1 10 80 -50 80 -90 N +P 2 0 1 0 80 0 150 0 N +P 2 0 1 10 80 20 80 -20 N +P 2 0 1 0 80 70 150 70 N +P 2 0 1 10 80 90 80 50 N +P 2 0 1 0 150 -70 150 -100 N +P 2 0 1 0 150 100 150 70 N +P 3 0 1 10 60 75 60 -75 60 -75 N +P 3 0 1 0 150 0 250 0 250 -50 N +P 4 0 1 0 140 0 100 -15 100 15 140 0 F +X D 1 150 200 100 D 50 50 1 1 C +X G 2 -150 0 210 R 50 50 1 1 I +X S 3 150 -200 100 U 50 50 1 1 E +X B 4 250 -150 100 U 50 50 1 1 I +ENDDRAW +ENDDEF +# # NJF # DEF NJF J 0 0 Y N 1 F N -F0 "J" 250 0 50 H V R CNN -F1 "NJF" -50 100 50 H V R CNN +F0 "J" -100 50 50 H V R CNN +F1 "NJF" -50 150 50 H V R CNN F2 "" 200 100 29 H V C CNN F3 "" 0 0 60 H V C CNN DRAW @@ -20,11 +96,30 @@ X S 3 100 -200 100 U 50 50 1 1 E ENDDRAW ENDDEF # +# NPN +# +DEF NPN Q 0 0 Y N 1 F N +F0 "Q" -100 50 50 H V R CNN +F1 "NPN" -50 150 50 H V R CNN +F2 "" 200 100 29 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +C 50 0 111 0 1 10 N +P 2 0 1 0 25 25 100 100 N +P 3 0 1 0 25 -25 100 -100 100 -100 N +P 3 0 1 20 25 75 25 -75 25 -75 N +P 5 0 1 0 50 -70 70 -50 90 -90 50 -70 50 -70 F +X C 1 100 200 100 D 50 50 1 1 C +X B 2 -200 0 225 R 50 50 1 1 I +X E 3 100 -200 100 U 50 50 1 1 E +ENDDRAW +ENDDEF +# # PJF # DEF PJF J 0 0 Y N 1 F N -F0 "J" 250 0 50 H V R CNN -F1 "PJF" -50 100 50 H V R CNN +F0 "J" -100 50 50 H V R CNN +F1 "PJF" -50 150 50 H V R CNN F2 "" 200 100 29 H V C CNN F3 "" 0 0 60 H V C CNN DRAW @@ -39,4 +134,45 @@ X S 3 100 -200 100 U 50 50 1 1 E ENDDRAW ENDDEF # +# PNP +# +DEF PNP Q 0 0 Y N 1 F N +F0 "Q" -100 50 50 H V R CNN +F1 "PNP" -50 150 50 H V R CNN +F2 "" 200 100 29 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +C 50 0 111 0 1 10 N +P 2 0 1 0 25 25 100 100 N +P 3 0 1 0 25 -25 100 -100 100 -100 N +P 3 0 1 20 25 75 25 -75 25 -75 N +P 5 0 1 0 90 -70 70 -90 50 -50 90 -70 90 -70 F +X C 1 100 200 100 D 50 50 1 1 C +X B 2 -200 0 225 R 50 50 1 1 I +X E 3 100 -200 100 U 50 50 1 1 E +ENDDRAW +ENDDEF +# +# PORT +# +DEF PORT U 0 40 Y Y 8 F N +F0 "U" 50 100 30 H V C CNN +F1 "PORT" 0 0 30 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +DRAW +A 325 225 285 -1421 -1278 0 1 0 N 100 50 150 0 +A 376 -275 356 1294 1408 0 1 0 N 150 0 100 -50 +S -100 50 100 -50 0 1 0 N +X ~ 1 250 0 100 L 30 30 1 1 B +X ~ 2 250 0 100 L 30 30 2 1 B +X ~ 3 250 0 100 L 30 30 3 1 B +X ~ 4 250 0 100 L 30 30 4 1 B +X ~ 5 250 0 100 L 30 30 5 1 B +X ~ 6 250 0 100 L 30 30 6 1 B +X ~ 7 250 0 100 L 30 30 7 1 B +X ~ 8 250 0 100 L 30 30 8 1 B +ENDDRAW +ENDDEF +# #End Library diff --git a/kicadSchematicLibrary/eSim_Sources.dcm b/kicadSchematicLibrary/eSim_Sources.dcm new file mode 100644 index 00000000..5f3ed79b --- /dev/null +++ b/kicadSchematicLibrary/eSim_Sources.dcm @@ -0,0 +1,3 @@ +EESchema-DOCLIB Version 2.0 +# +#End Doc Library diff --git a/kicadSchematicLibrary/eSim_Sources.lib b/kicadSchematicLibrary/eSim_Sources.lib new file mode 100644 index 00000000..cf328d51 --- /dev/null +++ b/kicadSchematicLibrary/eSim_Sources.lib @@ -0,0 +1,216 @@ +EESchema-LIBRARY Version 2.3 +#encoding utf-8 +# +# AC +# +DEF AC v 0 40 Y Y 1 F N +F0 "v" -200 100 60 H V C CNN +F1 "AC" -200 -50 60 H V C CNN +F2 "R1" -300 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +A -50 0 50 1 1799 0 1 0 N 0 0 -100 0 +A 50 0 50 -1799 -1 0 1 0 N 0 0 100 0 +C 0 0 150 0 1 0 N +X + 1 0 450 300 D 50 0 1 1 I +X - 2 0 -450 300 U 50 0 1 1 I +ENDDRAW +ENDDEF +# +# CCCS +# +DEF CCCS F 0 40 Y Y 1 F N +F0 "F" 0 150 50 H V C CNN +F1 "CCCS" -200 -50 50 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +S -100 100 100 -100 0 1 0 N +X + 1 -300 50 200 R 35 35 1 1 P +X - 2 300 50 200 L 35 35 1 1 P +X +c 3 -50 -200 100 U 35 35 1 1 P +X -c 4 50 -200 100 U 35 35 1 1 P +ENDDRAW +ENDDEF +# +# CCVS +# +DEF CCVS H 0 40 Y Y 1 F N +F0 "H" 0 150 50 H V C CNN +F1 "CCVS" -200 -50 50 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +S -100 100 100 -100 0 1 0 N +X + 1 -300 50 200 R 35 35 1 1 P +X - 2 300 50 200 L 35 35 1 1 P +X +c 3 -50 -200 100 U 35 35 1 1 P +X -c 4 50 -200 100 U 35 35 1 1 P +ENDDRAW +ENDDEF +# +# DC +# +DEF DC v 0 40 Y Y 1 F N +F0 "v" -200 100 60 H V C CNN +F1 "DC" -200 -50 60 H V C CNN +F2 "R1" -300 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +C 0 0 150 0 1 0 N +X + 1 0 450 300 D 50 50 1 1 P +X - 2 0 -450 300 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# VCCS +# +DEF VCCS G 0 40 Y Y 1 F N +F0 "G" 0 150 50 H V C CNN +F1 "VCCS" -200 -50 50 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +S -100 100 100 -100 0 1 0 N +X + 1 -300 50 200 R 35 35 1 1 P +X - 2 300 50 200 L 35 35 1 1 P +X +c 3 -50 -200 100 U 35 35 1 1 P +X -c 4 50 -200 100 U 35 35 1 1 P +ENDDRAW +ENDDEF +# +# VCVS +# +DEF VCVS E 0 40 Y Y 1 F N +F0 "E" 0 150 50 H V C CNN +F1 "VCVS" -200 -50 50 H V C CNN +F2 "" 0 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +S -100 100 100 -100 0 1 0 N +X + 1 -300 50 200 R 35 35 1 1 P +X - 2 300 50 200 L 35 35 1 1 P +X +c 3 -50 -200 100 U 35 35 1 1 P +X -c 4 50 -200 100 U 35 35 1 1 P +ENDDRAW +ENDDEF +# +# exp +# +DEF exp v 0 40 Y Y 1 F N +F0 "v" -200 100 60 H V C CNN +F1 "exp" -200 -50 60 H V C CNN +F2 "R1" -300 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +A 1 -50 100 905 1800 0 1 0 N 0 50 -100 -50 +A 100 51 100 -1794 -900 0 1 0 N 0 50 100 -50 +C 0 0 150 0 1 0 N +X + 1 0 450 300 D 50 0 1 1 I +X - 2 0 -450 300 U 50 0 1 1 I +ENDDRAW +ENDDEF +# +# idc +# +DEF idc IDC 0 40 Y Y 1 F N +F0 "IDC" -200 100 60 H V C CNN +F1 "idc" -200 -50 60 H V C CNN +F2 "R1" -300 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +C 0 0 150 0 1 0 N +X + 1 0 450 300 D 50 50 1 1 P +X - 2 0 -450 300 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# pulse +# +DEF pulse v 0 40 Y Y 1 F N +F0 "v" -200 100 60 H V C CNN +F1 "pulse" -200 -50 60 H V C CNN +F2 "R1" -300 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +A -25 -450 501 928 871 0 1 0 N -50 50 0 50 +A 25 400 451 -931 -868 0 1 0 N 0 -50 50 -50 +A 75 600 551 -926 -873 0 1 0 N 50 50 100 50 +A 350 0 403 -1728 1728 0 1 0 N -50 -50 -50 50 +A 450 0 453 1736 -1736 0 1 0 N 0 50 0 -50 +A 600 0 552 -1748 1748 0 1 0 N 50 -50 50 50 +C 0 0 150 0 1 0 N +X + 1 0 450 300 D 50 50 1 1 P +X - 2 0 -450 300 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# pwl +# +DEF pwl v 0 40 Y Y 1 F N +F0 "v" -200 100 60 H V C CNN +F1 "pwl" -250 -50 60 H V C CNN +F2 "R1" -300 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +A -1144 -561 1253 291 240 0 1 0 N -50 50 0 -50 +A -765 421 941 -300 -232 0 1 0 N 50 -50 100 50 +A -75 -700 750 919 880 0 1 0 N -100 50 -50 50 +A 25 450 501 -928 -871 0 1 0 N 0 -50 50 -50 +A 1096 -609 1366 1511 1558 0 1 0 N -100 50 -150 -50 +C 0 0 150 0 1 0 N +X + 1 0 450 300 D 50 0 1 1 I +X - 2 0 -450 300 U 50 0 1 1 I +ENDDRAW +ENDDEF +# +# sine +# +DEF sine v 0 40 Y Y 1 F N +F0 "v" -200 100 60 H V C CNN +F1 "sine" -200 -50 60 H V C CNN +F2 "R1" -300 0 60 H V C CNN +F3 "" 0 0 60 H V C CNN +$FPLIST + 1_pin +$ENDFPLIST +DRAW +A -50 0 50 1 1799 0 1 0 N 0 0 -100 0 +A 50 0 50 -1799 -1 0 1 0 N 0 0 100 0 +C 0 0 150 0 1 0 N +X + 1 0 450 300 D 50 0 1 1 I +X - 2 0 -450 300 U 50 0 1 1 I +ENDDRAW +ENDDEF +# +#End Library diff --git a/src/deviceModelLibrary/Diode/D.lib b/src/deviceModelLibrary/Diode/D.lib index 890c37fe..ef18bb50 100755 --- a/src/deviceModelLibrary/Diode/D.lib +++ b/src/deviceModelLibrary/Diode/D.lib @@ -1,3 +1,20 @@ -.model D1N750 D( Is=880.5E-18 Rs=.25 Ikf=0 N=1 Xti=3 Eg=1.11 Cjo=175p M=.5516 -+ Vj=.75 Fc=.5 Isr=1.859n Nr=2 Bv=8.1 Ibv=20.245m Nbv=1.6989 Ibvl=1.9556m -+ Nbvl=14.976 Tbv1=-21.277u) +.MODEL D1N750 D( ++ Vj=.75 ++ Nbvl=14.976 ++ Cjo=175p ++ Rs=.25 ++ Isr=1.859n ++ Eg=1.11 ++ M=.5516 ++ Nbv=1.6989 ++ N=1 ++ Tbv1=-21.277u ++ Bv=8.1 ++ Fc=.5 ++ Ikf=0 ++ Nr=2 ++ Ibv=20.245m ++ Is=880.5E-18 ++ Xti=3 ++ Ibvl=1.9556m +) \ No newline at end of file diff --git a/src/deviceModelLibrary/Diode/D.xml b/src/deviceModelLibrary/Diode/D.xml index 61312a8a..8b806d17 100644 --- a/src/deviceModelLibrary/Diode/D.xml +++ b/src/deviceModelLibrary/Diode/D.xml @@ -1,24 +1,4 @@ D -D1N750 - - 880.5E-18 - .25 - 0 - 1 - 3 - 1.11 - 175p - .5516 - .75 - .5 - 1.859n - 2 - 8.1 - 20.245m - 1.6989 - 1.9556m - 14.976 - -21.277u - - +D1N750 +.7514.976175p.251.859n1.11.55161.69891-21.277u8.1.50220.245m880.5E-1831.9556m \ No newline at end of file diff --git a/src/deviceModelLibrary/IGBT/NIGBT.lib b/src/deviceModelLibrary/IGBT/NIGBT.lib index 8c09dcbc..86cd1b4e 100755 --- a/src/deviceModelLibrary/IGBT/NIGBT.lib +++ b/src/deviceModelLibrary/IGBT/NIGBT.lib @@ -1,10 +1,11 @@ -.MODEL IXGH40N60 NIGBT ( -+ TAU=287.56E-9 -+ KP=50.034 -+ AREA=37.500E-6 -+ AGD=18.750E-6 -+ VT=4.1822 -+ KF=.36047 -+ CGS=31.942E-9 -+ COXD=53.188E-9 -+ VTD=2.6570) +.MODEL IXGH40N60 NIGBT( ++ TAU=287.56E-9 ++ KF=.36047 ++ AREA=37.500E-6 ++ AGD=18.750E-6 ++ KP=50.034 ++ VT=4.1822 ++ CGS=31.942E-9 ++ COXD=53.188E-9 ++ VTD=2.6570 +) \ No newline at end of file diff --git a/src/deviceModelLibrary/IGBT/NIGBT.xml b/src/deviceModelLibrary/IGBT/NIGBT.xml index a945522a..38d9d094 100644 --- a/src/deviceModelLibrary/IGBT/NIGBT.xml +++ b/src/deviceModelLibrary/IGBT/NIGBT.xml @@ -1,15 +1,4 @@ NIGBT -IXGH40N60 - -287.56E-9 -50.034 -37.500E-6 -18.750E-6 -4.1822 -.36047 -31.942E-9 -53.188E-9 -2.6570 - - +IXGH40N60 +287.56E-9.3604737.500E-618.750E-650.0344.182231.942E-953.188E-92.6570 \ No newline at end of file diff --git a/src/deviceModelLibrary/IGBT/PIGBT.xml b/src/deviceModelLibrary/IGBT/PIGBT.xml index 2e316860..1e57f2e3 100644 --- a/src/deviceModelLibrary/IGBT/PIGBT.xml +++ b/src/deviceModelLibrary/IGBT/PIGBT.xml @@ -1,6 +1,6 @@ PIGBT -IXGH40N60 +IXGH40N60 287.56E-9 50.034 diff --git a/src/deviceModelLibrary/JFET/NJF.xml b/src/deviceModelLibrary/JFET/NJF.xml index 1b73fc73..94753691 100644 --- a/src/deviceModelLibrary/JFET/NJF.xml +++ b/src/deviceModelLibrary/JFET/NJF.xml @@ -1,6 +1,6 @@ NJF -J2N3819 +J2N3819 1.304m -.5 diff --git a/src/deviceModelLibrary/JFET/PJF.xml b/src/deviceModelLibrary/JFET/PJF.xml index 05184f6f..f682f8cb 100644 --- a/src/deviceModelLibrary/JFET/PJF.xml +++ b/src/deviceModelLibrary/JFET/PJF.xml @@ -1,6 +1,6 @@ PJF -J2N3820 +J2N3820 1.304m -.5 diff --git a/src/deviceModelLibrary/MOS/NMOS-0.5um.xml b/src/deviceModelLibrary/MOS/NMOS-0.5um.xml index 9ee36496..08fdf0e3 100644 --- a/src/deviceModelLibrary/MOS/NMOS-0.5um.xml +++ b/src/deviceModelLibrary/MOS/NMOS-0.5um.xml @@ -1,6 +1,6 @@ NMOS -mos_n +mos_n 1 9.5n diff --git a/src/deviceModelLibrary/MOS/NMOS-180nm.xml b/src/deviceModelLibrary/MOS/NMOS-180nm.xml index fc3b7a47..d0249bb6 100644 --- a/src/deviceModelLibrary/MOS/NMOS-180nm.xml +++ b/src/deviceModelLibrary/MOS/NMOS-180nm.xml @@ -1,6 +1,6 @@ NMOS -CMOSN +CMOSN 8 3.2 diff --git a/src/deviceModelLibrary/MOS/NMOS-5um.xml b/src/deviceModelLibrary/MOS/NMOS-5um.xml index a72abbf1..358fbdbe 100644 --- a/src/deviceModelLibrary/MOS/NMOS-5um.xml +++ b/src/deviceModelLibrary/MOS/NMOS-5um.xml @@ -1,6 +1,6 @@ NMOS -mos_n +mos_n 0.4n 85n diff --git a/src/deviceModelLibrary/MOS/PMOS-0.5um.xml b/src/deviceModelLibrary/MOS/PMOS-0.5um.xml index a4555169..013d461c 100644 --- a/src/deviceModelLibrary/MOS/PMOS-0.5um.xml +++ b/src/deviceModelLibrary/MOS/PMOS-0.5um.xml @@ -1,6 +1,6 @@ PMOS -mos_p +mos_p -1 9.5n diff --git a/src/deviceModelLibrary/MOS/PMOS-180nm.xml b/src/deviceModelLibrary/MOS/PMOS-180nm.xml index 99916972..6696752d 100644 --- a/src/deviceModelLibrary/MOS/PMOS-180nm.xml +++ b/src/deviceModelLibrary/MOS/PMOS-180nm.xml @@ -1,6 +1,6 @@ PMOS -CMOSP +CMOSP 8 3.2 diff --git a/src/deviceModelLibrary/MOS/PMOS-5um.xml b/src/deviceModelLibrary/MOS/PMOS-5um.xml index b82c5ae6..f68bada2 100644 --- a/src/deviceModelLibrary/MOS/PMOS-5um.xml +++ b/src/deviceModelLibrary/MOS/PMOS-5um.xml @@ -1,6 +1,6 @@ PMOS -mos_p +mos_p 0.4n 85n diff --git a/src/deviceModelLibrary/Misc/CORE.lib b/src/deviceModelLibrary/Misc/CORE.lib index c48c4b51..a7581029 100755 --- a/src/deviceModelLibrary/Misc/CORE.lib +++ b/src/deviceModelLibrary/Misc/CORE.lib @@ -1,2 +1,9 @@ -.model K3019PL_3C8 Core(MS=415.2K A=44.82 C=.4112 K=25.74 -+ Area=1.38 Path=4.52) +.MODEL K3019PL_3C8 Core( ++ A=44.82 ++ C=.4112 ++ abc=123 ++ Area=1.38 ++ K=25.74 ++ MS=415.2K ++ Path=4.52 +) \ No newline at end of file diff --git a/src/deviceModelLibrary/Misc/CORE.xml b/src/deviceModelLibrary/Misc/CORE.xml index 09129f74..c95d9db0 100644 --- a/src/deviceModelLibrary/Misc/CORE.xml +++ b/src/deviceModelLibrary/Misc/CORE.xml @@ -1,12 +1,4 @@ Core -K3019PL_3C8 - -415.2K -44.82 -.4112 -25.74 -1.38 -4.52 - - +K3019PL_3C8 +44.82 .41121231.3825.74415.2K4.52 diff --git a/src/deviceModelLibrary/Templates/CORE.lib b/src/deviceModelLibrary/Templates/CORE.lib index c48c4b51..a7581029 100755 --- a/src/deviceModelLibrary/Templates/CORE.lib +++ b/src/deviceModelLibrary/Templates/CORE.lib @@ -1,2 +1,9 @@ -.model K3019PL_3C8 Core(MS=415.2K A=44.82 C=.4112 K=25.74 -+ Area=1.38 Path=4.52) +.MODEL K3019PL_3C8 Core( ++ A=44.82 ++ C=.4112 ++ abc=123 ++ Area=1.38 ++ K=25.74 ++ MS=415.2K ++ Path=4.52 +) \ No newline at end of file diff --git a/src/deviceModelLibrary/Templates/CORE.xml b/src/deviceModelLibrary/Templates/CORE.xml index 09129f74..c95d9db0 100644 --- a/src/deviceModelLibrary/Templates/CORE.xml +++ b/src/deviceModelLibrary/Templates/CORE.xml @@ -1,12 +1,4 @@ Core -K3019PL_3C8 - -415.2K -44.82 -.4112 -25.74 -1.38 -4.52 - - +K3019PL_3C8 +44.82 .41121231.3825.74415.2K4.52 diff --git a/src/deviceModelLibrary/Templates/D.xml b/src/deviceModelLibrary/Templates/D.xml index 61312a8a..546d1156 100644 --- a/src/deviceModelLibrary/Templates/D.xml +++ b/src/deviceModelLibrary/Templates/D.xml @@ -1,6 +1,6 @@ D -D1N750 +D1N750 880.5E-18 .25 diff --git a/src/deviceModelLibrary/Templates/NIGBT.xml b/src/deviceModelLibrary/Templates/NIGBT.xml index a945522a..97f33196 100644 --- a/src/deviceModelLibrary/Templates/NIGBT.xml +++ b/src/deviceModelLibrary/Templates/NIGBT.xml @@ -1,6 +1,6 @@ NIGBT -IXGH40N60 +IXGH40N60 287.56E-9 50.034 diff --git a/src/deviceModelLibrary/Templates/NJF.xml b/src/deviceModelLibrary/Templates/NJF.xml index 1b73fc73..94753691 100644 --- a/src/deviceModelLibrary/Templates/NJF.xml +++ b/src/deviceModelLibrary/Templates/NJF.xml @@ -1,6 +1,6 @@ NJF -J2N3819 +J2N3819 1.304m -.5 diff --git a/src/deviceModelLibrary/Templates/NMOS-0.5um.xml b/src/deviceModelLibrary/Templates/NMOS-0.5um.xml index 9ee36496..08fdf0e3 100644 --- a/src/deviceModelLibrary/Templates/NMOS-0.5um.xml +++ b/src/deviceModelLibrary/Templates/NMOS-0.5um.xml @@ -1,6 +1,6 @@ NMOS -mos_n +mos_n 1 9.5n diff --git a/src/deviceModelLibrary/Templates/NMOS-180nm.xml b/src/deviceModelLibrary/Templates/NMOS-180nm.xml index fc3b7a47..d0249bb6 100644 --- a/src/deviceModelLibrary/Templates/NMOS-180nm.xml +++ b/src/deviceModelLibrary/Templates/NMOS-180nm.xml @@ -1,6 +1,6 @@ NMOS -CMOSN +CMOSN 8 3.2 diff --git a/src/deviceModelLibrary/Templates/NMOS-5um.xml b/src/deviceModelLibrary/Templates/NMOS-5um.xml index a72abbf1..358fbdbe 100644 --- a/src/deviceModelLibrary/Templates/NMOS-5um.xml +++ b/src/deviceModelLibrary/Templates/NMOS-5um.xml @@ -1,6 +1,6 @@ NMOS -mos_n +mos_n 0.4n 85n diff --git a/src/deviceModelLibrary/Templates/NPN.xml b/src/deviceModelLibrary/Templates/NPN.xml index f0679885..b2698bb1 100644 --- a/src/deviceModelLibrary/Templates/NPN.xml +++ b/src/deviceModelLibrary/Templates/NPN.xml @@ -1,6 +1,6 @@ NPN -Q2N2222 +Q2N2222 14.34f 3 diff --git a/src/deviceModelLibrary/Templates/PIGBT.xml b/src/deviceModelLibrary/Templates/PIGBT.xml index 2e316860..1e57f2e3 100644 --- a/src/deviceModelLibrary/Templates/PIGBT.xml +++ b/src/deviceModelLibrary/Templates/PIGBT.xml @@ -1,6 +1,6 @@ PIGBT -IXGH40N60 +IXGH40N60 287.56E-9 50.034 diff --git a/src/deviceModelLibrary/Templates/PJF.xml b/src/deviceModelLibrary/Templates/PJF.xml index 05184f6f..f682f8cb 100644 --- a/src/deviceModelLibrary/Templates/PJF.xml +++ b/src/deviceModelLibrary/Templates/PJF.xml @@ -1,6 +1,6 @@ PJF -J2N3820 +J2N3820 1.304m -.5 diff --git a/src/deviceModelLibrary/Templates/PMOS-0.5um.xml b/src/deviceModelLibrary/Templates/PMOS-0.5um.xml index a4555169..013d461c 100644 --- a/src/deviceModelLibrary/Templates/PMOS-0.5um.xml +++ b/src/deviceModelLibrary/Templates/PMOS-0.5um.xml @@ -1,6 +1,6 @@ PMOS -mos_p +mos_p -1 9.5n diff --git a/src/deviceModelLibrary/Templates/PMOS-180nm.xml b/src/deviceModelLibrary/Templates/PMOS-180nm.xml index 99916972..6696752d 100644 --- a/src/deviceModelLibrary/Templates/PMOS-180nm.xml +++ b/src/deviceModelLibrary/Templates/PMOS-180nm.xml @@ -1,6 +1,6 @@ PMOS -CMOSP +CMOSP 8 3.2 diff --git a/src/deviceModelLibrary/Templates/PMOS-5um.xml b/src/deviceModelLibrary/Templates/PMOS-5um.xml index b82c5ae6..f68bada2 100644 --- a/src/deviceModelLibrary/Templates/PMOS-5um.xml +++ b/src/deviceModelLibrary/Templates/PMOS-5um.xml @@ -1,6 +1,6 @@ PMOS -mos_p +mos_p 0.4n 85n diff --git a/src/deviceModelLibrary/Templates/PNP.xml b/src/deviceModelLibrary/Templates/PNP.xml index a25276a9..681b3fd9 100644 --- a/src/deviceModelLibrary/Templates/PNP.xml +++ b/src/deviceModelLibrary/Templates/PNP.xml @@ -1,6 +1,6 @@ PNP -Q2N2907A +Q2N2907A 650.6E-18 3 diff --git a/src/deviceModelLibrary/User Libraries/userDiode.lib b/src/deviceModelLibrary/User Libraries/userDiode.lib new file mode 100644 index 00000000..ef18bb50 --- /dev/null +++ b/src/deviceModelLibrary/User Libraries/userDiode.lib @@ -0,0 +1,20 @@ +.MODEL D1N750 D( ++ Vj=.75 ++ Nbvl=14.976 ++ Cjo=175p ++ Rs=.25 ++ Isr=1.859n ++ Eg=1.11 ++ M=.5516 ++ Nbv=1.6989 ++ N=1 ++ Tbv1=-21.277u ++ Bv=8.1 ++ Fc=.5 ++ Ikf=0 ++ Nr=2 ++ Ibv=20.245m ++ Is=880.5E-18 ++ Xti=3 ++ Ibvl=1.9556m +) \ No newline at end of file diff --git a/src/deviceModelLibrary/User Libraries/userDiode.xml b/src/deviceModelLibrary/User Libraries/userDiode.xml new file mode 100644 index 00000000..d8584e1d --- /dev/null +++ b/src/deviceModelLibrary/User Libraries/userDiode.xml @@ -0,0 +1 @@ +DD1N750880.5E-1814.976175p.251.859n1.11.55161.69891-21.277u8.1.5032.7520.245m1.9556m \ No newline at end of file diff --git a/src/frontEnd/Application.py b/src/frontEnd/Application.py index e4bddac9..c08c1974 100755 --- a/src/frontEnd/Application.py +++ b/src/frontEnd/Application.py @@ -29,7 +29,6 @@ import DockArea import os import sys import time -import shutil from PyQt4.Qt import QSize class Application(QtGui.QMainWindow): diff --git a/src/kicadtoNgspice/Convert.py b/src/kicadtoNgspice/Convert.py index 3610382a..25576f53 100644 --- a/src/kicadtoNgspice/Convert.py +++ b/src/kicadtoNgspice/Convert.py @@ -356,7 +356,7 @@ class Convert: #Extracting Value from XML libtree = ET.parse(library) for child in libtree.iter(): - if child.tag == 'refrence': + if child.tag == 'ref_model': retVal = child.text else: pass diff --git a/src/modelEditor/ModelEditor.py b/src/modelEditor/ModelEditor.py index 0ce32a61..68f0735c 100644 --- a/src/modelEditor/ModelEditor.py +++ b/src/modelEditor/ModelEditor.py @@ -3,6 +3,7 @@ from PyQt4.Qt import QTableWidgetItem import xml.etree.ElementTree as ET import os + class ModelEditorclass(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) @@ -12,6 +13,8 @@ class ModelEditorclass(QtGui.QWidget): self.splitter= QtGui.QSplitter() self.grid= QtGui.QGridLayout() self.splitter.setOrientation(QtCore.Qt.Vertical) + + self.modeltable = QtGui.QTableWidget() self.newbtn = QtGui.QPushButton('New') self.newbtn.clicked.connect(self.opennew) @@ -26,10 +29,12 @@ class ModelEditorclass(QtGui.QWidget): self.addbtn = QtGui.QPushButton('Add') self.addbtn.setHidden(True) self.addbtn.clicked.connect(self.addparameters) - #self.splitter.addWidget(self.newbtn) + self.uploadbtn = QtGui.QPushButton('Upload') + self.uploadbtn.clicked.connect(self.converttoxml) self.grid.addWidget(self.newbtn, 1,2) self.grid.addWidget(self.editbtn, 1,3) self.grid.addWidget(self.savebtn, 1,4) + self.grid.addWidget(self.uploadbtn, 1,5) self.grid.addWidget(self.removebtn, 8,4) self.grid.addWidget(self.addbtn, 5,4) @@ -70,10 +75,7 @@ class ModelEditorclass(QtGui.QWidget): self.grid.addWidget(self.jfet,6,1) self.grid.addWidget(self.igbt,7,1) self.grid.addWidget(self.magnetic,8,1) - - #self.layout.addWidget(self.splitter) self.setLayout(self.grid) - #self.setLayout(self.layout) self.show() '''To create New Model file ''' @@ -83,6 +85,7 @@ class ModelEditorclass(QtGui.QWidget): self.modeltable.setHidden(True) except: pass + os.chdir(self.savepathtest) text, ok = QtGui.QInputDialog.getText(self, 'New Model','Enter Model Name:') if ok: self.newflag=1 @@ -215,6 +218,7 @@ class ModelEditorclass(QtGui.QWidget): pass def openedit(self): + os.chdir(self.savepathtest) self.newflag=0 self.addbtn.setHidden(True) self.types.setHidden(True) @@ -225,7 +229,6 @@ class ModelEditorclass(QtGui.QWidget): self.bjt.setDisabled(True) self.magnetic.setDisabled(True) self.editfile=str(QtGui.QFileDialog.getOpenFileName(self)) - #self.path='/home/workspace/eSim/src/deviceModelLibrary/Diode' self.createtable(self.editfile) '''Creates the model table by parsinf th .xml file ''' @@ -244,8 +247,8 @@ class ModelEditorclass(QtGui.QWidget): self.tree = ET.parse(self.modelfile) self.root= self.tree.getroot() - for elem in self.tree.iter(tag='refrence'): - self.reference = elem.text + for elem in self.tree.iter(tag='ref_model'): + self.ref_model = elem.text for elem in self.tree.iter(tag='model_name'): self.model_name = elem.text row=0 @@ -311,7 +314,7 @@ class ModelEditorclass(QtGui.QWidget): def createXML(self,model_name): root = ET.Element("library") ET.SubElement(root, "model_name").text = model_name - ET.SubElement(root, "refrence").text = self.modelname + ET.SubElement(root, "ref_model").text = self.modelname param = ET.SubElement(root, "param") for tags, text in self.modeldict.items(): ET.SubElement(param, tags).text = text @@ -324,7 +327,7 @@ class ModelEditorclass(QtGui.QWidget): txtfile = open(self.modelname+'.lib', 'w') txtfile.write('.MODEL ' + self.modelname +' ' + self.model_name + '(\n' ) for tags, text in self.modeldict.items(): - txtfile.write('+ ' + tags + ' = ' + text +'\n') + txtfile.write('+ ' + tags + '=' + text +'\n') txtfile.write(')') tree.write(self.modelname +".xml") if self.mos.isChecked(): @@ -333,7 +336,7 @@ class ModelEditorclass(QtGui.QWidget): txtfile = open(self.modelname+'.lib', 'w') txtfile.write('.MODEL ' + self.modelname +' ' + self.model_name + '(\n' ) for tags, text in self.modeldict.items(): - txtfile.write('+ ' + tags + ' = ' + text +'\n') + txtfile.write('+ ' + tags + '=' + text +'\n') txtfile.write(')') tree.write(self.modelname +".xml") if self.jfet.isChecked(): @@ -342,7 +345,7 @@ class ModelEditorclass(QtGui.QWidget): txtfile = open(self.modelname+'.lib', 'w') txtfile.write('.MODEL ' + self.modelname +' ' + self.model_name + '(\n' ) for tags, text in self.modeldict.items(): - txtfile.write('+ ' + tags + ' = ' + text +'\n') + txtfile.write('+ ' + tags + '=' + text +'\n') txtfile.write(')') tree.write(self.modelname +".xml") if self.igbt.isChecked(): @@ -351,7 +354,7 @@ class ModelEditorclass(QtGui.QWidget): txtfile = open(self.modelname+'.lib', 'w') txtfile.write('.MODEL ' + self.modelname +' ' + self.model_name + '(\n' ) for tags, text in self.modeldict.items(): - txtfile.write('+ ' + tags + ' = ' + text +'\n') + txtfile.write('+ ' + tags + '=' + text +'\n') txtfile.write(')') tree.write(self.modelname +".xml") if self.magnetic.isChecked(): @@ -360,7 +363,7 @@ class ModelEditorclass(QtGui.QWidget): txtfile = open(self.modelname+'.lib', 'w') txtfile.write('.MODEL ' + self.modelname +' ' + self.model_name + '(\n' ) for tags, text in self.modeldict.items(): - txtfile.write('+ ' + tags + ' = ' + text +'\n') + txtfile.write('+ ' + tags + '=' + text +'\n') txtfile.write(')') tree.write(self.modelname +".xml") if self.bjt.isChecked(): @@ -369,7 +372,7 @@ class ModelEditorclass(QtGui.QWidget): txtfile = open(self.modelname+'.lib', 'w') txtfile.write('.MODEL ' + self.modelname +' ' + self.model_name + '(\n' ) for tags, text in self.modeldict.items(): - txtfile.write('+ ' + tags + ' = ' + text +'\n') + txtfile.write('+ ' + tags + '=' + text +'\n') txtfile.write(')') tree.write(self.modelname +".xml") txtfile.close() @@ -378,6 +381,7 @@ class ModelEditorclass(QtGui.QWidget): '''Checks if the file with the name already exists''' def validation(self,text): newfilename = text+'.xml' + all_dir = [x[0] for x in os.walk(self.savepathtest)] for each_dir in all_dir: all_files = os.listdir(each_dir) @@ -393,9 +397,9 @@ class ModelEditorclass(QtGui.QWidget): filename = os.path.splitext(file)[0] libpath = os.path.join(xmlpath,filename+'.lib') libfile = open(libpath, 'w') - libfile.write('.MODEL ' + self.reference +' ' + self.model_name + '(\n' ) + libfile.write('.MODEL ' + self.ref_model +' ' + self.model_name + '(\n' ) for tags, text in self.modeldict.items(): - libfile.write('+ ' + tags + ' = ' + text +'\n') + libfile.write('+ ' + tags + '=' + text +'\n') libfile.write(')') libfile.close() for params in self.tree.findall('param'): @@ -412,4 +416,115 @@ class ModelEditorclass(QtGui.QWidget): remove_item = self.modeltable.item(index.row(),0).text() self.modeltable.removeRow(index.row()) del self.modeldict[str(remove_item)] - \ No newline at end of file + + def converttoxml(self): + os.chdir(self.savepathtest) + self.addbtn.setHidden(True) + self.removebtn.setHidden(True) + self.modeltable.setHidden(True) + model_dict = {} + stringof = [] + self.libfile = str(QtGui.QFileDialog.getOpenFileName(self)) + libopen = open(self.libfile) + filedata = libopen.read().split() + modelcount=0 + for words in filedata: + modelcount= modelcount +1 + if words.lower() == '.model': + print "model found" + break + ref_model = filedata[modelcount] + model_name = filedata[modelcount+1] + model_name = list(model_name) + modelnamecnt= 0 + flag= 0 + for chars in model_name: + modelnamecnt = modelnamecnt +1 + if chars == '(': + flag = 1 + break + if flag == 1 : + model_name = ''.join(model_name[0:modelnamecnt-1]) + else: + model_name = ''.join(model_name) + + libopen1 = open(self.libfile) + while True: + char = libopen1.read(1) + if not char: + break + stringof.append(char) + + count = 0 + for chars in stringof: + count = count +1 + if chars == '(': + break + count1=0 + for chars in stringof: + count1 = count1 +1 + if chars == ')': + break + stringof = stringof[count:count1-1] + stopcount=[] + listofname = [] + stopcount.append(0) + count = 0 + for chars in stringof: + count = count +1 + if chars == '=': + stopcount.append(count) + stopcount.append(count) + + i = 0 + for no in stopcount: + try: + listofname.append(''.join(stringof[int(stopcount[i]):int(stopcount[i+1])])) + i = i +1 + except: + pass + listoflist =[] + listofname2 = [el.replace('\t', '').replace('\n', ' ').replace('+', '').replace(')', '').replace('=', '') for el in listofname] + ''' + listofname = [el.replace('\n', ' ') for el in listofname2] + listofname2 = [el.replace('+', '') for el in listofname] + listofname = [el.replace(')', '') for el in listofname2] + listofname2 = [el.replace('=', '') for el in listofname] + ''' + listofname=[] + for item in listofname2: + listofname.append(item.rstrip().lstrip()) + for values in listofname: + valuelist = values.split(' ') + listoflist.append(valuelist) + for i in range(1, len(listoflist)): + model_dict[listoflist[0][0]]=listoflist[1][0] + try: + model_dict[listoflist[i][-1]]= listoflist[i+1][0] + except: + pass + root = ET.Element("library") + ET.SubElement(root, "model_name").text = model_name + ET.SubElement(root, "ref_model").text = ref_model + param = ET.SubElement(root, "param") + for tags, text in model_dict.items(): + ET.SubElement(param, tags).text = text + tree = ET.ElementTree(root) + + defaultcwd = os.getcwd() + savepath = os.path.join(self.savepathtest, 'User Libraries') + savefilepath= os.path.join(savepath, model_name +".xml") + #self.obj_valid.validateNewproj(savepath) + #self.reply = self.obj_valid.validateNewproj(savefilepath) + os.chdir(savepath) + text, ok1 = QtGui.QInputDialog.getText(self, 'Model Name','Enter Model Library Name') + if ok1: + tree.write(text+".xml") + fileopen = open(text+".lib",'w') + f = open(self.libfile) + fileopen.write(f.read()) + f.close() + fileopen.close() + os.chdir(defaultcwd) + libopen.close() + libopen1.close() \ No newline at end of file -- cgit