Vivado Design Suite中route_design命令脚本示例

本文详细介绍了四个route_design命令的示例脚本,这些脚本需要添加到工程的约束文件.xdc中,结果保存在工程文件中的runs\impl_1中的runme.log文件。

一、示例脚本1

route_design write_checkpoint -force $outputDir/post_route report_timing_summary -file $outputDir/post_route_timing_summary.rpt

该脚本执行了以下步骤:
a. 对设计进行布线(Routing)。
b. 在完成布线后写入设计检查点。
c. 生成时序摘要报告。
d. 将报告写入指定的文件。
布线是实现流程的一部分,或者作为 Tcl 脚本的一部分在 place_design 之后运行 route_design。路由器在日志中提供信息以指示进度,例如当前阶段(初始化、全局布线迭代和时序更新)。在全局布线结束时,日志包括周期性更新,显示路由器尝试实现完全合法化设计时当前重叠网络的数量。例如,时序更新会在整个流程中提供,以显示时序收敛的进度。
route_design 脚本用于对FPGA设计进行布线,并在此过程中提供关于布线进度和时序更新的详细信息。布线后,脚本会保存设计的检查点,并生成一个包含时序摘要的报告,该报告随后被写入到指定的文件中。
1、全局迭代(Global Iteration)
在全局布线迭代过程中,路由器会检查并尝试解决信号线之间的重叠问题。重叠指的是两条或多条信号线试图占用同一物理位置的情况,这在实际硬件中是不可能实现的。因此,路由器需要不断地调整信号线的路径,直到所有信号线都能在不重叠的情况下布通。
例如:

Phase 4.1  Global Iteration 0
Number of Nodes with overlaps = 435 
Number of Nodes with overlaps = 3
Number of Nodes with overlaps = 1
Number of Nodes with overlaps = 0。

第一句表示在全局布线迭代的某个时刻,存在435个节点(通常是信号线的端点或交点)具有重叠问题。随后,路由器在迭代过程中成功地解决了所有的重叠问题,布线已经变得合法化,即所有的信号线现在都有各自不重叠的路径。
2、时序摘要(Timing Summary)
提供了关于FPGA设计在布线后的时序性能的关键信息。例如:

[Route 35-57] Estimated Timing Summary | WNS=0.105 | TNS=0 | WHS=0.051 | THS=0 

解释:
WNS (Worst Negative Slack) :表示最差的负裕量。负裕量表示路径的实际延迟时间与要求的延迟时间之差,如果这个值是负数,则意味着路径的实际延迟超过了要求,这可能导致功能上的错误。 WNS是所有路径中负裕量最大的那个值,它反映了设计中时序最紧张的部分。 TNS (Total Negative Slack):表示所有路径负裕量的总和。通过这个值可以了解设计中存在多少时序紧张的情况。
WHS (Worst Hold Slack):表示最差的保持裕量。保持裕量表示路径的保持时间与实际延迟时间之差,它确保信号在稳定之前不会被下一个信号覆盖。WHS是所有路径中保持裕量最小的那个值。 THS (Total Hold Slack) 表示所有路径保持裕量的总和。
需要注意的是,时序分析包括建立和保持时间的检查。在FPGA设计的某些中间布线阶段,可能会跳过保持时间的分析以加快流程。如果未执行保持时间分析,路由器将显示WHS和THS的值为"N/A"(不适用)。
在布线完成后,路由器会报告布线利用率摘要和最终的估计时序摘要。布线利用率摘要通常包括使用的逻辑单元、内存块、DSP切片等的数量,以及它们相对于可用资源的百分比。
3、路由器利用率总结(Router Utilization Summary)

Global Vertical Routing Utilization = 15.3424%
Global Horizontal Routing Utilization  = 16.3981%
Routable Net Status:Does not include unroutable nets such as driverless and loadless. 
Run report_route_status for detailed report
Number of Failed Nets = 0
Number of Unrouted Nets = 0
Number of Partially Routed Nets = 0
Number of Node Overlaps = 0

