mirror of https://github.com/openXC7/prjxray.git
Add segprint.py, use in switchboxes minitest
Signed-off-by: Clifford Wolf <clifford@clifford.at> Signed-off-by: Tim 'mithro' Ansell <mithro@mithis.com>
This commit is contained in:
parent
1ce90e7f21
commit
61c51d6a15
|
|
@ -2,9 +2,9 @@
|
|||
set_property FIXED_ROUTE {} [get_nets]
|
||||
route_design -unroute
|
||||
|
||||
route_via x_OBUF {INT_L_X10Y118/NR1BEG1 INT_L_X10Y119/EE2BEG0 INT_L_X12Y119/EE2BEG0 INT_L_X14Y119/SW2BEG0}
|
||||
route_via y_OBUF {INT_L_X10Y116/NR1BEG1 INT_L_X10Y117/EE2BEG0 INT_L_X12Y117/EE2BEG0 INT_L_X14Y117/SW2BEG0}
|
||||
route_via z_OBUF {INT_L_X10Y114/NR1BEG1 INT_L_X10Y115/EE2BEG0 INT_L_X12Y115/EE2BEG0 INT_L_X14Y115/SW2BEG0}
|
||||
route_via x_OBUF {INT_L_X10Y118/NR1BEG1 INT_L_X10Y119/EE2BEG0 INT_L_X12Y119/EE2BEG0 INT_R_X13Y118/SW2END0 INT_R_X13Y118/WW4BEG1}
|
||||
route_via y_OBUF {INT_L_X10Y116/NR1BEG1 INT_L_X10Y117/EE2BEG0 INT_L_X12Y117/EE2BEG0 INT_R_X13Y116/SW2END0 INT_R_X13Y116/WW4BEG1}
|
||||
route_via z_OBUF {INT_L_X10Y114/NR1BEG1 INT_L_X10Y115/EE2BEG0 INT_L_X12Y115/EE2BEG0 INT_R_X13Y114/SW2END0 INT_R_X13Y114/WW4BEG1}
|
||||
|
||||
route_design
|
||||
|
||||
|
|
|
|||
|
|
@ -2,3 +2,5 @@
|
|||
vivado -mode batch -source runme.tcl
|
||||
../../tools/bitread -F $XRAY_ROI_FRAMES -o design.bits -zy design.bit
|
||||
../../tools/bitread -F $XRAY_ROI_FRAMES -o routes.bits -zy routes.bit
|
||||
python3 ../../utils/segprint.py routes.bits INT_L_X12Y119 INT_L_X12Y117 INT_L_X12Y115
|
||||
python3 ../../utils/segprint.py routes.bits INT_R_X13Y118 INT_R_X13Y116 INT_R_X13Y114
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import sys, os, json, re
|
||||
|
||||
# print("Loading %s grid." % os.getenv("XRAY_DATABASE"))
|
||||
with open("%s/../database/%s/tilegrid.json" % (os.path.dirname(sys.modules[__name__].__file__), os.getenv("XRAY_DATABASE")), "r") as f:
|
||||
grid = json.load(f)
|
||||
|
||||
bitdata = dict()
|
||||
|
||||
# print("Loading %s." % sys.argv[1])
|
||||
with open(sys.argv[1], "r") as f:
|
||||
for line in f:
|
||||
line = line.split("_")
|
||||
frame = int(line[1], 16)
|
||||
wordidx = int(line[2], 10)
|
||||
bitidx = int(line[3], 10)
|
||||
|
||||
if frame not in bitdata:
|
||||
bitdata[frame] = dict()
|
||||
|
||||
if wordidx not in bitdata[frame]:
|
||||
bitdata[frame][wordidx] = set()
|
||||
|
||||
bitdata[frame][wordidx].add(bitidx)
|
||||
|
||||
for arg in sys.argv[2:]:
|
||||
if arg in grid["tiles"]:
|
||||
segname = grid["tiles"][arg]["segment"]
|
||||
else:
|
||||
segname = arg
|
||||
|
||||
print()
|
||||
print("seg %s" % segname)
|
||||
|
||||
seginfo = grid["segments"][segname]
|
||||
|
||||
baseframe = int(seginfo["baseaddr"][0], 16)
|
||||
basewordidx = int(seginfo["baseaddr"][1])
|
||||
numframes = int(seginfo["frames"])
|
||||
numwords = int(seginfo["words"])
|
||||
|
||||
for frame in range(baseframe, baseframe+numframes):
|
||||
if frame not in bitdata:
|
||||
continue
|
||||
for wordidx in range(basewordidx, basewordidx+numwords):
|
||||
if wordidx not in bitdata[frame]:
|
||||
continue
|
||||
for bitidx in bitdata[frame][wordidx]:
|
||||
print("bit %02d_%02d" % (frame - baseframe, 32*(wordidx - basewordidx) + bitidx))
|
||||
|
||||
|
|
@ -2,21 +2,26 @@
|
|||
proc route_via {net nodes} {
|
||||
set net [get_nets $net]
|
||||
set fixed_route [get_nodes -of_objects [get_site_pins -filter {DIRECTION == OUT} -of_objects $net]]
|
||||
|
||||
set nodes [get_nodes $nodes]
|
||||
lappend nodes [get_nodes -of_objects [get_site_pins -filter {DIRECTION == IN} -of_objects $net]]
|
||||
|
||||
puts ""
|
||||
puts "Routing net $net:"
|
||||
|
||||
foreach to_node $nodes {
|
||||
set to_node [get_nodes -of_objects [get_wires $to_node]]
|
||||
set from_node [lindex $fixed_route end]
|
||||
set route [find_routing_path -quiet -from $from_node -to $to_node]
|
||||
if {$route == ""} {
|
||||
puts " $from_node -> $to_node: no route found - assuming direct PIP"
|
||||
lappend fixed_route $to_node
|
||||
} {
|
||||
puts " $from_node -> $to_node: $route"
|
||||
set fixed_route [concat $fixed_route [lrange $route 1 end]]
|
||||
}
|
||||
}
|
||||
|
||||
set_property FIXED_ROUTE $fixed_route $net
|
||||
puts ""
|
||||
}
|
||||
|
||||
proc putl {lst} {
|
||||
|
|
|
|||
Loading…
Reference in New Issue