From 3ae72161da4092301acd05e10de503a34d3cdc3a Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 26 Nov 2017 03:23:47 +0100 Subject: [PATCH] Add 071-ppips Signed-off-by: Clifford Wolf Signed-off-by: Tim 'mithro' Ansell --- fuzzers/071-ppips/.gitignore | 3 ++ fuzzers/071-ppips/Makefile | 30 +++++++++++++++ fuzzers/071-ppips/generate.sh | 6 +++ fuzzers/071-ppips/generate.tcl | 67 ++++++++++++++++++++++++++++++++++ fuzzers/071-ppips/top.v | 3 ++ 5 files changed, 109 insertions(+) create mode 100644 fuzzers/071-ppips/.gitignore create mode 100644 fuzzers/071-ppips/Makefile create mode 100755 fuzzers/071-ppips/generate.sh create mode 100644 fuzzers/071-ppips/generate.tcl create mode 100644 fuzzers/071-ppips/top.v diff --git a/fuzzers/071-ppips/.gitignore b/fuzzers/071-ppips/.gitignore new file mode 100644 index 00000000..4503981f --- /dev/null +++ b/fuzzers/071-ppips/.gitignore @@ -0,0 +1,3 @@ +/specimen_*/ +/ppips_clbl[ml]_[lr].txt +/ppips_int_[lr].txt diff --git a/fuzzers/071-ppips/Makefile b/fuzzers/071-ppips/Makefile new file mode 100644 index 00000000..9a1eb352 --- /dev/null +++ b/fuzzers/071-ppips/Makefile @@ -0,0 +1,30 @@ + +N := 1 +SPECIMENS := $(addprefix specimen_,$(shell seq -f '%03.0f' $(N))) +SPECIMENS_OK := $(addsuffix /OK,$(SPECIMENS)) + +database: $(SPECIMENS_OK) + cp specimen_001/ppips_clblm_l.txt . + cp specimen_001/ppips_clblm_r.txt . + cp specimen_001/ppips_clbll_l.txt . + cp specimen_001/ppips_clbll_r.txt . + cp specimen_001/ppips_int_l.txt . + cp specimen_001/ppips_int_r.txt . + +pushdb: + cp ppips_clblm_l.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_clblm_l.db + cp ppips_clblm_r.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_clblm_r.db + cp ppips_clbll_l.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_clbll_l.db + cp ppips_clbll_r.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_clbll_r.db + cp ppips_int_l.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_int_l.db + cp ppips_int_r.txt ${XRAY_DATABASE_DIR}/$(XRAY_DATABASE)/ppips_int_r.db + +$(SPECIMENS_OK): + bash generate.sh $(subst /OK,,$@) + touch $@ + +clean: + rm -rf specimen_[0-9][0-9][0-9]/ ppips_clbl[ml]_[lr].txt ppips_int_[lr].txt + +.PHONY: database pushdb clean + diff --git a/fuzzers/071-ppips/generate.sh b/fuzzers/071-ppips/generate.sh new file mode 100755 index 00000000..de2efcbd --- /dev/null +++ b/fuzzers/071-ppips/generate.sh @@ -0,0 +1,6 @@ +#!/bin/bash -x + +source ${XRAY_GENHEADER} + +vivado -mode batch -source ../generate.tcl + diff --git a/fuzzers/071-ppips/generate.tcl b/fuzzers/071-ppips/generate.tcl new file mode 100644 index 00000000..d6e8e6e5 --- /dev/null +++ b/fuzzers/071-ppips/generate.tcl @@ -0,0 +1,67 @@ +create_project -force -part $::env(XRAY_PART) design design + +read_verilog ../top.v +synth_design -top top + +set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_00) IOSTANDARD LVCMOS33" [get_ports a] +set_property -dict "PACKAGE_PIN $::env(XRAY_PIN_01) IOSTANDARD LVCMOS33" [get_ports y] + +create_pblock roi +resize_pblock [get_pblocks roi] -add "$::env(XRAY_ROI)" + +set_property CFGBVS VCCO [current_design] +set_property CONFIG_VOLTAGE 3.3 [current_design] +set_property BITSTREAM.GENERAL.PERFRAMECRC YES [current_design] + +place_design +route_design + +write_checkpoint -force design.dcp +# write_bitstream -force design.bit + +proc write_clb_ppips_db {filename tile} { + set fp [open $filename "w"] + set tile [get_tiles $tile] + set tile_type [get_property TILE_TYPE $tile] + + foreach pip [get_pips -of_objects $tile] { + set dst_wire [get_wires -downhill -of_objects $pip] + if {[get_pips -uphill -of_objects [get_nodes -of_objects $dst_wire]] == $pip} { + set src_wire [get_wires -uphill -of_objects $pip] + puts $fp "${tile_type}.[regsub {.*/} $dst_wire ""].[regsub {.*/} $src_wire ""] always" + } + } + + close $fp +} + +proc write_int_ppips_db {filename tile} { + set fp [open $filename "w"] + set tile [get_tiles $tile] + set tile_type [get_property TILE_TYPE $tile] + + foreach pip [get_pips -of_objects [get_wires $tile/VCC_WIRE]] { + set wire [regsub {.*/} [get_wires -downhill -of_objects $pip] ""] + puts $fp "${tile_type}.${wire}.VCC_WIRE default" + } + + foreach pip [get_pips -of_objects $tile] { + set dst_wire [get_wires -downhill -of_objects $pip] + if {[get_pips -uphill -of_objects [get_nodes -of_objects $dst_wire]] == $pip} { + set src_wire [get_wires -uphill -of_objects $pip] + if {! [regexp "^GCLK_" $src_wire]} { + puts $fp "${tile_type}.[regsub {.*/} $dst_wire ""].[regsub {.*/} $src_wire ""] always" + } + } + } + + close $fp +} + +write_clb_ppips_db "ppips_clblm_l.txt" CLBLM_L_X10Y115 +write_clb_ppips_db "ppips_clblm_r.txt" CLBLM_R_X11Y115 +write_clb_ppips_db "ppips_clbll_l.txt" CLBLL_L_X12Y115 +write_clb_ppips_db "ppips_clbll_r.txt" CLBLL_R_X13Y115 +write_int_ppips_db "ppips_int_l.txt" INT_L_X12Y115 +write_int_ppips_db "ppips_int_r.txt" INT_R_X13Y115 + diff --git a/fuzzers/071-ppips/top.v b/fuzzers/071-ppips/top.v new file mode 100644 index 00000000..5a70fc18 --- /dev/null +++ b/fuzzers/071-ppips/top.v @@ -0,0 +1,3 @@ +module top(input a, output y); + assign y = a; +endmodule