Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qflow manager shows the pdk nodes in the technology options menu #31

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 41 additions & 5 deletions scripts/qflow_manager.py.in
Original file line number Diff line number Diff line change
@@ -3963,6 +3963,7 @@ class QflowManager(ttk.Frame):
# in pdkdir. If pdkname has an extension (like ".sh"), then
# remove it first.


found = False
if not pdkdir:
pdkdir = os.path.split(pdkname)[0]
@@ -3998,10 +3999,11 @@ class QflowManager(ttk.Frame):
self.print('No default technology found (punting).')
return False
else:
realpdkdir = os.path.realpath(pdkdir)
realpdkdir = os.path.split(os.path.split(pdkdir)[0])[0]
if not os.path.isdir(realpdkdir):
self.print('Error: No tech directory ' + pdkdir + ' found.', file=sys.stderr)
return False
'''
else:
if pdkname == None:
pdkname = os.path.split(pdkdir)[1]
@@ -4010,9 +4012,36 @@ class QflowManager(ttk.Frame):
if not os.path.isfile(pdkdir + '/' + pdkrootname + '.sh'):
self.print('Error: No tech setup file ' + pdkdir + '/' + pdkrootname + '.sh.', file=sys.stderr)
return False
'''

# Reset technology menu to available standard cell libraries
window = self.toppane.settings.prep_settings
window.pframe.choosepdk['menu'].delete(0,'end')

if not os.path.exists(realpdkdir + '/.config/nodeinfo.json'):
self.print('Error: Could not find nodeinfo.json for ' + pdkdir, file=sys.stderr)
return False

self.allpdknodes.clear()
self.allpdkdirs.clear()
with open(realpdkdir + '/.config/nodeinfo.json', 'r') as f:
data = json.load(f)
try: # stdcells in dict
for lib in data['stdcells'].keys():
if data['stdcells'][lib]!='unknown':
self.allpdknodes.append(lib)
except: # stdcells in list
for lib in data['stdcells']:
self.allpdknodes.append(lib)

for lib in self.allpdknodes:
window.pframe.choosepdk['menu'].add_command(label=lib, command=tkinter._setit(self.pdknode, lib, lambda _: self.check_reset(args=None)))
self.allpdkdirs.append(pdkdir)


# "Technology" is set to the directory containing the setup file
found = False
'''
for testname, testdir in zip(self.allpdknodes, self.allpdkdirs):
if testname == pdkrootname:
found = True
@@ -4026,7 +4055,7 @@ class QflowManager(ttk.Frame):
self.print('Error: Tech directory mismatch for technology ' + pdkrootname + ': ' + pdkdir + ' vs. ' + testdir, file=sys.stderr)
self.check_reset(args=None)
break

if not found:
self.allpdknodes.append(pdkrootname)
self.allpdkdirs.append(pdkdir)
@@ -4037,6 +4066,13 @@ class QflowManager(ttk.Frame):
self.pdknode.set(pdkrootname)
self.currentpdk = pdkrootname
self.pdkdir = pdkdir
'''
if pdkname == None:
pdkname = self.allpdknodes[0]

self.pdknode.set(pdkname)
self.currentpdk = pdkname #standard cell library
self.pdkdir = pdkdir

# self.print("Diagnostic: set_pdk()")
# self.print('qflow_tech_dir = ' + qflow_tech_dir)
@@ -4294,15 +4330,15 @@ if __name__ == '__main__':

if numargs > 4:
print('Usage:')
print('qflow_manager.py [<tech_name> [<project_name> [<module_name>]]]')
print('qflow_manager.py [<pdk_qflow_directory> [<project_name> [<module_name>]]]')
sys.exit(1)

root = tkinter.Tk()
app = QflowManager(root)

if numargs > 1:
tech_name = sys.argv[1]
app.set_pdk(None, tech_name)
pdk_directory = sys.argv[1]
app.set_pdk(pdk_directory, None)

if numargs <= 2:
app.print('No project set from command line. Will check current directory.')