解释:
Global Vertical Routing Utilization:表示在整个布线过程中,垂直方向(通常是Y轴)上使用的布线资源的百分比。
Global Horizontal Routing Utilization :表示在整个布线过程中,水平方向(通常是X轴)上使用的布线资源的百分比。
Routable Net Status:这部分给出了关于网络中布线状态的统计信息,但不包括那些无法布线的网络,比如没有驱动或没有负载的网络。
Number of Failed Nets:在布线过程中,由于某些原因(如空间不足、连接问题等)无法成功布线的网络数量。
Number of Unrouted Nets:那些尚未开始或尝试布线的网络数量。
Number of Partially Routed Nets:有些网络可能只部分地被布线了,但尚未完成。这部分数量表示了这些网络的数量。
Number of Node Overlaps:在布线过程中,如果两个或更多的布线元素(如线或通孔)尝试占用同一个物理位置,就会发生节点重叠。这个数量表示了这种情况发生的次数。
从上述总结中,在当前的布线过程中,没有失败、未布线或部分布线的网络,也没有节点重叠的情况。这意味着布线过程相对顺利,所有网络都已成功布线,且没有发生物理冲突。

二、示例脚本2

这段示例脚本主要描述了在一个电子设计自动化(EDA)流程中,如何优先布线(routing)设计中最重要的网络(nets)。脚本的具体步骤和背后的逻辑如下:

set preRoutes [get_nets -of [get_timing_paths -max_paths 10]]
route_design -nets [get_nets $preRoutes] -delay
route_design -preserve

第一句是首先通过get_timing_paths -max_paths 10获取设计中时序最关键的10条路径。然后,使用get_nets -of从这些路径中提取出网络,并将这些网络赋值给变量 p r e R o u t e s 。第二句是使用 r o u t e d e s i g n 命令对 preRoutes。 第二句是使用route_design命令对 preRoutes。第二句是使用routedesign命令对preRoutes中的网络进行布线,-nets选项指定了要布线的网络,-delay选项可能意味着在布线时考虑延迟,以最小化这些网络的延迟。
第三句是保留这些关键网络的布线,并继续布线其余部分:这行代码继续进行设计的整体布线,但-preserve选项意味着保留之前对$preRoutes中网络的布线结果。这通常是为了避免在后续布线过程中对这些关键网络进行不必要的修改。
在这个示例脚本中,首先布线了几个关键的网络,然后对整个设计进行布线。这展示了如何对单个网络和引脚(在这个情况下是网络)进行布线,这通常是为了解决特定的布线问题,比如:
在全面布线之前,预先布线关键网络并锁定资源。
手动取消非关键网络的布线,以释放布线资源给更关键的网络。
脚本中的第一行route_design命令实际上并没有在示例中明确给出,但从注释中我们可以推测,它可能用于初始化路由器并对一些必要的网络布线,比如时钟网络。这些网络通常需要在整个设计的其他部分之前布线,因为它们对时序至关重要。
总的来说,这个脚本是电子设计自动化(EDA)流程中优化布线步骤的一个例子,目的是通过优先处理关键网络来优化设计的整体性能。

三、示例脚本3

set preRoutes [get_nets -of [get_timing_paths -max_paths 10]]
lappend preRoutes [get_nets -of [get_timing_paths -hold -max_paths 10]]
route_design -nets [get_nets $preRoutes] -auto_delay
route_design -preserve

与示例2一样,首先布线几个关键的网络,然后对整个设计进行布线。不同之处在于使用了-auto_delay选项而不是-delay。路由器对关键网络进行时序驱动的布线,这虽然牺牲了一些运行时间,但可以获得更高的准确性。这对于那些同时涉及建立时间关键路径和保持时间关键路径的网络特别有用,因为布线必须在一定的延迟范围内,以满足建立时间和保持时间的要求。
在这个脚本中,我们考虑了两种类型的时序关键路径:建立时间关键路径和保持时间关键路径。建立时间是指数据必须在时钟边沿到达之前稳定的时间,而保持时间是指数据必须在时钟边沿之后保持稳定的时间。这两个因素对于确保电路正确运行都至关重要。
最后,使用-preserve选项确保了在布线设计的其余部分时,先前布线的关键网络的布线结果不会被更改。这有助于保护这些关键网络的时序性能,并确保整个设计的稳定性和性能。

四、示例脚本 4

route_design 
# Unroute all the nets in u0/u1, and route the critical nets firstroute_design -unroute [get_nets u0/u1/*] 
route_design -delay -nets [get_nets $myCritNets] 
route_design -preserve

