From 975005dbfa3c917435675bcff2dfb2dc333caef5 Mon Sep 17 00:00:00 2001 From: Shreya Sanghai Date: Mon, 25 Apr 2022 16:03:02 +0000 Subject: [PATCH] automate synth --- synthDC/Makefile | 32 +++++++++++++++++++------------ synthDC/runConfigsSynth.sh | 8 ++++++++ synthDC/runFrequencySynth.sh | 6 ++++++ synthDC/scripts/extractSummary.py | 4 ++-- 4 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 synthDC/runConfigsSynth.sh create mode 100644 synthDC/runFrequencySynth.sh diff --git a/synthDC/Makefile b/synthDC/Makefile index 4aff4482..b8a79fbd 100755 --- a/synthDC/Makefile +++ b/synthDC/Makefile @@ -24,11 +24,19 @@ export SAIFPOWER ?= 0 CONFIGDIR ?= ${WALLY}/pipelined/config CONFIGFILES ?= $(shell find $(CONFIGDIR) -name rv*_*) CONFIGFILESTRIM = $(notdir $(CONFIGFILES)) -FREQS = 25 50 100 150 200 250 300 350 400 +# FREQS = 25 50 100 150 200 250 300 350 400 k = 3 6 + +ifeq ($(TECH), sky130) + FREQS = 25 50 100 150 200 250 300 350 400 +else + FREQS = 500 550 600 650 700 750 800 850 900 950 1000 +endif + print: - echo $(k) - echo $(CONFIGFILESTRIM) + @echo $(FREQS) + @echo $(CONFIGFILESTRIM) + default: @echo "Basic synthesis procedure for Wally:" @@ -41,14 +49,14 @@ rv%.log: rv% echo $< -DIRS = rv32e rv32gc rv64ic rv32ic rv64gc +DIRS = rv64gc rv32e rv32gc rv64ic rv32ic # DELDIRS = rv32e rv32gc rv64ic rv64gc rv32ic # CONFIGSUBDIRS = _FPUoff _noMulDiv _noVirtMem _PMP0 _PMP16 _orig -bpred: - @$(foreach kval, $(k), rm -rf $(CONFIGDIR)/rv64gc_bpred_$(kval);) - @$(foreach kval, $(k), cp -r $(CONFIGDIR)/rv64gc $(CONFIGDIR)/rv64gc_bpred_$(kval);) - @$(foreach kval, $(k), sed -i 's/BPRED_SIZE.*/BPRED_SIZE $(kval)/g' $(CONFIGDIR)/rv64gc_bpred_$(kval)/wally-config.vh;) - @$(foreach kval, $(k), make synth DESIGN=wallypipelinedcore CONFIG=rv64gc_bpred_$(kval) TECH=sky90 FREQ=500 MAXCORES=4 --jobs;) +# bpred: +# @$(foreach kval, $(k), rm -rf $(CONFIGDIR)/rv64gc_bpred_$(kval);) +# @$(foreach kval, $(k), cp -r $(CONFIGDIR)/rv64gc $(CONFIGDIR)/rv64gc_bpred_$(kval);) +# @$(foreach kval, $(k), sed -i 's/BPRED_SIZE.*/BPRED_SIZE $(kval)/g' $(CONFIGDIR)/rv64gc_bpred_$(kval)/wally-config.vh;) +# @$(foreach kval, $(k), make synth DESIGN=wallypipelinedcore CONFIG=rv64gc_bpred_$(kval) TECH=sky90 FREQ=500 MAXCORES=4 --jobs;) copy: @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_orig;) @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_orig;) @@ -59,7 +67,7 @@ copy: del: - @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_*;) + rm -rf $(CONFIGDIR)/*_* configs: $(DIRS) $(DIRS): @@ -90,12 +98,12 @@ $(DIRS): sed -i 's/ZICSR_SUPPORTED *1/ZICSR_SUPPORTED 0/' $(CONFIGDIR)/$@_noPriv/wally-config.vh freqs: - @$(foreach freq, $(FREQS), make synth DESIGN=wallypipelinedcore CONFIG=rv32e TECH=sky130 FREQ=$(freq) MAXCORES=1;) + @$(foreach freq, $(FREQS), make synth DESIGN=wallypipelinedcore CONFIG=rv32e FREQ=$(freq) MAXCORES=1;) allsynth: $(CONFIGFILESTRIM) $(CONFIGFILESTRIM): - make synth DESIGN=wallypipelinedcore CONFIG=$@ TECH=sky130 FREQ=1000 MAXCORES=1 + make synth DESIGN=wallypipelinedcore CONFIG=$@ TECH=sky90 FREQ=1000 MAXCORES=1 synth: diff --git a/synthDC/runConfigsSynth.sh b/synthDC/runConfigsSynth.sh new file mode 100644 index 00000000..6e31c4ef --- /dev/null +++ b/synthDC/runConfigsSynth.sh @@ -0,0 +1,8 @@ +rm -r runs/* +make clean +make del +make copy +make configs +make allsynth +python3 scripts/extractSummary.py +make del \ No newline at end of file diff --git a/synthDC/runFrequencySynth.sh b/synthDC/runFrequencySynth.sh new file mode 100644 index 00000000..838b7c64 --- /dev/null +++ b/synthDC/runFrequencySynth.sh @@ -0,0 +1,6 @@ +rm -r runs/* +make clean +make del +make freqs TECH=$1 +python3 scripts/extractSummary.py +make del diff --git a/synthDC/scripts/extractSummary.py b/synthDC/scripts/extractSummary.py index b7a2cc76..c9ec5349 100755 --- a/synthDC/scripts/extractSummary.py +++ b/synthDC/scripts/extractSummary.py @@ -12,14 +12,14 @@ def main(): 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") + # cruns_dir = "/home/ssanghai/Desktop/cleanRun/*/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) + trimName = re.search("wallypipelinedcore_(.*?)_sky",name).group(1) output = {'Name':trimName} num_lines = len(f.readlines())