手动路由
手动路由允许您为网络选择特定的路由资源。这给了你对信号将要采用的路由路径的完全控制。手动路由不调用route_design。路线在路线数据库中直接更新。当您想精确控制网络的延迟时,可能需要使用手动路由。对于例如,假设有一个源同步接口,您希望在其中最小化路由延迟设备中捕获寄存器的变化。为此,您可以指定LOC和BEL对寄存器和I/O的约束,然后精确控制从IOB到通过手动路由网络来注册。手动路由需要设备互连体系结构的详细知识。这是最好的用于有限数量的信号和短连接。
手动路由规则
在手动布线过程中,请遵守以下规则:
•驾驶员和负载需要LOC约束和BEL约束。
•手动路由期间不允许分支,但您可以通过启动从分支点开始的新手动路线。
•LUT负载的引脚必须锁定。
•您必须路由到尚未连接到驱动程序的负载。
•只允许完整的连接。不允许使用天线。
•允许与现有的未固定路由网络重叠。手动后运行route_design路由以解决由于重叠网络而引起的任何冲突。
进入分配路由模式
要进入"分配路由"模式,请执行以下操作:
1.打开设备窗口。
2.确保已选中"设备"窗口中的"路由资源"。
3.在设备选项层中启用未路由网络和部分路由网络的层视图,如下图所示。
4.选择需要路由的网络。
•未布线的网由红色飞线表示。
•部分路由的网络以黄色突出显示。
5.右键单击并选择"输入指定路由模式"。
将打开"指定布管模式:目标称重传感器接点"对话框。
6.选择要布线到的测压元件接点(可选)。
7.单击"确定"。
注意:要在"设备"窗口中显示部分布线或未布线的网络,请确保这些层在设备选项菜单中选择,如下图所示。
您现在处于手动路由模式。路由分配窗口,如下所示图,显示在"设备"窗口旁边。
"路由分配"窗口分为"选项"、"已分配的节点"和"邻居"节点部分:
•选项部分,如下图所示,控制路由的设置分配窗口。
○ "跃点数"值允许您指定可以
分配给相邻节点。这也会影响显示的"邻居节点"。如果数字跃点数大于1,则只有路由的最后一个节点显示在邻居节点中部分
○ "邻居的最大数量"值允许您限制邻居的数量显示在"邻居节点"部分中的节点。只有路由的最后一个节点显示。
○ 允许与未固定网络重叠开关控制分配的路由是否重叠允许使用现有的未固定路由。任何重叠都需要通过运行固定路由分配后的route_design命令。默认情况下,"选项"区域处于隐藏状态。要显示"选项"部分,请单击"显示"。
•"已分配的节点"部分显示已分配路由的节点。每个分配的节点显示为单独的行项目。
在"设备"窗口中,具有指定路由的节点以橙色突出显示。任何间隙在分配的节点部分中显示为GAP行项目。到自动布线间隙:
○ 在"分配的节点"部分中右键单击网络间隙。
○ 从上下文相关菜单中选择"自动布线"。
要指定下一个管段,请在间隙之前或之后或最后一个间隙之前选择指定的节点已分配节点部分中的已分配节点。
•"邻居节点"部分(如以下部分所示)显示允许的邻居节点,高亮显示当前选定的节点(白色)。并突出显示允许的邻居设备窗口中的节点(白色虚线)。
分配路由节点
决定为下一个管段指定哪个邻居节点后,可以:
•右键单击"邻居节点"部分中的节点,然后选择"指定节点"。
•双击"邻居节点"部分中的节点。
•单击设备视图中的节点。
将路由指定给邻居节点后,该节点将显示在指定的节点中部分,并在设备视图中以橙色突出显示。分配节点,直到达到负载,或者直到准备好分配具有间隙的路由。
取消分配路由节点
要取消分配节点,请执行以下操作:
1.转到"路由分配"窗口的"已分配节点"窗格。
2.选择要取消分配的节点。
3.右键单击并选择"删除"。
节点将从分配中删除。
退出分配路由模式
要完成路由分配并退出"分配路由模式",请单击"分配路由"按钮在"路由分配"窗口中。
将显示"分配路由"对话框,如下图所示,允许您在提交分配的节点之前对其进行验证。
取消分配路由模式
如果您还没有准备好提交路由分配,您可以取消分配使用以下方法之一的路由模式:
•单击路由分配窗口中的退出模式,或
•右键单击设备窗口,然后选择退出分配路由模式。
当路线被确定时,驾驶员和负载BEL和LOC也被固定。
验证分配的路线
•分配的路由在设备视图中显示为绿色虚线。
•部分分配的路线在设备视图中显示为黄色虚线。
下图显示了已分配和部分分配路线的示例。
分支
将路由分配给具有多个负载的网络时,必须按照以下方式路由网络步骤:
1.按照进入分配路由模式中提供的步骤,将路由分配给一个负载。
2.将路由分配给网络的所有分支。
下图显示了一个网络的示例,该网络已将路由分配给一个负载和需要路由到两个附加负载。
为分支指定路由
要将路由分配给分支,请执行以下操作:
1.转到设备窗口。
2.选择要路由的网络。
3.右键单击并选择"输入指定路由模式"。
将打开"指定布管模式:目标称重传感器接点"窗口,显示所有载荷。
注意:已分配路由的负载在的"已路由"列中有一个复选标记桌子
4.选择要路由到的负载。
5.单击〖确定〗按钮,弹出"指定路由模式:分支启动"对话框,如下图所示,打开。
6.选择要从中分支选定负载的路由的节点。
7.单击"确定"。
8.按照"分配路由节点"中所示的步骤进行操作。
锁定单元输入并在LUT上添加DONT_TOUCH约束荷载您必须确保路由到的LUT负载的输入不会被交换以及那些LUT上的其他输入。为此,请锁定LUT负载的单元格输入,如下所示:
1.打开设备窗口。
2.选择负载LUT。
3.单击鼠标右键,然后选择"锁定单元输入接点"。等效的Tcl命令是:
set_property LOCK_PINS {NAME:BEL_PIN} <cell object>
为了防止Placer中的物理合成中的引脚交换,DONT_TOUCH约束需要被应用于LUT单元。Tcl命令是:
set_property DONT_TOUCH TRUE<单元格对象>
对于具有固定路由和多个LUT负载的网络,可以使用以下Tcl脚本锁定所有LUT负载的单元输入。
set fixed_nets [get_nets -hierarchical -filter IS_ROUTE_FIXED] foreach
LUT_load_pin [get_pins -leaf -of [get_nets $fixed_nets] \
-filter DIRECTION==IN&&REF_NAME=~LUT*] {
set pin [get_property REF_PIN_NAME $LUT_load_pin]
set BEL_pin [file tail [get_bel_pins -of [get_pins $LUT_load_pin]]] set
LUT_name [get_property PARENT_CELL $LUT_load_pin]
need to handle condition when LOCK_pins property already exists on LUT
set existing_LOCK_PIN [get_property LOCK_PINS [get_cells $LUT_name]]
if { $existing_LOCK_PIN ne "" } {
reset_property LOCK_PINS [get_cells $LUT_name]
}
set_property LOCK_PINS \
[lsort -unique [concat $existing_LOCK_PIN pin:BEL_pin]] [get_cells
$LUT_name]
}
定向路由约束
固定路由分配作为"定向路由字符串"存储在路由数据库中。在一个定向路由字符串,分支由嵌套的{大括号}表示。例如,考虑下图中描述的路线一个路由,各种元素如下表所示(定向路由限制)。
该路由的定向路由字符串的简化版本如下:
{A B { D E T } C { F G H I M N } {O P Q} R J K L S }
这条路线在B和C分支。这条路线的主干线是A B C R J K L S。
使用find_routing_path命令创建定向路由约束
find_routing_path Tcl命令可用于创建定向路由约束。你然后可以将创建的约束分配给网络的FIXED_ROUTE属性以锁定路由。对于部分路由的网络,可以找到与网络直接相关联的节点。请参阅Vivado Design Suite属性参考指南(UG912),了解有关关系的更多信息在这些对象之间。find_routing_path命令返回以下其中一个:
•表示从起点到终点的路线路径的节点列表。
•如果命令运行但没有结果,则找不到路径。
•如果命令无法运行,则会出现错误。