mirror of https://github.com/openXC7/prjxray.git
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:
commit
ae80db55ad
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue