From 59c490c3d044b0b9343eb6181039fac1eeb8fdde Mon Sep 17 00:00:00 2001 From: John McMaster Date: Fri, 17 Nov 2017 20:01:29 -0800 Subject: [PATCH] ffprim: output list of FF bits Signed-off-by: John McMaster Signed-off-by: Tim 'mithro' Ansell --- experiments/ffprim/Makefile | 10 ++++---- experiments/ffprim/generate.py | 44 ++++++++++------------------------ experiments/ffprim/top.py | 4 ++-- 3 files changed, 19 insertions(+), 39 deletions(-) diff --git a/experiments/ffprim/Makefile b/experiments/ffprim/Makefile index 9694622c..cdd3cf23 100644 --- a/experiments/ffprim/Makefile +++ b/experiments/ffprim/Makefile @@ -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,,$@) diff --git a/experiments/ffprim/generate.py b/experiments/ffprim/generate.py index decfc05d..cc4e171d 100644 --- a/experiments/ffprim/generate.py +++ b/experiments/ffprim/generate.py @@ -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() diff --git a/experiments/ffprim/top.py b/experiments/ffprim/top.py index 1360f5c7..ad0a91bb 100644 --- a/experiments/ffprim/top.py +++ b/experiments/ffprim/top.py @@ -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))