Merge pull request #1006 from litghost/move_ilogic_and_ologic_to_ioi3

Move ILOGIC and OLOGIC to IOI3 tiles for consistency.
This commit is contained in:
litghost 2019-08-01 15:12:17 -07:00 committed by GitHub
commit ae80db55ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 50 additions and 31 deletions

View File

@ -1,20 +1,28 @@
N := 30
include ../fuzzer.mk
database: build/segbits_xiob33.db
database: build/segbits_xioi3.db
build/segbits_xiob33.rdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -c 6 -o build/segbits_xiob33.rdb $$(find -name segdata_liob33.txt) $$(find -name segdata_riob33.txt)
build/segbits_xioi3.rdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -c 6 -o build/segbits_xioi3.rdb $$(find -name segdata_*)
build/segbits_xiob33.db: build/segbits_xiob33.rdb
build/segbits_xioi3.db: build/segbits_xioi3.rdb
${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf --seg-fn-in $^ --seg-fn-out $@
${XRAY_MASKMERGE} build/mask_xiob33.db $$(find -name segdata_liob33.txt) $$(find -name segdata_riob33.txt)
${XRAY_MASKMERGE} build/mask_xioi3.db $$(find -name segdata_*)
pushdb:
${XRAY_MERGEDB} liob33 build/segbits_xiob33.db
${XRAY_MERGEDB} riob33 build/segbits_xiob33.db
${XRAY_MERGEDB} mask_liob33 build/mask_xiob33.db
${XRAY_MERGEDB} mask_riob33 build/mask_xiob33.db
${XRAY_MERGEDB} lioi3 build/segbits_xioi3.db
${XRAY_MERGEDB} lioi3_tbytesrc build/segbits_xioi3.db
${XRAY_MERGEDB} lioi3_tbyteterm build/segbits_xioi3.db
${XRAY_MERGEDB} rioi3 build/segbits_xioi3.db
${XRAY_MERGEDB} rioi3_tbytesrc build/segbits_xioi3.db
${XRAY_MERGEDB} rioi3_tbyteterm build/segbits_xioi3.db
${XRAY_MERGEDB} mask_lioi3 build/mask_xioi3.db
${XRAY_MERGEDB} mask_lioi3_tbytesrc build/mask_xioi3.db
${XRAY_MERGEDB} mask_lioi3_tbyteterm build/mask_xioi3.db
${XRAY_MERGEDB} mask_rioi3 build/mask_xioi3.db
${XRAY_MERGEDB} mask_rioi3_tbytesrc build/mask_xioi3.db
${XRAY_MERGEDB} mask_rioi3_tbyteterm build/mask_xioi3.db
.PHONY: database pushdb

View File

@ -19,6 +19,8 @@ def handle_data_width(segmk, d):
if 'DATA_WIDTH' not in d:
return
site = d['ilogic_loc']
# It appears several widths end up with the same bitstream pattern.
# This groups those widths together for documentation.
widths = [
@ -40,31 +42,30 @@ def handle_data_width(segmk, d):
zero_opt = 2
W_OPT_ZERO = width_map[zero_opt]
if d['DATA_WIDTH'] == zero_opt:
segmk.add_site_tag(
d['site'], 'ISERDES.DATA_WIDTH.{}'.format(W_OPT_ZERO), 1)
segmk.add_site_tag(site, 'ISERDES.DATA_WIDTH.{}'.format(W_OPT_ZERO), 1)
for opt in width_map.values():
if opt == W_OPT_ZERO:
continue
segmk.add_site_tag(
d['site'], 'ISERDES.DATA_WIDTH.{}'.format(opt), 0)
segmk.add_site_tag(site, 'ISERDES.DATA_WIDTH.{}'.format(opt), 0)
else:
w_opt = width_map[d['DATA_WIDTH']]
if w_opt != W_OPT_ZERO:
segmk.add_site_tag(
d['site'], 'ISERDES.DATA_WIDTH.{}'.format(W_OPT_ZERO), 0)
segmk.add_site_tag(
d['site'], 'ISERDES.DATA_WIDTH.{}'.format(w_opt), 1)
site, 'ISERDES.DATA_WIDTH.{}'.format(W_OPT_ZERO), 0)
segmk.add_site_tag(site, 'ISERDES.DATA_WIDTH.{}'.format(w_opt), 1)
def handle_data_rate(segmk, d):
if 'DATA_WIDTH' not in d:
return
site = d['ilogic_loc']
for opt in ['SDR', 'DDR']:
segmk.add_site_tag(
d['site'], 'ISERDES.DATA_RATE.{}'.format(opt),
site, 'ISERDES.DATA_RATE.{}'.format(opt),
verilog.unquote(d['DATA_RATE']) == opt)
@ -76,7 +77,7 @@ def main():
design = json.load(f)
for d in design:
site = d['site']
site = d['ilogic_loc']
handle_data_width(segmk, d)
handle_data_rate(segmk, d)

View File

@ -1,20 +1,28 @@
N := 40
include ../fuzzer.mk
database: build/segbits_xiob33.db
database: build/segbits_xioi3.db
build/segbits_xiob33.rdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -c 6 -o build/segbits_xiob33.rdb $$(find -name segdata_liob33.txt) $$(find -name segdata_riob33.txt)
build/segbits_xioi3.rdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -c 6 -o build/segbits_xioi3.rdb $$(find -name segdata_*)
build/segbits_xiob33.db: build/segbits_xiob33.rdb
build/segbits_xioi3.db: build/segbits_xioi3.rdb
${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf --seg-fn-in $^ --seg-fn-out $@
${XRAY_MASKMERGE} build/mask_xiob33.db $$(find -name segdata_liob33.txt) $$(find -name segdata_riob33.txt)
${XRAY_MASKMERGE} build/mask_xioi3.db $$(find -name segdata_*)
pushdb:
${XRAY_MERGEDB} liob33 build/segbits_xiob33.db
${XRAY_MERGEDB} riob33 build/segbits_xiob33.db
${XRAY_MERGEDB} mask_liob33 build/mask_xiob33.db
${XRAY_MERGEDB} mask_riob33 build/mask_xiob33.db
${XRAY_MERGEDB} lioi3 build/segbits_xioi3.db
${XRAY_MERGEDB} lioi3_tbytesrc build/segbits_xioi3.db
${XRAY_MERGEDB} lioi3_tbyteterm build/segbits_xioi3.db
${XRAY_MERGEDB} rioi3 build/segbits_xioi3.db
${XRAY_MERGEDB} rioi3_tbytesrc build/segbits_xioi3.db
${XRAY_MERGEDB} rioi3_tbyteterm build/segbits_xioi3.db
${XRAY_MERGEDB} mask_lioi3 build/mask_xioi3.db
${XRAY_MERGEDB} mask_lioi3_tbytesrc build/mask_xioi3.db
${XRAY_MERGEDB} mask_lioi3_tbyteterm build/mask_xioi3.db
${XRAY_MERGEDB} mask_rioi3 build/mask_xioi3.db
${XRAY_MERGEDB} mask_rioi3_tbytesrc build/mask_xioi3.db
${XRAY_MERGEDB} mask_rioi3_tbyteterm build/mask_xioi3.db
.PHONY: database pushdb

View File

@ -19,23 +19,25 @@ def handle_data_width(segmk, d):
if 'DATA_WIDTH' not in d:
return
site = d['ologic_loc']
for opt in [2, 3, 4, 5, 6, 7, 8]:
segmk.add_site_tag(
d['site'], 'OSERDESE.DATA_WIDTH.W{}'.format(opt),
site, 'OSERDESE.DATA_WIDTH.W{}'.format(opt),
d['DATA_WIDTH'] == opt)
if verilog.unquote(d['DATA_RATE_OQ']) == 'DDR':
# DDR + WIDTH 6/8 have some overlapping bits, create a feature.
OVERLAPPING_WIDTHS = [6, 8]
segmk.add_site_tag(
d['site'], 'OSERDESE.DATA_WIDTH.DDR.W{}'.format(
site, 'OSERDESE.DATA_WIDTH.DDR.W{}'.format(
'_'.join(map(str, OVERLAPPING_WIDTHS))),
d['DATA_WIDTH'] in OVERLAPPING_WIDTHS)
else:
# SDR + WIDTH 2/4/5/6 have some overlapping bits, create a feature.
OVERLAPPING_WIDTHS = [2, 4, 5, 6]
segmk.add_site_tag(
d['site'], 'OSERDESE.DATA_WIDTH.SDR.W{}'.format(
site, 'OSERDESE.DATA_WIDTH.SDR.W{}'.format(
'_'.join(map(str, OVERLAPPING_WIDTHS))),
d['DATA_WIDTH'] in OVERLAPPING_WIDTHS)
@ -48,7 +50,7 @@ def main():
design = json.load(f)
for d in design:
site = d['site']
site = d['ologic_loc']
handle_data_width(segmk, d)