| # ROI_HARNESS Minitest | 
 |  | 
 | ## Purpose | 
 |  | 
 | Creates an harness bitstream which maps peripherals into a region of interest | 
 | which can be reconfigured. | 
 |  | 
 | The currently supported boards are; | 
 |  | 
 |  * Artix 7 boards; | 
 |   - [Basys 3](https://github.com/SymbiFlow/prjxray-db/tree/master/artix7/harness#basys-3) | 
 |   - [Arty A7-35T](https://github.com/SymbiFlow/prjxray-db/tree/master/artix7/harness#arty-a7-35t) | 
 |  | 
 |  * Zynq boards; | 
 |   - [Zybo Z7-10](https://github.com/SymbiFlow/prjxray-db/tree/master/zynq7/harness#zybo-z7-10) | 
 |  | 
 | The following configurations are supported; | 
 |  | 
 |  * SWBUT - Harness which maps a board's switches, buttons and LEDs into the | 
 |    region of interest (plus clock). | 
 |  | 
 |  | 
 |  * PMOD - Harness which maps a board's PMOD connectors into the region of | 
 |    interest (plus a clock). | 
 |  | 
 |  * UART - Harness which maps a board's UART | 
 |  | 
 |  | 
 | "ARTY-A7-SWBUT" | 
 |         # 4 switches then 4 buttons | 
 |         A8 C11 C10 A10  D9 C9 B9 B8 | 
 |         # 4 LEDs then 4 RGB LEDs (green only) | 
 |         H5 J5 T9 T10  F6 J4 J2 H6 | 
 |  | 
 |         # clock | 
 | 	E3 | 
 |  | 
 | "ARTY-A7-PMOD" | 
 |         # CLK on Pmod JA | 
 | 	G13 B11 A11 D12  D13 B18 A18 K16 | 
 |         # DIN on Pmod JB | 
 |         E15 E16 D15 C15  J17 J18 K15 J15 | 
 |         # DOUT on Pmod JC | 
 | 	U12 V12 V10 V11  U14 V14 T13 U13 | 
 |  | 
 | "ARTY-A7-UART" | 
 |         # RST button and UART_RX | 
 |         C2 A9 | 
 |         # LD7 and UART_TX | 
 |         T10 D10 | 
 |         # 100 MHz CLK onboard | 
 |         E3 | 
 |  | 
 | "BASYS3-SWBUT" | 
 |         # Slide switch pins | 
 |         V17 V16 W16 W17 W15 V15 W14 W13 V2 T3 T2 R3 W2 U1 T1 R2 | 
 | 	# LEDs pins | 
 |         U16 E19 U19 V19 W18 U15 U14 V14 V13 V3 W3 U3 P3 N3 P1 L1 | 
 |  | 
 |         # UART | 
 |         B18 # ins | 
 |         A18 # outs | 
 |  | 
 |         # 100 MHz CLK onboard | 
 |         W5 | 
 |  | 
 | "ZYBOZ7-SWBUT" | 
 |         # J15 - UART_RX - JE3 | 
 |         # G15 - SW0 | 
 |         # K18 - BTN0 | 
 |         # K19 - BTN1 | 
 |         J15  G15  K18 K19 | 
 |  | 
 |         # H15 - UART_TX - JE4 | 
 |         # E17 - ETH PHY reset (active low, keep high for 125 MHz clock) | 
 |         # M14 - LD0 | 
 |         # G14 - LD2 | 
 |         # M15 - LD1 | 
 |         # D18 - LD3 | 
 |  | 
 |         # 125 MHz CLK onboard | 
 |         K17 | 
 |  | 
 | ## Quickstart | 
 |  | 
 | ``` | 
 | source settings/artix7.sh | 
 | cd minitests/roi_harness | 
 | source arty-swbut.sh | 
 | make clean | 
 | make copy | 
 | ``` | 
 |  | 
 | ## How it works | 
 |  | 
 | Basic idea: | 
 | - LOC LUTs in the ROI to terminate input and output routing | 
 | - Let Vivado LOC the rest of the logic | 
 | - Manually route signals in and out of the ROI enough to avoid routing loops into the ROI | 
 | - Let Vivado finish the rest of the routes | 
 |  | 
 | There is no logic outside of the ROI in order to keep IOB to ROI delays short | 
 | Its expected the end user will rip out everything inside the ROI | 
 |  | 
 | To target Arty A7 you should source the artix DB environment script then source arty.sh | 
 |  | 
 | To build the baseline harness: | 
 | ``` | 
 | ./runme.sh | 
 | ``` | 
 |  | 
 | To build a sample Vivado design using the harness: | 
 | ``` | 
 | XRAY_ROIV=roi_inv.v XRAY_FIXED_XDC=out_xc7a35tcpg236-1_BASYS3-SWBUT_roi_basev/fixed_noclk.xdc ./runme.sh | 
 | ``` | 
 | Note: this was intended for verification only and not as an end user flow (they should use SymbiFlow) | 
 |  | 
 | To use the harness for the basys3 demo, do something like: | 
 | ``` | 
 | python3 demo_sw_led.py out_xc7a35tcpg236-1_BASYS3-SWBUT_roi_basev 3 2 | 
 | ``` | 
 | This example connects switch 3 to LED 2 | 
 |  | 
 | ## Result |