From ec27df6a1255e500bd2d7d1c79724133b8e4de44 Mon Sep 17 00:00:00 2001 From: David Harris Date: Mon, 28 Feb 2022 04:15:20 +0000 Subject: [PATCH 1/8] Enhanced printing intermediate results in fpcalc.c --- .gitignore | 2 +- .../softfloat_calc.c => fpcalc/fpcalc.c} | 77 ++++++++++++++++++- 2 files changed, 75 insertions(+), 4 deletions(-) rename examples/fp/{softfloat_calc/softfloat_calc.c => fpcalc/fpcalc.c} (69%) diff --git a/.gitignore b/.gitignore index 71d4771a1..1f2f31d3d 100644 --- a/.gitignore +++ b/.gitignore @@ -53,7 +53,7 @@ examples/asm/example/example examples/C/sum/sum examples/C/fir/fir examples/fp/softfloat_demo/softfloat_demo -examples/fp/softfloat_calc/softfloat_calc +examples/fp/fpcalc/fpcalc pipelined/src/fma/fma16_testgen linux/devicetree/debug/* !linux/devicetree/debug/dump-dts.sh diff --git a/examples/fp/softfloat_calc/softfloat_calc.c b/examples/fp/fpcalc/fpcalc.c similarity index 69% rename from examples/fp/softfloat_calc/softfloat_calc.c rename to examples/fp/fpcalc/fpcalc.c index a3396cf24..6b9dc5354 100644 --- a/examples/fp/softfloat_calc/softfloat_calc.c +++ b/examples/fp/fpcalc/fpcalc.c @@ -29,26 +29,97 @@ typedef union dp { int opSize = 0; +void long2binstr(long val, char *str, int bits) { + int i; + long masked; + + if (val == 0) { // just return zero + str[0] = '0'; + str[1] = 0; + } else { + for (i=0; i> 10) & ((1<<5) -1); + sign = f.v >> 15 ? '-' : '+'; + //printf("%c %d %d ", sign, exp, fract); + if (exp == 0 && fract == 0) sprintf(sci, "%czero", sign); + else if (exp == 0 && fract != 0) sprintf(sci, "Denorm: %c0.%s x 2^-14", sign, fractstr); + else if (exp == 31 && fract == 0) sprintf(sci, "%cinf", sign); + else if (exp == 31 && fract != 0) sprintf(sci, "NaN Payload: %c%s", sign, fractstr); + else sprintf(sci, "%c1.%s x 2^%d", sign, fractstr, exp-15); + + printf ("%s: 0x%04x = %g = %s: Biased Exp %d Fract 0x%lx\n", + msg, convh.v, convf.f, sci, exp, fract); // no easy way to print half prec. } void printF32(char *msg, float32_t f) { sp conv; + long exp, fract; + char sign; + char sci[80], fractstr[80]; + conv.v = f.v; // use union to convert between hexadecimal and floating-point views - printf ("%s: 0x%08x = %g\n", msg, conv.v, conv.f); + + fract = f.v & ((1<<23) - 1); long2binstr(fract, fractstr, 23); + exp = (f.v >> 23) & ((1<<8) -1); + sign = f.v >> 31 ? '-' : '+'; + //printf("%c %d %d ", sign, exp, fract); + if (exp == 0 && fract == 0) sprintf(sci, "%czero", sign); + else if (exp == 0 && fract != 0) sprintf(sci, "Denorm: %c0.%s x 2^-126", sign, fractstr); + else if (exp == 255 && fract == 0) sprintf(sci, "%cinf", sign); + else if (exp == 255 && fract != 0) sprintf(sci, "NaN Payload: %c%s", sign, fractstr); + else sprintf(sci, "%c1.%s x 2^%d", sign, fractstr, exp-127); + + //printf ("%s: 0x%08x = %g\n", msg, conv.v, conv.f); + printf ("%s: 0x%08x = %g = %s: Biased Exp %d Fract 0x%lx\n", + msg, conv.v, conv.f, sci, exp, fract); } void printF64(char *msg, float64_t f) { dp conv; + long exp, fract; + long mask; + char sign; + char sci[80], fractstr[80]; + conv.v = f.v; // use union to convert between hexadecimal and floating-point views - printf ("%s: 0x%016lx = %lg\n", msg, conv.v, conv.d); + + mask = 1; mask = (mask << 52) - 1; + fract = f.v & mask; long2binstr(fract, fractstr, 52); + exp = (f.v >> 52) & ((1<<11) -1); + sign = f.v >> 63 ? '-' : '+'; + //printf("%c %d %d ", sign, exp, fract); + if (exp == 0 && fract == 0) sprintf(sci, "%czero", sign); + else if (exp == 0 && fract != 0) sprintf(sci, "Denorm: %c0.%s x 2^-1022", sign, fractstr); + else if (exp == 2047 && fract == 0) sprintf(sci, "%cinf", sign); + else if (exp == 2047 && fract != 0) sprintf(sci, "NaN Payload: %c%s", sign, fractstr); + else sprintf(sci, "%c1.%s x 2^%d", sign, fractstr, exp-1023); + + //printf ("%s: 0x%016lx = %lg\n", msg, conv.v, conv.d); + printf ("%s: 0x%016x = %g = %s: Biased Exp %d Fract 0x%lx\n", + msg, conv.v, conv.d, sci, exp, fract); } void printFlags(void) { From 659b75fc2b1e7ed60490193e61680c231560f63a Mon Sep 17 00:00:00 2001 From: David Harris Date: Mon, 28 Feb 2022 04:28:07 +0000 Subject: [PATCH 2/8] Corrected printing doubles --- examples/fp/fpcalc/fpcalc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/fp/fpcalc/fpcalc.c b/examples/fp/fpcalc/fpcalc.c index 6b9dc5354..116cf8680 100644 --- a/examples/fp/fpcalc/fpcalc.c +++ b/examples/fp/fpcalc/fpcalc.c @@ -118,7 +118,7 @@ void printF64(char *msg, float64_t f) { else sprintf(sci, "%c1.%s x 2^%d", sign, fractstr, exp-1023); //printf ("%s: 0x%016lx = %lg\n", msg, conv.v, conv.d); - printf ("%s: 0x%016x = %g = %s: Biased Exp %d Fract 0x%lx\n", + printf ("%s: 0x%016lx = %lg = %s: Biased Exp %d Fract 0x%lx\n", msg, conv.v, conv.d, sci, exp, fract); } From 3519a20ccf0bce3ada92c014edd6fd98d07dbc82 Mon Sep 17 00:00:00 2001 From: David Harris Date: Mon, 28 Feb 2022 05:54:34 +0000 Subject: [PATCH 3/8] hptw cleanup for synthesis --- pipelined/src/mmu/hptw.sv | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipelined/src/mmu/hptw.sv b/pipelined/src/mmu/hptw.sv index f3e156b33..39ec91d5a 100644 --- a/pipelined/src/mmu/hptw.sv +++ b/pipelined/src/mmu/hptw.sv @@ -124,11 +124,11 @@ module hptw assign {Dirty, Accessed} = PTE[7:6]; - assign WriteAccess = (MemRWM[0] | |AtomicM); - assign SetDirty = ~Dirty & & DTLBWalk & WriteAccess; + assign WriteAccess = MemRWM[0] | (|AtomicM); + assign SetDirty = ~Dirty & DTLBWalk & WriteAccess; assign ReadAccess = MemRWM[1]; - assign EffectivePrivilegeMode = (DTLBWalk == 0) ? PrivilegeModeW : (STATUS_MPRV ? STATUS_MPP : PrivilegeModeW); // DTLB uses MPP mode when MPRV is 1 + assign EffectivePrivilegeMode = DTLBWalk ? (STATUS_MPRV ? STATUS_MPP : PrivilegeModeW) : PrivilegeModeW; // DTLB uses MPP mode when MPRV is 1 assign ImproperPrivilege = ((EffectivePrivilegeMode == `U_MODE) & ~PTE_U) | ((EffectivePrivilegeMode == `S_MODE) & PTE_U & (~STATUS_SUM & DTLBWalk)); From 76fbf6a82e74b067199cdf87cbfbfff07dfb2c09 Mon Sep 17 00:00:00 2001 From: Shreya Sanghai Date: Sun, 27 Feb 2022 09:50:10 +0000 Subject: [PATCH 4/8] added make allsynth --- synthDC/Makefile | 70 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/synthDC/Makefile b/synthDC/Makefile index aa148802d..ddbf5c0ff 100755 --- a/synthDC/Makefile +++ b/synthDC/Makefile @@ -24,9 +24,10 @@ export SAIFPOWER ?= 0 CONFIGDIR ?= ~/riscv-wally/pipelined/config #CONFIGS ?= $(shell find $(CONFIGDIR) -name "rv*") CONFIGS ?= ("rv32e", "rv32ic") - +CONFIGFILES ?= $(shell find $(CONFIGDIR) -name *_*) +CONFIGFILESTRIM = $(notdir $(CONFIGFILES)) print: - echo "files in $(CONFIGDIR) are $(CONFIGS)." + echo $(CONFIGFILESTRIM) default: @echo "Basic synthesis procedure for Wally:" @@ -38,22 +39,57 @@ test: rv% rv%.log: rv% echo $< -flavors: - rm -rf $(CONFIGDIR)/rv32em - cp -r $(CONFIGDIR)/rv32e $(CONFIGDIR)/rv32em - sed -i 's/h00000010/h00001010/' $(CONFIGDIR)/rv32em/wally-config.vh - # rv32e, 32ic, 32gc 64ic, 64gc - # 64gc - FPU - # PMP16 - # PMP0 - # No virtual memory - # Muldiv - -allsynth: - make flavors - make synth DESIGN=wallypipelinedcore CONFIG=rv32e TECH=sky90 FREQ=500 MAXCORES=1 - make synth DESIGN=wallypipelinedcore CONFIG=rv32em TECH=sky90 FREQ=500 MAXCORES=1 +DIRS = rv32e #rv32gc rv64ic rv64gc rv32ic +CONFIGSUBDIRS = _FPUoff _noMulDiv _noVirtMem _PMP0 _PMP16 _orig +CONFIGFILES ?= $(shell find $(CONFIGDIR) -type d -regex "*_*") +del: + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_orig;) + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_FPUoff;) + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_PMP16;) + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_PMP0;) + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noVirtMem;) + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noMulDiv;) + +configs: + # @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_orig;) + # @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_orig;) + # turn off FPU + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_FPUoff;) + @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_FPUoff;) + @$(foreach dir, $(DIRS), sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$(dir)_FPUoff/wally-config.vh;) + @$(foreach dir, $(DIRS), sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$(dir)_FPUoff/wally-config.vh;) + + # PMP 16 + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_PMP16;) + @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_PMP16;) + @$(foreach dir, $(DIRS), sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 16/' $(CONFIGDIR)/$(dir)_PMP16/wally-config.vh;) + + # PMP 0 + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_PMP0;) + @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_PMP0;) + @$(foreach dir, $(DIRS), sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$(dir)_PMP0/wally-config.vh;) + + # No Virtual Memory + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noVirtMem;) + @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_noVirtMem;) + @$(foreach dir, $(DIRS), sed -i 's/VIRTMEM_SUPPORTED 1/VIRTMEM_SUPPORTED 0/' $(CONFIGDIR)/$(dir)_noVirtMem/wally-config.vh;) + + #no muldiv + @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noMulDiv;) + @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_noMulDiv;) + @$(foreach dir, $(DIRS), sed -i 's/1 *<< *12/0 << 12/' $(CONFIGDIR)/$(dir)_noMulDiv/wally-config.vh;) + + +# allsynth: +# make configs +# $(foreach dir, $(CONFIGFILESTRIM), \ +# make synth DESIGN=wallypipelinedcore CONFIG=$(dir) TECH=sky90 FREQ=500 --jobs;) + +allsynth: $(CONFIGFILESTRIM) + +$(CONFIGFILESTRIM): + make synth DESIGN=wallypipelinedcore CONFIG=$@ TECH=sky90 FREQ=500 --jobs synth: @echo "DC Synthesis" From 9ca4fde35e996861fd941907b86bb1dd5d197f9e Mon Sep 17 00:00:00 2001 From: Shreya Sanghai Date: Mon, 28 Feb 2022 17:14:56 +0000 Subject: [PATCH 5/8] Makefile for running multiple synthesis --- synthDC/Makefile | 67 +++++++++++++++++++++------------------ synthDC/extractSummary.py | 25 +++++++++++++++ 2 files changed, 61 insertions(+), 31 deletions(-) create mode 100644 synthDC/extractSummary.py diff --git a/synthDC/Makefile b/synthDC/Makefile index ddbf5c0ff..f0096c731 100755 --- a/synthDC/Makefile +++ b/synthDC/Makefile @@ -22,9 +22,7 @@ export OUTPUTDIR := runs/$(DESIGN)_$(CONFIG)_$(TECH)nm_$(FREQ)_MHz_$(time)_$(has export SAIFPOWER ?= 0 CONFIGDIR ?= ~/riscv-wally/pipelined/config -#CONFIGS ?= $(shell find $(CONFIGDIR) -name "rv*") -CONFIGS ?= ("rv32e", "rv32ic") -CONFIGFILES ?= $(shell find $(CONFIGDIR) -name *_*) +CONFIGFILES ?= $(shell find $(CONFIGDIR) -name rv*_*) CONFIGFILESTRIM = $(notdir $(CONFIGFILES)) print: echo $(CONFIGFILESTRIM) @@ -40,9 +38,11 @@ rv%.log: rv% echo $< -DIRS = rv32e #rv32gc rv64ic rv64gc rv32ic +DIRS = rv32e rv32gc rv64ic rv64gc rv32ic +DELDIRS = rv32e rv32gc rv64ic rv64gc rv32ic CONFIGSUBDIRS = _FPUoff _noMulDiv _noVirtMem _PMP0 _PMP16 _orig -CONFIGFILES ?= $(shell find $(CONFIGDIR) -type d -regex "*_*") + + del: @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_orig;) @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_FPUoff;) @@ -51,45 +51,50 @@ del: @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noVirtMem;) @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noMulDiv;) -configs: - # @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_orig;) - # @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_orig;) - # turn off FPU - @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_FPUoff;) - @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_FPUoff;) - @$(foreach dir, $(DIRS), sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$(dir)_FPUoff/wally-config.vh;) - @$(foreach dir, $(DIRS), sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$(dir)_FPUoff/wally-config.vh;) +configs: $(DIRS) +$(DIRS): + #turn off FPU + rm -rf $(CONFIGDIR)/$@_FPUoff + cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_FPUoff + sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_FPUoff/wally-config.vh + sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_FPUoff/wally-config.vh # PMP 16 - @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_PMP16;) - @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_PMP16;) - @$(foreach dir, $(DIRS), sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 16/' $(CONFIGDIR)/$(dir)_PMP16/wally-config.vh;) + rm -rf $(CONFIGDIR)/$@_PMP16 + cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_PMP16 + sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_PMP16/wally-config.vh + sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_PMP16/wally-config.vh + sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 16/' $(CONFIGDIR)/$@_PMP16/wally-config.vh # PMP 0 - @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_PMP0;) - @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_PMP0;) - @$(foreach dir, $(DIRS), sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$(dir)_PMP0/wally-config.vh;) + rm -rf $(CONFIGDIR)/$@_PMP0 + cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_PMP0 + sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_PMP0/wally-config.vh + sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_PMP0/wally-config.vh + sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_PMP0/wally-config.vh # No Virtual Memory - @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noVirtMem;) - @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_noVirtMem;) - @$(foreach dir, $(DIRS), sed -i 's/VIRTMEM_SUPPORTED 1/VIRTMEM_SUPPORTED 0/' $(CONFIGDIR)/$(dir)_noVirtMem/wally-config.vh;) + rm -rf $(CONFIGDIR)/$@_noVirtMem + cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_noVirtMem + sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh + sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh + sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh + sed -i 's/VIRTMEM_SUPPORTED 1/VIRTMEM_SUPPORTED 0/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh #no muldiv - @$(foreach dir, $(DIRS), rm -rf $(CONFIGDIR)/$(dir)_noMulDiv;) - @$(foreach dir, $(DIRS), cp -r $(CONFIGDIR)/$(dir) $(CONFIGDIR)/$(dir)_noMulDiv;) - @$(foreach dir, $(DIRS), sed -i 's/1 *<< *12/0 << 12/' $(CONFIGDIR)/$(dir)_noMulDiv/wally-config.vh;) + rm -rf $(CONFIGDIR)/$@_noMulDiv + cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_noMulDiv + sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + sed -i 's/VIRTMEM_SUPPORTED 1/VIRTMEM_SUPPORTED 0/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + sed -i 's/1 *<< *12/0 << 12/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh -# allsynth: -# make configs -# $(foreach dir, $(CONFIGFILESTRIM), \ -# make synth DESIGN=wallypipelinedcore CONFIG=$(dir) TECH=sky90 FREQ=500 --jobs;) - allsynth: $(CONFIGFILESTRIM) $(CONFIGFILESTRIM): - make synth DESIGN=wallypipelinedcore CONFIG=$@ TECH=sky90 FREQ=500 --jobs + make synth DESIGN=wallypipelinedcore CONFIG=$@ TECH=sky90 FREQ=500 MAXCORES=1 --jobs synth: @echo "DC Synthesis" diff --git a/synthDC/extractSummary.py b/synthDC/extractSummary.py new file mode 100644 index 000000000..2a7806604 --- /dev/null +++ b/synthDC/extractSummary.py @@ -0,0 +1,25 @@ +import glob +import re +import csv + +field_names = [ 'Name', 'Critical Path Length', 'Cell Area'] +data = [] +for name in glob.glob("/home/ssanghai/riscv-wally/synthDC/runs/*/reports/wallypipelinedcore_qor.rep"): + f = open(name, 'r') + trimName = re.search("runs\/(.*?)\/reports", name).group(1) + # trimName = re.search("wallypipelinedcore_(.*?)_sky9",name).group(1) + for line in f: + if "Critical Path Length" in line: + pathLen = re.search("Length: *(.*?)\\n", line).group(1) + if "Cell Area" in line: + area = re.search("Area: *(.*?)\\n", line).group(1) + data += [{'Name' : trimName, 'Critical Path Length': pathLen, 'Cell Area' : area}] + +with open('Summary.csv', 'w') as csvfile: + writer = csv.DictWriter(csvfile, fieldnames=field_names) + writer.writeheader() + writer.writerows(data) + + + + \ No newline at end of file From 6f6b4df771d418f2846baeba577634d30ab21fe4 Mon Sep 17 00:00:00 2001 From: Shreya Sanghai Date: Mon, 28 Feb 2022 17:32:08 +0000 Subject: [PATCH 6/8] Copied previous cofig file instead of orig --- synthDC/Makefile | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/synthDC/Makefile b/synthDC/Makefile index f0096c731..aafadb648 100755 --- a/synthDC/Makefile +++ b/synthDC/Makefile @@ -39,8 +39,8 @@ rv%.log: rv% DIRS = rv32e rv32gc rv64ic rv64gc rv32ic -DELDIRS = rv32e rv32gc rv64ic rv64gc rv32ic -CONFIGSUBDIRS = _FPUoff _noMulDiv _noVirtMem _PMP0 _PMP16 _orig +# DELDIRS = rv32e rv32gc rv64ic rv64gc rv32ic +# CONFIGSUBDIRS = _FPUoff _noMulDiv _noVirtMem _PMP0 _PMP16 _orig del: @@ -61,33 +61,33 @@ $(DIRS): # PMP 16 rm -rf $(CONFIGDIR)/$@_PMP16 - cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_PMP16 - sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_PMP16/wally-config.vh - sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_PMP16/wally-config.vh + cp -r $(CONFIGDIR)/$@_FPUoff $(CONFIGDIR)/$@_PMP16 + # sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_PMP16/wally-config.vh + # sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_PMP16/wally-config.vh sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 16/' $(CONFIGDIR)/$@_PMP16/wally-config.vh # PMP 0 rm -rf $(CONFIGDIR)/$@_PMP0 - cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_PMP0 - sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_PMP0/wally-config.vh - sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_PMP0/wally-config.vh + cp -r $(CONFIGDIR)/$@_FPUoff $(CONFIGDIR)/$@_PMP0 + # sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_PMP0/wally-config.vh + # sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_PMP0/wally-config.vh sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_PMP0/wally-config.vh # No Virtual Memory rm -rf $(CONFIGDIR)/$@_noVirtMem - cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_noVirtMem - sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh - sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh - sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh + # cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_noVirtMem + # sed -i 's/1 *<< *3/0 <_PMP0< 3/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh + # sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh + # sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh sed -i 's/VIRTMEM_SUPPORTED 1/VIRTMEM_SUPPORTED 0/' $(CONFIGDIR)/$@_noVirtMem/wally-config.vh #no muldiv rm -rf $(CONFIGDIR)/$@_noMulDiv - cp -r $(CONFIGDIR)/$@ $(CONFIGDIR)/$@_noMulDiv - sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh - sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh - sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh - sed -i 's/VIRTMEM_SUPPORTED 1/VIRTMEM_SUPPORTED 0/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + cp -r $(CONFIGDIR)/$@_noVirtMem $(CONFIGDIR)/$@_noMulDiv + # sed -i 's/1 *<< *3/0 << 3/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + # sed -i 's/1 *<< *5/0 << 5/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + # sed -i 's/PMP_ENTRIES \(64\|16\|0\)/PMP_ENTRIES 0/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh + # sed -i 's/VIRTMEM_SUPPORTED 1/VIRTMEM_SUPPORTED 0/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh sed -i 's/1 *<< *12/0 << 12/' $(CONFIGDIR)/$@_noMulDiv/wally-config.vh From b33c9ab7bb2b15d53ee4bb9d1681b767fff6ce53 Mon Sep 17 00:00:00 2001 From: Shreya Sanghai Date: Mon, 28 Feb 2022 17:33:15 +0000 Subject: [PATCH 7/8] changed filename --- synthDC/extractSummary.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/synthDC/extractSummary.py b/synthDC/extractSummary.py index 2a7806604..e9fa69772 100644 --- a/synthDC/extractSummary.py +++ b/synthDC/extractSummary.py @@ -6,8 +6,8 @@ field_names = [ 'Name', 'Critical Path Length', 'Cell Area'] data = [] for name in glob.glob("/home/ssanghai/riscv-wally/synthDC/runs/*/reports/wallypipelinedcore_qor.rep"): f = open(name, 'r') - trimName = re.search("runs\/(.*?)\/reports", name).group(1) - # trimName = re.search("wallypipelinedcore_(.*?)_sky9",name).group(1) + # trimName = re.search("runs\/(.*?)\/reports", name).group(1) + trimName = re.search("wallypipelinedcore_(.*?)_sky9",name).group(1) for line in f: if "Critical Path Length" in line: pathLen = re.search("Length: *(.*?)\\n", line).group(1) From e108eb5195bb43dda4339652b02cd3e7c3e298d1 Mon Sep 17 00:00:00 2001 From: David Harris Date: Mon, 28 Feb 2022 19:13:14 +0000 Subject: [PATCH 8/8] Modified address decoder for native access to CLINT --- pipelined/src/mmu/adrdecs.sv | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pipelined/src/mmu/adrdecs.sv b/pipelined/src/mmu/adrdecs.sv index 5cb96ba5e..f34da8a3d 100644 --- a/pipelined/src/mmu/adrdecs.sv +++ b/pipelined/src/mmu/adrdecs.sv @@ -37,6 +37,7 @@ module adrdecs ( input logic [1:0] Size, output logic [8:0] SelRegions ); + logic [3:0] clintaccesssize; // Determine which region of physical memory (if any) is being accessed // *** eventually uncomment Access signals @@ -44,7 +45,8 @@ module adrdecs ( adrdec boottimdec(PhysicalAddress, `BOOTROM_BASE, `BOOTROM_RANGE, `BOOTROM_SUPPORTED, /*1'b1*/AccessRX, Size, 4'b1111, SelRegions[6]); adrdec timdec(PhysicalAddress, `RAM_BASE, `RAM_RANGE, `RAM_SUPPORTED, /*1'b1*/AccessRWX, Size, 4'b1111, SelRegions[5]); - adrdec clintdec(PhysicalAddress, `CLINT_BASE, `CLINT_RANGE, `CLINT_SUPPORTED, AccessRW, Size, 4'b1111, SelRegions[4]); + assign clintaccesssize = (`XLEN==64) ? 4'b1000 : 4'b0100; + adrdec clintdec(PhysicalAddress, `CLINT_BASE, `CLINT_RANGE, `CLINT_SUPPORTED, AccessRW, Size, clintaccesssize, SelRegions[4]); adrdec gpiodec(PhysicalAddress, `GPIO_BASE, `GPIO_RANGE, `GPIO_SUPPORTED, AccessRW, Size, 4'b0100, SelRegions[3]); adrdec uartdec(PhysicalAddress, `UART_BASE, `UART_RANGE, `UART_SUPPORTED, AccessRW, Size, 4'b0001, SelRegions[2]); adrdec plicdec(PhysicalAddress, `PLIC_BASE, `PLIC_RANGE, `PLIC_SUPPORTED, AccessRW, Size, 4'b0100, SelRegions[1]);