mirror of
https://github.com/openhwgroup/cvw.git
synced 2025-04-22 21:08:08 -04:00
Merge branch 'main' of https://github.com/openhwgroup/cvw into dev
This commit is contained in:
commit
65f35d9bbc
2 changed files with 25 additions and 15 deletions
|
@ -104,18 +104,21 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
|||
logic HPTWAccessFaultDelay;
|
||||
logic TakeHPTWFault;
|
||||
logic PBMTFaultM;
|
||||
logic DAUFaultM;
|
||||
logic PBMTOrDAUFaultM;
|
||||
logic HPTWFaultM;
|
||||
logic ResetPTE;
|
||||
|
||||
// map hptw access faults onto either the original LSU load/store fault or instruction access fault
|
||||
assign LSUAccessFaultM = LSULoadAccessFaultM | LSUStoreAmoAccessFaultM;
|
||||
assign HPTWFaultM = LSUAccessFaultM | PBMTFaultM;
|
||||
assign PBMTOrDAUFaultM = PBMTFaultM | DAUFaultM;
|
||||
assign HPTWFaultM = LSUAccessFaultM | PBMTOrDAUFaultM;
|
||||
assign HPTWLoadAccessFault = LSUAccessFaultM & DTLBWalk & MemRWM[1] & ~MemRWM[0];
|
||||
assign HPTWStoreAmoAccessFault = LSUAccessFaultM & DTLBWalk & MemRWM[0];
|
||||
assign HPTWInstrAccessFault = LSUAccessFaultM & ~DTLBWalk;
|
||||
assign HPTWLoadPageFault = PBMTFaultM & DTLBWalk & MemRWM[1] & ~MemRWM[0];
|
||||
assign HPTWStoreAmoPageFault = PBMTFaultM & DTLBWalk & MemRWM[0];
|
||||
assign HPTWInstrPageFault = PBMTFaultM & ~DTLBWalk;
|
||||
assign HPTWLoadPageFault = PBMTOrDAUFaultM & DTLBWalk & MemRWM[1] & ~MemRWM[0];
|
||||
assign HPTWStoreAmoPageFault = PBMTOrDAUFaultM & DTLBWalk & MemRWM[0];
|
||||
assign HPTWInstrPageFault = PBMTOrDAUFaultM & ~DTLBWalk;
|
||||
|
||||
flopr #(6) HPTWAccesFaultReg(clk, reset, {HPTWLoadAccessFault, HPTWStoreAmoAccessFault, HPTWInstrAccessFault,
|
||||
HPTWLoadPageFault, HPTWStoreAmoPageFault, HPTWInstrPageFault},
|
||||
|
@ -155,6 +158,7 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
|||
assign ValidNonLeafPTE = Valid & ~LeafPTE;
|
||||
if(P.XLEN == 64) assign PBMTFaultM = ValidNonLeafPTE & (|PTE[62:61]);
|
||||
else assign PBMTFaultM = 1'b0;
|
||||
assign DAUFaultM = ValidNonLeafPTE & (|PTE[7:6] | PTE[4]);
|
||||
|
||||
if(P.SVADU_SUPPORTED) begin : hptwwrites
|
||||
logic ReadAccess, WriteAccess;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
NUM_TESTS ?= 1 # Number of tests to generate for each constraint file
|
||||
|
||||
# General Makefile settings
|
||||
SHELL := /bin/bash
|
||||
|
||||
# Breker/Trek paths and variables
|
||||
|
@ -21,26 +24,29 @@ LINK_FLAGS := -nostartfiles
|
|||
CFLAGS := -Wa,-alhs -Wa,-L -mcmodel=medany -Og -DSINGLE_CPU
|
||||
WIDTH := 64
|
||||
|
||||
# Find all constraint files and generate tests for each one
|
||||
TESTS = $(patsubst $(CONSTRAINTS_DIR)/%.yaml,$(TESTDIR)/%,$(CONSTRAINT_FILES))
|
||||
# Find all constraint files and generate NUM_TESTS tests for each one
|
||||
TESTS = $(foreach yaml,$(CONSTRAINT_FILES),$(foreach n,$(shell seq 1 $(NUM_TESTS)),$(patsubst $(CONSTRAINTS_DIR)/%.yaml,$(TESTDIR)/%_$(n),$(yaml))))
|
||||
|
||||
.PHONY: all clean
|
||||
all: $(TESTS)
|
||||
|
||||
# Generate c tests
|
||||
$(TESTDIR)/%: $(CONSTRAINTS_DIR)/%.yaml | $(TESTDIR)
|
||||
$(TREKSVIP) -p $< -p $(CUSTOMER_YAML) -o $@/$* -e pss_top.entry
|
||||
$(MAKE) $@/$*.elf.memfile
|
||||
$(TESTDIR)/%: | $(TESTDIR)
|
||||
$(eval CONSTRAINT_FILE := $(shell echo $* | sed 's/_[0-9]*$$//'))
|
||||
$(TREKSVIP) -p $(CONSTRAINTS_DIR)/$(CONSTRAINT_FILE).yaml -p $(CUSTOMER_YAML) -o $@/$* -e pss_top.entry
|
||||
$(MAKE) $@/$*.elf
|
||||
|
||||
# Compile c code
|
||||
.PRECIOUS: %.elf
|
||||
%.elf: %.c
|
||||
.PRECIOUS: $(TESTDIR)/%.elf
|
||||
$(TESTDIR)/%.elf: $(TESTDIR)/%.c
|
||||
riscv64-unknown-elf-gcc $(MARCH) $(MABI) $(CFLAGS) $(LINK_FLAGS) -T$(LINKER) -I$(START_LIB_DIR) $(START_LIB) -g -o $@ $< > /dev/null
|
||||
$(MAKE) $@.objdump
|
||||
|
||||
# Convert elf to hex
|
||||
%.elf.memfile: %.elf
|
||||
riscv64-unknown-elf-objdump -D $< > $<.objdump
|
||||
riscv64-unknown-elf-elf2hex --bit-width $(WIDTH) --input $< --output $@
|
||||
extractFunctionRadix.sh $<.objdump
|
||||
$(TESTDIR)/%.elf.objdump: $(TESTDIR)/%.elf
|
||||
riscv64-unknown-elf-objdump -D $< > $@
|
||||
# riscv64-unknown-elf-elf2hex --bit-width $(WIDTH) --input $< --output $@
|
||||
# extractFunctionRadix.sh $<.objdump
|
||||
|
||||
# View the model graph TODO: What does this do? Move to another makefile?
|
||||
%.view_graph: $(CONSTRAINTS_DIR)/%.yaml
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue