ffprim: output list of FF bits

Signed-off-by: John McMaster <JohnDMcMaster@gmail.com>
Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
John McMaster 2017-11-17 20:01:29 -08:00 committed by Tim 'mithro' Ansell
parent 2ce1b522e2
commit 59c490c3d0
3 changed files with 19 additions and 39 deletions

View File

@ -3,13 +3,13 @@ SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N)))
SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS))
database: $(SPECIMENS_OK)
../../tools/segmatch -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS))
${XRAY_SEGMATCH} -o seg_clblx.segbits $(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS))
pushdb:
bash ../../utils/mergedb.sh clbll_l seg_clblx.segbits
bash ../../utils/mergedb.sh clbll_r seg_clblx.segbits
bash ../../utils/mergedb.sh clblm_l seg_clblx.segbits
bash ../../utils/mergedb.sh clblm_r seg_clblx.segbits
${XRAY_MERGEDB} clbll_l seg_clblx.segbits
${XRAY_MERGEDB} clbll_r seg_clblx.segbits
${XRAY_MERGEDB} clblm_l seg_clblx.segbits
${XRAY_MERGEDB} clblm_r seg_clblx.segbits
$(SPECIMENS_OK):
bash generate.sh $(subst /OK,,$@)

View File

@ -66,11 +66,11 @@ with open("design.txt", "r") as f:
which = ff_name[0]
# Reduced test for now
if ff_name != 'AFF':
continue
#if ff_name != 'AFF':
# continue
segmk.addtag(site, "FF_USED", used)
if 1:
#segmk.addtag(site, "FF_USED", used)
if 0:
# If unused mark all primitives as not present
# Otherwise mark the primitive we are using
for ffprim in ffprims:
@ -78,39 +78,19 @@ with open("design.txt", "r") as f:
segmk.addtag(site, "FF_%s" % ffprim, 0)
elif ref_name == ffprim:
segmk.addtag(site, "FF_%s" % ffprim, 1)
'''
Experiment diffing against one of the lower bit set candidates
can probably isolate a few bits this way
really though I want to diff against USED but not sure how to do that
CLB.SLICE_X0.FF_USED <7 candidates>
CLB.SLICE_X0.FF_FDSE <8 candidates>
CLB.SLICE_X0.FF_FDPE <8 candidates>
CLB.SLICE_X0.FF_FDRE <9 candidates>
CLB.SLICE_X0.FF_FDCE <10 candidates>
'''
'''
# Theory:
# FDPE represents none of the FF specific bits used
# FDRE has none of the bits used
if 1:
# If unused mark all primitives as not present
# Otherwise mark the primitive we are using
# Should yield 3 bits
if used:
base = 'FDSE'
if ref_name == base:
for ffprim in ffprims:
segmk.addtag(site, "FF_DIFF_%s_%s" % (base, fprim, 0)
if 0:
for ffprim in ffprims:
segmk.addtag(site, "FF_%s" % ffprim, 0)
elif
segmk.addtag(site, "FF_%s" % ffprim, 1)
'''
# Compare '_1' negative edge clock to positive edge
if used:
#inv_clk = ref_name.endswith("_1")
inv_clk = cinv
segmk.addtag(site, "%s.FF_INV_CLK" % ff_name, inv_clk)
if ref_name == 'FDPE':
segmk.addtag(site, "%s.PRIM" % ff_name, 0)
if ref_name == 'FDRE':
segmk.addtag(site, "%s.PRIM" % ff_name, 1)
segmk.compile()
segmk.write()

View File

@ -97,8 +97,8 @@ for i in range(CLBN):
# clb_FD clb_FD (.clk(clk), .din(din[ 0 +: 4]), .dout(dout[ 0]));
# clb_FD_1 clb_FD_1 (.clk(clk), .din(din[ 4 +: 4]), .dout(dout[ 1]));
loc = next(slices)
#bel = random.choice(ff_bels)
bel = "AFF"
bel = random.choice(ff_bels)
#bel = "AFF"
print(' clb_%s' % ffprim)
print(' #(.LOC("%s"), .BEL("%s"))' % (loc, bel))
print(' clb_%d (.clk(clk), .din(din[ %d +: 4]), .dout(dout[ %d]));' % (i, 4 * i, 1 * i))