mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Switch to use RV64IC for the benchmarks.
Still not working correctly with the icache. instr addr correct got
This commit is contained in:
		
							parent
							
								
									c91436d3b7
								
							
						
					
					
						commit
						4322694f7a
					
				@ -3,10 +3,13 @@ TARGET		:= $(TARGETDIR)/start
 | 
				
			|||||||
ROOT		:= ..
 | 
					ROOT		:= ..
 | 
				
			||||||
LIBRARY_DIRS	:= 
 | 
					LIBRARY_DIRS	:= 
 | 
				
			||||||
LIBRARY_FILES	:=
 | 
					LIBRARY_FILES	:=
 | 
				
			||||||
LINK_FLAGS      := -nostartfiles
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
AFLAGS =-march=rv64ifd -W
 | 
					MARCH           :=-march=rv64ic
 | 
				
			||||||
CFLAGS =-march=rv64ifd  -mcmodel=medany 
 | 
					MABI            :=-mabi=lp64
 | 
				
			||||||
 | 
					LINK_FLAGS      :=$(MARCH) $(MABI) -nostartfiles
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AFLAGS =$(MARCH) $(MABI) -march=rv64ic -mabi=lp64 -W
 | 
				
			||||||
 | 
					CFLAGS =$(MARCH) $(MABI) -march=rv64ic -mabi=lp64  -mcmodel=medany 
 | 
				
			||||||
AS=riscv64-unknown-elf-as
 | 
					AS=riscv64-unknown-elf-as
 | 
				
			||||||
CC=riscv64-unknown-elf-gcc
 | 
					CC=riscv64-unknown-elf-gcc
 | 
				
			||||||
AR=riscv64-unknown-elf-ar
 | 
					AR=riscv64-unknown-elf-ar
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								testsBP/mibench_qsort/LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								testsBP/mibench_qsort/LICENSE
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					Matt wrote this using STL. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is GPL'ed.
 | 
				
			||||||
							
								
								
									
										19
									
								
								testsBP/mibench_qsort/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								testsBP/mibench_qsort/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					TARGETDIR	:= qsort
 | 
				
			||||||
 | 
					TARGET		:= $(TARGETDIR)/$(TARGETDIR).elf
 | 
				
			||||||
 | 
					ROOT		:= ..
 | 
				
			||||||
 | 
					LIBRARY_DIRS	:= ${ROOT}/crt0
 | 
				
			||||||
 | 
					LIBRARY_FILES	:= crt0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MARCH           :=-march=rv64ic
 | 
				
			||||||
 | 
					MABI            :=-mabi=lp64
 | 
				
			||||||
 | 
					LINK_FLAGS      :=$(MARCH) $(MABI) -nostartfiles -Wl,-Map=$(TARGET).map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFLAGS =$(MARCH) $(MABI) -Wa,-alhs -Wa,-L -mcmodel=medany  -mstrict-align
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CC=riscv64-unknown-elf-gcc
 | 
				
			||||||
 | 
					DA=riscv64-unknown-elf-objdump -d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(ROOT)/makefile.inc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										10038
									
								
								testsBP/mibench_qsort/qsort_small.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10038
									
								
								testsBP/mibench_qsort/qsort_small.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -3,9 +3,13 @@ TARGET		:= $(TARGETDIR)/$(TARGETDIR).elf
 | 
				
			|||||||
ROOT		:= ..
 | 
					ROOT		:= ..
 | 
				
			||||||
LIBRARY_DIRS	:= ${ROOT}/crt0
 | 
					LIBRARY_DIRS	:= ${ROOT}/crt0
 | 
				
			||||||
LIBRARY_FILES	:= crt0
 | 
					LIBRARY_FILES	:= crt0
 | 
				
			||||||
LINK_FLAGS      := -nostartfiles -Wl,-Map=$(TARGET).map
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
CFLAGS =-march=rv64ifd  -Wa,-alhs -Wa,-L -mcmodel=medany  -mstrict-align
 | 
					MARCH           :=-march=rv64ic
 | 
				
			||||||
 | 
					MABI            :=-mabi=lp64
 | 
				
			||||||
 | 
					LINK_FLAGS      :=$(MARCH) $(MABI) -nostartfiles -Wl,-Map=$(TARGET).map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFLAGS =$(MARCH) $(MABI) -Wa,-alhs -Wa,-L -mcmodel=medany  -mstrict-align
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CC=riscv64-unknown-elf-gcc
 | 
					CC=riscv64-unknown-elf-gcc
 | 
				
			||||||
DA=riscv64-unknown-elf-objdump -d
 | 
					DA=riscv64-unknown-elf-objdump -d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -3,9 +3,12 @@ TARGET		:= $(TARGETDIR)/$(TARGETDIR).elf
 | 
				
			|||||||
ROOT		:= ..
 | 
					ROOT		:= ..
 | 
				
			||||||
LIBRARY_DIRS	:= ${ROOT}/crt0
 | 
					LIBRARY_DIRS	:= ${ROOT}/crt0
 | 
				
			||||||
LIBRARY_FILES	:= crt0
 | 
					LIBRARY_FILES	:= crt0
 | 
				
			||||||
LINK_FLAGS      := -nostartfiles -Wl,-Map=$(TARGET).map
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
CFLAGS =-march=rv64ifd  -Wa,-alhs -Wa,-L -mcmodel=medany  -mstrict-align
 | 
					MARCH           :=-march=rv64ic
 | 
				
			||||||
 | 
					MABI            :=-mabi=lp64
 | 
				
			||||||
 | 
					LINK_FLAGS      :=$(MARCH) $(MABI) -nostartfiles -Wl,-Map=$(TARGET).map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CFLAGS =$(MARCH) $(MABI) -Wa,-alhs -Wa,-L -mcmodel=medany  -mstrict-align
 | 
				
			||||||
CC=riscv64-unknown-elf-gcc
 | 
					CC=riscv64-unknown-elf-gcc
 | 
				
			||||||
