bram config db: READ/WRITE width bits to enum

Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
John McMaster 2018-11-07 17:36:37 -08:00
parent c7d5f785d0
commit 328c550d61
5 changed files with 67 additions and 45 deletions

View File

@ -1,30 +1,15 @@
# read/write width is relatively slow to resolve
N := 4
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
# Even slower with multi bit masks...
N := 8
include ../fuzzer.mk
database: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -o build/seg_bramx.segbits $(addsuffix /segdata_bram_[lr].txt,$(SPECIMENS))
${XRAY_SEGMATCH} -o build/segbits_bramx.db $(addsuffix /segdata_bram_[lr].txt,$(SPECIMENS))
${XRAY_DBFIXUP} --db_root build --zero-db bits.dbf --zero-tile-types bramx
pushdb:
${XRAY_MERGEDB} bram_l build/seg_bramx.segbits
${XRAY_MERGEDB} bram_r build/seg_bramx.segbits
${XRAY_MERGEDB} bram_l build/segbits_bramx.db
${XRAY_MERGEDB} bram_r build/segbits_bramx.db
build:
mkdir build
$(SPECIMENS_OK): build
bash ${XRAY_DIR}/utils/top_generate.sh $(subst /OK,,$@)
touch $@
run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
clean:
rm -rf build
.PHONY: database pushdb clean
.PHONY: database pushdb

View File

@ -0,0 +1,20 @@
# Y0
# Y0.READ_WIDTH_A
27_35 27_36 27_37
# Y0.READ_WIDTH_B
27_43 27_44 27_45
# Y0.WRITE_WIDTH_A
27_51 27_52 27_53
# Y0.WRITE_WIDTH_B
27_59 27_60 27_61
# Y1
# Y1.READ_WIDTH_A
27_285 27_284 27_283
# Y1.READ_WIDTH_B
27_277 27_276 27_275
# Y1.WRITE_WIDTH_A
27_269 27_268 27_267
# Y1.WRITE_WIDTH_B
27_261 27_260 27_259

View File

@ -69,9 +69,19 @@ def rw_width_tags(segmk, ps, site):
for param in ["READ_WIDTH_A", "READ_WIDTH_B", "WRITE_WIDTH_A",
"WRITE_WIDTH_B"]:
set_val = int(ps[param])
segmk.add_site_tag(site, '%s_B0' % (param), set_val in (2, 9))
segmk.add_site_tag(site, '%s_B1' % (param), set_val in (4, 9))
segmk.add_site_tag(site, '%s_B2' % (param), set_val in (18, ))
# Multiple bits (not one hot)
# segmk.add_site_tag(site, '%s_B0' % (param), set_val in (2, 9))
# segmk.add_site_tag(site, '%s_B1' % (param), set_val in (4, 9))
# segmk.add_site_tag(site, '%s_B2' % (param), set_val in (18, ))
# 1 is special in that its all 0's
# diff only against that
segmk.add_site_tag(site, '%s_%u' % (param, 1), set_val != 1)
for widthn in [2, 4, 9, 18]:
if set_val == 1:
segmk.add_site_tag(site, '%s_%u' % (param, widthn), False)
elif set_val == widthn:
segmk.add_site_tag(site, '%s_%u' % (param, widthn), True)
def write_mode_tags(segmk, ps, site):

View File

@ -1,8 +1,7 @@
N ?= 1
DBFIXUP ?=
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
include fuzzer.mk
database: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -o build/segbits_clblx.db $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS))
@ -14,21 +13,5 @@ pushdb:
${XRAY_MERGEDB} clblm_l build/segbits_clblx.db
${XRAY_MERGEDB} clblm_r build/segbits_clblx.db
build:
mkdir build
$(SPECIMENS_OK): build
bash generate.sh $(subst /OK,,$@)
touch $@
run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
clean:
rm -rf build
.PHONY: database pushdb run clean
.PHONY: database pushdb

24
fuzzers/fuzzer.mk Normal file
View File

@ -0,0 +1,24 @@
N ?= 1
SPECIMENS := $(addprefix build/specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
all: database
build:
mkdir build
$(SPECIMENS_OK): build
bash ${XRAY_DIR}/utils/top_generate.sh $(subst /OK,,$@)
touch $@
run:
$(MAKE) clean
$(MAKE) database
$(MAKE) pushdb
touch run.ok
clean:
rm -rf build
.PHONY: all run clean