summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kicadtoNgspice/Analysis.py24
-rw-r--r--src/kicadtoNgspice/Convert.py219
-rw-r--r--src/kicadtoNgspice/DeviceModel.py79
-rw-r--r--src/kicadtoNgspice/KicadtoNgspice.py104
-rw-r--r--src/kicadtoNgspice/Model.py53
-rw-r--r--src/kicadtoNgspice/Processing.py121
-rw-r--r--src/kicadtoNgspice/Source.py103
-rw-r--r--src/kicadtoNgspice/SubcircuitTab.py22
8 files changed, 464 insertions, 261 deletions
diff --git a/src/kicadtoNgspice/Analysis.py b/src/kicadtoNgspice/Analysis.py
index fde9a3e3..cde39f8f 100644
--- a/src/kicadtoNgspice/Analysis.py
+++ b/src/kicadtoNgspice/Analysis.py
@@ -2,7 +2,7 @@
from PyQt4 import QtGui
from . import TrackWidget
import os
-#from xml.etree import ElementTree as ET
+# from xml.etree import ElementTree as ET
import json
@@ -234,8 +234,10 @@ class Analysis(QtGui.QWidget):
# CSS
self.acbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: \
+ 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: \
+ 0 3px 0 3px; } \
")
if check:
try:
@@ -503,16 +505,18 @@ class Analysis(QtGui.QWidget):
# QtCore.QObject.connect(check,SIGNAL("stateChanged()"),check,SLOT("checkedSlot"))
self.check.stateChanged.connect(self.setflag)
- #self.flagcheck = 1
- #self.flagcheck= 2
+ # self.flagcheck = 1
+ # self.flagcheck= 2
self.dcgrid.addWidget(self.check, 9, 1, 9, 2)
self.track_obj.DC_entry_var["ITEMS"] = self.dc_entry_var
self.track_obj.DC_Parameter["ITEMS"] = self.dc_parameter
# CSS
self.dcbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: \
+ 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: \
+ 10px; padding: 0 3px 0 3px; } \
")
if check:
try:
@@ -687,8 +691,10 @@ class Analysis(QtGui.QWidget):
# CSS
self.trbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: \
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: \
+ 10px; padding: 0 3px 0 3px; } \
")
if check:
try:
diff --git a/src/kicadtoNgspice/Convert.py b/src/kicadtoNgspice/Convert.py
index 924f94fa..38234fed 100644
--- a/src/kicadtoNgspice/Convert.py
+++ b/src/kicadtoNgspice/Convert.py
@@ -8,7 +8,8 @@ from xml.etree import ElementTree as ET
class Convert:
"""
- This class has all the necessary function required to convert kicad netlist to ngspice netlist.
+ This class has all the necessary function required to convert
+ kicad netlist to ngspice netlist.
"""
def __init__(self, sourcelisttrack, source_entry_var,
@@ -36,16 +37,24 @@ class Convert:
self.end = compline[3]
vo_val = str(self.entry_var[self.start].text()) if len(
str(self.entry_var[self.start].text())) > 0 else '0'
- va_val = str(self.entry_var[self.start + 1].text()) if len(
- str(self.entry_var[self.start + 1].text())) > 0 else '0'
- freq_val = str(self.entry_var[self.start + 2].text()) if len(
- str(self.entry_var[self.start + 2].text())) > 0 else '0'
+ va_val = str(
+ self.entry_var[self.start + 1].text()
+ ) if len(
+ str(self.entry_var[self.start + 1].text())) \
+ > 0 else '0'
+ freq_val = str(self.entry_var[self.start + 2].text()) \
+ if len(
+ str(self.entry_var[self.start + 2].text())) > \
+ 0 else '0'
td_val = str(self.entry_var[self.start + 3].text()) if len(
- str(self.entry_var[self.start + 3].text())) > 0 else '0'
+ str(self.entry_var[self.start + 3].text())) > \
+ 0 else '0'
theta_val = str(self.entry_var[self.end].text()) if len(
str(self.entry_var[self.end].text())) > 0 else '0'
self.addline = self.addline.partition(
- '(')[0] + "(" + vo_val + " " + va_val + " " + freq_val + " " + td_val + " " + theta_val + ")"
+ '(')[0] + "(" + vo_val + " " + va_val + " " +\
+ freq_val + " " + td_val + " " +\
+ theta_val + ")"
self.sourcelistvalue.append([self.index, self.addline])
except BaseException:
print(
@@ -59,20 +68,28 @@ class Convert:
v1_val = str(self.entry_var[self.start].text()) if len(
str(self.entry_var[self.start].text())) > 0 else '0'
v2_val = str(self.entry_var[self.start + 1].text()) if len(
- str(self.entry_var[self.start + 1].text())) > 0 else '0'
- td_val = str(self.entry_var[self.start + 2].text()) if len(
- str(self.entry_var[self.start + 2].text())) > 0 else '0'
+ str(self.entry_var[self.start + 1].text())) > \
+ 0 else '0'
+ td_val = str(self.entry_var[self.start + 2].text()) \
+ if len(
+ str(self.entry_var[self.start + 2].text())) > \
+ 0 else '0'
tr_val = str(self.entry_var[self.start + 3].text()) if len(
- str(self.entry_var[self.start + 3].text())) > 0 else '0'
+ str(self.entry_var[self.start + 3].text())) > \
+ 0 else '0'
tf_val = str(self.entry_var[self.start + 4].text()) if len(
- str(self.entry_var[self.start + 4].text())) > 0 else '0'
+ str(self.entry_var[self.start + 4].text())) > \
+ 0 else '0'
pw_val = str(self.entry_var[self.start + 5].text()) if len(
- str(self.entry_var[self.start + 5].text())) > 0 else '0'
+ str(self.entry_var[self.start + 5].text())) > \
+ 0 else '0'
tp_val = str(self.entry_var[self.end].text()) if len(
str(self.entry_var[self.end].text())) > 0 else '0'
self.addline = self.addline.partition(
- '(')[0] + "(" + v1_val + " " + v2_val + " " + td_val + " " + tr_val + " " + tf_val + " " + pw_val + " " + tp_val + ")"
+ '(')[0] + "(" + v1_val + " " + v2_val + " " +\
+ td_val + " " + tr_val + " " + tf_val + " " +\
+ pw_val + " " + tp_val + ")"
self.sourcelistvalue.append([self.index, self.addline])
except BaseException:
print(
@@ -100,7 +117,8 @@ class Convert:
va_val = str(self.entry_var[self.start].text()) if len(
str(self.entry_var[self.start].text())) > 0 else '0'
ph_val = str(self.entry_var[self.start + 1].text()) if len(
- str(self.entry_var[self.start + 1].text())) > 0 else '0'
+ str(self.entry_var[self.start + 1].text())) > \
+ 0 else '0'
self.addline = ' '.join(self.addline.split())
self.addline = self.addline.partition(
'ac')[0] + " " + 'ac' + " " + va_val + " " + ph_val
@@ -132,18 +150,27 @@ class Convert:
v1_val = str(self.entry_var[self.start].text()) if len(
str(self.entry_var[self.start].text())) > 0 else '0'
v2_val = str(self.entry_var[self.start + 1].text()) if len(
- str(self.entry_var[self.start + 1].text())) > 0 else '0'
- td1_val = str(self.entry_var[self.start + 2].text()) if len(
- str(self.entry_var[self.start + 2].text())) > 0 else '0'
- tau1_val = str(self.entry_var[self.start + 3].text()) if len(
- str(self.entry_var[self.start + 3].text())) > 0 else '0'
- td2_val = str(self.entry_var[self.start + 4].text()) if len(
- str(self.entry_var[self.start + 4].text())) > 0 else '0'
+ str(self.entry_var[self.start + 1].text())) > \
+ 0 else '0'
+ td1_val = str(self.entry_var[self.start + 2].text()) \
+ if len(
+ str(self.entry_var[self.start + 2].text())) > \
+ 0 else '0'
+ tau1_val = str(self.entry_var[self.start + 3].text()) \
+ if len(
+ str(self.entry_var[self.start + 3].text())) > \
+ 0 else '0'
+ td2_val = str(self.entry_var[self.start + 4].text()) \
+ if len(
+ str(self.entry_var[self.start + 4].text())) > \
+ 0 else '0'
tau2_val = str(self.entry_var[self.end].text()) if len(
str(self.entry_var[self.end].text())) > 0 else '0'
self.addline = self.addline.partition(
- '(')[0] + "(" + v1_val + " " + v2_val + " " + td1_val + " " + tau1_val + " " + td2_val + " " + tau2_val + ")"
+ '(')[0] + "(" + v1_val + " " + v2_val + " " +\
+ td1_val + " " + tau1_val + " " + td2_val +\
+ " " + tau2_val + ")"
self.sourcelistvalue.append([self.index, self.addline])
except BaseException:
print(
@@ -158,7 +185,8 @@ class Convert:
return self.schematicInfo
def analysisInsertor(self, ac_entry_var, dc_entry_var, tran_entry_var,
- set_checkbox, ac_parameter, dc_parameter, tran_parameter, ac_type, op_check):
+ set_checkbox, ac_parameter, dc_parameter,
+ tran_parameter, ac_type, op_check):
"""
This function creates an analysis file in current project
"""
@@ -184,14 +212,15 @@ class Convert:
' ' +
self.ac_type +
' ' +
- str(self.defaultvalue(self.ac_entry_var[self.no +
- 2].text())) +
+ str(self.defaultvalue(
+ self.ac_entry_var[self.no + 2].text())) +
' ' +
- str(self.defaultvalue(self.ac_entry_var[self.no].text())) +
+ str(self.defaultvalue(
+ self.ac_entry_var[self.no].text())) +
self.ac_parameter[self.no] +
' ' +
- str(self.defaultvalue(self.ac_entry_var[self.no +
- 1].text())) +
+ str(self.defaultvalue(
+ self.ac_entry_var[self.no + 1].text())) +
self.ac_parameter[self.no +
1])
@@ -205,56 +234,75 @@ class Convert:
' ' +
str(self.dc_entry_var[self.no].text()) +
' ' +
- str(self.defaultvalue(self.dc_entry_var[self.no +
- 1].text())) +
- self.converttosciform(self.dc_parameter[self.no]) +
+ str(self.defaultvalue(
+ self.dc_entry_var[self.no +
+ 1].text())) +
+ self.converttosciform(
+ self.dc_parameter[self.no]) +
' ' +
- str(self.defaultvalue(self.dc_entry_var[self.no +
- 3].text())) +
- self.converttosciform(self.dc_parameter[self.no +
- 2]) +
+ str(self.defaultvalue(
+ self.dc_entry_var[self.no +
+ 3].text())) +
+ self.converttosciform(
+ self.dc_parameter[self.no +
+ 2]) +
' ' +
- str(self.defaultvalue(self.dc_entry_var[self.no +
- 2].text())) +
- self.converttosciform(self.dc_parameter[self.no +
- 1]))
+ str(self.defaultvalue(
+ self.dc_entry_var[self.no +
+ 2].text())) +
+ self.converttosciform(
+ self.dc_parameter[self.no +
+ 1]))
if self.dc_entry_var[self.no + 4].text():
self.writefile.write(' ' +
- str(self.defaultvalue(self.dc_entry_var[self.no +
- 4].text())) +
+ str(self.defaultvalue(
+ self.dc_entry_var[self.no +
+ 4].text())) +
' ' +
- str(self.defaultvalue(self.dc_entry_var[self.no +
- 5].text())) +
- self.converttosciform(self.dc_parameter[self.no +
- 3]) +
+ str(self.defaultvalue(
+ self.dc_entry_var[self.no +
+ 5].text())) +
+ self.converttosciform(
+ self.dc_parameter[self.no +
+ 3]) +
' ' +
- str(self.defaultvalue(self.dc_entry_var[self.no +
- 7].text())) +
- self.converttosciform(self.dc_parameter[self.no +
- 5]) +
+ str(self.defaultvalue(
+ self.dc_entry_var[self.no +
+ 7].text())) +
+ self.converttosciform(
+ self.dc_parameter[self.no +
+ 5]) +
' ' +
- str(self.defaultvalue(self.dc_entry_var[self.no +
- 6].text())) +
- self.converttosciform(self.dc_parameter[self.no +
- 4]))
+ str(self.defaultvalue(
+ self.dc_entry_var[self.no +
+ 6].text())) +
+ self.converttosciform(
+ self.dc_parameter[self.no +
+ 4]))
elif self.variable == 'TRAN':
self.no = 0
self.writefile.write(".tran" +
' ' +
- str(self.defaultvalue(self.tran_entry_var[self.no +
- 1].text())) +
- self.converttosciform(self.trans_parameter[self.no +
- 1]) +
+ str(self.defaultvalue(
+ self.tran_entry_var[self.no +
+ 1].text())) +
+ self.converttosciform(
+ self.trans_parameter[self.no +
+ 1]) +
' ' +
- str(self.defaultvalue(self.tran_entry_var[self.no +
- 2].text())) +
- self.converttosciform(self.trans_parameter[self.no +
- 2]) +
+ str(self.defaultvalue(
+ self.tran_entry_var[self.no +
+ 2].text())) +
+ self.converttosciform(
+ self.trans_parameter[self.no +
+ 2]) +
' ' +
- str(self.defaultvalue(self.tran_entry_var[self.no].text())) +
- self.converttosciform(self.trans_parameter[self.no]))
+ str(self.defaultvalue(
+ self.tran_entry_var[self.no].text())) +
+ self.converttosciform(
+ self.trans_parameter[self.no]))
else:
pass
@@ -278,7 +326,8 @@ class Convert:
def defaultvalue(self, value):
"""
- This function select default value as 0 if Analysis widget do not hold any value.
+ This function select default value as 0
+ if Analysis widget do not hold any value.
"""
self.value = value
if self.value == '':
@@ -299,11 +348,11 @@ class Convert:
modelParamValue = []
for line in self.obj_track.modelTrack:
- #print "Model Track :",line
+ # print "Model Track :",line
if line[2] == 'transfo':
try:
start = line[7]
- end = line[8]
+ # end = line[8]
num_turns = str(
self.obj_track.model_entry_var[start + 1].text())
@@ -319,7 +368,11 @@ class Convert:
b_array = b_array + b1 + " "
bh_array = h_array + " ] " + b_array + " ]"
else:
- bh_array = "H_array = [-1000 -500 -375 -250 -188 -125 -63 0 63 125 188 250 375 500 1000] B_array = [-3.13e-3 -2.63e-3 -2.33e-3 -1.93e-3 -1.5e-3 -6.25e-4 -2.5e-4 0 2.5e-4 6.25e-4 1.5e-3 1.93e-3 2.33e-3 2.63e-3 3.13e-3]"
+ bh_array = "H_array = [-1000 -500 -375 -250 -188 -125 \
+ -63 0 63 125 188 250 375 500 \
+ 1000] B_array = [-3.13e-3 -2.63e-3 -2.33e-3 -1.93e-3\
+ -1.5e-3 -6.25e-4 -2.5e-4 0 2.5e-4 6.25e-4 \
+ 1.5e-3 1.93e-3 2.33e-3 2.63e-3 3.13e-3]"
area = str(
self.obj_track.model_entry_var[start + 2].text())
length = str(
@@ -354,7 +407,7 @@ class Convert:
elif line[2] == 'ic':
try:
start = line[7]
- end = line[8]
+ # end = line[8]
for key, value in line[9].items():
initVal = str(
self.obj_track.model_entry_var[value].text())
@@ -372,11 +425,11 @@ class Convert:
else:
try:
start = line[7]
- end = line[8]
+ # end = line[8]
addmodelLine = ".model " + line[3] + " " + line[2] + "("
for key, value in line[9].items():
- #print "Tags: ",key
- #print "Value: ",value
+ # print "Tags: ",key
+ # print "Value: ",value
# Checking for default value and accordingly assign
# param and default.
if ':' in key:
@@ -391,20 +444,24 @@ class Convert:
addmodelLine += param + "=["
for lineVar in value:
if str(
- self.obj_track.model_entry_var[lineVar].text()) == "":
+ self.obj_track.model_entry_var
+ [lineVar].text()) == "":
paramVal = default
else:
paramVal = str(
- self.obj_track.model_entry_var[lineVar].text())
+ self.obj_track.model_entry_var
+ [lineVar].text())
addmodelLine += paramVal + " "
addmodelLine += "] "
else:
if str(
- self.obj_track.model_entry_var[value].text()) == "":
+ self.obj_track.model_entry_var
+ [value].text()) == "":
paramVal = default
else:
paramVal = str(
- self.obj_track.model_entry_var[value].text())
+ self.obj_track.model_entry_var
+ [value].text())
addmodelLine += param + "=" + paramVal + " "
@@ -433,7 +490,8 @@ class Convert:
(projpath, filename) = os.path.split(kicadFile)
deviceLibList = self.obj_track.deviceModelTrack
- deviceLine = {} # Key:Index, Value:with its updated line in the form of list
+ deviceLine = {}
+ # Key:Index, Value:with its updated line in the form of list
includeLine = [] # All .include line list
if not deviceLibList:
@@ -457,7 +515,7 @@ class Convert:
libname = tempStr[0]
dimension = tempStr[1]
# Replace last word with library name
- #words[-1] = libname.split('.')[0]
+ # words[-1] = libname.split('.')[0]
words[-1] = self.getRefrenceName(libname, libpath)
# Appending Dimension of MOSFET
words.append(dimension)
@@ -474,7 +532,7 @@ class Convert:
shutil.copy2(src, dst)
else:
# Replace last word with library name
- #words[-1] = libname.split('.')[0]
+ # words[-1] = libname.split('.')[0]
words[-1] = self.getRefrenceName(libname, libpath)
deviceLine[index] = words
includeLine.append(".include " + libname)
@@ -507,7 +565,8 @@ class Convert:
(projpath, filename) = os.path.split(kicadFile)
subList = self.obj_track.subcircuitTrack
- subLine = {} # Key:Index, Value:with its updated line in the form of list
+ subLine = {}
+ # Key:Index, Value:with its updated line in the form of list
includeLine = [] # All .include line list
if len(self.obj_track.subcircuitList) != len(
diff --git a/src/kicadtoNgspice/DeviceModel.py b/src/kicadtoNgspice/DeviceModel.py
index e94ee561..909756b5 100644
--- a/src/kicadtoNgspice/DeviceModel.py
+++ b/src/kicadtoNgspice/DeviceModel.py
@@ -1,6 +1,6 @@
from PyQt4 import QtGui
import os
-#from xml.etree import ElementTree as ET
+# from xml.etree import ElementTree as ET
import json
from . import TrackWidget
@@ -8,7 +8,8 @@ from . import TrackWidget
class DeviceModel(QtGui.QWidget):
"""
This class creates Device Library Tab in KicadtoNgspice Window
- It dynamically creates the widget for device like diode,mosfet,transistor and jfet.
+ It dynamically creates the widget for device like diode,mosfet,
+ transistor and jfet.
"""
def __init__(self, schematicInfo, clarg1):
@@ -73,18 +74,21 @@ class DeviceModel(QtGui.QWidget):
try:
for key in json_data["deviceModel"]:
if key[0] == eachline[0] and key[1] == eachline[1]:
- #print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ # print "DEVICE MODEL MATCHING---",child.tag[0],\
+ # child.tag[1],eachline[0],eachline[1]
try:
if os.path.exists(
json_data["deviceModel"][key][0]):
self.entry_var[self.count].setText(
json_data["deviceModel"][key][0])
- path_name = json_data["deviceModel"][key][0]
+ path_name = json_data
+ ["deviceModel"][key][0]
else:
self.entry_var[self.count].setText("")
except BaseException:
print(
- "Error when set text of device model transistor")
+ "Error when set text of device\
+ model transistor")
except BaseException:
pass
@@ -104,8 +108,10 @@ class DeviceModel(QtGui.QWidget):
# CSS
transbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: \
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left:\
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(transbox)
@@ -129,21 +135,24 @@ class DeviceModel(QtGui.QWidget):
words[3])
self.entry_var[self.count] = QtGui.QLineEdit()
self.entry_var[self.count].setText("")
- #global path_name
+ # global path_name
try:
for key in json_data["deviceModel"]:
if key[0] == eachline[0] and key[1] == eachline[1]:
- #print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ # print "DEVICE MODEL MATCHING---",child.tag[0],\
+ # child.tag[1],eachline[0],eachline[1]
try:
if os.path.exists(
json_data["deviceModel"][key][0]):
- path_name = json_data["deviceModel"][key][0]
+ path_name = json_data
+ ["deviceModel"][key][0]
self.entry_var[self.count].setText(
json_data["deviceModel"][key][0])
else:
self.entry_var[self.count].setText("")
except BaseException:
- print("Error when set text of device model diode")
+ print("Error when set text of device\
+ model diode")
except BaseException:
pass
@@ -163,8 +172,10 @@ class DeviceModel(QtGui.QWidget):
# CSS
diodebox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: \
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left:\
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(diodebox)
@@ -188,21 +199,24 @@ class DeviceModel(QtGui.QWidget):
words[4])
self.entry_var[self.count] = QtGui.QLineEdit()
self.entry_var[self.count].setText("")
- #global path_name
+ # global path_name
try:
for key in json_data["deviceModel"]:
if key[0] == eachline[0] and key[1] == eachline[1]:
- #print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ # print "DEVICE MODEL MATCHING---",child.tag[0],\
+ # child.tag[1],eachline[0],eachline[1]
try:
if os.path.exists(
json_data["deviceModel"][key][0]):
self.entry_var[self.count].setText(
json_data["deviceModel"][key][0])
- path_name = json_data["deviceModel"][key][0]
+ path_name = json_data
+ ["deviceModel"][key][0]
else:
self.entry_var[self.count].setText("")
except BaseException:
- print("Error when set text of Device Model JFET ")
+ print("Error when set text of Device\
+ Model JFET ")
except BaseException:
pass
@@ -222,8 +236,10 @@ class DeviceModel(QtGui.QWidget):
# CSS
jfetbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius:\
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left:\
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(jfetbox)
@@ -282,7 +298,8 @@ class DeviceModel(QtGui.QWidget):
self.count = self.count + 1
self.multifactorLable[self.count] = QtGui.QLabel(
- "Enter multiplicative factor of MOSFET " + words[0] + "(default=1):")
+ "Enter multiplicative factor of MOSFET " +
+ words[0] + "(default=1):")
mosfetgrid.addWidget(
self.multifactorLable[self.count], self.row, 0)
self.entry_var[self.count] = QtGui.QLineEdit()
@@ -294,18 +311,20 @@ class DeviceModel(QtGui.QWidget):
self.devicemodel_dict_end[words[0]] = self.count
self.count = self.count + 1
mosfetbox.setLayout(mosfetgrid)
- #global path_name
+ # global path_name
try:
for key in json_data["deviceModel"]:
if key[0] == eachline[0] and key[1] == eachline[1]:
- #print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ # print "DEVICE MODEL MATCHING---",child.tag[0],\
+ # child.tag[1],eachline[0],eachline[1]
while i <= end:
self.entry_var[i].setText(
json_data["deviceModel"][key][i - beg])
if (i - beg) == 0:
if os.path.exists(
json_data["deviceModel"][key][0]):
- path_name = json_data["deviceModel"][key][0]
+ path_name = json_data
+ ["deviceModel"][key][0]
else:
self.entry_var[i].setText("")
i = i + 1
@@ -313,8 +332,10 @@ class DeviceModel(QtGui.QWidget):
pass
# CSS
mosfetbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius:\
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: \
+ 10px; padding: 0 3px 0 3px; } \
")
if self.entry_var[beg].text() == "":
pass
@@ -331,7 +352,7 @@ class DeviceModel(QtGui.QWidget):
"""
print("Calling Track Device Model Library funtion")
sending_btn = self.sender()
- #print "Object Called is ",sending_btn.objectName()
+ # print "Object Called is ",sending_btn.objectName()
self.widgetObjCount = int(sending_btn.objectName())
self.libfile = str(
@@ -340,7 +361,7 @@ class DeviceModel(QtGui.QWidget):
"Open Library Directory",
"../deviceModelLibrary",
"*.lib"))
- #print "Selected Library File :",self.libfile
+ # print "Selected Library File :",self.libfile
# Setting Library to Text Edit Line
self.entry_var[self.widgetObjCount].setText(self.libfile)
@@ -370,11 +391,11 @@ class DeviceModel(QtGui.QWidget):
This function is use to keep track of all Device Model widget
"""
print("Calling Track Library function Without Button")
- #print "Object Called is ",sending_btn.objectName()
+ # print "Object Called is ",sending_btn.objectName()
self.widgetObjCount = iter_value
print("self.widgetObjCount-----", self.widgetObjCount)
self.libfile = path_value
- #print "Selected Library File :",self.libfile
+ # print "Selected Library File :",self.libfile
# Setting Library to Text Edit Line
self.entry_var[self.widgetObjCount].setText(self.libfile)
diff --git a/src/kicadtoNgspice/KicadtoNgspice.py b/src/kicadtoNgspice/KicadtoNgspice.py
index 9001830f..a8349396 100644
--- a/src/kicadtoNgspice/KicadtoNgspice.py
+++ b/src/kicadtoNgspice/KicadtoNgspice.py
@@ -1,4 +1,4 @@
-#=========================================================================
+# =========================================================================
#
# FILE: kicadtoNgspice.py
#
@@ -14,7 +14,7 @@
# ORGANIZATION: eSim team at FOSSEE, IIT Bombay.
# CREATED: Wednesday 04 March 2015
# REVISION: ---
-#=========================================================================
+# =========================================================================
import sys
import os
from PyQt4 import QtGui
@@ -28,20 +28,20 @@ from . import Convert
from . import TrackWidget
import json
-#from xml.etree import ElementTree as ET
+# from xml.etree import ElementTree as ET
class MainWindow(QtGui.QWidget):
"""
This class create KicadtoNgspice window.
And Call Convert function if convert button is pressed.
- The convert function takes all the value entered by user and create a final netlist "*.cir.out".
+ The convert function takes all the value entered by user and create
+ a final netlist "*.cir.out".
This final netlist is compatible with NgSpice.
"""
def __init__(self, clarg1, clarg2=None):
QtGui.QWidget.__init__(self)
-
print("==================================")
print("Kicad to Ngspice netlist converter ")
print("==================================")
@@ -77,7 +77,7 @@ class MainWindow(QtGui.QWidget):
netlist, infoline = obj_proc.preprocessNetlist(kicadNetlist, param)
print("Schematic Info after processing Kicad Netlist: ", netlist)
- #print "INFOLINE",infoline
+ # print "INFOLINE",infoline
# Separate option and schematic information
optionInfo, schematicInfo = obj_proc.separateNetlistInfo(netlist)
@@ -92,19 +92,23 @@ class MainWindow(QtGui.QWidget):
schematicInfo, sourcelist)
# List storing model detail
- global modelList, outputOption, unknownModelList, multipleModelList, plotText
+ global modelList, outputOption, unknownModelList, \
+ multipleModelList, plotText
modelList = []
outputOption = []
plotText = []
- schematicInfo, outputOption, modelList, unknownModelList, multipleModelList, plotText = obj_proc.convertICintoBasicBlocks(
+ schematicInfo, outputOption, modelList, unknownModelList,
+ multipleModelList, plotText = obj_proc.convertICintoBasicBlocks(
schematicInfo, outputOption, modelList, plotText)
print("Model available in the Schematic :", modelList)
"""
- Checking if any unknown model is used in schematic which is not recognized by NgSpice.
- Also if the two model of same name is present under modelParamXML directory
+ Checking if any unknown model is used in schematic which is not
+ recognized by NgSpice.
+ Also if the two model of same name is present under
+ modelParamXML directory
"""
if unknownModelList:
print("Unknown Model List is : ", unknownModelList)
@@ -116,7 +120,8 @@ class MainWindow(QtGui.QWidget):
elif multipleModelList:
self.msg = QtGui.QErrorMessage()
- self.mcontent = "Look like you have duplicate model in modelParamXML directory " + \
+ self.mcontent = "Look like you have duplicate model in \
+ modelParamXML directory " + \
', '.join(multipleModelList[0])
self.msg.showMessage(self.mcontent)
self.msg.setWindowTitle("Multiple Models")
@@ -148,19 +153,19 @@ class MainWindow(QtGui.QWidget):
self.analysisTab = QtGui.QScrollArea()
obj_analysis = Analysis.Analysis(self.clarg1)
self.analysisTab.setWidget(obj_analysis)
- #self.analysisTabLayout = QtGui.QVBoxLayout(self.analysisTab.widget())
+ # self.analysisTabLayout = QtGui.QVBoxLayout(self.analysisTab.widget())
self.analysisTab.setWidgetResizable(True)
global obj_source
self.sourceTab = QtGui.QScrollArea()
obj_source = Source.Source(sourcelist, sourcelisttrack, self.clarg1)
self.sourceTab.setWidget(obj_source)
- #self.sourceTabLayout = QtGui.QVBoxLayout(self.sourceTab.widget())
+ # self.sourceTabLayout = QtGui.QVBoxLayout(self.sourceTab.widget())
self.sourceTab.setWidgetResizable(True)
global obj_model
self.modelTab = QtGui.QScrollArea()
obj_model = Model.Model(schematicInfo, modelList, self.clarg1)
self.modelTab.setWidget(obj_model)
- #self.modelTabLayout = QtGui.QVBoxLayout(self.modelTab.widget())
+ # self.modelTabLayout = QtGui.QVBoxLayout(self.modelTab.widget())
self.modelTab.setWidgetResizable(True)
global obj_devicemodel
self.deviceModelTab = QtGui.QScrollArea()
@@ -236,8 +241,10 @@ class MainWindow(QtGui.QWidget):
obj_analysis.ac_entry_var[1].text())
json_data["analysis"]["ac"]["No. of points"] = str(
obj_analysis.ac_entry_var[2].text())
- json_data["analysis"]["ac"]["Start Fre Combo"] = obj_analysis.ac_parameter[0]
- json_data["analysis"]["ac"]["Stop Fre Combo"] = obj_analysis.ac_parameter[1]
+ json_data
+ ["analysis"]["ac"]["Start Fre Combo"] = obj_analysis.ac_parameter[0]
+ json_data
+ ["analysis"]["ac"]["Stop Fre Combo"] = obj_analysis.ac_parameter[1]
json_data["analysis"]["dc"] = {}
json_data["analysis"]["dc"]["Source 1"] = str(
@@ -250,9 +257,12 @@ class MainWindow(QtGui.QWidget):
obj_analysis.dc_entry_var[3].text())
json_data["analysis"]["dc"]["Operating Point"] = str(
self.obj_track.op_check[-1])
- json_data["analysis"]["dc"]["Start Combo"] = obj_analysis.dc_parameter[0]
- json_data["analysis"]["dc"]["Increment Combo"] = obj_analysis.dc_parameter[1]
- json_data["analysis"]["dc"]["Stop Combo"] = obj_analysis.dc_parameter[2]
+ json_data
+ ["analysis"]["dc"]["Start Combo"] = obj_analysis.dc_parameter[0]
+ json_data
+ ["analysis"]["dc"]["Increment Combo"] = obj_analysis.dc_parameter[1]
+ json_data
+ ["analysis"]["dc"]["Stop Combo"] = obj_analysis.dc_parameter[2]
json_data["analysis"]["dc"]["Source 2"] = str(
obj_analysis.dc_entry_var[4].text())
json_data["analysis"]["dc"]["Start2"] = str(
@@ -261,9 +271,12 @@ class MainWindow(QtGui.QWidget):
obj_analysis.dc_entry_var[6].text())
json_data["analysis"]["dc"]["Stop2"] = str(
obj_analysis.dc_entry_var[7].text())
- json_data["analysis"]["dc"]["Start Combo2"] = obj_analysis.dc_parameter[3]
- json_data["analysis"]["dc"]["Increment Combo2"] = obj_analysis.dc_parameter[4]
- json_data["analysis"]["dc"]["Stop Combo2"] = obj_analysis.dc_parameter[5]
+ json_data
+ ["analysis"]["dc"]["Start Combo2"] = obj_analysis.dc_parameter[3]
+ json_data
+ ["analysis"]["dc"]["Increment Combo2"] = obj_analysis.dc_parameter[4]
+ json_data
+ ["analysis"]["dc"]["Stop Combo2"] = obj_analysis.dc_parameter[5]
json_data["analysis"]["tran"] = {}
json_data["analysis"]["tran"]["Start Time"] = str(
@@ -272,9 +285,12 @@ class MainWindow(QtGui.QWidget):
obj_analysis.tran_entry_var[1].text())
json_data["analysis"]["tran"]["Stop Time"] = str(
obj_analysis.tran_entry_var[2].text())
- json_data["analysis"]["tran"]["Start Combo"] = obj_analysis.tran_parameter[0]
- json_data["analysis"]["tran"]["Step Combo"] = obj_analysis.tran_parameter[1]
- json_data["analysis"]["tran"]["Stop Combo"] = obj_analysis.tran_parameter[2]
+ json_data
+ ["analysis"]["tran"]["Start Combo"] = obj_analysis.tran_parameter[0]
+ json_data
+ ["analysis"]["tran"]["Step Combo"] = obj_analysis.tran_parameter[1]
+ json_data
+ ["analysis"]["tran"]["Stop Combo"] = obj_analysis.tran_parameter[2]
"""
Writing Source values
@@ -514,7 +530,8 @@ class MainWindow(QtGui.QWidget):
# Calling netlist file generation function
self.createNetlistFile(store_schematicInfo, plotText)
- self.msg = "The Kicad to Ngspice Conversion completed successfully!"
+ self.msg = "The Kicad to Ngspice Conversion completed\
+ successfully!"
QtGui.QMessageBox.information(
self, "Information", self.msg, QtGui.QMessageBox.Ok)
@@ -531,19 +548,19 @@ class MainWindow(QtGui.QWidget):
def createNetlistFile(self, store_schematicInfo, plotText):
print("Creating Final netlist")
- #print "INFOLINE",infoline
- #print "OPTIONINFO",optionInfo
- #print "Device MODEL LIST ",devicemodelList
- #print "SUBCKT ",subcktList
- #print "OUTPUTOPTION",outputOption
- #print "KicadfIle",kicadFile
+ # print "INFOLINE",infoline
+ # print "OPTIONINFO",optionInfo
+ # print "Device MODEL LIST ",devicemodelList
+ # print "SUBCKT ",subcktList
+ # print "OUTPUTOPTION",outputOption
+ # print "KicadfIle",kicadFile
# To avoid writing optionInfo twice in final netlist
store_optionInfo = list(optionInfo)
# checking if analysis files is present
(projpath, filename) = os.path.split(self.kicadFile)
analysisFileLoc = os.path.join(projpath, "analysis")
- #print "Analysis File Location",analysisFileLoc
+ # print "Analysis File Location",analysisFileLoc
if os.path.exists(analysisFileLoc):
try:
f = open(analysisFileLoc)
@@ -553,7 +570,8 @@ class MainWindow(QtGui.QWidget):
f.close()
except BaseException:
- print("Error While opening Project Analysis file. Please check it")
+ print("Error While opening Project Analysis file.\
+ Please check it")
sys.exit()
else:
print(analysisFileLoc + " does not exist")
@@ -569,22 +587,25 @@ class MainWindow(QtGui.QWidget):
else:
pass
- #print "Option Info",optionInfo
+ # print "Option Info",optionInfo
analysisOption = []
initialCondOption = []
simulatorOption = []
- # includeOption=[] #Don't know why to use it
- # model = [] #Don't know why to use it
+ # includeOption=[] # Don't know why to use it
+ # model = [] # Don't know why to use it
for eachline in store_optionInfo:
words = eachline.split()
option = words[0]
- if (option == '.ac' or option == '.dc' or option == '.disto' or option == '.noise' or
- option == '.op' or option == '.pz' or option == '.sens' or option == '.tf' or
+ if (option == '.ac' or option == '.dc' or option ==
+ '.disto' or option == '.noise' or
+ option == '.op' or option == '.pz' or option ==
+ '.sens' or option == '.tf' or
option == '.tran'):
analysisOption.append(eachline + '\n')
- elif (option == '.save' or option == '.print' or option == '.plot' or option == '.four'):
+ elif (option == '.save' or option == '.print' or option ==
+ '.plot' or option == '.four'):
eachline = eachline.strip('.')
outputOption.append(eachline + '\n')
elif (option == '.nodeset' or option == '.ic'):
@@ -661,7 +682,8 @@ class MainWindow(QtGui.QWidget):
subcktInfo += words[i] + " "
continue
if words[0] == ".end" or words[0] == ".ac" or words[0] == ".dc" or words[0] == ".tran" or words[0] == '.disto' or words[
- 0] == '.noise' or words[0] == '.op' or words[0] == '.pz' or words[0] == '.sens' or words[0] == '.tf':
+ 0] == '.noise' or words[0] == '.op' or words[0] ==\
+ '.pz' or words[0] == '.sens' or words[0] == '.tf':
continue
elif words[0] == ".control":
while words[0] != ".endc":
diff --git a/src/kicadtoNgspice/Model.py b/src/kicadtoNgspice/Model.py
index 7366a593..7ae41791 100644
--- a/src/kicadtoNgspice/Model.py
+++ b/src/kicadtoNgspice/Model.py
@@ -1,7 +1,7 @@
from PyQt4 import QtGui
import json
from . import TrackWidget
-#from xml.etree import ElementTree as ET
+# from xml.etree import ElementTree as ET
import os
@@ -48,7 +48,7 @@ class Model(QtGui.QWidget):
self.setLayout(self.grid)
for line in modelList:
- #print "ModelList Item:",line
+ # print "ModelList Item:",line
# Adding title label for model
# Key: Tag name,Value:Entry widget number
tag_dict = {}
@@ -59,8 +59,8 @@ class Model(QtGui.QWidget):
# line[7] is parameter dictionary holding parameter tags.
i = 0
for key, value in line[7].items():
- #print "Key : ",key
- #print "Value : ",value
+ # print "Key : ",key
+ # print "Value : ",value
# Check if value is iterable
if hasattr(value, '__iter__'):
# For tag having vector value
@@ -68,16 +68,22 @@ class Model(QtGui.QWidget):
for item in value:
paramLabel = QtGui.QLabel(item)
modelgrid.addWidget(paramLabel, self.nextrow, 0)
- self.obj_trac.model_entry_var[self.nextcount] = QtGui.QLineEdit(
+ self.obj_trac.model_entry_var
+ [self.nextcount] = QtGui.QLineEdit(
)
modelgrid.addWidget(
- self.obj_trac.model_entry_var[self.nextcount], self.nextrow, 1)
+ self.obj_trac.model_entry_var
+ [self.nextcount], self.nextrow, 1)
try:
for mod in json_data["model"]:
- if json_data["model"][mod]["type"] == line[2] and mod == line[3]:
- self.obj_trac.model_entry_var[self.nextcount].setText(
- str(list(json_data["model"][mod]["values"][i].values())[0]))
+ if json_data["model"][mod]["type"] ==\
+ line[2] and mod == line[3]:
+ self.obj_trac.model_entry_var
+ [self.nextcount].setText(
+ str(list(
+ json_data["model"][mod]["values"]
+ [i].values())[0]))
i = i + 1
except BaseException:
pass
@@ -90,16 +96,22 @@ class Model(QtGui.QWidget):
else:
paramLabel = QtGui.QLabel(value)
modelgrid.addWidget(paramLabel, self.nextrow, 0)
- self.obj_trac.model_entry_var[self.nextcount] = QtGui.QLineEdit(
+ self.obj_trac.model_entry_var
+ [self.nextcount] = QtGui.QLineEdit(
)
modelgrid.addWidget(
- self.obj_trac.model_entry_var[self.nextcount], self.nextrow, 1)
+ self.obj_trac.model_entry_var
+ [self.nextcount], self.nextrow, 1)
try:
for mod in json_data["model"]:
- if json_data["model"][mod]["type"] == line[2] and mod == line[3]:
- self.obj_trac.model_entry_var[self.nextcount].setText(
- str(list(json_data["model"][mod]["values"][i].values())[0]))
+ if json_data["model"][mod]["type"] ==\
+ line[2] and mod == line[3]:
+ self.obj_trac.model_entry_var
+ [self.nextcount].setText(
+ str(list(json_data
+ ["model"][mod]["values"]
+ [i].values())[0]))
i = i + 1
except BaseException:
pass
@@ -109,13 +121,15 @@ class Model(QtGui.QWidget):
self.nextrow = self.nextrow + 1
self.end = self.nextcount - 1
- #print "End",self.end
+ # print "End",self.end
modelbox.setLayout(modelgrid)
# CSS
modelbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: \
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left:\
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(modelbox)
@@ -129,7 +143,8 @@ class Model(QtGui.QWidget):
line[4] = comment
line[5] = title
line[6] = type i.e analog or digital
- Now adding start,end and tag_dict which will be line[7],line[8] and line[9] respectively
+ Now adding start,end and tag_dict which will be line[7],
+ line[8] and line[9] respectively
'''
# This keeps the track of Model Tab Widget
@@ -152,6 +167,6 @@ class Model(QtGui.QWidget):
if check == 0:
self.obj_trac.modelTrack.append(lst)
- #print "The tag dictionary : ",tag_dict
+ # print "The tag dictionary : ",tag_dict
self.show()
diff --git a/src/kicadtoNgspice/Processing.py b/src/kicadtoNgspice/Processing.py
index a175ac8b..efc30c16 100644
--- a/src/kicadtoNgspice/Processing.py
+++ b/src/kicadtoNgspice/Processing.py
@@ -103,7 +103,8 @@ class PrcocessNetlist:
pw = ' Enter pulse width (seconds): '
tp = ' Enter period (seconds): '
sourcelist.append(
- [index, compline, words[3], Title, v1, v2, td, tr, tf, pw, tp])
+ [index, compline, words[3],
+ Title, v1, v2, td, tr, tf, pw, tp])
elif words[3] == "sine":
Title = "Add parameters for sine source " + compName
@@ -113,11 +114,13 @@ class PrcocessNetlist:
td = ' Enter delay time (seconds): '
theta = ' Enter damping factor (1/seconds): '
sourcelist.append(
- [index, compline, words[3], Title, vo, va, freq, td, theta])
+ [index, compline, words[3],
+ Title, vo, va, freq, td, theta])
elif words[3] == "pwl":
Title = "Add parameters for pwl source " + compName
- t_v = ' Enter in pwl format without bracket i.e t1 v1 t2 v2.... '
+ t_v = ' Enter in pwl format without bracket\
+ i.e t1 v1 t2 v2.... '
sourcelist.append([index, compline, words[3], Title, t_v])
elif words[3] == "ac":
@@ -136,7 +139,8 @@ class PrcocessNetlist:
td2 = ' Enter fall time (seconds): '
tau2 = ' Enter fall time constant (seconds): '
sourcelist.append(
- [index, compline, words[3], Title, v1, v2, td1, tau1, td2, tau2])
+ [index, compline, words[3],
+ Title, v1, v2, td1, tau1, td2, tau2])
elif words[3] == "dc":
Title = "Add parameters for DC source " + compName
@@ -166,7 +170,7 @@ class PrcocessNetlist:
schematicInfo = schematicInfo + schematicInfo1
print("Source List : ", sourcelist)
- #print schematicInfo
+ # print schematicInfo
return schematicInfo, sourcelist
def convertICintoBasicBlocks(
@@ -187,8 +191,8 @@ class PrcocessNetlist:
for compline in schematicInfo:
words = compline.split()
compName = words[0]
- #print "Compline----------------->",compline
- #print "compName-------------->",compName
+ # print "Compline----------------->",compline
+ # print "compName-------------->",compName
# Find the IC from schematic
if compName[0] == 'u' or compName[0] == 'U':
# Find the component from the circuit
@@ -199,12 +203,14 @@ class PrcocessNetlist:
# e.g compLine : u1 1 2 gain
# compType : gain
# compName : u1
- #print "Compline",compline
- #print "CompType",compType
- #print "Words",words
- #print "compName",compName
+ # print "Compline",compline
+ # print "CompType",compType
+ # print "Words",words
+ # print "compName",compName
# Looking if model file is present
- if compType != "port" and compType != "ic" and compType not in plotList and compType != 'transfo':
+ if compType != "port" and compType != "ic" and \
+ compType not in plotList and \
+ compType != 'transfo':
xmlfile = compType + ".xml" # XML Model File
count = 0 # Check if model of same name is present
modelPath = []
@@ -223,10 +229,11 @@ class PrcocessNetlist:
elif count == 1:
try:
print(
- "Start Parsing Previous Values XML for ngspice model :", modelPath)
+ "Start Parsing Previous Values XML\
+ for ngspice model :", modelPath)
tree = ET.parse(modelPath[0])
- root = tree.getroot()
+ root = tree.getroot() # noqa
# Getting number of nodes for model and title
for child in tree.iter():
if child.tag == 'node_number':
@@ -243,33 +250,37 @@ class PrcocessNetlist:
for param in tree.findall('param'):
for item in param:
- #print "Tags ",item.tag
- #print "Value",item.text
+ # print "Tags ",item.tag
+ # print "Value",item.text
if 'vector'in item.attrib:
- #print "Tag having vector attribute",item.tag,item.attrib['vector']
+ # print "Tag having vector attribute",\
+ # item.tag,item.attrib['vector']
temp_count = 1
temp_list = []
for i in range(0, int(
item.attrib['vector'])):
temp_list.append(
- item.text + " " + str(temp_count))
+ item.text + " " + str(
+ temp_count))
temp_count += 1
if 'default' in item.attrib:
paramDict[item.tag + ":" +
- item.attrib['default']] = temp_list
+ item.attrib['default']] \
+ = temp_list
else:
paramDict[item.tag] = item.text
else:
if 'default' in item.attrib:
paramDict[item.tag + ":" +
- item.attrib['default']] = item.text
+ item.attrib['default']]\
+ = item.text
else:
paramDict[item.tag] = item.text
- #print "Number of Nodes : ",num_of_nodes
- #print "Title : ",title
- #print "Parameters",paramDict
+ # print "Number of Nodes : ",num_of_nodes
+ # print "Title : ",title
+ # print "Parameters",paramDict
# Creating line for adding model line in schematic
if splitDetail == 'None':
modelLine = "a" + str(k) + " "
@@ -281,28 +292,30 @@ class PrcocessNetlist:
print("Split Details :", splitDetail)
modelLine = "a" + str(k) + " "
vectorDetail = splitDetail.split(':')
- #print "Vector Details",vectorDetail
+ # print "Vector Details",vectorDetail
pos = 1 # Node position
for item in vectorDetail:
try:
if item.split("-")[1] == 'V':
- #print "Vector"
+ # print "Vector"
if compType == "aswitch":
modelLine += "("
for i in range(0, int(
item.split("-")[0])):
- modelLine += words[pos] + " "
+ modelLine += words[pos] +\
+ " "
pos += 1
modelLine += ") "
else:
modelLine += "["
for i in range(0, int(
item.split("-")[0])):
- modelLine += words[pos] + " "
+ modelLine += words[pos] + \
+ " "
pos += 1
modelLine += "] "
elif item.split("-")[1] == 'NV':
- #print "Non Vector"
+ # print "Non Vector"
for i in range(0, int(
item.split("-")[0])):
modelLine += words[pos] + " "
@@ -310,28 +323,33 @@ class PrcocessNetlist:
except BaseException:
print(
- "There is error while processing Vector Details")
+ "There is error while processing\
+ Vector Details")
sys.exit(2)
modelLine += compName
- #print "Final Model Line :",modelLine
+ # print "Final Model Line :",modelLine
try:
schematicInfo.append(modelLine)
k = k + 1
except Exception as e:
print(
- "Error while appending ModelLine ", modelLine)
+ "Error while appending \
+ ModelLine ", modelLine)
print("Exception Message : ", str(e))
# Insert comment at remove line
schematicInfo.insert(index, "* " + compline)
- comment = "* Schematic Name: " + compType + ", NgSpice Name: " + modelname
+ comment = "* Schematic Name:\
+ " + compType + ", NgSpice Name: " + modelname
# Here instead of adding compType(use for XML),
# added modelName(Unique Model Name)
modelList.append(
- [index, compline, modelname, compName, comment, title, type, paramDict])
+ [index, compline, modelname, compName,
+ comment, title, type, paramDict])
except Exception as e:
print(
- "Unable to parse the model, Please check your your XML file")
+ "Unable to parse the model, \
+ Please check your your XML file")
print("Exception Message : ", str(e))
sys.exit(2)
elif compType == "ic":
@@ -343,7 +361,8 @@ class PrcocessNetlist:
text = "Enter initial voltage at node for " + compline
paramDict[title] = text
modelList.append(
- [index, compline, modelname, compName, comment, title, type, paramDict])
+ [index, compline, modelname, compName,
+ comment, title, type, paramDict])
elif compType in plotList:
schematicInfo.insert(index, "* " + compline)
@@ -358,7 +377,8 @@ class PrcocessNetlist:
words = compline.split()
# Adding zero voltage source to netlist
schematicInfo.append(
- "v_" + words[0] + " " + words[1] + " " + words[2] + " " + "0")
+ "v_" + words[0] + " "
+ + words[1] + " " + words[2] + " " + "0")
plotText.append("plot i(v_" + words[0] + ")")
elif compType == 'plot_log':
words = compline.split()
@@ -374,20 +394,23 @@ class PrcocessNetlist:
schematicInfo.insert(index, "* " + compline)
# For Primary Couple
- modelLine = "a" + str(k) + " (" + words[1] + " " + words[2] + ") (interNode_" + str(
+ modelLine = "a" + str(k)
+ + " (" + words[1] + " " + words[2] + ") (interNode_" + str(
interMediateNodeCount) + " " + words[3] + ") "
modelLine += compName + "_primary"
schematicInfo.append(modelLine)
k = k + 1
# For iron core
- modelLine = "a" + str(k) + " (" + words[4] + " " + words[2] + ") (interNode_" + str(
+ modelLine = "a" + str(k) + " (" + words[4] + " " + words[2] + ") \
+ (interNode_" + str(
interMediateNodeCount + 1) + " " + words[3] + ") "
modelLine += compName + "_secondary"
schematicInfo.append(modelLine)
k = k + 1
# For Secondary Couple
modelLine = "a" + str(k) + " (interNode_" + str(
- interMediateNodeCount) + " interNode_" + str(interMediateNodeCount + 1) + ") "
+ interMediateNodeCount) + " interNode_" + \
+ str(interMediateNodeCount + 1) + ") "
modelLine += compName + "_iron_core"
schematicInfo.append(modelLine)
k = k + 1
@@ -396,16 +419,21 @@ class PrcocessNetlist:
modelname = "transfo"
comment = "* " + compline
title = "Transformer details for model " + compName
- type = "NA" # It is model but do not load from xml and lib file
+ type = "NA"
+ # It is model but do not load from xml and lib file
paramDict['h1_array'] = "Enter the H1 array "
- paramDict['primary_turns'] = "Enter the primary number of turns (default=310) "
+ paramDict['primary_turns'] = "Enter the primary number \
+ of turns (default=310) "
paramDict['area'] = "Enter iron core area (default=1)"
- paramDict['secondar_turns'] = "Enter the secondary number of turns (default=620)"
- paramDict['length'] = "Enter iron core length (default=0.01)"
+ paramDict['secondar_turns'] = "Enter the secondary number\
+ of turns (default=620)"
+ paramDict['length'] = "Enter iron core length \
+ (default=0.01)"
paramDict['b1_array'] = "Enter the B1 array "
modelList.append(
- [index, compline, modelname, compName, comment, title, type, paramDict])
+ [index, compline, modelname, compName,
+ comment, title, type, paramDict])
else:
schematicInfo.insert(index, "* " + compline)
@@ -418,4 +446,7 @@ class PrcocessNetlist:
multipleModelList)
print("Model List Details : ", modelList)
- return schematicInfo, outputOption, modelList, unknownModelList, multipleModelList, plotText
+ return (
+ schematicInfo, outputOption, modelList, unknownModelList,
+ multipleModelList, plotText
+ )
diff --git a/src/kicadtoNgspice/Source.py b/src/kicadtoNgspice/Source.py
index 613b7b36..8649ce93 100644
--- a/src/kicadtoNgspice/Source.py
+++ b/src/kicadtoNgspice/Source.py
@@ -1,7 +1,7 @@
import os
from PyQt4 import QtGui
from . import TrackWidget
-#from xml.etree import ElementTree as ET
+# from xml.etree import ElementTree as ET
import json
@@ -20,14 +20,15 @@ class Source(QtGui.QWidget):
self.end = 0
self.row = 0
self.entry_var = {}
- #self.font = QtGui.QFont("Times",20,QtGui.QFont.Bold,True)
+ # self.font = QtGui.QFont("Times",20,QtGui.QFont.Bold,True)
# Creating Source Widget
self.createSourceWidget(sourcelist, sourcelisttrack)
def createSourceWidget(self, sourcelist, sourcelisttrack):
"""
- This function dynamically create source widget in the Source tab of KicadtoNgSpice window
+ This function dynamically create source widget in the
+ Source tab of KicadtoNgSpice window
"""
kicadFile = self.clarg1
(projpath, filename) = os.path.split(kicadFile)
@@ -51,10 +52,10 @@ class Source(QtGui.QWidget):
if sourcelist:
for line in sourcelist:
- #print "Voltage source line index: ",line[0]
+ # print "Voltage source line index: ",line[0]
print("SourceList line: ", line)
track_id = line[0]
- #print "track_id is ",track_id
+ # print "track_id is ",track_id
if line[2] == 'ac':
acbox = QtGui.QGroupBox()
acbox.setTitle(line[3])
@@ -83,11 +84,18 @@ class Source(QtGui.QWidget):
templist1 = line[1]
templist2 = templist1.split(' ')
- if key == templist2[0] and json_data["source"][key]["type"] == line[2]:
+ if key == templist2[0] and \
+ json_data["source"][key]["type"]\
+ == line[2]:
self.entry_var[self.count - 2].setText(
- str(json_data["source"][key]["values"][0]["Amplitude"]))
+ str(
+ json_data
+ ["source"][key]["values"][0]
+ ["Amplitude"]))
self.entry_var[self.count - 1].setText(
- str(json_data["source"][key]["values"][1]["Phase"]))
+ str(
+ json_data["source"][key]
+ ["values"][1]["Phase"]))
except BaseException:
pass
@@ -100,8 +108,10 @@ class Source(QtGui.QWidget):
# CSS
acbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius:\
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left:\
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(acbox)
@@ -126,9 +136,13 @@ class Source(QtGui.QWidget):
templist1 = line[1]
templist2 = templist1.split(' ')
- if key == templist2[0] and json_data["source"][key]["type"] == line[2]:
+ if key == templist2[0] and \
+ json_data["source"][key]["type"]\
+ == line[2]:
self.entry_var[self.count].setText(
- str(json_data["source"][key]["values"][0]["Value"]))
+ str(
+ json_data["source"][key]
+ ["values"][0]["Value"]))
except BaseException:
pass
@@ -140,8 +154,10 @@ class Source(QtGui.QWidget):
# CSS
dcbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius:\
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left:\
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(dcbox)
@@ -168,9 +184,14 @@ class Source(QtGui.QWidget):
for key in json_data["source"]:
templist1 = line[1]
templist2 = templist1.split(' ')
- if key == templist2[0] and json_data["source"][key]["type"] == line[2]:
+ if key == templist2[0] and \
+ json_data["source"][key]["type"]\
+ == line[2]:
self.entry_var[self.count].setText(
- str(list(json_data["source"][key]["values"][it - 4].values())[0]))
+ str(
+ list(json_data["source"]
+ [key]["values"]
+ [it - 4].values())[0]))
except BaseException:
pass
@@ -181,8 +202,10 @@ class Source(QtGui.QWidget):
# CSS
sinebox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: \
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: \
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(sinebox)
@@ -209,9 +232,13 @@ class Source(QtGui.QWidget):
templist1 = line[1]
templist2 = templist1.split(' ')
- if key == templist2[0] and json_data["source"][key]["type"] == line[2]:
+ if key == templist2[0] and \
+ json_data["source"][key]["type"]\
+ == line[2]:
self.entry_var[self.count].setText(
- str(list(json_data["source"][key]["values"][it - 4].values())[0]))
+ str(list(
+ json_data["source"][key]
+ ["values"][it - 4].values())[0]))
except BaseException:
pass
@@ -222,8 +249,10 @@ class Source(QtGui.QWidget):
# CSS
pulsebox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: \
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: \
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(pulsebox)
@@ -246,9 +275,12 @@ class Source(QtGui.QWidget):
for key in json_data["source"]:
templist1 = line[1]
templist2 = templist1.split(' ')
- if key == templist2[0] and json_data["source"][key]["type"] == line[2]:
+ if key == templist2[0] and \
+ json_data["source"][key]["type"] \
+ == line[2]:
self.entry_var[self.count].setText(
- str(json_data["source"][key]["values"][0]["Enter in pwl format"]))
+ str(json_data["source"][key]
+ ["values"][0]["Enter in pwl format"]))
except BaseException:
pass
@@ -259,8 +291,10 @@ class Source(QtGui.QWidget):
# CSS
pwlbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius: \
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: \
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(pwlbox)
@@ -286,9 +320,16 @@ class Source(QtGui.QWidget):
for key in json_data["source"]:
templist1 = line[1]
templist2 = templist1.split(' ')
- if key == templist2[0] and json_data["source"][key]["type"] == line[2]:
+ if key == templist2[0] and \
+ json_data["source"][key]["type"]\
+ == line[2]:
self.entry_var[self.count].setText(
- str(list(json_data["source"][key]["values"][it - 4].values())[0]))
+ str(
+ list(
+ json_data["source"][key]
+ ["values"][it - 4].values())[0]
+ )
+ )
except BaseException:
pass
@@ -299,8 +340,10 @@ class Source(QtGui.QWidget):
# CSS
expbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius:\
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left: \
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(expbox)
diff --git a/src/kicadtoNgspice/SubcircuitTab.py b/src/kicadtoNgspice/SubcircuitTab.py
index 249b636b..b9c6402b 100644
--- a/src/kicadtoNgspice/SubcircuitTab.py
+++ b/src/kicadtoNgspice/SubcircuitTab.py
@@ -3,7 +3,7 @@ import json
from . import TrackWidget
from projManagement import Validation
import os
-#from xml.etree import ElementTree as ET
+# from xml.etree import ElementTree as ET
class SubcircuitTab(QtGui.QWidget):
@@ -68,7 +68,8 @@ class SubcircuitTab(QtGui.QWidget):
try:
for key in json_data["subcircuit"]:
if key[0] == eachline[0] and key[1] == eachline[1]:
- #print "Subcircuit MATCHING---",child.tag[0], child.tag[1], eachline[0], eachline[1]
+ # print "Subcircuit MATCHING---",child.tag[0], \
+ # child.tag[1], eachline[0], eachline[1]
try:
if os.path.exists(
json_data["subcircuit"][key][0]):
@@ -85,7 +86,8 @@ class SubcircuitTab(QtGui.QWidget):
subgrid.addWidget(self.entry_var[self.count], self.row, 1)
self.addbtn = QtGui.QPushButton("Add")
self.addbtn.setObjectName("%d" % self.count)
- # Send the number of ports specified with the given subcircuit for verification.
+ # Send the number of ports specified with the given\
+ # subcircuit for verification.
# eg. If the line is 'x1 4 0 3 ua741', there are 3 ports(4, 0
# and 3).
self.numPorts.append(len(words) - 2)
@@ -96,8 +98,10 @@ class SubcircuitTab(QtGui.QWidget):
# CSS
subbox.setStyleSheet(" \
- QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
- QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \
+ QGroupBox { border: 1px solid gray; border-radius:\
+ 9px; margin-top: 0.5em; } \
+ QGroupBox::title { subcontrol-origin: margin; left:\
+ 10px; padding: 0 3px 0 3px; } \
")
self.grid.addWidget(subbox)
@@ -123,7 +127,7 @@ class SubcircuitTab(QtGui.QWidget):
This function is use to keep track of all Subcircuit widget
"""
sending_btn = self.sender()
- #print "Object Called is ",sending_btn.objectName()
+ # print "Object Called is ",sending_btn.objectName()
self.widgetObjCount = int(sending_btn.objectName())
self.subfile = str(
@@ -150,7 +154,8 @@ class SubcircuitTab(QtGui.QWidget):
elif self.reply == "DIREC":
self.msg = QtGui.QErrorMessage(self)
self.msg.showMessage(
- "Please select a valid Subcircuit directory (Containing '.sub' file).")
+ "Please select a valid Subcircuit directory \
+ (Containing '.sub' file).")
self.msg.setWindowTitle("Error Message")
self.msg.show()
@@ -178,6 +183,7 @@ class SubcircuitTab(QtGui.QWidget):
elif self.reply == "DIREC":
self.msg = QtGui.QErrorMessage(self)
self.msg.showMessage(
- "Please select a valid Subcircuit directory (Containing '.sub' file).")
+ "Please select a valid Subcircuit directory \
+ (Containing '.sub' file).")
self.msg.setWindowTitle("Error Message")
self.msg.show() \ No newline at end of file