Skip to content

Commit 8c803b8

Browse files
heliosfamarnovandermaas
authored andcommitted
FPGA support for Digilent and RealDigital boards
Add support for the Digilent Arty S7-25, Digilent Arty S7-50, Digilent Nexys A7-100T, RealDigital Blackboard and RealDigital Boolean development boards as alternative targets.
1 parent 1a57237 commit 8c803b8

15 files changed

+857
-5
lines changed

README.md

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
![Ibex demo system block diagram](doc/IbexDemoSystemBlockDiagram.png "Ibex demo system block diagram with in the center an Ibex processor connected by a memory bus to the RAM, GPIO, SPI, UART and debug module. Switches, buttons and LEDs are connected to the GPIO. The LCD is driven by SPI. The UART is used for a serial console. Finally, the debug module is used to drive the JTAG.")
44

5-
This an example RISC-V SoC targeting the Arty-A7 FPGA board. It comprises the
5+
This an example RISC-V SoC originally targeting the Arty-A7 FPGA board. It comprises the
66
[lowRISC Ibex core](https://www.github.com/lowrisc/ibex) along with the
77
following features:
88

@@ -14,7 +14,14 @@ following features:
1414
* SPI
1515
* A basic peripheral to write ASCII output to a file and halt simulation from software
1616

17-
Debug can be used via a USB connection to the Arty-A7 board. No external JTAG
17+
Support has been added for several additional FPGA development boards:
18+
* Arty S7-25 and S7-50
19+
* Nexys A7-100T
20+
* Sonata
21+
* RealDigital Blackboard
22+
* RealDigital Boolean
23+
24+
Debug can be used via a USB connection to the board. No external JTAG
1825
probe is required.
1926

2027
![Arty A7 FPGA showing the Mandelbrot set](doc/ArtyA7WithMandelbrot.png "Arty A7 FPGA with a Mandelbrot fractal on the LCD screen.")
@@ -126,6 +133,19 @@ EOF
126133
exit
127134
```
128135

136+
RealDigital Boolean and Blackboard
137+
```bash
138+
139+
sudo su
140+
cat <<EOF > /etc/udev/rules.d/90-realdigital.rules
141+
# Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC
142+
# used on RealDigital boards
143+
ACTION=="add|change", SUBSYSTEM=="usb|tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", ATTRS{manufacturer}=="Xilinx", MODE="0666"
144+
EOF
145+
146+
exit
147+
```
148+
129149
openFPGAloader
130150
```bash
131151
sudo su
@@ -480,8 +500,17 @@ repository root:
480500
fusesoc --cores-root=. run --target=synth --setup --build lowrisc:ibex:demo_system
481501
```
482502

483-
The default board is the Arty A7, but you can also use different synthesis targets.
484-
For example, to use the Sonata board change the target to `synth_sonata`.
503+
The default board is the Arty A7, but you can also use different synthesis targets for supported boards.
504+
Currently supported targets:
505+
506+
| Board | Target |
507+
| -------- | ------- |
508+
| Arty S7-25 | `synth_artys7-25` |
509+
| Arty S7-50 | `synth_artys7-50` |
510+
| Nexys A7-100T | `synth_nexysa7` |
511+
| Sonata | `synth_sonata` |
512+
| Blackboard | `synth_blackboard` |
513+
| Boolean | `synth_boolean` |
485514

486515
## Programming FPGA
487516

@@ -490,17 +519,25 @@ To program the FPGA, either use FuseSoC again
490519
```
491520
fusesoc --cores-root=. run --target=synth --run lowrisc:ibex:demo_system
492521
493-
# If the above does not work, try executing the programming operation manually with..
522+
# If the above does not work, try executing the programming operation manually with:
494523
make -C ./build/lowrisc_ibex_demo_system_0/synth-vivado/ pgm
495524
```
496525

526+
Replace `synth` in the fuseoc or make invocation with the appropriate target if you are use an alternative board.
527+
497528
You can also use [OpenFPGALoader](https://github.com/trabucayre/openFPGALoader), here are some example commands:
498529
```
499530
# Programming the Arty A7
500531
./openFPGALoader -b arty_a7_35t build/lowrisc_ibex_demo_system_0/synth-vivado/lowrisc_ibex_demo_system_0.bit
501532
502533
# Programming the Sonata board
503534
./openFPGALoader -c ft4232 build/lowrisc_ibex_demo_system_0/synth_sonata-vivado/lowrisc_ibex_demo_system_0.bit
535+
536+
# Programming the Blackboard board
537+
./openFPGALoader -c ft4232 build/lowrisc_ibex_demo_system_0/synth_blackboard-vivado/lowrisc_ibex_demo_system_0.bit
538+
539+
# Programming the Boolean board
540+
./openFPGALoader -c ft4232 build/lowrisc_ibex_demo_system_0/synth_boolean-vivado/lowrisc_ibex_demo_system_0.bit
504541
```
505542

506543
## Loading an application to the programmed FPGA
@@ -518,6 +555,12 @@ You can choose to immediately run it or begin halted, allowing you to attach a d
518555

519556
# Run demo on the Sonata board
520557
./util/load_demo_system.sh run ./sw/c/build/demo/hello_world/demo ./util/sonata-openocd-cfg.tcl
558+
559+
# Run demo on the Blackboard board
560+
./util/load_demo_system.sh run ./sw/c/build/demo/hello_world/demo ./util/boolean-openocd-cfg.tcl
561+
562+
# Run demo on the Boolean board
563+
./util/load_demo_system.sh run ./sw/c/build/demo/hello_world/demo ./util/boolean-openocd-cfg.tcl
521564
```
522565

523566
To view terminal output use screen:
@@ -548,3 +591,12 @@ riscv32-unknown-elf-gdb ./sw/c/build/demo/hello_world/demo
548591

549592
(gdb) target extended-remote localhost:3333
550593
```
594+
595+
## Board-specific notes
596+
597+
### Realdigital Blackboard
598+
599+
The Blackboard uses a Zynq 7000 series SoC and the serial is routed to the PS rather than the PL.
600+
While it could be possible to access the serial through the PS using AXI, the current implementation maps serial to the PMODC header.
601+
602+
The mapping follows the [Pmod Interface Type 3 (UART) pinout](https://digilent.com/reference/_media/reference/pmod/pmod-interface-specification-1_3_1.pdf) for the Digilent Pmod USBUART interface ([Digilent 410-212](https://digilent.com/shop/pmod-usbuart-usb-to-uart-interface/)), but any 3.3V USB-UART interface can be used.

data/pins_artys7.xdc

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
## Common constraints file for Arty S7-35 and S7-50.
2+
## Based on https://github.com/Digilent/digilent-xdc/blob/master/Arty-S7-50-Master.xdc
3+
## and modified for Ibex
4+
5+
## Clock signal
6+
set_property -dict { PACKAGE_PIN R2 IOSTANDARD LVCMOS33 } [get_ports { IO_CLK }]; #IO_L12P_T1_MRCC_34 Sch=ddr3_clk[200]
7+
create_clock -add -name sys_clk_pin -period 10.000 -waveform {0 5.000} [get_ports { IO_CLK }];
8+
9+
## CPU Reset Button. Steal BTN[3] to make things work "out of the box"
10+
#set_property -dict { PACKAGE_PIN C18 IOSTANDARD LVCMOS33 } [get_ports { IO_RST }]; #IO_L16P_T2_35 Sch=ck_rst
11+
set_property -dict { PACKAGE_PIN H13 IOSTANDARD LVCMOS33 } [get_ports { IO_RST }]; #IO_L20P_T3_A20_15 Sch=btn[3]
12+
13+
## Switches
14+
set_property -dict { PACKAGE_PIN H14 IOSTANDARD LVCMOS33 } [get_ports { SW[0] }]; #IO_L20N_T3_A19_15 Sch=sw[0]
15+
set_property -dict { PACKAGE_PIN H18 IOSTANDARD LVCMOS33 } [get_ports { SW[1] }]; #IO_L21P_T3_DQS_15 Sch=sw[1]
16+
set_property -dict { PACKAGE_PIN G18 IOSTANDARD LVCMOS33 } [get_ports { SW[2] }]; #IO_L21N_T3_DQS_A18_15 Sch=sw[2]
17+
set_property -dict { PACKAGE_PIN M5 IOSTANDARD LVCMOS33 } [get_ports { SW[3] }]; #IO_L6N_T0_VREF_34 Sch=sw[3]
18+
19+
## LEDs
20+
set_property -dict { PACKAGE_PIN E18 IOSTANDARD LVCMOS33 } [get_ports { LED[0] }]; #IO_L16N_T2_A27_15 Sch=led[2]
21+
set_property -dict { PACKAGE_PIN F13 IOSTANDARD LVCMOS33 } [get_ports { LED[1] }]; #IO_L17P_T2_A26_15 Sch=led[3]
22+
set_property -dict { PACKAGE_PIN E13 IOSTANDARD LVCMOS33 } [get_ports { LED[2] }]; #IO_L17N_T2_A25_15 Sch=led[4]
23+
set_property -dict { PACKAGE_PIN H15 IOSTANDARD LVCMOS33 } [get_ports { LED[3] }]; #IO_L18P_T2_A24_15 Sch=led[5]
24+
25+
## Buttons
26+
set_property -dict { PACKAGE_PIN G15 IOSTANDARD LVCMOS33 } [get_ports { BTN[0] }]; #IO_L18N_T2_A23_15 Sch=btn[0]
27+
set_property -dict { PACKAGE_PIN K16 IOSTANDARD LVCMOS33 } [get_ports { BTN[1] }]; #IO_L19P_T3_A22_15 Sch=btn[1]
28+
set_property -dict { PACKAGE_PIN J16 IOSTANDARD LVCMOS33 } [get_ports { BTN[2] }]; #IO_L19N_T3_A21_VREF_15 Sch=btn[2]
29+
set_property -dict { PACKAGE_PIN H13 IOSTANDARD LVCMOS33 } [get_ports { BTN[3] }]; #IO_L20P_T3_A20_15 Sch=btn[3]
30+
31+
## RGB LEDs
32+
set_property -dict { PACKAGE_PIN J15 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[0] }]; #IO_L23N_T3_FWE_B_15 Sch=led0_r
33+
set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[1] }]; #IO_L14N_T2_SRCC_15 Sch=led0_g
34+
set_property -dict { PACKAGE_PIN F15 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[2] }]; #IO_L13N_T2_MRCC_15 Sch=led0_b
35+
set_property -dict { PACKAGE_PIN E15 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[3] }]; #IO_L15N_T2_DQS_ADV_B_15 Sch=led1_r
36+
set_property -dict { PACKAGE_PIN F18 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[4] }]; #IO_L16P_T2_A28_15 Sch=led1_g
37+
set_property -dict { PACKAGE_PIN E14 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[5] }]; #IO_L15P_T2_DQS_15 Sch=led1_b
38+
39+
## USB-UART Interface
40+
set_property -dict { PACKAGE_PIN R12 IOSTANDARD LVCMOS33 } [get_ports { UART_TX }]; #IO_25_14 Sch=uart_rxd_out
41+
set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { UART_RX }]; #IO_L24N_T3_A00_D16_14 Sch=uart_txd_in
42+

data/pins_blackboard.xdc

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
## Based on https://www.realdigital.org/downloads/615e6849c320c5615deeebaf0ea38e94.txt
2+
## and modified for Ibex
3+
4+
##Clock
5+
set_property -dict { PACKAGE_PIN H16 IOSTANDARD LVCMOS33 } [get_ports { IO_CLK }];
6+
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports { IO_CLK }];
7+
8+
#Individual LEDS
9+
set_property -dict { PACKAGE_PIN N20 IOSTANDARD LVCMOS33 } [get_ports { LED[0] }]; #IO_L14P_T2_SRCC_34 Schematic=LD0
10+
set_property -dict { PACKAGE_PIN P20 IOSTANDARD LVCMOS33 } [get_ports { LED[1] }]; #IO_L14N_T2_SRCC_34 Schematic=LD1
11+
set_property -dict { PACKAGE_PIN R19 IOSTANDARD LVCMOS33 } [get_ports { LED[2] }]; #IO_0_34 Schematic=LD2
12+
set_property -dict { PACKAGE_PIN T20 IOSTANDARD LVCMOS33 } [get_ports { LED[3] }]; #IO_L15P_T2_DQS_34 Schematic=LD3
13+
set_property -dict { PACKAGE_PIN T19 IOSTANDARD LVCMOS33 } [get_ports { LED[4] }]; #IO_L3P_T0_DWS_PUDC_B_34 Schematic=LD4
14+
set_property -dict { PACKAGE_PIN U13 IOSTANDARD LVCMOS33 } [get_ports { LED[5] }]; #IO_25_34 Schematic=LD5
15+
set_property -dict { PACKAGE_PIN V20 IOSTANDARD LVCMOS33 } [get_ports { LED[6] }]; #IO_L16N_T2_34 Schematic=LD6
16+
set_property -dict { PACKAGE_PIN W20 IOSTANDARD LVCMOS33 } [get_ports { LED[7] }]; #IO_L17N_T2_34 Schematic=LD7
17+
set_property -dict { PACKAGE_PIN W19 IOSTANDARD LVCMOS33 } [get_ports { LED[8] }]; #IO_L16P_T2_34 Schematic=LD8
18+
set_property -dict { PACKAGE_PIN Y19 IOSTANDARD LVCMOS33 } [get_ports { LED[9] }]; #IO_L22N_T3_34 Schematic=LD9
19+
20+
#RGB_LEDS
21+
set_property -dict { PACKAGE_PIN W18 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[0] }]; #IO_L22P_T3_34 Schematic=LD10_R
22+
set_property -dict { PACKAGE_PIN W16 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[1] }]; #IO_L18N_T2_34 Schematic=LD10_G
23+
set_property -dict { PACKAGE_PIN Y18 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[2] }]; #IO_L17P_T2_34 Schematic=LD10_B
24+
25+
set_property -dict { PACKAGE_PIN Y14 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[3] }]; #IO_L8N_T1_34 Schematic=LD11_R
26+
set_property -dict { PACKAGE_PIN Y16 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[4] }]; #IO_L7P_T1_34 Schematic=LD11_G
27+
set_property -dict { PACKAGE_PIN Y17 IOSTANDARD LVCMOS33 } [get_ports { RGB_LED[5] }]; #IO_L7N_T1_34 Schematic=LD11_B
28+
29+
#Switches
30+
set_property -dict { PACKAGE_PIN R17 IOSTANDARD LVCMOS33 } [get_ports { SW[0] }]; #IO_L19N_T3_VREF_34 Schematic=SW0
31+
set_property -dict { PACKAGE_PIN U20 IOSTANDARD LVCMOS33 } [get_ports { SW[1] }]; #IO_L15N_T2_DQS_34 Schematic=SW1
32+
set_property -dict { PACKAGE_PIN R16 IOSTANDARD LVCMOS33 } [get_ports { SW[2] }]; #IO_L19P_T3_34 Schematic=SW2
33+
set_property -dict { PACKAGE_PIN N16 IOSTANDARD LVCMOS33 } [get_ports { SW[3] }]; #IO_L21N_T3_DQS_AD14N_35 Schematic=SW3
34+
set_property -dict { PACKAGE_PIN R14 IOSTANDARD LVCMOS33 } [get_ports { SW[4] }]; #IO_L6N_T0_VREF_34 Schematic=SW4
35+
set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports { SW[5] }]; #IO_L6P_T0_34 Schematic=SW5
36+
set_property -dict { PACKAGE_PIN L15 IOSTANDARD LVCMOS33 } [get_ports { SW[6] }]; #IO_L22N_T3_AD7N_35 Schematic=SW6
37+
set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { SW[7] }]; #IO_L23N_T3_35 Schematic=SW7
38+
set_property -dict { PACKAGE_PIN T10 IOSTANDARD LVCMOS33 } [get_ports { SW[8] }]; #IO_L10P_T1_34 Sch=VGA_R4_CON
39+
set_property -dict { PACKAGE_PIN T12 IOSTANDARD LVCMOS33 } [get_ports { SW[9] }]; #IO_L10N_T1_34 Sch=VGA_R5_CON
40+
set_property -dict { PACKAGE_PIN T11 IOSTANDARD LVCMOS33 } [get_ports { SW[10] }]; #IO_L18P_T2_34 Sch=VGA_R6_CON
41+
set_property -dict { PACKAGE_PIN T14 IOSTANDARD LVCMOS33 } [get_ports { SW[11] }]; #IO_L18N_T2_AD13N_35 Sch=VGA_R7_CON
42+
43+
#Push Buttons
44+
set_property -dict { PACKAGE_PIN W14 IOSTANDARD LVCMOS33 } [get_ports { BTN[0] }]; #IO_L8P_T1_34 Schematic=BTN0
45+
set_property -dict { PACKAGE_PIN W13 IOSTANDARD LVCMOS33 } [get_ports { BTN[1] }]; #IO_L4N_T0_34 Schematic=BTN1
46+
set_property -dict { PACKAGE_PIN P15 IOSTANDARD LVCMOS33 } [get_ports { BTN[2] }]; #IO_L24P_T3_34 Schematic=BTN2
47+
48+
# Steal BTN[3] to be IO_RST
49+
set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { IO_RST }]; #IO_L23P_T3_35 Schematic=BTN3
50+
51+
##PmodC - This is where we route the UART: Uses Digilent PMOD specification 1.3 for PMOD Interface Type 3
52+
# https://digilent.com/reference/_media/reference/pmod/pmod-interface-specification-1_3_1.pdf
53+
# JC3 = RX, JC2 = TX
54+
#set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports { UART_CTS }]; #IO_L10P_T1_34 Sch=JC1
55+
set_property -dict { PACKAGE_PIN W15 IOSTANDARD LVCMOS33 } [get_ports { UART_TX }]; #IO_L10N_T1_34 Sch=JC2
56+
set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports { UART_RX }]; #IO_L18P_T2_34 Sch=JC3
57+
#set_property -dict { PACKAGE_PIN T16 IOSTANDARD LVCMOS33 } [get_ports { UART_RTS }]; #IO_LP9_T1_DQS_34 Sch=JC4
58+
#set_property -dict { PACKAGE_PIN M19 IOSTANDARD LVCMOS33 } [get_ports { JC7 }]; #IO_L7P_T1_AD2P_35 Sch=JC7
59+
#set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { JC8 }]; #IO_0_35 Sch=JC8
60+
#set_property -dict { PACKAGE_PIN G17 IOSTANDARD LVCMOS33 } [get_ports { JC9 }]; #IO_L16P_T2_35 Sch=JC9
61+
#set_property -dict { PACKAGE_PIN G15 IOSTANDARD LVCMOS33 } [get_ports { JC10 }]; #IO_L19N_T3_VREF_35 Sch=JC10

data/pins_boolean.xdc

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
## Based on https://www.realdigital.org/downloads/8d5c167add28c014173edcf51db78bb9.txt
2+
## and modified for Ibex
3+
4+
# clk input is from the 100 MHz oscillator on Boolean board
5+
create_clock -add -name gclk -period 10.00 -waveform {0 5} [get_ports { IO_CLK }];
6+
set_property -dict {PACKAGE_PIN F14 IOSTANDARD LVCMOS33} [get_ports {IO_CLK}]
7+
8+
# Set Bank 0 voltage
9+
set_property CFGBVS VCCO [current_design]
10+
set_property CONFIG_VOLTAGE 3.3 [current_design]
11+
12+
# On-board Slide Switches
13+
set_property -dict {PACKAGE_PIN V2 IOSTANDARD LVCMOS33} [get_ports {SW[0]}]
14+
set_property -dict {PACKAGE_PIN U2 IOSTANDARD LVCMOS33} [get_ports {SW[1]}]
15+
set_property -dict {PACKAGE_PIN U1 IOSTANDARD LVCMOS33} [get_ports {SW[2]}]
16+
set_property -dict {PACKAGE_PIN T2 IOSTANDARD LVCMOS33} [get_ports {SW[3]}]
17+
set_property -dict {PACKAGE_PIN T1 IOSTANDARD LVCMOS33} [get_ports {SW[4]}]
18+
set_property -dict {PACKAGE_PIN R2 IOSTANDARD LVCMOS33} [get_ports {SW[5]}]
19+
set_property -dict {PACKAGE_PIN R1 IOSTANDARD LVCMOS33} [get_ports {SW[6]}]
20+
set_property -dict {PACKAGE_PIN P2 IOSTANDARD LVCMOS33} [get_ports {SW[7]}]
21+
set_property -dict {PACKAGE_PIN P1 IOSTANDARD LVCMOS33} [get_ports {SW[8]}]
22+
set_property -dict {PACKAGE_PIN N2 IOSTANDARD LVCMOS33} [get_ports {SW[9]}]
23+
set_property -dict {PACKAGE_PIN N1 IOSTANDARD LVCMOS33} [get_ports {SW[10]}]
24+
set_property -dict {PACKAGE_PIN M2 IOSTANDARD LVCMOS33} [get_ports {SW[11]}]
25+
set_property -dict {PACKAGE_PIN M1 IOSTANDARD LVCMOS33} [get_ports {SW[12]}]
26+
set_property -dict {PACKAGE_PIN L1 IOSTANDARD LVCMOS33} [get_ports {SW[13]}]
27+
set_property -dict {PACKAGE_PIN K2 IOSTANDARD LVCMOS33} [get_ports {SW[14]}]
28+
set_property -dict {PACKAGE_PIN K1 IOSTANDARD LVCMOS33} [get_ports {SW[15]}]
29+
30+
# On-board LEDs
31+
set_property -dict {PACKAGE_PIN G1 IOSTANDARD LVCMOS33} [get_ports {LED[0]}]
32+
set_property -dict {PACKAGE_PIN G2 IOSTANDARD LVCMOS33} [get_ports {LED[1]}]
33+
set_property -dict {PACKAGE_PIN F1 IOSTANDARD LVCMOS33} [get_ports {LED[2]}]
34+
set_property -dict {PACKAGE_PIN F2 IOSTANDARD LVCMOS33} [get_ports {LED[3]}]
35+
set_property -dict {PACKAGE_PIN E1 IOSTANDARD LVCMOS33} [get_ports {LED[4]}]
36+
set_property -dict {PACKAGE_PIN E2 IOSTANDARD LVCMOS33} [get_ports {LED[5]}]
37+
set_property -dict {PACKAGE_PIN E3 IOSTANDARD LVCMOS33} [get_ports {LED[6]}]
38+
set_property -dict {PACKAGE_PIN E5 IOSTANDARD LVCMOS33} [get_ports {LED[7]}]
39+
set_property -dict {PACKAGE_PIN E6 IOSTANDARD LVCMOS33} [get_ports {LED[8]}]
40+
set_property -dict {PACKAGE_PIN C3 IOSTANDARD LVCMOS33} [get_ports {LED[9]}]
41+
set_property -dict {PACKAGE_PIN B2 IOSTANDARD LVCMOS33} [get_ports {LED[10]}]
42+
set_property -dict {PACKAGE_PIN A2 IOSTANDARD LVCMOS33} [get_ports {LED[11]}]
43+
set_property -dict {PACKAGE_PIN B3 IOSTANDARD LVCMOS33} [get_ports {LED[12]}]
44+
set_property -dict {PACKAGE_PIN A3 IOSTANDARD LVCMOS33} [get_ports {LED[13]}]
45+
set_property -dict {PACKAGE_PIN B4 IOSTANDARD LVCMOS33} [get_ports {LED[14]}]
46+
set_property -dict {PACKAGE_PIN A4 IOSTANDARD LVCMOS33} [get_ports {LED[15]}]
47+
48+
# On-board Buttons
49+
set_property -dict {PACKAGE_PIN J2 IOSTANDARD LVCMOS33} [get_ports {IO_RST}]; # Steak to be Reset. Was BTN[0]
50+
set_property -dict {PACKAGE_PIN J5 IOSTANDARD LVCMOS33} [get_ports {BTN[1]}]
51+
set_property -dict {PACKAGE_PIN H2 IOSTANDARD LVCMOS33} [get_ports {BTN[2]}]
52+
set_property -dict {PACKAGE_PIN J1 IOSTANDARD LVCMOS33} [get_ports {BTN[3]}]
53+
54+
# On-board color LEDs
55+
set_property -dict {PACKAGE_PIN V6 IOSTANDARD LVCMOS33} [get_ports {RGB_LED[0]}]; # RBG0_R
56+
set_property -dict {PACKAGE_PIN V4 IOSTANDARD LVCMOS33} [get_ports {RGB_LED[1]}]; # RBG0_G
57+
set_property -dict {PACKAGE_PIN U6 IOSTANDARD LVCMOS33} [get_ports {RGB_LED[2]}]; # RBG0_B
58+
set_property -dict {PACKAGE_PIN U3 IOSTANDARD LVCMOS33} [get_ports {RGB_LED[3]}]; # RBG1_R
59+
set_property -dict {PACKAGE_PIN V3 IOSTANDARD LVCMOS33} [get_ports {RGB_LED[4]}]; # RBG1_G
60+
set_property -dict {PACKAGE_PIN V5 IOSTANDARD LVCMOS33} [get_ports {RGB_LED[5]}]; # RBG1_B
61+
62+
# UART
63+
set_property -dict {PACKAGE_PIN V12 IOSTANDARD LVCMOS33} [get_ports {UART_RX}]
64+
set_property -dict {PACKAGE_PIN U11 IOSTANDARD LVCMOS33} [get_ports {UART_TX}]

0 commit comments

Comments
 (0)