From d4b0e59a52c272de37ce746e8326cd26dc9e4544 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sat, 23 Dec 2017 22:37:27 +0100 Subject: [PATCH 1/5] Add settings.sh parameter for fuzzer HCLK tiles Signed-off-by: Clifford Wolf --- database/artix7/settings.sh | 2 ++ database/kintex7/settings.sh | 2 ++ fuzzers/058-hclkpips/generate.tcl | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/database/artix7/settings.sh b/database/artix7/settings.sh index faa263b9..5979e1d0 100644 --- a/database/artix7/settings.sh +++ b/database/artix7/settings.sh @@ -13,5 +13,7 @@ export XRAY_PIN_03="D21" export XRAY_PIN_04="G21" export XRAY_PIN_05="G22" export XRAY_PIN_06="F21" +export XRAY_HCLK_L="HCLK_L_X36Y130" +export XRAY_HCLK_R="HCLK_R_X37Y130" source $(dirname ${BASH_SOURCE[0]})/../../utils/environment.sh diff --git a/database/kintex7/settings.sh b/database/kintex7/settings.sh index b4632b78..7422040f 100644 --- a/database/kintex7/settings.sh +++ b/database/kintex7/settings.sh @@ -14,5 +14,7 @@ export XRAY_PIN_03="L25" export XRAY_PIN_04="M19" export XRAY_PIN_05="M20" export XRAY_PIN_06="M21" +export XRAY_HCLK_L="HCLK_L_X25Y78" +export XRAY_HCLK_R="HCLK_R_X26Y78" source $(dirname ${BASH_SOURCE[0]})/../../utils/environment.sh diff --git a/fuzzers/058-hclkpips/generate.tcl b/fuzzers/058-hclkpips/generate.tcl index 0737adca..5ccc35af 100644 --- a/fuzzers/058-hclkpips/generate.tcl +++ b/fuzzers/058-hclkpips/generate.tcl @@ -21,8 +21,8 @@ write_checkpoint -force design.dcp source ../../../utils/utils.tcl -if [regexp "_001$" [pwd]] {set tile [get_tiles HCLK_L_X36Y130]} -if [regexp "_002$" [pwd]] {set tile [get_tiles HCLK_R_X37Y130]} +if [regexp "_001$" [pwd]] {set tile [get_tiles $::env(XRAY_HCLK_L)]} +if [regexp "_002$" [pwd]] {set tile [get_tiles $::env(XRAY_HCLK_R)]} set net [get_nets o_OBUF] set pips [get_pips -of_objects $tile] From deaa3952f475acbaaaf6fd1180c5cf7a7a4fb7a5 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 24 Dec 2017 03:28:20 +0100 Subject: [PATCH 2/5] Add "make run" to 070-tileconn and 071-ppips Signed-off-by: Clifford Wolf --- fuzzers/070-tileconn/Makefile | 5 ++++- fuzzers/071-ppips/Makefile | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fuzzers/070-tileconn/Makefile b/fuzzers/070-tileconn/Makefile index 56f10429..40eec548 100644 --- a/fuzzers/070-tileconn/Makefile +++ b/fuzzers/070-tileconn/Makefile @@ -13,8 +13,11 @@ $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) touch $@ +run: + +set -ex; make clean; make; make pushdb + clean: rm -rf specimen_[0-9][0-9][0-9]/ tileconn.json -.PHONY: database pushdb clean +.PHONY: database pushdb run clean diff --git a/fuzzers/071-ppips/Makefile b/fuzzers/071-ppips/Makefile index 9a1eb352..a0064299 100644 --- a/fuzzers/071-ppips/Makefile +++ b/fuzzers/071-ppips/Makefile @@ -23,8 +23,11 @@ $(SPECIMENS_OK): bash generate.sh $(subst /OK,,$@) touch $@ +run: + +set -ex; make clean; make; make pushdb + clean: rm -rf specimen_[0-9][0-9][0-9]/ ppips_clbl[ml]_[lr].txt ppips_int_[lr].txt -.PHONY: database pushdb clean +.PHONY: database pushdb run clean From fd35afc32ce34c8d7461cff1ff1f7dbaf124c24e Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 24 Dec 2017 17:04:40 +0100 Subject: [PATCH 3/5] Automate detection of relevant tile types in 070-tileconn Signed-off-by: Clifford Wolf --- fuzzers/070-tileconn/generate.tcl | 58 ++++++++++++++----------------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/fuzzers/070-tileconn/generate.tcl b/fuzzers/070-tileconn/generate.tcl index 06d841c0..630da9a8 100644 --- a/fuzzers/070-tileconn/generate.tcl +++ b/fuzzers/070-tileconn/generate.tcl @@ -47,41 +47,35 @@ proc print_tile_pair {fp t1 t2} { } } -proc print_tile_pairs {fp lst} { - for {set i 1} {$i < [llength $lst]} {incr i} { - print_tile_pair $fp [lindex $lst [expr $i - 1]] [lindex $lst $i] - } -} +set tiles [get_tiles -filter "GRID_POINT_X >= $::env(XRAY_ROI_GRID_X1) && \ + GRID_POINT_X < $::env(XRAY_ROI_GRID_X2) && \ + GRID_POINT_Y >= $::env(XRAY_ROI_GRID_Y1) && \ + GRID_POINT_Y < $::env(XRAY_ROI_GRID_Y2)"] + +set horz_cache [dict create] +set vert_cache [dict create] set fp [open "tilepairs.txt" w] -if {$::env(XRAY_DATABASE) == "artix7"} { - # horizontal pairs - print_tile_pairs $fp "INT_R_X13Y114 CLBLL_R_X13Y114 CLBLL_L_X14Y114 INT_L_X14Y114 INT_R_X15Y114" - print_tile_pairs $fp "VBRK_X29Y125 CLBLM_L_X10Y120 INT_L_X10Y120 INT_R_X11Y120 CLBLM_R_X11Y120 VBRK_X34Y125 CLBLL_L_X12Y120" - print_tile_pairs $fp "CLBLL_R_X17Y113 VFRAME_X47Y118" - print_tile_pairs $fp "HCLK_VBRK_X29Y130 HCLK_CLB_X30Y130 HCLK_L_X31Y130 HCLK_R_X32Y130 HCLK_CLB_X33Y130 HCLK_VBRK_X34Y130 HCLK_CLB_X35Y130" - print_tile_pairs $fp "HCLK_CLB_X46Y130 HCLK_VFRAME_X47Y130" - print_tile_pairs $fp "T_TERM_INT_X31Y156 T_TERM_INT_X32Y156" - print_tile_pairs $fp "BRKH_CLB_X10Y99 BRKH_INT_X10Y99 BRKH_INT_X11Y99 BRKH_CLB_X11Y99" - print_tile_pairs $fp "BRKH_B_TERM_INT_X36Y104 BRKH_B_TERM_INT_X37Y104" +foreach tile $tiles { + set tile_type [get_property TILE_TYPE $tile] + set grid_x [get_property GRID_POINT_X $tile] + set grid_y [get_property GRID_POINT_Y $tile] - # vertical pairs - print_tile_pairs $fp "CLBLM_L_X10Y115 CLBLM_L_X10Y114" - print_tile_pairs $fp "INT_L_X10Y115 INT_L_X10Y114" - print_tile_pairs $fp "INT_R_X11Y115 INT_R_X11Y114" - print_tile_pairs $fp "CLBLM_R_X11Y115 CLBLM_R_X11Y114" - print_tile_pairs $fp "VBRK_X34Y120 VBRK_X34Y119" - print_tile_pairs $fp "CLBLL_L_X12Y115 CLBLL_L_X12Y114" - print_tile_pairs $fp "CLBLL_R_X13Y115 CLBLL_R_X13Y115" - print_tile_pairs $fp "VFRAME_X47Y120 VFRAME_X47Y119" - print_tile_pairs $fp "T_TERM_INT_X31Y156 INT_L_X10Y149" - print_tile_pairs $fp "T_TERM_INT_X32Y156 INT_R_X11Y149" - print_tile_pairs $fp "CLBLM_L_X10Y100 BRKH_CLB_X10Y99" - print_tile_pairs $fp "INT_L_X10Y100 BRKH_INT_X10Y99" - print_tile_pairs $fp "INT_R_X11Y100 BRKH_INT_X11Y99" - print_tile_pairs $fp "CLBLM_R_X11Y100 BRKH_CLB_X11Y99" - print_tile_pairs $fp "INT_L_X12Y100 BRKH_B_TERM_INT_X36Y104" - print_tile_pairs $fp "INT_R_X13Y100 BRKH_B_TERM_INT_X37Y104" + set horz_tile [get_tiles -filter "GRID_POINT_X == [expr $grid_x + 1] && GRID_POINT_Y == $grid_y"] + set vert_tile [get_tiles -filter "GRID_POINT_Y == [expr $grid_y + 1] && GRID_POINT_X == $grid_x"] + + set horz_type [get_property TILE_TYPE $horz_tile] + set vert_type [get_property TILE_TYPE $vert_tile] + + if {! [dict exists $horz_cache $tile_type.$horz_type]} { + dict append horz_cache $tile_type.$horz_type + print_tile_pair $fp $tile $horz_tile + } + + if {! [dict exists $vert_cache $tile_type.$vert_type]} { + dict append vert_cache $tile_type.$vert_type + print_tile_pair $fp $tile $vert_tile + } } close $fp From 9f9c348bfdcce935ad8efbc2ea125cf8f6cbee7d Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 24 Dec 2017 19:39:23 +0100 Subject: [PATCH 4/5] Add roi_tiles TCL helper function, remove XRAY_HCLK_[LR] Signed-off-by: Clifford Wolf --- database/artix7/settings.sh | 2 -- database/kintex7/settings.sh | 2 -- fuzzers/058-hclkpips/generate.tcl | 4 ++-- fuzzers/070-tileconn/generate.tcl | 8 +++----- utils/utils.tcl | 7 +++++++ 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/database/artix7/settings.sh b/database/artix7/settings.sh index 5979e1d0..faa263b9 100644 --- a/database/artix7/settings.sh +++ b/database/artix7/settings.sh @@ -13,7 +13,5 @@ export XRAY_PIN_03="D21" export XRAY_PIN_04="G21" export XRAY_PIN_05="G22" export XRAY_PIN_06="F21" -export XRAY_HCLK_L="HCLK_L_X36Y130" -export XRAY_HCLK_R="HCLK_R_X37Y130" source $(dirname ${BASH_SOURCE[0]})/../../utils/environment.sh diff --git a/database/kintex7/settings.sh b/database/kintex7/settings.sh index 7422040f..b4632b78 100644 --- a/database/kintex7/settings.sh +++ b/database/kintex7/settings.sh @@ -14,7 +14,5 @@ export XRAY_PIN_03="L25" export XRAY_PIN_04="M19" export XRAY_PIN_05="M20" export XRAY_PIN_06="M21" -export XRAY_HCLK_L="HCLK_L_X25Y78" -export XRAY_HCLK_R="HCLK_R_X26Y78" source $(dirname ${BASH_SOURCE[0]})/../../utils/environment.sh diff --git a/fuzzers/058-hclkpips/generate.tcl b/fuzzers/058-hclkpips/generate.tcl index 5ccc35af..52987fe6 100644 --- a/fuzzers/058-hclkpips/generate.tcl +++ b/fuzzers/058-hclkpips/generate.tcl @@ -21,8 +21,8 @@ write_checkpoint -force design.dcp source ../../../utils/utils.tcl -if [regexp "_001$" [pwd]] {set tile [get_tiles $::env(XRAY_HCLK_L)]} -if [regexp "_002$" [pwd]] {set tile [get_tiles $::env(XRAY_HCLK_R)]} +if [regexp "_001$" [pwd]] {set tile [lindex [filter [roi_tiles] {TILE_TYPE == HCLK_L}] 0]} +if [regexp "_002$" [pwd]] {set tile [lindex [filter [roi_tiles] {TILE_TYPE == HCLK_R}] 0]} set net [get_nets o_OBUF] set pips [get_pips -of_objects $tile] diff --git a/fuzzers/070-tileconn/generate.tcl b/fuzzers/070-tileconn/generate.tcl index 630da9a8..9075dfe4 100644 --- a/fuzzers/070-tileconn/generate.tcl +++ b/fuzzers/070-tileconn/generate.tcl @@ -20,6 +20,8 @@ route_design write_checkpoint -force design.dcp # write_bitstream -force design.bit +source ../../../utils/utils.tcl + proc print_tile_pair {fp t1 t2} { set t1 [get_tiles $t1] set t2 [get_tiles $t2] @@ -47,11 +49,7 @@ proc print_tile_pair {fp t1 t2} { } } -set tiles [get_tiles -filter "GRID_POINT_X >= $::env(XRAY_ROI_GRID_X1) && \ - GRID_POINT_X < $::env(XRAY_ROI_GRID_X2) && \ - GRID_POINT_Y >= $::env(XRAY_ROI_GRID_Y1) && \ - GRID_POINT_Y < $::env(XRAY_ROI_GRID_Y2)"] - +set tiles [roi_tiles] set horz_cache [dict create] set vert_cache [dict create] diff --git a/utils/utils.tcl b/utils/utils.tcl index d0714af2..85315063 100644 --- a/utils/utils.tcl +++ b/utils/utils.tcl @@ -55,6 +55,13 @@ proc randplace_pblock {num pblock} { } } +proc roi_tiles {} { + return [get_tiles -filter "GRID_POINT_X >= $::env(XRAY_ROI_GRID_X1) && \ + GRID_POINT_X < $::env(XRAY_ROI_GRID_X2) && \ + GRID_POINT_Y >= $::env(XRAY_ROI_GRID_Y1) && \ + GRID_POINT_Y < $::env(XRAY_ROI_GRID_Y2)"] +} + proc pblock_tiles {pblock} { set clb_tiles [get_tiles -of_objects [get_sites -of_objects [get_pblocks $pblock]]] set int_tiles [get_tiles [regsub -all {CLBL[LM]} $clb_tiles INT]] From 682143de97bdf320b49efee0c5887c9c6e6276e3 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 24 Dec 2017 20:41:37 +0100 Subject: [PATCH 5/5] Get rid of hard-coded tile positions in 071-ppips Signed-off-by: Clifford Wolf --- fuzzers/071-ppips/generate.tcl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fuzzers/071-ppips/generate.tcl b/fuzzers/071-ppips/generate.tcl index 6024e6c1..58313c2f 100644 --- a/fuzzers/071-ppips/generate.tcl +++ b/fuzzers/071-ppips/generate.tcl @@ -60,10 +60,11 @@ proc write_int_ppips_db {filename tile} { close $fp } -write_clb_ppips_db "ppips_clblm_l.txt" CLBLM_L_X10Y115 -write_clb_ppips_db "ppips_clblm_r.txt" CLBLM_R_X11Y115 -write_clb_ppips_db "ppips_clbll_l.txt" CLBLL_L_X12Y115 -write_clb_ppips_db "ppips_clbll_r.txt" CLBLL_R_X13Y115 -write_int_ppips_db "ppips_int_l.txt" INT_L_X12Y115 -write_int_ppips_db "ppips_int_r.txt" INT_R_X13Y115 +foreach tile_type {CLBLM_L CLBLM_R CLBLL_L CLBLL_R INT_L INT_R} { + set tiles [get_tiles -filter "TILE_TYPE == $tile_type"] + if {[llength $tiles] != 0} { + set tile [lindex $tiles 0] + write_clb_ppips_db "ppips_[string tolower $tile_type].txt" $tile + } +}