这个示例脚本中的策略展示了一种可能的方法,用于解决由于拥塞导致的时序失败问题。在示例设计中,一些由变量 m y C r i t N e t s 表示的关键网络需要与实例 u 0 / u 1 中的网络相同的设备区域中的布线资源。然而, u 0 / u 1 中的网络并不是特别时序关键的,因此首先取消它们的布线,以便关键网络 myCritNets表示的关键网络需要与实例u0/u1中的网络相同的设备区域中的布线资源。然而,u0/u1中的网络并不是特别时序关键的,因此首先取消它们的布线,以便关键网络 myCritNets表示的关键网络需要与实例u0/u1中的网络相同的设备区域中的布线资源。然而,u0/u1中的网络并不是特别时序关键的,因此首先取消它们的布线,以便关键网络myCritNets能够以最小的可能延迟进行布线。然后,使用route_design -preserve对整个设计进行布线。-preserve开关保留了$myCritNets的布线,而之前未布线的u0/u1网络则重新进行布线。
通过这种方式,可以优先处理那些对时序要求严格的关键网络,确保它们获得最佳的布线结果。同时,通过取消非关键网络的布线,可以释放布线资源,使得关键网络的布线更加容易实现。最后,使用-preserve选项确保在布线整个设计时,之前已经布线好的关键网络不会被改变,从而保护它们的时序性能。这种策略有助于在资源受限的情况下优化设计的整体性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

img使用 :src 动态绑定图片地址,图片不成功

使用vue cli 创建的vue2项目&#xff0c;项目中想实现轮播效果。 出现的问题&#xff1a; 使用 :src 动态绑定图片地址&#xff0c;图片没有出现 <el-carousel :interval"3000" arrow"always"><el-carousel-item v-for"(item,index) in sw…

【MATLAB源码-第46期】基于matlab的OFDM系统多径数目对比,有无CP(循环前缀)对比,有无信道均衡对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;正交频分复用&#xff09;是一种频域上的多载波调制技术&#xff0c;经常用于高速数据通信中。以下是关于多径数目、有无CP&#xff08;循环前缀&#xff09;以及有无信道均衡在OFDM系统中对误码率的影响&am…

6-125 二叉树的后序遍历(Python语言描述)

本题要求输出二叉树的后序遍历,输出格式见样例。 函数接口定义: #后序遍历 def postOrder(T)其中二叉树类的定义如下: #二叉树的存储-二叉链表 class BinaryTree:#1.构造方法def __init__(self,newValue):self.key = newValue #树根self.left = None #左子树初…

小程序如何通过把动态数据值传入到css文件中控制样式

场景&#xff1a;动态改变一个模块的高度 一、常用解决方法&#xff1a;行内样式绑值&#xff0c;或者动态class来传递 <viewclass"box":style"height: ${boxHeight}px">我是一个动态高度的box,我的高度是{{boxHeight}}px </view>二、高度传…

第07-1章 计算机网络相关概念

7.1 本章目标 了解网络协议的概念了解网络体系结构熟悉ISO/OSI参考模型以及每一层的功能掌握TCP/IP模型各层的主要协议及其功能熟练掌握IP地址、子网规划等相关内容 7.2 网络协议的概念 7.2.1 概念介绍 &#xff08;1&#xff09;网络协议&#xff1a;计算机网络和分布系统中…

循序渐进丨MogDB 数据库带级联从库的集群切换后如何保持原有架构?

生产数据库运行过程中可能会涉及到升级或者打补丁&#xff0c;导致各节点的角色有计划的发生改变。如果集群内角色发生改变&#xff0c;是否还能保持原有架构继续对外提供服务呢&#xff1f;我们来做一下测试。 采用22模式模拟同城两机房部署4节点 MogDB 数据库集群&#xff0c…

K8S临时存储-本地存储-PV和PVC的使用-动态存储(StorageClass)

介绍 容器中的文件在磁盘上是临时存放的&#xff0c;当容器崩溃或停止时容器上面的数据未保存&#xff0c; 因此在容器生命周期内创建或修改的所有文件都将丢失。 在崩溃期间&#xff0c;kubelet 会以干净的状态重新启动容器。 当多个容器在一个 Pod 中运行并且需要共享文件时…

gitlab、jenkins安装及使用文档二

安装 jenkins IP地址操作系统服务版本192.168.75.137Rocky9.2jenkins 2.450-1.1 jdk 11.0.22 git 2.39.3192.168.75.138Rocky9.2gitlab-ce 16.10.0 结合上文 jenkins安装 前期准备&#xff1a; yum install -y epel-release yum -y install net-tools vim lrzsz wget…

