mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
automate synth
This commit is contained in:
parent
c806c4c68a
commit
7d7e2ecc16
4
synthDC/runSynth.sh
Normal file
4
synthDC/runSynth.sh
Normal file
@ -0,0 +1,4 @@
|
||||
rm -r runs/*
|
||||
make clean
|
||||
make freqs TECH=sky130
|
||||
python3 scripts/extractSummary.py
|
50
synthDC/scripts/extractSummary.py
Executable file
50
synthDC/scripts/extractSummary.py
Executable file
@ -0,0 +1,50 @@
|
||||
#!/usr/bin/python3
|
||||
# Shreya Sanghai (ssanghai@hmc.edu) 2/28/2022
|
||||
import glob
|
||||
import re
|
||||
import csv
|
||||
import linecache
|
||||
import os
|
||||
|
||||
|
||||
def main():
|
||||
data = []
|
||||
curr_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
output_file = os.path.join(curr_dir,"..","Summary.csv")
|
||||
runs_dir = os.path.join(curr_dir,"..","runs/*/reports/wallypipelinedcore_qor.rep")
|
||||
search_strings = [
|
||||
"Critical Path Length:", "Cell Area:", "Overall Compile Time:",
|
||||
"Critical Path Clk Period:", "Critical Path Slack:"
|
||||
]
|
||||
|
||||
for name in glob.glob(runs_dir):
|
||||
f = open(name, 'r')
|
||||
trimName = re.search("wallypipelinedcore_(.*?)_2022",name).group(1)
|
||||
|
||||
output = {'Name':trimName}
|
||||
num_lines = len(f.readlines())
|
||||
curr_line_index = 0
|
||||
|
||||
while curr_line_index < num_lines:
|
||||
line = linecache.getline(name, curr_line_index)
|
||||
for search_string in search_strings:
|
||||
if search_string in line:
|
||||
val = getVal(name,search_string,line,curr_line_index)
|
||||
output[search_string] = val
|
||||
curr_line_index +=1
|
||||
data += [output]
|
||||
|
||||
with open(output_file, 'w') as csvfile:
|
||||
writer = csv.DictWriter(csvfile, fieldnames=['Name'] + search_strings)
|
||||
writer.writeheader()
|
||||
writer.writerows(data)
|
||||
|
||||
def getVal(filename, search_string, line, line_index):
|
||||
data = re.search(f"{search_string} *(.*?)\\n", line).group(1)
|
||||
if data == '': #sometimes data is stored in two line
|
||||
data = linecache.getline(filename, line_index+1).strip()
|
||||
return data
|
||||
|
||||
if __name__=="__main__":
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user