From 8f770b3e6eacb6a581f3d9745ab49217b3225ec6 Mon Sep 17 00:00:00 2001 From: John McMaster Date: Wed, 15 Nov 2017 14:30:02 -0800 Subject: [PATCH] ffprim experiment: tweaks Signed-off-by: John McMaster Signed-off-by: Tim 'mithro' Ansell --- experiments/ffprim/generate.py | 7 ++++--- experiments/ffprim/generate.sh | 2 +- experiments/ffprim/top.py | 14 +++++++++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/experiments/ffprim/generate.py b/experiments/ffprim/generate.py index 27a6242f..decfc05d 100644 --- a/experiments/ffprim/generate.py +++ b/experiments/ffprim/generate.py @@ -40,7 +40,7 @@ print("Loading tags from design.txt") with open("design.txt", "r") as f: for line in f: ''' - puts $fp "$type $tile $grid_x $grid_y $ff $bel_type $used $usedstr" + puts $fp "$type $tile $grid_x $grid_y $ff $bel_type $used $usedstr" CLBLM_L CLBLM_L_X10Y137 30 13 SLICE_X13Y137/AFF REG_INIT 1 FDRE CLBLM_L CLBLM_L_X10Y137 30 13 SLICE_X12Y137/D5FF FF_INIT 0 @@ -90,6 +90,7 @@ with open("design.txt", "r") as f: CLB.SLICE_X0.FF_FDRE <9 candidates> CLB.SLICE_X0.FF_FDCE <10 candidates> ''' + ''' if 1: # If unused mark all primitives as not present # Otherwise mark the primitive we are using @@ -98,12 +99,12 @@ with open("design.txt", "r") as f: 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: diff --git a/experiments/ffprim/generate.sh b/experiments/ffprim/generate.sh index 9fb78153..d272452b 100644 --- a/experiments/ffprim/generate.sh +++ b/experiments/ffprim/generate.sh @@ -10,7 +10,7 @@ python3 ../top.py >top.v vivado -mode batch -source ../generate.tcl for x in design*.bit; do - ../../../tools/bitread -F $XRAY_ROI_FRAMES -o ${x}s -zy $x + ../../../build/tools/bitread -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x done python3 ../generate.py diff --git a/experiments/ffprim/top.py b/experiments/ffprim/top.py index ad229d0c..1360f5c7 100644 --- a/experiments/ffprim/top.py +++ b/experiments/ffprim/top.py @@ -1,5 +1,7 @@ import random +random.seed(0) + CLBN = 600 # SLICE_X12Y100 # SLICE_X27Y149 @@ -19,7 +21,7 @@ def gen_slices(): DIN_N = CLBN * 4 DOUT_N = CLBN * 1 -clbs = ( +ffprims = ( 'FD', 'FD_1', 'FDC', @@ -41,6 +43,12 @@ clbs = ( 'FDSE', 'FDSE_1', ) +ffprims = ( + 'FDRE', + 'FDSE', + 'FDCE', + 'FDPE', +) ff_bels = ( 'AFF', 'A5FF', @@ -85,13 +93,13 @@ endmodule slices = gen_slices() print('module roi(input clk, input [%d:0] din, output [%d:0] dout);' % (DIN_N - 1, DOUT_N - 1)) for i in range(CLBN): - clb = random.choice(clbs) + ffprim = random.choice(ffprims) # 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" - print(' clb_%s' % clb) + 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)) print('''endmodule