summaryrefslogtreecommitdiff
path: root/src/kicadtoNgspice/KicadtoNgspice.py
diff options
context:
space:
mode:
authorfahim2015-04-20 18:15:49 +0530
committerfahim2015-04-20 18:15:49 +0530
commitcff82a13a44c5a3cdf3be5e0a744080726a13772 (patch)
treef5fc53b55c92118f1067c394480d36531968755d /src/kicadtoNgspice/KicadtoNgspice.py
parent19a9874b1fbf6d4edd1a9c052096187b6068119c (diff)
downloadeSim-cff82a13a44c5a3cdf3be5e0a744080726a13772.tar.gz
eSim-cff82a13a44c5a3cdf3be5e0a744080726a13772.tar.bz2
eSim-cff82a13a44c5a3cdf3be5e0a744080726a13772.zip
Subject: Created final netlist file
Description: Created final netlist .cir.out file. (Required modification in future)
Diffstat (limited to 'src/kicadtoNgspice/KicadtoNgspice.py')
-rw-r--r--src/kicadtoNgspice/KicadtoNgspice.py122
1 files changed, 116 insertions, 6 deletions
diff --git a/src/kicadtoNgspice/KicadtoNgspice.py b/src/kicadtoNgspice/KicadtoNgspice.py
index bbde0842..f05f2ebe 100644
--- a/src/kicadtoNgspice/KicadtoNgspice.py
+++ b/src/kicadtoNgspice/KicadtoNgspice.py
@@ -109,6 +109,8 @@ class MainWindow(QtGui.QWidget):
self.obj_track.TRAN_Parameter["ITEMS"],
self.obj_track.AC_type["ITEMS"])
print "SchematicInfo after adding Model Details",schematicInfo
+ #Calling netlist file generation function
+ self.createNetlistFile()
self.msg = "The Kicad to Ngspice Conversion completed successfully!!!!!!"
QtGui.QMessageBox.information(self, "Information", self.msg, QtGui.QMessageBox.Ok)
self.close()
@@ -119,12 +121,116 @@ class MainWindow(QtGui.QWidget):
self.close()
+
+
+ def createNetlistFile(self):
+ print "Creating Final netlist"
+ print "INFOLINE",infoline
+ print "OPTIONINFO",optionInfo
+ print "Device MODEL LIST ",devicemodelList
+ print "SUBCKT ",subcktList
+ print "OUTPUTOPTION",outputOption
+ print "KicadfIle",kicadFile
+
+ #checking if analysis files is present
+ (filepath,filename) = os.path.split(kicadFile)
+ analysisFileLoc = os.path.join(filepath,"analysis")
+ print "FilePath",filepath
+ print "FileName",filename
+ print "Analysis File Location",analysisFileLoc
+ if os.path.exists(analysisFileLoc):
+ try:
+ f = open(analysisFileLoc)
+ #Read data
+ data = f.read()
+ # Close the file
+ f.close()
+
+ except :
+ print "Error While opening Project Analysis file. Please check it"
+ sys.exit()
+ else:
+ print analysisFileLoc + " does not exist"
+ sys.exit()
+
+ #Adding analysis file info to optionInfo
+ analysisData=data.splitlines()
+ for eachline in analysisData:
+ eachline=eachline.strip()
+ if len(eachline)>1:
+ if eachline[0]=='.':
+ optionInfo.append(eachline)
+ else:
+ pass
+
+ print "Option Info",optionInfo
+ analysisOption = []
+ initialCondOption=[]
+ simulatorOption =[]
+ includeOption=[] #Don't know why to use it
+ model = [] #Don't know why to use it
+
+ for eachline in 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
+ option=='.tran'):
+ analysisOption.append(eachline+'\n')
+
+ 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'):
+ initialCondOption.append(eachline+'\n')
+ elif option=='.option':
+ simulatorOption.append(eachline+'\n')
+ elif (option=='.include' or option=='.lib'):
+ includeOption.append(eachline+'\n')
+ elif (option=='.model'):
+ model.append(eachline+'\n')
+ elif option=='.end':
+ continue;
+
+
+ #Start creating final netlist cir.out file
+ outfile = kicadFile+".out"
+ out=open(outfile,"w")
+ out.writelines(infoline)
+ out.writelines('\n')
+ sections=[simulatorOption, initialCondOption, schematicInfo, analysisOption]
+ print "SECTIONS",sections
+ for section in sections:
+ if len(section) == 0:
+ continue
+ else:
+ for line in section:
+ out.writelines('\n')
+ out.writelines(line)
+
+ out.writelines('\n* Control Statements \n')
+ out.writelines('.control\n')
+ out.writelines('run\n')
+ #out.writelines(outputOption)
+ out.writelines('print allv > plot_data_v.txt\n')
+ out.writelines('print alli > plot_data_i.txt\n')
+ out.writelines('.endc\n')
+ out.writelines('.end\n')
+
+ out.close()
+
+
+
+
+
+
def main(args):
print "=================================="
print "Kicad to Ngspice netlist converter "
print "=================================="
global kicadFile,kicadNetlist,schematicInfo
+ global infoline,optionInfo
#kicadFile = "/home/fahim/eSim-Workspace/BJT_amplifier/BJT_amplifier.cir"
kicadFile = sys.argv[1]
@@ -135,26 +241,27 @@ def main(args):
kicadNetlist = obj_proc.readNetlist(kicadFile)
# Construct parameter information
- param=obj_proc.readParamInfo(kicadNetlist)
+ param = obj_proc.readParamInfo(kicadNetlist)
# Replace parameter with values
- netlist,infoline=obj_proc.preprocessNetlist(kicadNetlist,param)
+ netlist,infoline = obj_proc.preprocessNetlist(kicadNetlist,param)
print "NETLIST ",netlist
print "INFOLINE",infoline
# Separate option and schematic information
- optionInfo, schematicInfo=obj_proc.separateNetlistInfo(netlist)
+ optionInfo, schematicInfo = obj_proc.separateNetlistInfo(netlist)
print "OPTIONINFO",optionInfo
print "SCHEMATICINFO",schematicInfo
#Getting model and subckt list
- devicemodelList=[]
- subcktList=[]
+ global devicemodelList,subcktList
+ devicemodelList = []
+ subcktList = []
devicemodelList,subcktList = obj_proc.getModelSubcktList(schematicInfo,devicemodelList,subcktList)
- print "MODEL LIST ",devicemodelList
+ print "Device MODEL LIST ",devicemodelList
print "SUBCKT ",subcktList
#List for storing source and its value
@@ -187,6 +294,9 @@ def main(args):
sys.exit(2)
else:
pass
+
+
+
app = QtGui.QApplication(args)
#app.setApplicationName("KicadToNgspice")