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 N := 30
include ../fuzzer.mk include ../fuzzer.mk
database: build/segbits_xiob33.db database: build/segbits_xioi3.db
build/segbits_xiob33.rdb: $(SPECIMENS_OK) build/segbits_xioi3.rdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -c 6 -o build/segbits_xiob33.rdb $$(find -name segdata_liob33.txt) $$(find -name segdata_riob33.txt) ${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_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: pushdb:
${XRAY_MERGEDB} liob33 build/segbits_xiob33.db ${XRAY_MERGEDB} lioi3 build/segbits_xioi3.db
${XRAY_MERGEDB} riob33 build/segbits_xiob33.db ${XRAY_MERGEDB} lioi3_tbytesrc build/segbits_xioi3.db
${XRAY_MERGEDB} mask_liob33 build/mask_xiob33.db ${XRAY_MERGEDB} lioi3_tbyteterm build/segbits_xioi3.db
${XRAY_MERGEDB} mask_riob33 build/mask_xiob33.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 .PHONY: database pushdb

View File

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

View File

@ -1,20 +1,28 @@
N := 40 N := 40
include ../fuzzer.mk include ../fuzzer.mk
database: build/segbits_xiob33.db database: build/segbits_xioi3.db
build/segbits_xiob33.rdb: $(SPECIMENS_OK) build/segbits_xioi3.rdb: $(SPECIMENS_OK)
${XRAY_SEGMATCH} -c 6 -o build/segbits_xiob33.rdb $$(find -name segdata_liob33.txt) $$(find -name segdata_riob33.txt) ${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_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: pushdb:
${XRAY_MERGEDB} liob33 build/segbits_xiob33.db ${XRAY_MERGEDB} lioi3 build/segbits_xioi3.db
${XRAY_MERGEDB} riob33 build/segbits_xiob33.db ${XRAY_MERGEDB} lioi3_tbytesrc build/segbits_xioi3.db
${XRAY_MERGEDB} mask_liob33 build/mask_xiob33.db ${XRAY_MERGEDB} lioi3_tbyteterm build/segbits_xioi3.db
${XRAY_MERGEDB} mask_riob33 build/mask_xiob33.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 .PHONY: database pushdb

View File

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