Skip to content

Commit 464df0b

Browse files
committed
2024.2 Release
0 parents  commit 464df0b

File tree

1,663 files changed

+1022253
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,663 files changed

+1022253
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#
2+
# Copyright (C) 2024, Advanced Micro Devices, Inc. All rights reserved.
3+
# SPDX-License-Identifier: X11
4+
#
5+
6+
set_property PACKAGE_PIN BF33 [get_ports [list {IOBUF_IO_IO[0]}]]
7+
set_property IOSTANDARD SSTL12 [get_ports [list {IOBUF_IO_IO[0]}]]
8+
9+
set_property PACKAGE_PIN BF29 [get_ports [list {GPIO_0_tri_o[0]}]]
10+
set_property IOSTANDARD SSTL12 [get_ports [list {GPIO_0_tri_o[0]}]]
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#
2+
# Copyright (C) 2024, Advanced Micro Devices, Inc. All rights reserved.
3+
# SPDX-License-Identifier: X11
4+
#
5+
6+
set_property PACKAGE_PIN BF33 [get_ports [list {IOBUF_IO_IO[0]}]]
7+
set_property IOSTANDARD SSTL12 [get_ports [list {IOBUF_IO_IO[0]}]]
8+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#
2+
# Copyright (C) 2024, Advanced Micro Devices, Inc. All rights reserved.
3+
# SPDX-License-Identifier: X11
4+
#
5+
6+
create_pblock pblock_rp1
7+
add_cells_to_pblock [get_pblocks pblock_rp1] [get_cells -quiet [list design_1_i/rp1]]
8+
resize_pblock [get_pblocks pblock_rp1] -add {CLOCKREGION_X3Y1:CLOCKREGION_X3Y2}
9+
resize_pblock [get_pblocks pblock_rp1] -add {CLOCKREGION_X4Y0}
10+
set_property SNAPPING_MODE ON [get_pblocks pblock_rp1]
11+
12+
13+
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<table class="sphinxhide" width="100%">
2+
<tr width="100%">
3+
<td align="center"><img src="https://github.com/Xilinx/Image-Collateral/blob/main/xilinx-logo.png?raw=true" width="30%"/><h1>Versal™ Adaptive SoC DFX Tutorials</h1>
4+
<a href="https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/vivado.html">See Vivado™ Development Environment on amd.com</a>
5+
</td>
6+
</tr>
7+
</table>
8+
9+
# Embedded IO Buffers inside Reconfigurable Partition
10+
11+
***Version: AMD Vivado&trade; 2024.2***
12+
13+
## Introduction
14+
15+
This design demonstrates the methodology to adopt in an AMD Vivado&trade; IPI based DFX flow to instantiate Input/Output Buffers inside the reconfigurable partition. In the DFX flow, if a reconfigurable pblock includes an IO bank, the corresponding IO buffers must be located logically inside the corresponding reconfigurable module hieararchy. By default, Vivado flow infers IOBs at the top level. This tutorial demonstrates the method using Utility Buffer IP in IPI to instantiate IOBs inside the reconfigurable module.
16+
17+
This tutorial demoes the following :
18+
1. Instantiation of IOBs inside a reconfigurable module block design using the Utility Buffer IP.
19+
2. Use RTL attribute "IO_BUFFER_TYPE NONE" on the top port to convey the Vivado flow to not to infer IOBs at the top level.
20+
3. Create and apply a constraint set for child implementation, which is different from constraint set used for parent implementation.
21+
22+
## Design Flow
23+
24+
Follow the design flow from tutorial "1RP_AXI_GPIO_in_RP_Interface_INI" to become familiar with the IPI based DFX design flow using the block design container feature. This is the same flow used for this tutorial.
25+
26+
### IPI
27+
28+
- As shown in the IPI diagram below, this is a design with one reconfigurable partition. Note that there are two AXI GPIOs in RP1 for demo purpose. axi_gpio_0 is connected to a utility buffer which is configured as "IOBUF", whereas axi_gpio_1 is directly taken as output port of design. This is to demo that for the latter, an OBUF is infered at the top level by the tool, where as for the former, an IOBUF is instantiated inside the reconfigurable module.
29+
30+
<p align="center">
31+
<img src="./images/top_bd.png?raw=true" alt="top bd"/>
32+
</p>
33+
34+
- Here is the IP customization of Utility Buffer. For this design, it is configured as an IOBUF.
35+
36+
<p align="center">
37+
<img src="./images/utility_buffer.png?raw=true" alt="utility buffer"/>
38+
</p>
39+
40+
41+
### IO_BUFFER_TYPE RTL Attribute
42+
- Apply the IO_BUFFER_TYPE attribute on any top-level port to instruct the tool to use buffers. Add the property with a value "NONE" to disable automatic inference of buffers at the top. More details about this attribute are provided in [Vivado Design Suite User Guide: Synthesis (UG901)](https://docs.xilinx.com/access/sources/dita/topic?Doc_Version=2023.2%20English&url=ug901-vivado-synthesis&resourceid=fbp1697798409980.html). In this design, set the property to NONE for the top port that already has buffer instantiated inside the module.
43+
44+
<p align="center">
45+
<img src="./images/IO_BUFFER_TYPE.png?raw=true" alt="IO_BUFFER_TYPE"/>
46+
</p>
47+
48+
49+
### Schematic
50+
51+
- Here is the schematic of the two IOBs used in the design. The infered IOB is at the top, whereas the utility buffer instantiated IOBUF is inside the reconfigurable partition.
52+
<p align="center">
53+
<img src="./images/schematic.png?raw=true" alt="schematic"/>
54+
</p>
55+
56+
### IOB Device View
57+
- The following figure shows that the physical location of the IOB inside reconfigurable module should be inside the corresponding pblock, whereas the top level static IO buffer can be located anywhere outside the reconfigurable partition.
58+
59+
<p align="center">
60+
<img src="./images/iob_device_view.png?raw=true" alt="iob_device_view"/>
61+
</p>
62+
63+
### Different Constraints set for Child Implementation
64+
65+
- The Vivado DFX flow supports applying different constraint sets for different implementations. In this example, constraint set constrs_1 has the floorplanning constraints and IOB constraints. In the DFX flow, the child implementation is initiated from the output DCP from the parent implementation where each reconfigurable partition is blackboxed. While blackboxing the reconfigurable partition, the corresponding embedded IOBs are lost from netlist, thereby its constraints are removed as well. Hence, you must reapply PACKAGE_PIN and IOSTANDARD constraints for any embedded IOBs inside each RM for child implementation runs. This is achieved by creating a new constraints set "constrs_2" and applying it for the child implementation.
66+
67+
68+
<p align="center">
69+
<img src="./images/child_impl_constraints.png?raw=true" alt="child implementation constraints"/>
70+
</p>
71+
72+
- Ensure the new constraints set is manually applied to the child implementation by enabling it in the child implementation properties window.
73+
74+
<p align="center">
75+
<img src="./images/constrs_2_child_impl.png?raw=true" alt="constrs_2_child_impl"/>
76+
</p>
77+
78+
- Observe that the Design Runs window is also updated to confirm that parent and child implementations each use different constraints sets.
79+
80+
<p align="center">
81+
<img src="./images/design_runs_window.png?raw=true" alt="design_runs_window"/>
82+
</p>
83+
84+
85+
86+
<hr class="sphinxhide"></hr>
87+
88+
<p class="sphinxhide" align="center"><sub>Copyright © 2020–2024 Advanced Micro Devices, Inc.</sub></p>
89+
90+
<p class="sphinxhide" align="center"><sup><a href="https://www.amd.com/en/corporate/copyright">Terms and Conditions</a></sup></p>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#
2+
# Copyright (C) 2024, Advanced Micro Devices, Inc. All rights reserved.
3+
# SPDX-License-Identifier: X11
4+
#
5+
6+
cd scripts
7+
vivado -mode tcl -source run_all.tcl
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#
2+
# Copyright (C) 2024, Advanced Micro Devices, Inc. All rights reserved.
3+
# SPDX-License-Identifier: X11
4+
#
5+
6+
#Creating a hierarchy for rp1 and rp2
7+
group_bd_cells rp1 [get_bd_cells util_ds_buf_0] [get_bd_cells axi_gpio_0] [get_bd_cells axi_gpio_1]
8+
#Creating a hierarchy for static region
9+
group_bd_cells static_region [get_bd_cells clk_wizard_0] [get_bd_cells proc_sys_reset_0] [get_bd_cells smartconnect_0] [get_bd_cells versal_cips_0] [get_bd_cells proc_sys_reset_0] [get_bd_cells dfx_decoupler_0] [get_bd_cells axi_noc_0]
10+
regenerate_bd_layout
11+
validate_bd_design
12+
save_bd_design
13+
14+
set curdesign [current_bd_design]
15+
create_bd_design -cell [get_bd_cells /rp1] rp1rm1
16+
current_bd_design $curdesign
17+
set new_cell [create_bd_cell -type container -reference rp1rm1 rp1_temp]
18+
replace_bd_cell [get_bd_cells /rp1] $new_cell
19+
delete_bd_objs [get_bd_cells /rp1]
20+
set_property name rp1 $new_cell
21+
current_bd_design [get_bd_designs rp1rm1]
22+
update_compile_order -fileset sources_1
23+
validate_bd_design
24+
save_bd_design
25+
26+
27+
current_bd_design [get_bd_designs design_1]
28+
validate_bd_design
29+
save_bd_design
30+
31+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#
2+
# Copyright (C) 2024, Advanced Micro Devices, Inc. All rights reserved.
3+
# SPDX-License-Identifier: X11
4+
#
5+
6+
set curdesign [current_bd_design]
7+
create_bd_design -boundary_from_container [get_bd_cells /rp1] rp1rm2
8+
current_bd_design $curdesign
9+
set_property -dict [list CONFIG.LIST_SYNTH_BD {rp1rm1.bd:rp1rm2.bd} CONFIG.LIST_SIM_BD {rp1rm1.bd:rp1rm2.bd}] [get_bd_cells /rp1]
10+
current_bd_design [get_bd_designs rp1rm2]
11+
update_compile_order -fileset sources_1
12+
regenerate_bd_layout
13+
#Creating IPs of RP1RM2
14+
create_bd_cell -type ip -vlnv xilinx.com:ip:axi_gpio:2.0 axi_gpio_0
15+
create_bd_cell -type ip -vlnv xilinx.com:ip:smartconnect:1.0 smartconnect_0
16+
create_bd_cell -type ip -vlnv xilinx.com:ip:util_ds_buf:2.2 util_ds_buf_0
17+
set_property -dict [list CONFIG.C_BUF_TYPE {IOBUF}] [get_bd_cells util_ds_buf_0]
18+
set_property -dict [list CONFIG.C_GPIO_WIDTH {1} CONFIG.C_GPIO2_WIDTH {1} CONFIG.C_IS_DUAL {1} CONFIG.C_ALL_OUTPUTS {1} CONFIG.C_ALL_OUTPUTS_2 {1}] [get_bd_cells axi_gpio_0]
19+
#Connecting RM Ports to IPs
20+
connect_bd_intf_net [get_bd_intf_ports S_AXI] [get_bd_intf_pins smartconnect_0/S00_AXI]
21+
connect_bd_intf_net [get_bd_intf_ports S_AXI1] [get_bd_intf_pins smartconnect_0/S01_AXI]
22+
connect_bd_net [get_bd_ports s_axi_aclk] [get_bd_pins smartconnect_0/aclk]
23+
connect_bd_net [get_bd_ports s_axi_aclk] [get_bd_pins axi_gpio_0/s_axi_aclk]
24+
connect_bd_net [get_bd_ports s_axi_aresetn] [get_bd_pins smartconnect_0/aresetn]
25+
connect_bd_net [get_bd_ports s_axi_aresetn] [get_bd_pins axi_gpio_0/s_axi_aresetn]
26+
connect_bd_intf_net [get_bd_intf_pins smartconnect_0/M00_AXI] [get_bd_intf_pins axi_gpio_0/S_AXI]
27+
connect_bd_net [get_bd_ports IOBUF_IO_IO] [get_bd_pins util_ds_buf_0/IOBUF_IO_IO]
28+
connect_bd_net [get_bd_pins axi_gpio_0/gpio_io_o] [get_bd_pins util_ds_buf_0/IOBUF_IO_I]
29+
connect_bd_intf_net [get_bd_intf_ports GPIO_0] [get_bd_intf_pins axi_gpio_0/GPIO2]
30+
31+
regenerate_bd_layout
32+
#Assign address
33+
34+
assign_bd_address
35+
set_property offset 0x80010000 [get_bd_addr_segs {S_AXI/SEG_axi_gpio_0_Reg}]
36+
set_property offset 0x80030000 [get_bd_addr_segs {S_AXI1/SEG_axi_gpio_0_Reg}]
37+
validate_bd_design
38+
save_bd_design

0 commit comments

Comments
 (0)