mirror of https://github.com/openXC7/prjxray.git
commit
1fccc2fbcd
|
|
@ -1,26 +1,16 @@
|
|||
N := 1
|
||||
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_ioblx.db $(addsuffix /segdata_liob33.txt,$(SPECIMENS))
|
||||
database: build/segbits_liob33.db
|
||||
|
||||
#pushdb:
|
||||
# ${XRAY_MERGEDB} ioblm_l build/segbits_ioblx.db
|
||||
# ${XRAY_MERGEDB} ioblm_r build/segbits_ioblx.db
|
||||
build/segbits_liob33.rdb:
|
||||
${XRAY_SEGMATCH} -o build/segbits_liob33.rdb $(addsuffix /segdata_liob33.txt,$(SPECIMENS))
|
||||
|
||||
$(SPECIMENS_OK):
|
||||
bash generate.sh $(subst /OK,,$@)
|
||||
touch $@
|
||||
build/segbits_liob33.db: build/segbits_liob33.rdb
|
||||
${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf --seg-fn-in $^ --seg-fn-out $@
|
||||
|
||||
run:
|
||||
$(MAKE) clean
|
||||
$(MAKE) database
|
||||
$(MAKE) pushdb
|
||||
touch run.ok
|
||||
pushdb:
|
||||
${XRAY_MERGEDB} liob33 build/segbits_liob33.db
|
||||
|
||||
clean:
|
||||
rm -rf build
|
||||
|
||||
.PHONY: database pushdb run clean
|
||||
.PHONY: database pushdb
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
38_98 39_97 39_99,LIOB33.IOB_Y1.PULLTYPE.PULLDOWN
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from prjxray.segmaker import Segmaker
|
||||
from prjxray import segmaker
|
||||
|
||||
segmk = Segmaker("design.bits")
|
||||
|
||||
|
|
@ -22,7 +23,11 @@ for l in f:
|
|||
PULLDOWN
|
||||
PULLUP X X
|
||||
'''
|
||||
segmk.add_site_tag(site, "PULL.NONE", val in ("", "KEEPER", "PULLUP"))
|
||||
if val == "":
|
||||
val = "NONE"
|
||||
segmaker.add_site_group_zero(
|
||||
segmk, site, "PULLTYPE.", ("NONE", "KEEPER", "PULLDOWN", "PULLUP"),
|
||||
"PULLDOWN", val)
|
||||
|
||||
segmk.compile()
|
||||
segmk.write()
|
||||
|
|
|
|||
|
|
@ -55,10 +55,10 @@ proc loc_pins {} {
|
|||
|
||||
set_property -dict "PACKAGE_PIN $pin IOSTANDARD LVCMOS33" $port
|
||||
|
||||
# list_property isn't working
|
||||
# list_property isn't working (maybe due to empty?)
|
||||
# set keys [list_property_value PULLTYPE $port]
|
||||
set keys "PULLUP PULLDOWN KEEPER"
|
||||
# set keys "NONE KEEPER"
|
||||
# NONE placeholder for ""
|
||||
set keys "NONE PULLUP PULLDOWN KEEPER"
|
||||
set val [randsample_list 1 $keys]
|
||||
if { $val == "NONE" } {
|
||||
set val ""
|
||||
|
|
|
|||
|
|
@ -38,6 +38,38 @@ def json_hex2i(s):
|
|||
return int(s[2:], 16)
|
||||
|
||||
|
||||
def add_site_group_zero(segmk, site, prefix, vals, zero_val, val):
|
||||
'''
|
||||
Correctly add tags for a multi-bit enumerated value
|
||||
Naively adding them directly doesn't work correctly because overlapping bits won't solve correctly
|
||||
Instead, you need to carefully diff against a known zero value
|
||||
Good zero values:
|
||||
-An enum known to be zero
|
||||
-A site that doesn't contain the enum
|
||||
|
||||
segmak: Segmaker object
|
||||
site: the site to add tags to
|
||||
prefix: tag string to prefix onto vals
|
||||
vals: all possible tag enum vals
|
||||
zero_val: tag value known to have no bits set
|
||||
'''
|
||||
assert zero_val in vals, "Got %s, need %s" % (zero_val, vals)
|
||||
assert val in vals, "Got %s, need %s" % (val, vals)
|
||||
|
||||
if val == zero_val:
|
||||
# Zero symbol occured, none of the others did
|
||||
for aval in vals:
|
||||
tag = prefix + aval
|
||||
segmk.add_site_tag(site, tag, aval == val)
|
||||
else:
|
||||
# Only add the occured symbol
|
||||
tag = prefix + val
|
||||
segmk.add_site_tag(site, tag, 1)
|
||||
# And zero so that it has something to solve against
|
||||
tag = prefix + zero_val
|
||||
segmk.add_site_tag(site, tag, 0)
|
||||
|
||||
|
||||
class Segmaker:
|
||||
def __init__(self, bitsfile, verbose=None, db_root=None):
|
||||
self.db_root = db_root
|
||||
|
|
|
|||
|
|
@ -72,6 +72,9 @@ case "$1" in
|
|||
hclk_r)
|
||||
sed < "$2" > "$tmp1" -e 's/^HCLK\./HCLK_R./' ;;
|
||||
|
||||
liob33)
|
||||
cp "$2" "$tmp1" ;;
|
||||
|
||||
mask_*)
|
||||
db=$XRAY_DATABASE_DIR/$XRAY_DATABASE/$1.db
|
||||
cp "$2" "$tmp1" ;;
|
||||
|
|
|
|||
Loading…
Reference in New Issue