手动单元布局 - 2023.2 简体中文

Vivado Design Suite 用户指南: 设计分析与收敛技巧 (UG906)

Document ID
UG906
Release Date
2023-10-19
Version
2023.2 简体中文

手动单元布局可充分发挥器件性能。使用此技巧时,设计师通常只能将其用于小块设计。可将少量逻辑布局到高速 I/O 接口周围,或者可手动布局块 RAM 和 DSP。手动布局可能比较慢。

所有布局规划技巧都需要大量工程设计时间。可能需要布局规划迭代。如果任意单元名称发生更改,则必须更新布局规划约束。

执行布局规划时,应明确最终管脚分配。最好将 I/O 固定。I/O 可提供锚点作为布局规划的起点。与 I/O 通信的逻辑可向固定管脚移植。

提示: 将与 I/O 通信的块布局到其 I/O 附近。如果管脚分配导致块被拆分,请考虑修改管脚分配或 RTL。
图 1. 导致设计拆分的 I/O 组件

上图所示布局规划可能对时序没有帮助。请考虑将块拆分、更改源代码或者仅约束块 RAM 和 DSP。另请考虑在外部时序要求允许的情况下取消 I/O 寄存器布局。

本部分中提到的 Pblock 以 XDC 约束来表示:

create_pblock Pblock_usbEngine
add_cells_to_pblock [get_pblocks Pblock_usbEngine] [get_cells -quiet [list 
usbEngine1]] 
resize_pblock [get_pblocks Pblock_usbEngine] -add {SLICE_X8Y105:SLICE_X23Y149} 
resize_pblock [get_pblocks Pblock_usbEngine] -add {DSP48_X0Y42:DSP48_X1Y59} 
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB18_X0Y42:RAMB18_X1Y59} 
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB36_X0Y21:RAMB36_X1Y29}
注释: 默认情况下,在布局规划阶段后的整个实现流程中,都将 Pblock 视为软 Pblock。要强制使用硬 Pblock,应将 Pblock 属性 IS_SOFT 设为 0:
set_property IS_SOFT 0 [get_pblocks Pblock_usbEngine]

第 1 行用于创建 Pblock。第 2 行 (add_cells_to_pblock) 用于将层级分配到 Pblock。有 4 种资源类型(SLICE、DSP48、RAMB18 和 RAMB36),各有自己的网格。不受网格约束的逻辑可连接至器件内任意位置。要仅约束层级内的块 RAM,请禁用其他 Pblock 网格。

图 2. Pblock 网格

生成的 XDC 命令可用于定义简化的 Pblock:

create_pblock Pblock_usbEngine
add_cells_to_pblock [get_pblocks Pblock_usbEngine] [get_cells -quiet [list 
usbEngine1]] 
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB18_X0Y42:RAMB18_X1Y59} 
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB36_X0Y21:RAMB36_X1Y29}

块 RAM 约束在器件内,但 slice(分片)逻辑可自由布局在器件上任意位置。

提示: 布局 Pblock 时,请注意避免层级布局规划跨越中心配置块。
图 3. 避开配置块