mirror of https://github.com/openXC7/prjxray.git
Merge pull request #606 from antmicro/roi-harness-fix
roi_harness: added zybo support
This commit is contained in:
commit
62fb5290d1
|
|
@ -1,6 +1,8 @@
|
||||||
# XC7A35TICSG324-1L
|
# XC7A35TICSG324-1L
|
||||||
export XRAY_PART=xc7a35tcsg324-1
|
export XRAY_PART=xc7a35tcsg324-1
|
||||||
export XRAY_PINCFG=ARTY-A7-SWBUT
|
export XRAY_PINCFG=ARTY-A7-SWBUT
|
||||||
|
export XRAY_DIN_N_LARGE=8
|
||||||
|
export XRAY_DOUT_N_LARGE=8
|
||||||
|
|
||||||
# For generating DB
|
# For generating DB
|
||||||
export XRAY_PIN_00="G13"
|
export XRAY_PIN_00="G13"
|
||||||
|
|
@ -11,4 +13,23 @@ export XRAY_PIN_04="D13"
|
||||||
export XRAY_PIN_05="J17"
|
export XRAY_PIN_05="J17"
|
||||||
export XRAY_PIN_06="U14"
|
export XRAY_PIN_06="U14"
|
||||||
|
|
||||||
|
# HCLK Tile
|
||||||
|
export XRAY_ROI_HCLK="CLK_HROW_TOP_R_X60Y130/CLK_HROW_CK_BUFHCLK_L0"
|
||||||
|
|
||||||
|
# PITCH
|
||||||
|
export XRAY_PITCH=2
|
||||||
|
|
||||||
|
# INT_L/R for DOUT and DIN
|
||||||
|
export XRAY_ROI_DIN_INT_L_X="0"
|
||||||
|
export XRAY_ROI_DIN_INT_R_X="25"
|
||||||
|
export XRAY_ROI_DOUT_INT_L_X="2"
|
||||||
|
export XRAY_ROI_DOUT_INT_R_X="23"
|
||||||
|
|
||||||
|
# PIPS for DOUT and DIN
|
||||||
|
export XRAY_ROI_DIN_LPIP="EE2BEG2"
|
||||||
|
export XRAY_ROI_DIN_RPIP="WW2BEG1"
|
||||||
|
export XRAY_ROI_DOUT_LPIP="SW6BEG0"
|
||||||
|
export XRAY_ROI_DOUT_RPIP="LH12"
|
||||||
|
|
||||||
|
|
||||||
source $XRAY_DIR/utils/environment.sh
|
source $XRAY_DIR/utils/environment.sh
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
# XC7A35T-1CPG236C
|
# XC7A35T-1CPG236C
|
||||||
export XRAY_PART=xc7a35tcpg236-1
|
export XRAY_PART=xc7a35tcpg236-1
|
||||||
export XRAY_PINCFG=BASYS3-SWBUT
|
export XRAY_PINCFG=BASYS3-SWBUT
|
||||||
|
export XRAY_DIN_N_LARGE=17
|
||||||
|
export XRAY_DOUT_N_LARGE=17
|
||||||
|
|
||||||
# For generating DB
|
# For generating DB
|
||||||
export XRAY_PIN_00="V17"
|
export XRAY_PIN_00="V17"
|
||||||
|
|
@ -11,4 +13,25 @@ export XRAY_PIN_04="W15"
|
||||||
export XRAY_PIN_05="V15"
|
export XRAY_PIN_05="V15"
|
||||||
export XRAY_PIN_06="W14"
|
export XRAY_PIN_06="W14"
|
||||||
|
|
||||||
|
# ROI is in the top left
|
||||||
|
export XRAY_ROI_LARGE=SLICE_X0Y100:SLICE_X35Y149
|
||||||
|
|
||||||
|
# HCLK Tile
|
||||||
|
export XRAY_ROI_HCLK="CLK_HROW_TOP_R_X60Y130/CLK_HROW_CK_BUFHCLK_L0"
|
||||||
|
|
||||||
|
# PITCH
|
||||||
|
export XRAY_PITCH=2
|
||||||
|
|
||||||
|
# INT_L/R for DOUT and DIN
|
||||||
|
export XRAY_ROI_DIN_INT_L_X="0"
|
||||||
|
export XRAY_ROI_DIN_INT_R_X="25"
|
||||||
|
export XRAY_ROI_DOUT_INT_L_X="2"
|
||||||
|
export XRAY_ROI_DOUT_INT_R_X="23"
|
||||||
|
|
||||||
|
# PIPS for DOUT and DIN
|
||||||
|
export XRAY_ROI_DIN_LPIP="EE2BEG2"
|
||||||
|
export XRAY_ROI_DIN_RPIP="WW2BEG1"
|
||||||
|
export XRAY_ROI_DOUT_LPIP="SW6BEG0"
|
||||||
|
export XRAY_ROI_DOUT_RPIP="LH12"
|
||||||
|
|
||||||
source $XRAY_DIR/utils/environment.sh
|
source $XRAY_DIR/utils/environment.sh
|
||||||
|
|
|
||||||
|
|
@ -26,19 +26,23 @@ stat ${XRAY_DIR}/database/${XRAY_DATABASE}/${XRAY_PART}.yaml >/dev/null
|
||||||
# 6x by 18y CLBs (108)
|
# 6x by 18y CLBs (108)
|
||||||
if [ "$SMALL" = Y ] ; then
|
if [ "$SMALL" = Y ] ; then
|
||||||
echo "Design: small"
|
echo "Design: small"
|
||||||
export PITCH=1
|
export PITCH=${XRAY_PITCH:-1}
|
||||||
export DIN_N=${XRAY_DIN_N_SMALL:-8}
|
export DIN_N=${XRAY_DIN_N_SMALL:-8}
|
||||||
export DOUT_N=${XRAY_DOUT_N_SMALL:-8}
|
export DOUT_N=${XRAY_DOUT_N_SMALL:-8}
|
||||||
export XRAY_ROI=${XRAY_ROI_SMALL:-SLICE_X12Y100:SLICE_X17Y117}
|
export XRAY_ROI=${XRAY_ROI_SMALL:-SLICE_X12Y100:SLICE_X17Y117}
|
||||||
# All of CMT X0Y2
|
# All of CMT X0Y2
|
||||||
else
|
else
|
||||||
echo "Design: large"
|
echo "Design: large"
|
||||||
export PITCH=2
|
export PITCH=${XRAY_PITCH:-2}
|
||||||
export DIN_N=${XRAY_DIN_N_LARGE:-8}
|
export DIN_N=${XRAY_DIN_N_LARGE:-8}
|
||||||
export DOUT_N=${XRAY_DOUT_N_LARGE:-8}
|
export DOUT_N=${XRAY_DOUT_N_LARGE:-8}
|
||||||
export XRAY_ROI=${XRAY_ROI_LARGE:-SLICE_X0Y100:SLICE_X35Y149}
|
export XRAY_ROI=${XRAY_ROI_LARGE:-SLICE_X0Y100:SLICE_X35Y149}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo ${DIN_N}
|
||||||
|
echo ${DOUT_N}
|
||||||
|
echo ${XRAY_ROI}
|
||||||
|
|
||||||
mkdir -p $BUILD_DIR
|
mkdir -p $BUILD_DIR
|
||||||
pushd $BUILD_DIR
|
pushd $BUILD_DIR
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,46 @@ if { [info exists ::env(PITCH) ] } {
|
||||||
set PITCH "$::env(PITCH)"
|
set PITCH "$::env(PITCH)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if { [info exists ::env(XRAY_ROI_HCLK)] } {
|
||||||
|
set XRAY_ROI_HCLK "$::env(XRAY_ROI_HCLK)"
|
||||||
|
} else {
|
||||||
|
puts "WARNING: No HCLK has been set"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Setting all the PIPs for DIN and DOUT
|
||||||
|
if { [info exists ::env(XRAY_ROI_DIN_LPIP)] } {
|
||||||
|
set DIN_LPIP "$::env(XRAY_ROI_DIN_LPIP)"
|
||||||
|
} else { puts "Warning: No left pip for DIN has been set" }
|
||||||
|
|
||||||
|
if { [info exists ::env(XRAY_ROI_DIN_RPIP)] } {
|
||||||
|
set DIN_RPIP "$::env(XRAY_ROI_DIN_RPIP)"
|
||||||
|
} else { puts "Warning: No right pip for DIN has been set" }
|
||||||
|
|
||||||
|
if { [info exists ::env(XRAY_ROI_DOUT_LPIP)] } {
|
||||||
|
set DOUT_LPIP "$::env(XRAY_ROI_DOUT_LPIP)"
|
||||||
|
} else { puts "Warning: No left pip for DOUT has been set" }
|
||||||
|
|
||||||
|
if { [info exists ::env(XRAY_ROI_DOUT_RPIP)] } {
|
||||||
|
set DOUT_RPIP "$::env(XRAY_ROI_DOUT_RPIP)"
|
||||||
|
} else { puts "Warning: No right pip for DOUT has been set" }
|
||||||
|
|
||||||
|
# Setting all INT_L/R tiles for DIN and DOUT X values
|
||||||
|
if { [info exists ::env(XRAY_ROI_DIN_INT_L_X)] } {
|
||||||
|
set DIN_INT_L_X "$::env(XRAY_ROI_DIN_INT_L_X)"
|
||||||
|
} else { puts "Warning: No INT_L for DIN has been set" }
|
||||||
|
|
||||||
|
if { [info exists ::env(XRAY_ROI_DIN_INT_R_X)] } {
|
||||||
|
set DIN_INT_R_X "$::env(XRAY_ROI_DIN_INT_R_X)"
|
||||||
|
} else { puts "Warning: No INT_R for DIN has been set" }
|
||||||
|
|
||||||
|
if { [info exists ::env(XRAY_ROI_DOUT_INT_L_X)] } {
|
||||||
|
set DOUT_INT_L_X "$::env(XRAY_ROI_DOUT_INT_L_X)"
|
||||||
|
} else { puts "Warning: No INT_L for DOUT has been set" }
|
||||||
|
|
||||||
|
if { [info exists ::env(XRAY_ROI_DOUT_INT_R_X)] } {
|
||||||
|
set DOUT_INT_R_X "$::env(XRAY_ROI_DOUT_INT_R_X)"
|
||||||
|
} else { puts "Warning: No INT_R for DOUT has been set" }
|
||||||
|
|
||||||
# X12 in the ROI, X10 just to the left
|
# X12 in the ROI, X10 just to the left
|
||||||
# Start at bottom left of ROI and work up
|
# Start at bottom left of ROI and work up
|
||||||
# (IOs are to left)
|
# (IOs are to left)
|
||||||
|
|
@ -40,6 +80,9 @@ set Y_DIN_BASE [expr "$Y_CLK_BASE + $PITCH"]
|
||||||
# Note: can actually go up one more if we want
|
# Note: can actually go up one more if we want
|
||||||
set Y_DOUT_BASE [expr "$XRAY_ROI_Y1 - $DIN_N * $PITCH"]
|
set Y_DOUT_BASE [expr "$XRAY_ROI_Y1 - $DIN_N * $PITCH"]
|
||||||
|
|
||||||
|
# Y_OFFSET: offset amount to shift the components on the y column to avoid hard blocks
|
||||||
|
set Y_OFFSET 24
|
||||||
|
|
||||||
set part "$::env(XRAY_PART)"
|
set part "$::env(XRAY_PART)"
|
||||||
set pincfg ""
|
set pincfg ""
|
||||||
if { [info exists ::env(XRAY_PINCFG) ] } {
|
if { [info exists ::env(XRAY_PINCFG) ] } {
|
||||||
|
|
@ -129,6 +172,7 @@ if {$part eq "xc7a50tfgg484-1"} {
|
||||||
set pin [lindex $leds $i]
|
set pin [lindex $leds $i]
|
||||||
set net2pin(dout[$i]) $pin
|
set net2pin(dout[$i]) $pin
|
||||||
}
|
}
|
||||||
|
|
||||||
# Arty A7 pmod
|
# Arty A7 pmod
|
||||||
# Disabled per above
|
# Disabled per above
|
||||||
} elseif {$pincfg eq "ARTY-A7-PMOD"} {
|
} elseif {$pincfg eq "ARTY-A7-PMOD"} {
|
||||||
|
|
@ -210,6 +254,9 @@ if {$part eq "xc7a50tfgg484-1"} {
|
||||||
set net2pin(dout[$i]) $pin
|
set net2pin(dout[$i]) $pin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# setting Y_OFFSET to zero only for zynq parts
|
||||||
|
set Y_OFFSET 0
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
error "Unsupported config $pincfg"
|
error "Unsupported config $pincfg"
|
||||||
}
|
}
|
||||||
|
|
@ -315,7 +362,7 @@ if {$fixed_xdc eq ""} {
|
||||||
puts "Placing ROI inputs"
|
puts "Placing ROI inputs"
|
||||||
set y_left $Y_DIN_BASE
|
set y_left $Y_DIN_BASE
|
||||||
# Shift y_right up to avoid PCIe block that makes routing hard.
|
# Shift y_right up to avoid PCIe block that makes routing hard.
|
||||||
set y_right [expr {$Y_DIN_BASE + 24}]
|
set y_right [expr {$Y_DIN_BASE + $Y_OFFSET}]
|
||||||
for {set i 0} {$i < $DIN_N} {incr i} {
|
for {set i 0} {$i < $DIN_N} {incr i} {
|
||||||
if {[net_bank_left "din[$i]"]} {
|
if {[net_bank_left "din[$i]"]} {
|
||||||
loc_lut_in $i $XRAY_ROI_X0 $y_left
|
loc_lut_in $i $XRAY_ROI_X0 $y_left
|
||||||
|
|
@ -423,7 +470,7 @@ if {$fixed_xdc eq ""} {
|
||||||
# It will go to high level interconnect that goes everywhere
|
# It will go to high level interconnect that goes everywhere
|
||||||
# But we still need to record something, so lets force a route
|
# But we still need to record something, so lets force a route
|
||||||
# FIXME: very ROI specific
|
# FIXME: very ROI specific
|
||||||
set node "CLK_HROW_TOP_R_X60Y130/CLK_HROW_CK_BUFHCLK_L0"
|
set node "$XRAY_ROI_HCLK"
|
||||||
set wire [node2wire $node]
|
set wire [node2wire $node]
|
||||||
route_via2 "clk_IBUF_BUFG" "$node"
|
route_via2 "clk_IBUF_BUFG" "$node"
|
||||||
set net "clk"
|
set net "clk"
|
||||||
|
|
@ -433,15 +480,15 @@ if {$fixed_xdc eq ""} {
|
||||||
puts "Routing ROI inputs"
|
puts "Routing ROI inputs"
|
||||||
# Arbitrary offset as observed
|
# Arbitrary offset as observed
|
||||||
set y_left $Y_DIN_BASE
|
set y_left $Y_DIN_BASE
|
||||||
set y_right [expr {$Y_DIN_BASE + 24}]
|
set y_right [expr {$Y_DIN_BASE + $Y_OFFSET}]
|
||||||
for {set i 0} {$i < $DIN_N} {incr i} {
|
for {set i 0} {$i < $DIN_N} {incr i} {
|
||||||
# needed to force routes away to avoid looping into ROI
|
# needed to force routes away to avoid looping into ROI
|
||||||
if {[net_bank_left "din[$i]"]} {
|
if {[net_bank_left "din[$i]"]} {
|
||||||
set node "INT_L_X0Y${y_left}/EE2BEG2"
|
set node "INT_L_X${DIN_INT_L_X}Y${y_left}/${DIN_LPIP}"
|
||||||
route_via2 "din_IBUF[$i]" "$node"
|
route_via2 "din_IBUF[$i]" "$node"
|
||||||
set y_left [expr {$y_left + $PITCH}]
|
set y_left [expr {$y_left + $PITCH}]
|
||||||
} else {
|
} else {
|
||||||
set node "INT_R_X25Y${y_right}/WW2BEG1"
|
set node "INT_R_X${DIN_INT_R_X}Y${y_right}/${DIN_RPIP}"
|
||||||
route_via2 "din_IBUF[$i]" "$node"
|
route_via2 "din_IBUF[$i]" "$node"
|
||||||
set y_right [expr {$y_right + $PITCH}]
|
set y_right [expr {$y_right + $PITCH}]
|
||||||
}
|
}
|
||||||
|
|
@ -460,25 +507,12 @@ if {$fixed_xdc eq ""} {
|
||||||
set y_right [expr {$Y_DOUT_BASE + 0}]
|
set y_right [expr {$Y_DOUT_BASE + 0}]
|
||||||
for {set i 0} {$i < $DOUT_N} {incr i} {
|
for {set i 0} {$i < $DOUT_N} {incr i} {
|
||||||
if {[net_bank_left "dout[$i]"]} {
|
if {[net_bank_left "dout[$i]"]} {
|
||||||
# XXX: find a better solution if we need harness long term
|
set node "INT_L_X${DOUT_INT_L_X}Y${y_left}/${DOUT_LPIP}"
|
||||||
# works on 50t but not 35t
|
route_via2 "roi/dout[$i]" "$node"
|
||||||
if {$part eq "xc7a50tfgg484-1"} {
|
|
||||||
set node "INT_L_X1Y${y_left}/WW2BEG0"
|
|
||||||
route_via2 "roi/dout[$i]" "$node"
|
|
||||||
# works on 35t but not 50t
|
|
||||||
} elseif {$part eq "xc7a35tcsg324-1"} {
|
|
||||||
set node "INT_L_X2Y${y_left}/SW6BEG0"
|
|
||||||
route_via2 "roi/dout[$i]" "$node"
|
|
||||||
} elseif {$part eq "xc7a35tcpg236-1"} {
|
|
||||||
set node "INT_L_X2Y${y_left}/SW6BEG0"
|
|
||||||
route_via2 "roi/dout[$i]" "$node"
|
|
||||||
} else {
|
|
||||||
error "Routing: unsupported part $part"
|
|
||||||
}
|
|
||||||
set y_left [expr {$y_left + $PITCH}]
|
set y_left [expr {$y_left + $PITCH}]
|
||||||
# XXX: only care about right ports on Arty
|
# XXX: only care about right ports on Arty
|
||||||
} else {
|
} else {
|
||||||
set node "INT_R_X23Y${y_right}/LH12"
|
set node "INT_R_X${DOUT_INT_R_X}Y${y_right}/${DOUT_RPIP}"
|
||||||
route_via2 "roi/dout[$i]" "$node"
|
route_via2 "roi/dout[$i]" "$node"
|
||||||
set y_right [expr {$y_right + $PITCH}]
|
set y_right [expr {$y_right + $PITCH}]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,22 @@ export XRAY_PIN_06="K19"
|
||||||
# ROI is in top right
|
# ROI is in top right
|
||||||
export XRAY_ROI_LARGE="SLICE_X22Y50:SLICE_X43Y99"
|
export XRAY_ROI_LARGE="SLICE_X22Y50:SLICE_X43Y99"
|
||||||
|
|
||||||
|
# HCLK Tile
|
||||||
|
export XRAY_ROI_HCLK="CLK_HROW_TOP_R_X82Y78/CLK_HROW_CK_BUFHCLK_R0"
|
||||||
|
|
||||||
|
# PITCH
|
||||||
|
export XRAY_PITCH=3
|
||||||
|
|
||||||
|
# INT_L/R for DOUT and DIN
|
||||||
|
export XRAY_ROI_DIN_INT_L_X=
|
||||||
|
export XRAY_ROI_DIN_INT_R_X="31"
|
||||||
|
export XRAY_ROI_DOUT_INT_L_X=
|
||||||
|
export XRAY_ROI_DOUT_INT_R_X="29"
|
||||||
|
|
||||||
|
# PIPS for DOUT and DIN
|
||||||
|
export XRAY_ROI_DIN_LPIP=
|
||||||
|
export XRAY_ROI_DIN_RPIP="WW2BEG1"
|
||||||
|
export XRAY_ROI_DOUT_LPIP=
|
||||||
|
export XRAY_ROI_DOUT_RPIP="EE2BEG0"
|
||||||
|
|
||||||
source $XRAY_DIR/utils/environment.sh
|
source $XRAY_DIR/utils/environment.sh
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue