mirror of https://github.com/openXC7/prjxray.git
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:
parent
863233aaf3
commit
93d1ae82f7
28
Makefile
28
Makefile
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Reference in New Issue