WSL访问adb usb device

1.Windows上用PowerShell运行&#xff1a; winget install --interactive --exact dorssel.usbipd-win 2.在WSLUbuntu上终端运行&#xff1a; sudo apt install linux-tools-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-too…

Gitea是一个开源、轻量级的自托管Git解决方案

Gitea介绍 Gitea是一个由Go语言编写的、轻量级的、自托管的Git解决方案&#xff0c;类似于GitHub、GitLab等平台。它是用Go语言编写的开源软件&#xff0c;提供了Git版本控制系统的基本功能&#xff0c;包括代码托管、问题跟踪、代码审查、Wiki等。Gitea的设计目标是简单易用、…

Swift中的枚举

在Swift中&#xff0c;枚举&#xff08;Enumeration&#xff09;是一种定义一组相关值的方式。枚举可以包含零个或多个成员&#xff0c;每个成员可以有关联的值。枚举可以用于定义一组相关的选项、状态或错误类型。 以下是Swift中定义枚举的示例&#xff1a; //定义一个简单的…

酷开科技OTT大屏营销:开启新时代的营销革命

随着互联网技术的不断发展和普及&#xff0c;大屏已经成为越来越多家庭选择的娱乐方式。在这个背景下&#xff0c;酷开科技凭借其强大的技术实力和敏锐的市场洞察力&#xff0c;成功地将大屏转化为一种新的营销渠道&#xff0c;为品牌和企业带来了前所未有的商业机会。 酷开科技…

爬虫jsoup解析工具之解析标题

package day01;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.junit.Test; import java.net.URL; public class JsoupFirstTest {Testpublic void main() throws Exception {/** <!--jsoup解析工具所需依赖--><dependency><groupId>…

【数据结构与算法篇】双链表实现

【数据结构与算法篇】双链表实现&#xff08;近300行实现代码&#xff09; &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;数据结构与算法&#x1f345; &#x1f33c;文章目录&#x1f33c; 1. List.h 头文件的声明 2. List.c 源文…

上海计算机学会 2023年9月月赛 乙组T3 工程建设(拓扑排序)

第三题&#xff1a;T3工程建设 标签&#xff1a;拓扑排序题意&#xff1a;有 n n n个建设任务&#xff0c;第 i i i个建设任务完成时间为 t i t_i ti​。给定 m m m个前置任务要求&#xff0c;第 j j j条规则&#xff0c;若要开工 b j b_j bj​号任务&#xff0c;必须先完成 a…

etcd相关知识整理归纳 —— 筑梦之路

什么是etcd? Etcd 是 CoreOS 团队于2013年6月发起的开源项目&#xff0c;它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法&#xff0c;Etcd基于 Go 语言实现。 名字由来&#xff0c;它源于两个方面&#xff0c;unix的“/etc”文件…

安卓手机APP开发媒体内容部分__ExoPlayer支持的格式

安卓手机APP开发媒体内容部分__ExoPlayer支持的格式 目录 概述 可适配的流 DASH 光滑流 HLS 先进的容器的格式 RTSP 支持的采样格式 支持的网络类型 采样的格式 FFmpeg 代码库

软件概要设计说明书实际项目编制案例(直接套用)

1引言 1.1编写目的 1.2项目背景 1.3参考资料 2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4运行环境设计 2.5设计目标 3系统功能模块设计 3.1个人办公 3.2系统管理 4性能设计 4.1响应时间 4.2并发用户数 5接口设计 5.1接口设计原则 5.2接口…

【word2pdf】Springboot word转pdf(自学使用)

文章目录 概要整体介绍具体实现官网pom文件增加依赖 遇到的问题本地运行OK&#xff0c;发布到Linux报错还是本地OK&#xff0c;但是Linux能运行的&#xff0c;但是中文乱码 小结 概要 Springboot word 转 pdf 整体介绍 搜了一下&#xff0c;发现了能实现功能的方法有四种 U…

手写一个简单的 OrbitControls 轨道控制器

手写一个简单的 OrbitControls 轨道控制器 相信使用过THREE.JS的同学&#xff0c;都知道 OrbitControls 这个的轨道控制器&#xff0c;他是绕着一个观察点&#xff0c;来进行什么什么的… 反正就是那么个意思。 所以很明显OrbitControls的运动轨迹是一个球体&#xff0c;他是绕…