mirror of https://github.com/openXC7/prjxray.git
iob minitest: sweep misc parameters
Signed-off-by: John McMaster <johndmcmaster@gmail.com>
This commit is contained in:
parent
661615a40a
commit
3fa5df7cb1
|
|
@ -0,0 +1,9 @@
|
|||
source "$::env(SRC_DIR)/template.tcl"
|
||||
|
||||
# set vals "0 4 8 12 16 24"
|
||||
# ERROR: [Common 17-69] Command failed: Illegal DRIVE_STRENGTH value '0' for standard 'LVCMOS33'.
|
||||
# Legal values: 4, 8, 12, 16
|
||||
set prop DRIVE
|
||||
set port [get_ports do]
|
||||
source "$::env(SRC_DIR)/sweep.tcl"
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
source "$::env(SRC_DIR)/template.tcl"
|
||||
|
||||
set prop IOSTANDARD
|
||||
set port [get_ports do]
|
||||
source "$::env(SRC_DIR)/sweep.tcl"
|
||||
|
||||
|
|
@ -1,4 +1,9 @@
|
|||
all: build/env build/roi_roi_io.diff
|
||||
all: build/env build/roi_roi_io.diff \
|
||||
build/PULLTYPE/run.ok \
|
||||
build/SLEW/run.ok \
|
||||
build/DRIVE/run.ok \
|
||||
build/IOSTANDARD/run.ok \
|
||||
|
||||
|
||||
clean:
|
||||
rm -rf build
|
||||
|
|
@ -10,4 +15,18 @@ build/env:
|
|||
build/roi_roi_io.diff:
|
||||
$(MAKE) -f diff.mk OUT_DIFF=build/roi_io.diff PRJL=roi_io_a PRJR=roi_io_b
|
||||
|
||||
build/PULLTYPE/run.ok:
|
||||
PROJECT=PULLTYPE bash runme_tcl.sh
|
||||
diff build/PULLTYPE/design_{PULLDOWN,KEEPER}.bits || true
|
||||
diff build/PULLTYPE/design_{PULLDOWN,PULLUP}.bits || true
|
||||
diff build/PULLTYPE/design_{PULLDOWN,NONE}.bits || true
|
||||
|
||||
build/SLEW/run.ok:
|
||||
PROJECT=SLEW bash runme_tcl.sh
|
||||
|
||||
build/DRIVE/run.ok:
|
||||
PROJECT=DRIVE bash runme_tcl.sh
|
||||
|
||||
build/IOSTANDARD/run.ok:
|
||||
PROJECT=IOSTANDARD bash runme_tcl.sh
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
source "$::env(SRC_DIR)/template.tcl"
|
||||
|
||||
set port [get_ports di]
|
||||
|
||||
set_property PULLTYPE "" $port
|
||||
write_checkpoint -force design_NONE.dcp
|
||||
write_bitstream -force design_NONE.bit
|
||||
|
||||
set vals "KEEPER PULLUP PULLDOWN"
|
||||
foreach {val} $vals {
|
||||
set_property PULLTYPE $val $port
|
||||
write_checkpoint -force design_$val.dcp
|
||||
write_bitstream -force design_$val.bit
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# PULLTYPE
|
||||
|
||||
PULLTYPE 28 29 30
|
||||
NONE X
|
||||
KEEPER X X
|
||||
PULLDOWN
|
||||
PULLUP X X
|
||||
|
||||
|
||||
# DRIVE
|
||||
|
||||
DRIVE A00 A02 A08 A10 B09 B01
|
||||
0 FIXME
|
||||
4 X X X
|
||||
8 X X X
|
||||
12 X X X
|
||||
16 X X X
|
||||
24 FIXME
|
||||
|
||||
|
||||
# IOSTANDARD
|
||||
|
||||
Effects bits, TBD exactly how
|
||||
Sample output:
|
||||
|
||||
diff LVCMOS33.bits LVTTL.bits
|
||||
< bit_00020026_006_00
|
||||
> bit_00020026_006_08
|
||||
|
||||
diff LVCMOS33.bits PCI33_3.bits
|
||||
< bit_00020026_006_02
|
||||
< bit_00020026_006_18
|
||||
< bit_00020026_006_22
|
||||
> bit_00020026_006_10
|
||||
> bit_00020026_006_16
|
||||
> bit_00020026_006_20
|
||||
> bit_00020027_006_11
|
||||
> bit_00020027_006_15
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
source "$::env(SRC_DIR)/template.tcl"
|
||||
|
||||
# set vals "SLOW MEDIUM FAST"
|
||||
# ERROR: [Common 17-69] Command failed: Slew type 'MEDIUM' is not supported by I/O standard 'LVCMOS33'
|
||||
set prop SLEW
|
||||
set port [get_ports do]
|
||||
source "$::env(SRC_DIR)/sweep.tcl"
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
all: $(OUT_DIFF)
|
||||
|
||||
$(OUT_DIFF): build/$(PRJL)/design.bits build/$(PRJR)/design.bits
|
||||
diff build/$(PRJL)/design.bits build/$(PRJR)/design.bits >$(OUT_DIFF) || true
|
||||
|
||||
build/$(PRJL)/design.bits:
|
||||
PROJECT=$(PRJL) bash runme_tcl.sh
|
||||
|
||||
build/$(PRJR)/design.bits:
|
||||
PROJECT=$(PRJR) bash runme_tcl.sh
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
: "${PROJECT:?Need to set PROJECT non-empty}"
|
||||
|
||||
# Create build dir
|
||||
export SRC_DIR=$PWD
|
||||
BUILD_DIR=build/$PROJECT
|
||||
mkdir -p $BUILD_DIR
|
||||
cd $BUILD_DIR
|
||||
|
||||
export TOP_V=$SRC_DIR/tcl.v
|
||||
|
||||
vivado -mode batch -source $SRC_DIR/$PROJECT.tcl
|
||||
for x in design*.bit; do
|
||||
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x
|
||||
done
|
||||
test -z "$(fgrep CRITICAL vivado.log)"
|
||||
touch run.ok
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Sweep all values of $prop on given I/O $port
|
||||
# Write out bitstream for all legal values
|
||||
|
||||
set vals [list_property_value $prop $port]
|
||||
foreach {val} $vals {
|
||||
puts $val
|
||||
# Not all listable properties are settable
|
||||
# Its easiest to try setting and see if it sticks
|
||||
set_property -quiet $prop $val $port
|
||||
set got [get_property $prop $port]
|
||||
if {"$got" != "$val"} {
|
||||
puts " Skipping: wanted $val, got $got"
|
||||
continue
|
||||
}
|
||||
if {[catch {write_bitstream -force design_$val.bit} issue]} {
|
||||
puts "WARNING failed to write: $issue"
|
||||
continue
|
||||
}
|
||||
# Only write checkpoints for acceptable bitstreams
|
||||
write_checkpoint -force design_$val.dcp
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
module top(input clk, stb, di, output do);
|
||||
localparam integer DIN_N = 256;
|
||||
localparam integer DOUT_N = 256;
|
||||
|
||||
reg [DIN_N-1:0] din;
|
||||
wire [DOUT_N-1:0] dout;
|
||||
|
||||
reg [DIN_N-1:0] din_shr;
|
||||
reg [DOUT_N-1:0] dout_shr;
|
||||
|
||||
always @(posedge clk) begin
|
||||
din_shr <= {din_shr, di};
|
||||
dout_shr <= {dout_shr, din_shr[DIN_N-1]};
|
||||
if (stb) begin
|
||||
din <= din_shr;
|
||||
dout_shr <= dout;
|
||||
end
|
||||
end
|
||||
|
||||
assign do = dout_shr[DOUT_N-1];
|
||||
|
||||
roi
|
||||
roi (
|
||||
.clk(clk),
|
||||
.din(din),
|
||||
.dout(dout)
|
||||
);
|
||||
endmodule
|
||||
|
||||
module roi(input clk, input [255:0] din, output [255:0] dout);
|
||||
assign dout = din;
|
||||
endmodule
|
||||
|
||||
/*
|
||||
module top (input i, output o);
|
||||
assign o = i;
|
||||
endmodule
|
||||
*/
|
||||
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# Create a simple design with a few IOs
|
||||
|
||||
create_project -force -part $::env(XRAY_PART) design design
|
||||
read_verilog $::env(TOP_V)
|
||||
synth_design -top top -flatten_hierarchy none
|
||||
|
||||
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_00) IOSTANDARD LVCMOS33" [get_ports clk]
|
||||
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_01) IOSTANDARD LVCMOS33" [get_ports stb]
|
||||
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_02) IOSTANDARD LVCMOS33" [get_ports di]
|
||||
set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_03) IOSTANDARD LVCMOS33" [get_ports do]
|
||||
|
||||
set_property CFGBVS VCCO [current_design]
|
||||
set_property CONFIG_VOLTAGE 3.3 [current_design]
|
||||
set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design]
|
||||
|
||||
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF]
|
||||
|
||||
place_design
|
||||
route_design
|
||||
|
||||
Loading…
Reference in New Issue