|
| 1 | +# Obsidian |
| 2 | +# https://github.com/BerkeleyLab/Obsidian |
| 3 | +# compare and contrast the contents of this file with |
| 4 | +# https://github.com/litex-hub/litex-boards/blob/master/litex_boards/platforms/berkeleylab_obsidian.py |
| 5 | + |
| 6 | +# RGMII PHY |
| 7 | +set_property -dict {PACKAGE_PIN A13 IOSTANDARD LVCMOS33} [get_ports PHY_RSTN] |
| 8 | + |
| 9 | +set_property -dict {PACKAGE_PIN E13 IOSTANDARD LVCMOS33} [get_ports RGMII_RX_CLK] |
| 10 | +set_property -dict {PACKAGE_PIN D16 IOSTANDARD LVCMOS33} [get_ports RGMII_RX_CTRL] |
| 11 | +set_property -dict {PACKAGE_PIN B16 IOSTANDARD LVCMOS33} [get_ports {RGMII_RXD[0]}] |
| 12 | +set_property -dict {PACKAGE_PIN C16 IOSTANDARD LVCMOS33} [get_ports {RGMII_RXD[1]}] |
| 13 | +set_property -dict {PACKAGE_PIN D14 IOSTANDARD LVCMOS33} [get_ports {RGMII_RXD[2]}] |
| 14 | +set_property -dict {PACKAGE_PIN C13 IOSTANDARD LVCMOS33} [get_ports {RGMII_RXD[3]}] |
| 15 | + |
| 16 | +set_property -dict {PACKAGE_PIN D15 IOSTANDARD LVCMOS33} [get_ports RGMII_TX_CLK] |
| 17 | +set_property -dict {PACKAGE_PIN A17 IOSTANDARD LVCMOS33} [get_ports RGMII_TX_CTRL] |
| 18 | +set_property -dict {PACKAGE_PIN B17 IOSTANDARD LVCMOS33} [get_ports {RGMII_TXD[0]}] |
| 19 | +set_property -dict {PACKAGE_PIN E16 IOSTANDARD LVCMOS33} [get_ports {RGMII_TXD[1]}] |
| 20 | +set_property -dict {PACKAGE_PIN E17 IOSTANDARD LVCMOS33} [get_ports {RGMII_TXD[2]}] |
| 21 | +set_property -dict {PACKAGE_PIN D18 IOSTANDARD LVCMOS33} [get_ports {RGMII_TXD[3]}] |
| 22 | + |
| 23 | +# https://adaptivesupport.amd.com/s/article/53092?language=en_US |
| 24 | +set_property IOB TRUE [get_ports {RGMII_TXD[*]}] |
| 25 | +set_property IOB TRUE [get_ports RGMII_TX_CTRL] |
| 26 | +set_property IOB TRUE [get_ports {RGMII_RXD[*]}] |
| 27 | +set_property IOB TRUE [get_ports RGMII_RX_CTRL] |
| 28 | + |
| 29 | +# Rx clock constraint |
| 30 | +create_clock -period 8.00 -name phy_rxclk [get_ports RGMII_RX_CLK] |
| 31 | + |
| 32 | +# QSPI Boot Flash |
| 33 | +set_property -dict {PACKAGE_PIN L15 IOSTANDARD LVCMOS33} [get_ports BOOT_CS_B] |
| 34 | +set_property -dict {PACKAGE_PIN K16 IOSTANDARD LVCMOS33} [get_ports BOOT_MOSI] |
| 35 | +set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS33} [get_ports BOOT_MISO] |
| 36 | +# FPGA_CCLK is special, and doesn't show up here; |
| 37 | +# access is accomplished by instantiating the STARTUPE2 primitive |
| 38 | + |
| 39 | +# LEDs |
| 40 | +set_property -dict {PACKAGE_PIN M16 IOSTANDARD LVCMOS33} [get_ports {LED[0]}] |
| 41 | +set_property -dict {PACKAGE_PIN N17 IOSTANDARD LVCMOS33} [get_ports {LED[1]}] |
| 42 | +set_property -dict {PACKAGE_PIN R18 IOSTANDARD LVCMOS33} [get_ports {LED[2]}] |
| 43 | +set_property -dict {PACKAGE_PIN U16 IOSTANDARD LVCMOS33} [get_ports {LED[3]}] |
| 44 | +# LED_0 connects to PMOD1_0 |
| 45 | +# LED_1 connects to PMOD1_1 |
| 46 | +# LED_2 connects to PMOD1_2 |
| 47 | +# LED_3 connects to PMOD1_3 |
| 48 | +# To gain access to these blinkenlights, it's suggested to plug in a |
| 49 | +# usual Diglent PmodLED to the top half of J4 (a.k.a. PMOD1). |
| 50 | + |
| 51 | +# Possible connection to supervisory microcontroller |
| 52 | +# Want actual pins here so the synthesizer doesn't drop the supporting logic; |
| 53 | +# I have no short-term plans to exercise these pins in hardware. |
| 54 | +# See projects/test_marble_family to demo that feature. |
| 55 | +# SCLK connects to PMOD1_4 |
| 56 | +# CSB connects to PMOD1_5 |
| 57 | +# MOSI connects to PMOD1_6 |
| 58 | +set_property -dict {PACKAGE_PIN M17 IOSTANDARD LVCMOS33} [get_ports SCLK] |
| 59 | +set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports CSB] |
| 60 | +set_property -dict {PACKAGE_PIN P18 IOSTANDARD LVCMOS33} [get_ports MOSI] |
| 61 | + |
| 62 | +# 125 MHz from White Rabbit comes in via MGTREFCLK; |
| 63 | +# we should really turn on the GTP and use its TXOUTCLK. |
| 64 | +# 20 MHz CLK20_VCXO from Y3 is a poor substitute |
| 65 | +set_property -dict {PACKAGE_PIN D13 IOSTANDARD LVCMOS33} [get_ports SYSCLK_P] |
| 66 | +create_clock -name sys_clk -period 50.00 [get_ports SYSCLK_P] |
| 67 | +# this property setting is correct: the CLK20_VCXO pin is only used for its _frequency_, not as a phase |
| 68 | +set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets SYSCLK_P] |
| 69 | + |
| 70 | +# Miscellaneous |
| 71 | +# Accidentally unavailable; substitute PMOD1_7, and trust that the |
| 72 | +# unconnected Y3-2 will float high (R176 should help) |
| 73 | +set_property -dict {PACKAGE_PIN V17 IOSTANDARD LVCMOS33} [get_ports VCXO_EN] |
| 74 | +# RESET not actually used in gateware or available on hardware |
| 75 | +# Assign it to PMOD2_0 anyway |
| 76 | +set_property -dict {PACKAGE_PIN T18 IOSTANDARD LVCMOS33} [get_ports RESET] |
| 77 | + |
| 78 | +# Clock groups |
| 79 | +set_clock_groups -name async_clks -asynchronous \ |
| 80 | +-group [get_clocks -include_generated_clocks sys_clk] \ |
| 81 | +-group [get_clocks -include_generated_clocks phy_rxclk] |
| 82 | + |
| 83 | +# Bank 0 setup |
| 84 | +set_property CFGBVS VCCO [current_design] |
| 85 | +set_property CONFIG_VOLTAGE 3.3 [current_design] |
0 commit comments