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