DA=riscv64-unknown-elf-objdump -d
 | 
					DA=riscv64-unknown-elf-objdump -d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								testsBP/simple/lbu_test.s
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								testsBP/simple/lbu_test.s
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					.section .text	
 | 
				
			||||||
 | 
					.global lbu_test
 | 
				
			||||||
 | 
					.type lbu_test, @function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					lbu_test:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						li t0, 0x80000
 | 
				
			||||||
 | 
						lbu t1, 0(t0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pass:
 | 
				
			||||||
 | 
						li a0, 0
 | 
				
			||||||
 | 
					done:
 | 
				
			||||||
 | 
						ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fail:
 | 
				
			||||||
 | 
						li a0, -1
 | 
				
			||||||
 | 
						j done
 | 
				
			||||||
 | 
						
 | 
				
			||||||
@ -18,11 +18,7 @@ my $maxaddress = 0;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
STDOUT->autoflush(1);
 | 
					STDOUT->autoflush(1);
 | 
				
			||||||
# *** Ross Thompson I think there is a bug here needs to be +1
 | 
					# *** Ross Thompson I think there is a bug here needs to be +1
 | 
				
			||||||
<<<<<<< HEAD
 | 
					 | 
				
			||||||
print ("Processing $#ARGV memfiles: \n");
 | 
					print ("Processing $#ARGV memfiles: \n");
 | 
				
			||||||
=======
 | 
					 | 
				
			||||||
print ("Processing $#ARGV memfiles: ");
 | 
					 | 
				
			||||||
>>>>>>> icache_bp_bug
 | 
					 | 
				
			||||||
my $frac = $#ARGV/10;
 | 
					my $frac = $#ARGV/10;
 | 
				
			||||||
for(my $i=0; $i<=$#ARGV; $i++) {
 | 
					for(my $i=0; $i<=$#ARGV; $i++) {
 | 
				
			||||||
    if ($i < 10 || $i % $frac == 0) { print ("$i ") };
 | 
					    if ($i < 10 || $i % $frac == 0) { print ("$i ") };
 | 
				
			||||||
 | 
				
			|||||||
@ -59,29 +59,30 @@ add wave -noupdate -group Bpred -expand -group direction -group other /testbench
 | 
				
			|||||||
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/TargetWrongE
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/TargetWrongE
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/FallThroughWrongE
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/FallThroughWrongE
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/PredictionPCWrongE
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/PredictionPCWrongE
 | 
				
			||||||
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/BPPredClassNonCFIWrongE
 | 
				
			||||||
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/PCSrcE
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/BPPredWrongE
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/BPPredWrongE
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/InstrClassE
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/InstrClassE
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group {bp wrong} -divider pcs
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} -divider pcs
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/PCD
 | 
					add wave -noupdate -group Bpred -expand -group {bp wrong} /testbench/dut/hart/ifu/bpred/PCD
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB -divider Update
 | 
					add wave -noupdate -group Bpred -group BTB -divider Update
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdateEN
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdateEN
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdatePC
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdatePC
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/InstrClassE
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/InstrClassE
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdateTarget
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdateTarget
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdatePCIndexQ
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/UpdatePCIndexQ
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB -divider Lookup
 | 
					add wave -noupdate -group Bpred -group BTB -divider Lookup
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/TargetPC
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/TargetPC
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/InstrClass
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/InstrClass
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/Valid
 | 
					add wave -noupdate -group Bpred -group BTB /testbench/dut/hart/ifu/bpred/TargetPredictor/Valid
 | 
				
			||||||
add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/BPPredWrongE
 | 
					add wave -noupdate -group Bpred /testbench/dut/hart/ifu/bpred/BPPredWrongE
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/pop
 | 
					add wave -noupdate -group Bpred -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/pop
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/push
 | 
					add wave -noupdate -group Bpred -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/push
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/pushPC
 | 
					add wave -noupdate -group Bpred -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/pushPC
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/PtrD
 | 
					add wave -noupdate -group Bpred -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/PtrD
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/PtrQ
 | 
					add wave -noupdate -group Bpred -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/PtrQ
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/memory
 | 
					add wave -noupdate -group Bpred -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/memory
 | 
				
			||||||
add wave -noupdate -group Bpred -expand -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/popPC
 | 
					add wave -noupdate -group Bpred -group RAS /testbench/dut/hart/ifu/bpred/RASPredictor/popPC
 | 
				
			||||||
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrF
 | 
					 | 
				
			||||||
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrD
 | 
					add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrD
 | 
				
			||||||
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrE
 | 
					add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrE
 | 
				
			||||||
add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrM
 | 
					add wave -noupdate -expand -group {instruction pipeline} /testbench/dut/hart/ifu/InstrM
 | 
				
			||||||
@ -94,25 +95,26 @@ add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PCNext1F
 | 
				
			|||||||
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/SelBPPredF
 | 
					add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/SelBPPredF
 | 
				
			||||||
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/BPPredWrongE
 | 
					add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/BPPredWrongE
 | 
				
			||||||
add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PrivilegedChangePCM
 | 
					add wave -noupdate -group {PCNext Generation} /testbench/dut/hart/ifu/PrivilegedChangePCM
 | 
				
			||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ifu/InstrD
 | 
					add wave -noupdate -expand -group {Decode Stage} /testbench/dut/hart/ifu/InstrD
 | 
				
			||||||
add wave -noupdate -group {Decode Stage} /testbench/InstrDName
 | 
					add wave -noupdate -expand -group {Decode Stage} /testbench/InstrDName
 | 
				
			||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/c/RegWriteD
 | 
					add wave -noupdate -expand -group {Decode Stage} /testbench/dut/hart/ieu/c/RegWriteD
 | 
				
			||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/RdD
 | 
					add wave -noupdate -expand -group {Decode Stage} /testbench/dut/hart/ieu/dp/RdD
 | 
				
			||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs1D
 | 
					add wave -noupdate -expand -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs1D
 | 
				
			||||||
add wave -noupdate -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs2D
 | 
					add wave -noupdate -expand -group {Decode Stage} /testbench/dut/hart/ieu/dp/Rs2D
 | 
				
			||||||
add wave -noupdate -group RegFile -expand /testbench/dut/hart/ieu/dp/regf/rf
 | 
					add wave -noupdate -expand -group {Decode Stage} /testbench/dut/hart/ifu/ic/DelaySideF
 | 
				
			||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a1
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/rf
 | 
				
			||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a2
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/a1
 | 
				
			||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/a3
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/a2
 | 
				
			||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/rd1
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/a3
 | 
				
			||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/rd2
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/rd1
 | 
				
			||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/we3
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/rd2
 | 
				
			||||||
add wave -noupdate -group RegFile /testbench/dut/hart/ieu/dp/regf/wd3
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/we3
 | 
				
			||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ALUResultW
 | 
					add wave -noupdate -expand -group RegFile /testbench/dut/hart/ieu/dp/regf/wd3
 | 
				
			||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ReadDataW
 | 
					add wave -noupdate -expand -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ALUResultW
 | 
				
			||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/CSRReadValW
 | 
					add wave -noupdate -expand -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ReadDataW
 | 
				
			||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultSrcW
 | 
					add wave -noupdate -expand -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/CSRReadValW
 | 
				
			||||||
add wave -noupdate -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW
 | 
					add wave -noupdate -expand -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultSrcW
 | 
				
			||||||
 | 
					add wave -noupdate -expand -group RegFile -group {write regfile mux} /testbench/dut/hart/ieu/dp/ResultW
 | 
				
			||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/a
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/a
 | 
				
			||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/b
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/b
 | 
				
			||||||
add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol
 | 
					add wave -noupdate -expand -group alu /testbench/dut/hart/ieu/dp/alu/alucontrol
 | 
				
			||||||
@ -186,8 +188,8 @@ add wave -noupdate /testbench/dut/imem/InstrF
 | 
				
			|||||||
add wave -noupdate /testbench/dut/InstrF
 | 
					add wave -noupdate /testbench/dut/InstrF
 | 
				
			||||||
add wave -noupdate /testbench/dut/InstrF
 | 
					add wave -noupdate /testbench/dut/InstrF
 | 
				
			||||||
add wave -noupdate -divider {New Divider}
 | 
					add wave -noupdate -divider {New Divider}
 | 
				
			||||||
 | 
					add wave -noupdate /testbench/dut/hart/ifu/ic/InDataF
 | 
				
			||||||
add wave -noupdate /testbench/dut/hart/ifu/InstrInF
 | 
					add wave -noupdate /testbench/dut/hart/ifu/InstrInF
 | 
				
			||||||
add wave -noupdate /testbench/dut/hart/ifu/rd2
 | 
					 | 
				
			||||||
add wave -noupdate /testbench/dut/hart/InstrRData
 | 
					add wave -noupdate /testbench/dut/hart/InstrRData
 | 
				
			||||||
add wave -noupdate /testbench/dut/hart/rd2
 | 
					add wave -noupdate /testbench/dut/hart/rd2
 | 
				
			||||||
add wave -noupdate /testbench/dut/hart/ebu/InstrRData
 | 
					add wave -noupdate /testbench/dut/hart/ebu/InstrRData
 | 
				
			||||||
@ -217,9 +219,10 @@ add wave -noupdate -radix hexadecimal /testbench/dut/uncore/dtim/HADDR
 | 
				
			|||||||
add wave -noupdate /testbench/dut/uncore/dtim/RAM
 | 
					add wave -noupdate /testbench/dut/uncore/dtim/RAM
 | 
				
			||||||
add wave -noupdate /testbench/dut/uncore/dtim/HREADTim
 | 
					add wave -noupdate /testbench/dut/uncore/dtim/HREADTim
 | 
				
			||||||
add wave -noupdate /testbench/dut/uncore/dtim/HREADTim0
 | 
					add wave -noupdate /testbench/dut/uncore/dtim/HREADTim0
 | 
				
			||||||
 | 
					add wave -noupdate /testbench/dut/uncore/dtim/HRESETn
 | 
				
			||||||
TreeUpdate [SetDefaultTree]
 | 
					TreeUpdate [SetDefaultTree]
 | 
				
			||||||
WaveRestoreCursors {{Cursor 7} {15047768 ns} 0} {{Cursor 2} {34763538 ns} 0} {{Cursor 3} {15046271 ns} 0} {{Cursor 4} {15047307 ns} 0}
 | 
					WaveRestoreCursors {{Cursor 7} {10896277 ns} 1} {{Cursor 9} {10896453 ns} 0} {{wrong instruction} {10895117 ns} 0}
 | 
				
			||||||
quietly wave cursor active 1
 | 
					quietly wave cursor active 3
 | 
				
			||||||
configure wave -namecolwidth 250
 | 
					configure wave -namecolwidth 250
 | 
				
			||||||
configure wave -valuecolwidth 229
 | 
					configure wave -valuecolwidth 229
 | 
				
			||||||
configure wave -justifyvalue left
 | 
					configure wave -justifyvalue left
 | 
				
			||||||
@ -234,4 +237,4 @@ configure wave -griddelta 40
 | 
				
			|||||||
configure wave -timeline 0
 | 
					configure wave -timeline 0
 | 
				
			||||||
configure wave -timelineunits ns
 | 
					configure wave -timelineunits ns
 | 
				
			||||||
update
 | 
					update
 | 
				
			||||||
WaveRestoreZoom {15047734 ns} {15047902 ns}
 | 
					WaveRestoreZoom {10895029 ns} {10895205 ns}
 | 
				
			||||||
 | 
				
			|||||||
@ -37,6 +37,9 @@ module dtim #(parameter BASE=0, RANGE = 65535) (
 | 
				
			|||||||
  output logic             HRESPTim, HREADYTim
 | 
					  output logic             HRESPTim, HREADYTim
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  localparam integer 	   MemStartAddr = BASE>>(1+`XLEN/32);
 | 
				
			||||||
 | 
					  localparam integer 	   MemEndAddr = (RANGE+BASE)>>1+(`XLEN/32);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  logic [`XLEN-1:0] RAM[BASE>>(1+`XLEN/32):(RANGE+BASE)>>1+(`XLEN/32)];
 | 
					  logic [`XLEN-1:0] RAM[BASE>>(1+`XLEN/32):(RANGE+BASE)>>1+(`XLEN/32)];
 | 
				
			||||||
  logic [31:0] HWADDR, A;
 | 
					  logic [31:0] HWADDR, A;
 | 
				
			||||||
  logic [`XLEN-1:0] HREADTim0;
 | 
					  logic [`XLEN-1:0] HREADTim0;
 | 
				
			||||||
@ -48,6 +51,7 @@ module dtim #(parameter BASE=0, RANGE = 65535) (
 | 
				
			|||||||
  logic        memread, memwrite;
 | 
					  logic        memread, memwrite;
 | 
				
			||||||
  logic [3:0]  busycount;
 | 
					  logic [3:0]  busycount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  assign initTrans = HREADY & HSELTim & (HTRANS != 2'b00);
 | 
					  assign initTrans = HREADY & HSELTim & (HTRANS != 2'b00);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // *** this seems like a weird way to use reset
 | 
					  // *** this seems like a weird way to use reset
 | 
				
			||||||
@ -82,12 +86,22 @@ module dtim #(parameter BASE=0, RANGE = 65535) (
 | 
				
			|||||||
  assign risingHREADYTim = HREADYTim & ~prevHREADYTim;
 | 
					  assign risingHREADYTim = HREADYTim & ~prevHREADYTim;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Model memory read and write
 | 
					  // Model memory read and write
 | 
				
			||||||
 | 
					/* -----\/----- EXCLUDED -----\/-----
 | 
				
			||||||
 | 
					  integer       index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  initial begin
 | 
				
			||||||
 | 
					    for(index = MemStartAddr; index < MemEndAddr; index = index + 1) begin
 | 
				
			||||||
 | 
					      RAM[index] <= {`XLEN{1'b0}};
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					 -----/\----- EXCLUDED -----/\----- */
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  generate
 | 
					  generate
 | 
				
			||||||
    if (`XLEN == 64)  begin
 | 
					    if (`XLEN == 64)  begin
 | 
				
			||||||
      always_ff @(posedge HCLK) begin
 | 
					      always_ff @(posedge HCLK) begin
 | 
				
			||||||
        HWADDR <= #1 A;
 | 
					        HWADDR <= #1 A;
 | 
				
			||||||
        HREADTim0 <= #1 RAM[A[31:3]];
 | 
					        HREADTim0 <= #1 RAM[A[31:3]];
 | 
				
			||||||
        if (memwrite && risingHREADYTim) RAM[HWADDR[31:3]] <= #1 HWDATA;
 | 
						if (memwrite && risingHREADYTim) RAM[HWADDR[31:3]] <= #1 HWDATA;
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end else begin 
 | 
					    end else begin 
 | 
				
			||||||
      always_ff @(posedge HCLK) begin
 | 
					      always_ff @(posedge HCLK) begin
 | 
				
			||||||
 | 
				
			|||||||
@ -386,17 +386,24 @@ string tests32i[] = {
 | 
				
			|||||||
                InstrEName, InstrMName, InstrWName);
 | 
					                InstrEName, InstrMName, InstrWName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // initialize tests
 | 
					  // initialize tests
 | 
				
			||||||
 | 
					  localparam integer 	   MemStartAddr = `TIMBASE>>(1+`XLEN/32);
 | 
				
			||||||
 | 
					  localparam integer 	   MemEndAddr = (`TIMRANGE+`TIMBASE)>>1+(`XLEN/32);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  initial
 | 
					  initial
 | 
				
			||||||
    begin
 | 
					    begin
 | 
				
			||||||
      test = 0;
 | 
					      test = 0;
 | 
				
			||||||
      totalerrors = 0;
 | 
					      totalerrors = 0;
 | 
				
			||||||
      testadr = 0;
 | 
					      testadr = 0;
 | 
				
			||||||
      // fill memory with defined values to reduce Xs in simulation
 | 
					      // fill memory with defined values to reduce Xs in simulation
 | 
				
			||||||
 | 
					      // Quick note the memory will need to be initialized.  The C library does not
 | 
				
			||||||
 | 
					      //  guarantee the  initialized reads.  For example a strcmp can read 6 byte
 | 
				
			||||||
 | 
					      //  strings, but uses a load double to read them in.  If the last 2 bytes are
 | 
				
			||||||
 | 
					      //  not initialized the compare results in an 'x' which propagates through 
 | 
				
			||||||
 | 
					      // the design.
 | 
				
			||||||
      if (`XLEN == 32) meminit = 32'hFEDC0123;
 | 
					      if (`XLEN == 32) meminit = 32'hFEDC0123;
 | 
				
			||||||
      else meminit = 64'hFEDCBA9876543210;
 | 
					      else meminit = 64'hFEDCBA9876543210;
 | 
				
			||||||
      for (i=0; i<=65535; i = i+1) begin
 | 
					      for (i=MemStartAddr; i<MemEndAddr; i = i+1) begin
 | 
				
			||||||
        //dut.imem.RAM[i] = meminit;
 | 
						dut.uncore.dtim.RAM[i] = meminit;
 | 
				
			||||||
       // dut.uncore.RAM[i] = meminit;
 | 
					 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
      // read test vectors into memory
 | 
					      // read test vectors into memory
 | 
				
			||||||
      memfilename = {"../../imperas-riscv-tests/work/", tests[test], ".elf.memfile"};
 | 
					      memfilename = {"../../imperas-riscv-tests/work/", tests[test], ".elf.memfile"};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user