Enable the generation of extra part-dependents files

This change affects the extra-db target, by adding also the generation
of other part-dependent files, such as tilegrid, tileconn, and others.

Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
This commit is contained in:
Alessandro Comodi 2020-01-14 16:23:05 +01:00
parent 863233aaf3
commit 93d1ae82f7
10 changed files with 139 additions and 10 deletions

View File

@ -139,9 +139,31 @@ $(foreach DB,$(DATABASES),$(eval $(call database,$(DB))))
.PHONY: db-extras-artix7 db-extras-kintex7 db-extras-zynq7
# Targets related to Project X-Ray parts
# --------------------------------------
ARTIX_PARTS=artix50t artix200t
ZYNQ_PARTS=zynq020
KINTEX_PARTS=kintex70t
XRAY_PARTS=${ARTIX_PARTS} ${ZYNQ_PARTS} ${KINTEX_PARTS}
define multiple-parts
# $(1): PART to be used
db-part-only-$(1):
+source settings/$(1).sh && $(MAKE) -C fuzzers part_only
endef
$(foreach PART,$(XRAY_PARTS),$(eval $(call multiple-parts,$(PART))))
db-extras-artix7-parts: $(addprefix db-part-only-,$(ARTIX_PARTS))
db-extras-artix7:
+source minitests/roi_harness/basys3-swbut.sh && $(MAKE) -C fuzzers part_only
+source minitests/roi_harness/arty-uart.sh && $(MAKE) -C fuzzers part_only
+source minitests/roi_harness/basys3-swbut.sh && $(MAKE) -C fuzzers roi_only
+source minitests/roi_harness/arty-uart.sh && $(MAKE) -C fuzzers roi_only
+source minitests/roi_harness/basys3-swbut.sh && \
$(MAKE) -C minitests/roi_harness \
HARNESS_DIR=$(XRAY_DATABASE_DIR)/artix7/harness/basys3/swbut run copy
@ -158,6 +180,8 @@ db-extras-artix7:
+source minitests/roi_harness/arty-swbut.sh && \
$(MAKE) -C minitests/roi_harness \
HARNESS_DIR=$(XRAY_DATABASE_DIR)/artix7/harness/arty-a7/swbut run copy
# Generate multiple part support
+$(MAKE) db-extras-artix7-parts
db-extras-kintex7:
@true

View File

@ -3,6 +3,7 @@ source "$::env(FUZDIR)/util.tcl"
proc write_tiles_txt {} {
# Get all tiles, ie not just the selected LUTs
set tiles [get_tiles]
set not_allowed_sites [get_sites -of_objects [get_pblocks exclude_roi]]
# Write tiles.txt with site metadata
set fp [open "tiles.txt" w]
@ -12,6 +13,23 @@ proc write_tiles_txt {} {
set grid_x [get_property GRID_POINT_X $tile]
set grid_y [get_property GRID_POINT_Y $tile]
set sites [get_sites -quiet -of_objects $tile]
# There are some sites which are not allowed to be placed.
# This check excludes tiles in the EXCLUDE_ROI pblock
# be added to tilegrid.json
set skip_tile 0
foreach site $sites {
set res [lsearch $not_allowed_sites $site]
if { $res != -1 } {
set skip_tile 1
break
}
}
if { $skip_tile == 1 } {
continue
}
set typed_sites {}
set clock_region "NA"
@ -41,7 +59,7 @@ proc write_tiles_txt {} {
proc run {} {
# Generate grid of entire part
make_project_roi XRAY_ROI_TILEGRID
make_project_roi XRAY_ROI_TILEGRID XRAY_EXCLUDE_ROI_TILEGRID
place_design
route_design

View File

@ -138,10 +138,10 @@ proc assign_iobs {} {
proc make_project {} {
# Generate .bit only over ROI
make_project_roi XRAY_ROI_TILEGRID
make_project_roi XRAY_ROI_TILEGRID XRAY_EXCLUDE_ROI_TILEGRID
}
proc make_project_roi { roi_var } {
proc make_project_roi { roi_var exclude_roi_var } {
# 6 CMTs in our reference part
# What is the largest?
set n_di 16
@ -160,6 +160,13 @@ proc make_project_roi { roi_var } {
resize_pblock [get_pblocks roi] -add "$roi"
}
create_pblock exclude_roi
add_cells_to_pblock [get_pblocks roi] [get_cells roi]
foreach roi "$::env($exclude_roi_var)" {
puts "ROI: $roi"
resize_pblock [get_pblocks exclude_roi] -add "$roi"
}
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design]

View File

@ -127,11 +127,46 @@ $(eval $(call fuzzer,100-dsp-mskpat,005-tilegrid))
quick:
$(MAKE) QUICK=Y
# part_only runs the fuzzers required for supporting additional parts.
# Note: In theory this includes 005-tilegrid, but there isn't support for
# multiple tilegrid's per family at this time.
part_only:
# roi_only runs the fuzzers required for supporting additional parts when building
# an roi harness.
roi_only:
+$(MAKE) -C 001-part-yaml run
+$(MAKE) -C 075-pins run
.PHONY: all clean clean_fuzzers clean_logs quick part_only
# Part only targets
# -----------------
part_only_yaml:
echo ${XRAY_FAMILY_DIR}/${XRAY_PART}/part.yaml
+$(MAKE) -C 001-part-yaml run
cp ${XRAY_FAMILY_DIR}/${XRAY_PART}.yaml ${XRAY_FAMILY_DIR}/${XRAY_PART}/part.yaml
cp ${XRAY_FAMILY_DIR}/${XRAY_PART}.json ${XRAY_FAMILY_DIR}/${XRAY_PART}/part.json
part_only_tilegrid:
+$(MAKE) -C 005-tilegrid run
cp ${XRAY_FAMILY_DIR}/tilegrid.json ${XRAY_FAMILY_DIR}/${XRAY_PART}/tilegrid.json
part_only_tileconn:
+$(MAKE) -C 072-ordered_wires run
+$(MAKE) -C 073-get_counts run
+$(MAKE) -C 074-dump_all run
cp ${XRAY_FAMILY_DIR}/tileconn.json ${XRAY_FAMILY_DIR}/${XRAY_PART}/tileconn.json
part_only_pins:
+$(MAKE) -C 075-pins run
cp ${XRAY_FAMILY_DIR}/${XRAY_PART}_package_pins.csv ${XRAY_FAMILY_DIR}/${XRAY_PART}/package_pins.csv
part_only:
# Create PART-specific directory
mkdir -p ${XRAY_FAMILY_DIR}/${XRAY_PART}
# Generate YAML
+$(MAKE) part_only_yaml
# Generate Tile grid
+$(MAKE) part_only_tilegrid
# Generate Tile connections
+$(MAKE) part_only_tileconn
# Generate package pins
+$(MAKE) part_only_pins
.PHONY: all clean clean_fuzzers clean_logs quick part_only roi_only

19
settings/artix200t.sh Normal file
View File

@ -0,0 +1,19 @@
export XRAY_DATABASE="artix7"
export XRAY_PART="xc7a200tffg1156-1"
export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
# All CLB's in part, all BRAM's in part, all DSP's in part.
# tcl queries IOB => don't bother adding
export XRAY_ROI_TILEGRID="SLICE_X0Y0:SLICE_X163Y249 RAMB18_X0Y0:RAMB18_X8Y99 RAMB36_X0Y0:RAMB36_X8Y49 DSP48_X0Y0:DSP48_X8Y99 IOB_X0Y0:IOB_X1Y249"
export XRAY_EXCLUDE_ROI_TILEGRID="SLICE_X82Y200:SLICE_X83Y249 SLICE_X82Y0:SLICE_X83Y49"
export XRAY_PIN_00="R26"
export XRAY_PIN_01="P26"
export XRAY_PIN_02="N26"
export XRAY_PIN_03="M27"
export XRAY_PIN_04="U25"
export XRAY_PIN_05="T25"
export XRAY_PIN_06="P24"
source $(dirname ${BASH_SOURCE[0]})/../utils/environment.sh

19
settings/artix50t.sh Normal file
View File

@ -0,0 +1,19 @@
export XRAY_DATABASE="artix7"
export XRAY_PART="xc7a50tfgg484-1"
export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
# All CLB's in part, all BRAM's in part, all DSP's in part.
# tcl queries IOB => don't bother adding
export XRAY_ROI_TILEGRID="SLICE_X0Y0:SLICE_X65Y99 SLICE_X0Y100:SLICE_X57Y149 RAMB18_X0Y0:RAMB18_X1Y59 RAMB36_X0Y0:RAMB36_X1Y29 RAMB18_X2Y0:RAMB18_X2Y39 RAMB36_X2Y0:RAMB36_X2Y19 DSP48_X0Y0:DSP48_X1Y59"
export XRAY_EXCLUDE_ROI_TILEGRID=""
export XRAY_PIN_00="E22"
export XRAY_PIN_01="D22"
export XRAY_PIN_02="E21"
export XRAY_PIN_03="D21"
export XRAY_PIN_04="G21"
export XRAY_PIN_05="G22"
export XRAY_PIN_06="F21"
source $(dirname ${BASH_SOURCE[0]})/../utils/environment.sh

View File

@ -6,6 +6,8 @@ export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
# tcl queries IOB => don't bother adding
export XRAY_ROI_TILEGRID="SLICE_X0Y0:SLICE_X65Y99 SLICE_X0Y100:SLICE_X57Y149 RAMB18_X0Y0:RAMB18_X1Y59 RAMB36_X0Y0:RAMB36_X1Y29 RAMB18_X2Y0:RAMB18_X2Y39 RAMB36_X2Y0:RAMB36_X2Y19 DSP48_X0Y0:DSP48_X1Y59"
export XRAY_EXCLUDE_ROI_TILEGRID=""
# These settings must remain in sync
export XRAY_ROI="SLICE_X0Y100:SLICE_X35Y149 RAMB18_X0Y40:RAMB18_X0Y59 RAMB36_X0Y20:RAMB36_X0Y29 DSP48_X0Y40:DSP48_X0Y59 IOB_X0Y100:IOB_X0Y149"
# Most of CMT X0Y2.

View File

@ -5,6 +5,8 @@ export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
# FIXME: make entire part
export XRAY_ROI_TILEGRID="SLICE_X0Y50:SLICE_X19Y99 DSP48_X0Y20:DSP48_X0Y39 RAMB18_X0Y20:RAMB18_X0Y39 RAMB36_X0Y10:RAMB36_X0Y19"
export XRAY_EXCLUDE_ROI_TILEGRID=""
# These settings must remain in sync
export XRAY_ROI="SLICE_X0Y50:SLICE_X19Y99 DSP48_X0Y20:DSP48_X0Y39 RAMB18_X0Y20:RAMB18_X0Y39 RAMB36_X0Y10:RAMB36_X0Y19 IOB_X0Y50:IOB_X0Y99"
# Part of CMT X0Y1

View File

@ -5,6 +5,8 @@ export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
# All CLB's in part, all BRAM's in part, all DSP's in part.
export XRAY_ROI_TILEGRID="SLICE_X0Y0:SLICE_X43Y99 RAMB18_X0Y0:RAMB18_X2Y39 RAMB36_X0Y0:RAMB36_X2Y19 DSP48_X0Y0:DSP48_X1Y39"
export XRAY_EXCLUDE_ROI_TILEGRID=""
# These settings must remain in sync
export XRAY_ROI="SLICE_X00Y50:SLICE_X43Y99 RAMB18_X0Y20:RAMB18_X2Y39 RAMB36_X0Y10:RAMB36_X2Y19 IOB_X0Y50:IOB_X0Y99"

View File

@ -10,6 +10,7 @@ export XRAY_DIR="$( dirname "$XRAY_UTILS_DIR" )"
export XRAY_DATABASE_DIR="${XRAY_DIR}/database"
export XRAY_TOOLS_DIR="${XRAY_DIR}/build/tools"
export XRAY_FUZZERS_DIR="${XRAY_DIR}/fuzzers"
export XRAY_FAMILY_DIR="${XRAY_DATABASE_DIR}/${XRAY_DATABASE}"
if [ -e "${XRAY_DIR}/env/bin/activate" ]; then
source "${XRAY_DIR}/env/bin/activate"