Skip to content

Commit a34217d

Browse files
committed
Add zynq_ps to KR260 10g example design
Signed-off-by: Víctor Mayoral Vilches <[email protected]>
1 parent 690d855 commit a34217d

File tree

3 files changed

+448
-1
lines changed

3 files changed

+448
-1
lines changed

example/KR260/fpga_10g/fpga/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ XDC_FILES += lib/eth/lib/axis/syn/vivado/sync_reset.tcl
5757

5858
# IP
5959
IP_TCL_FILES += ip/eth_xcvr_gt.tcl
60+
IP_TCL_FILES += ip/zynq_ps.tcl
6061

6162
include ../common/vivado.mk
6263

Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
# Copyright 2022, The Regents of the University of California.
2+
# All rights reserved.
3+
#
4+
# Redistribution and use in source and binary forms, with or without
5+
# modification, are permitted provided that the following conditions are met:
6+
#
7+
# 1. Redistributions of source code must retain the above copyright notice,
8+
# this list of conditions and the following disclaimer.
9+
#
10+
# 2. Redistributions in binary form must reproduce the above copyright notice,
11+
# this list of conditions and the following disclaimer in the documentation
12+
# and/or other materials provided with the distribution.
13+
#
14+
# THIS SOFTWARE IS PROVIDED BY THE REGENTS OF THE UNIVERSITY OF CALIFORNIA ''AS
15+
# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17+
# DISCLAIMED. IN NO EVENT SHALL THE REGENTS OF THE UNIVERSITY OF CALIFORNIA OR
18+
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
20+
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
23+
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
24+
# OF SUCH DAMAGE.
25+
#
26+
# The views and conclusions contained in the software and documentation are those
27+
# of the authors and should not be interpreted as representing official policies,
28+
# either expressed or implied, of The Regents of the University of California.
29+
30+
# create block design
31+
create_bd_design "zynq_ps"
32+
33+
# Create blocks
34+
35+
# Zynq PS
36+
set zynq_ultra_ps [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e zynq_ultra_ps ]
37+
set_property -dict [list \
38+
CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \
39+
CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \
40+
CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \
41+
CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS33} \
42+
CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN 1 \
43+
CONFIG.PSU__DDRC__COMPONENTS {UDIMM} \
44+
CONFIG.PSU__DDRC__DEVICE_CAPACITY {4096 MBits} \
45+
CONFIG.PSU__DDRC__SPEED_BIN {DDR4_2133P} \
46+
CONFIG.PSU__DDRC__ROW_ADDR_COUNT {15} \
47+
CONFIG.PSU__DDRC__T_RC {46.5} \
48+
CONFIG.PSU__DDRC__T_FAW {21.0} \
49+
CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {0} \
50+
CONFIG.PSU__DDRC__FREQ_MHZ {1067} \
51+
CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \
52+
CONFIG.PSU__PMU__GPI0__ENABLE {1} \
53+
CONFIG.PSU__PMU__GPI1__ENABLE {0} \
54+
CONFIG.PSU__PMU__GPI2__ENABLE {0} \
55+
CONFIG.PSU__PMU__GPI3__ENABLE {0} \
56+
CONFIG.PSU__PMU__GPI4__ENABLE {0} \
57+
CONFIG.PSU__PMU__GPI5__ENABLE {0} \
58+
CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {1} \
59+
CONFIG.PSU__QSPI__PERIPHERAL__MODE {Dual Parallel} \
60+
CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {1} \
61+
CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {1} \
62+
CONFIG.PSU__CAN1__PERIPHERAL__IO {MIO 24 .. 25} \
63+
CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \
64+
CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \
65+
CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {1} \
66+
CONFIG.PSU__I2C0__PERIPHERAL__IO {MIO 14 .. 15} \
67+
CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \
68+
CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 16 .. 17} \
69+
CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \
70+
CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 18 .. 19} \
71+
CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \
72+
CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 20 .. 21} \
73+
CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \
74+
CONFIG.PSU__SD1__GRP_CD__ENABLE {1} \
75+
CONFIG.PSU__SD1__GRP_WP__ENABLE {1} \
76+
CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {1} \
77+
CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {1} \
78+
CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \
79+
CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk2} \
80+
CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \
81+
CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \
82+
CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \
83+
CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \
84+
CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk3} \
85+
CONFIG.PSU__DP__LANE_SEL {Single Lower} \
86+
CONFIG.PSU__SATA__PERIPHERAL__ENABLE {1} \
87+
CONFIG.PSU__SATA__LANE1__IO {GT Lane3} \
88+
CONFIG.PSU__PCIE__PERIPHERAL__ENABLE {1} \
89+
CONFIG.PSU__PCIE__PERIPHERAL__ROOTPORT_IO {MIO 31} \
90+
CONFIG.PSU__PCIE__DEVICE_PORT_TYPE {Root Port} \
91+
CONFIG.PSU__PCIE__BAR0_ENABLE {0} \
92+
CONFIG.PSU__PCIE__CLASS_CODE_BASE {0x06} \
93+
CONFIG.PSU__PCIE__CLASS_CODE_SUB {0x04} \
94+
CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \
95+
CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \
96+
CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \
97+
CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \
98+
CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \
99+
CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \
100+
CONFIG.PSU__USE__M_AXI_GP0 {1} \
101+
CONFIG.PSU__MAXIGP0__DATA_WIDTH {32} \
102+
CONFIG.PSU__USE__M_AXI_GP1 {0} \
103+
CONFIG.PSU__USE__M_AXI_GP2 {0} \
104+
CONFIG.PSU__USE__S_AXI_GP0 {1} \
105+
CONFIG.PSU__USE__IRQ0 {1} \
106+
CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \
107+
CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \
108+
CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \
109+
CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \
110+
CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \
111+
CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__FREQMHZ {667} \
112+
CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \
113+
CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__FREQMHZ {667} \
114+
CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \
115+
CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {DPLL} \
116+
CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \
117+
CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \
118+
CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {DPLL} \
119+
CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {DPLL} \
120+
CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {DPLL} \
121+
CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \
122+
CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {DPLL} \
123+
CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \
124+
CONFIG.PSU__CRL_APB__PL0_REF_CTRL__FREQMHZ {300} \
125+
CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \
126+
CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \
127+
] $zynq_ultra_ps
128+
129+
# control AXI interconnect
130+
set axi_interconnect_ctrl [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect axi_interconnect_ctrl ]
131+
132+
# reset
133+
set proc_sys_reset [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset proc_sys_reset ]
134+
135+
# Create connections
136+
137+
# Clock
138+
set pl_clk0 [get_bd_pins $zynq_ultra_ps/pl_clk0]
139+
make_bd_pins_external $pl_clk0
140+
set_property name pl_clk0 [get_bd_ports -of_objects [get_bd_nets -of_objects $pl_clk0]]
141+
set pl_clk0_port [get_bd_ports -of_objects [get_bd_nets -of_objects $pl_clk0]]
142+
143+
connect_bd_net $pl_clk0 [get_bd_pins $zynq_ultra_ps/maxihpm0_fpd_aclk]
144+
connect_bd_net $pl_clk0 [get_bd_pins $zynq_ultra_ps/saxihpc0_fpd_aclk]
145+
connect_bd_net $pl_clk0 [get_bd_pins $proc_sys_reset/slowest_sync_clk]
146+
connect_bd_net $pl_clk0 [get_bd_pins $axi_interconnect_ctrl/ACLK]
147+
connect_bd_net $pl_clk0 [get_bd_pins $axi_interconnect_ctrl/S00_ACLK]
148+
connect_bd_net $pl_clk0 [get_bd_pins $axi_interconnect_ctrl/M00_ACLK]
149+
connect_bd_net $pl_clk0 [get_bd_pins $axi_interconnect_ctrl/M01_ACLK]
150+
151+
set pl_clk0_busif [list]
152+
153+
# Reset
154+
set pl_resetn0 [get_bd_pins $zynq_ultra_ps/pl_resetn0]
155+
connect_bd_net $pl_resetn0 [get_bd_pins $proc_sys_reset/ext_reset_in]
156+
157+
set pl_reset [get_bd_pins $proc_sys_reset/peripheral_reset]
158+
make_bd_pins_external $pl_reset
159+
set_property name pl_reset [get_bd_ports -of_objects [get_bd_nets -of_objects $pl_reset]]
160+
161+
set interconnect_aresetn [get_bd_pins $proc_sys_reset/interconnect_aresetn]
162+
connect_bd_net $interconnect_aresetn [get_bd_pins $axi_interconnect_ctrl/ARESETN]
163+
connect_bd_net $interconnect_aresetn [get_bd_pins $axi_interconnect_ctrl/S00_ARESETN]
164+
connect_bd_net $interconnect_aresetn [get_bd_pins $axi_interconnect_ctrl/M00_ARESETN]
165+
connect_bd_net $interconnect_aresetn [get_bd_pins $axi_interconnect_ctrl/M01_ARESETN]
166+
167+
# MMIO
168+
connect_bd_intf_net [get_bd_intf_pins $zynq_ultra_ps/M_AXI_HPM0_FPD] [get_bd_intf_pins $axi_interconnect_ctrl/S00_AXI]
169+
170+
# Control interface
171+
set m_axil_ctrl_pin [get_bd_intf_pins $axi_interconnect_ctrl/M00_AXI]
172+
make_bd_intf_pins_external $m_axil_ctrl_pin
173+
set_property name m_axil_ctrl [get_bd_intf_ports -of_objects [get_bd_intf_nets -of_objects $m_axil_ctrl_pin]]
174+
set m_axil_ctrl_port [get_bd_intf_ports -of_objects [get_bd_intf_nets -of_objects $m_axil_ctrl_pin]]
175+
set_property -dict [list \
176+
CONFIG.PROTOCOL AXI4LITE \
177+
CONFIG.DATA_WIDTH 32 \
178+
CONFIG.ADDR_WIDTH 24 \
179+
] $m_axil_ctrl_port
180+
lappend pl_clk0_busif $m_axil_ctrl_port
181+
182+
# Application control interface
183+
set m_axil_app_ctrl_pin [get_bd_intf_pins $axi_interconnect_ctrl/M01_AXI]
184+
make_bd_intf_pins_external $m_axil_app_ctrl_pin
185+
set_property name m_axil_app_ctrl [get_bd_intf_ports -of_objects [get_bd_intf_nets -of_objects $m_axil_app_ctrl_pin]]
186+
set m_axil_app_ctrl_port [get_bd_intf_ports -of_objects [get_bd_intf_nets -of_objects $m_axil_app_ctrl_pin]]
187+
set_property -dict [list \
188+
CONFIG.PROTOCOL AXI4LITE \
189+
CONFIG.DATA_WIDTH 32 \
190+
CONFIG.ADDR_WIDTH 24 \
191+
] $m_axil_app_ctrl_port
192+
lappend pl_clk0_busif $m_axil_app_ctrl_port
193+
194+
# DMA interface
195+
set s_axi_dma_pin [get_bd_intf_pins $zynq_ultra_ps/S_AXI_HPC0_FPD]
196+
make_bd_intf_pins_external $s_axi_dma_pin
197+
set_property name s_axi_dma [get_bd_intf_ports -of_objects [get_bd_intf_nets -of_objects $s_axi_dma_pin]]
198+
set s_axi_dma_port [get_bd_intf_ports -of_objects [get_bd_intf_nets -of_objects $s_axi_dma_pin]]
199+
lappend pl_clk0_busif $s_axi_dma_port
200+
201+
# IRQ
202+
set pl_ps_irq0 [get_bd_pins $zynq_ultra_ps/pl_ps_irq0]
203+
make_bd_pins_external $pl_ps_irq0
204+
set_property name pl_ps_irq0 [get_bd_ports -of_objects [get_bd_nets -of_objects $pl_ps_irq0]]
205+
set pl_ps_irq0_port [get_bd_ports -of_objects [get_bd_nets -of_objects $pl_ps_irq0]]
206+
set_property -dict [list \
207+
CONFIG.PortWidth 8 \
208+
] $pl_ps_irq0_port
209+
210+
# Port clock associations
211+
set lst [list]
212+
foreach port $pl_clk0_busif {
213+
lappend lst [get_property name $port]
214+
}
215+
set_property CONFIG.ASSOCIATED_BUSIF [join $lst ":"] $pl_clk0_port
216+
217+
# Assign addresses
218+
assign_bd_address -target_address_space /s_axi_dma [get_bd_addr_segs $zynq_ultra_ps/SAXIGP0/HPC0_DDR_HIGH] -force
219+
assign_bd_address -target_address_space /s_axi_dma [get_bd_addr_segs $zynq_ultra_ps/SAXIGP0/HPC0_QSPI] -force
220+
assign_bd_address -target_address_space /s_axi_dma [get_bd_addr_segs $zynq_ultra_ps/SAXIGP0/HPC0_DDR_LOW] -force
221+
assign_bd_address -target_address_space /s_axi_dma [get_bd_addr_segs $zynq_ultra_ps/SAXIGP0/HPC0_LPS_OCM] -force
222+
223+
assign_bd_address -offset 0xA000_0000 -range 16M -target_address_space $zynq_ultra_ps/Data [get_bd_addr_segs $m_axil_ctrl_port/Reg] -force
224+
assign_bd_address -offset 0xA800_0000 -range 16M -target_address_space $zynq_ultra_ps/Data [get_bd_addr_segs $m_axil_app_ctrl_port/Reg] -force
225+
226+
validate_bd_design
227+
228+
# Save block design
229+
save_bd_design [current_bd_design]
230+
close_bd_design [current_bd_design]

0 commit comments

Comments
 (0)