vivado 约束条件效率

约束条件效率

审查约束覆盖范围编写时间约束时,重要的是保持约束的简单性并指定它们仅在相关网表对象上。低效的约束导致更大的运行时间和更大的内存消耗。低效的约束也可能导致设计受到不适当的约束,因为定时异常可能会意外地覆盖比预期更多的路径,并与其他路径发生冲突约束。当提供给时间约束的对象数量很小时,时间约束是有效的以尽可能准确和安全地覆盖期望的定时路径。大多数时候由于对象列表通常是由一些引脚或单元构建的,因此无法获得效率名称模式。但是,当为计时异常构建对象列表。Vivado提供了几种获取时间异常反馈的方法:

•方法检查XDCB-1(report_methodology)报告了时间限制引用大型对象集合(超过1000个)。

•报告异常命令(Report_exceptions)提供覆盖范围和冲突关于已经定义的定时异常的信息。

AMD建议您仔细分析以下报告:

•report_exceptions-scope_override

此报告提供了顶级时序约束的作用域时序约束的列表部分或完全覆盖。但是,它不会报告由覆盖的作用域约束另一个作用域约束(来自相同作用域或不同作用域)。例如,这个选项可用于验证IP约束是否未被某些用户的顶级覆盖约束。

•report_exceptions–覆盖范围

此报告提供每个定时异常的逻辑路径覆盖范围。对象的数量将传递给计时异常的值与起点和终点的数量进行比较有效地合作

•report_exceptions–忽略

此报告提供了被其他时间约束覆盖的时间约束的列表(用于例如由set_clock_group覆盖的set_false_path)。您应该查看重写约束以确保正确性或删除无用的约束。

•report_exceptions–ignored_object

此报告提供了由于以下原因而被忽略的起点和终点的列表:,从这些起点或到这些终点的不存在的路径。改进约束运行时

优化Pin查询

因为设计中的引脚比单元多好几倍,所以使用get_pins而不是getcells可能会对运行时产生重大影响。运行时降级可能是处理XDC约束时(例如,open_checkpoint运行时)或执行Tcl脚本。AMD建议利用引脚和单元对象之间的关系以改进大量pin查询的运行时间。它不是根据设计中所有引脚的名称来查找引脚列表,而是更多高效地首先找到所需引脚的单元格,然后通过过滤由第一查询返回的单元格的所需引脚,如下所述。

Recommended Pin Queries
• Original pin query:
get_pins –hier * -filter {NAME=~xx*/yy*}
• Recommended efficient pin query:
get_pins –filter {REF_PIN_NAME=~yy*} –of [get_cells –hier xx*]
• Alternate recommended pin query:
get_pins –filter {REF_PIN_NAME=~yy*} –of [get_cells –hier * -filter
{NAME=~xx*}]
Example
For example, consider the following constraint:
set_max_delay 15 -from [get_pins -hier -filter {NAME=~*/aclk_dpram_reg*/*/
CLK}] \
-to [get_cells -hier -filter {NAME=~*/bclk_dout_reg*}] \
-datapath_only
The constraint above can be re-written as follows to significantly improve the query runtime,
especially for larger designs:
set_max_delay 15 -from [get_pins -of [get_cells -hier –filter
{NAME =~ *aclk_dpram_reg*/*}] -filter {REF_PIN_NAME == CLK}] \
-to [get_cells -hier bclk_dout_reg*] \
-datapath_only

替换all_registers查询

以下是一些额外的查询建议:

•尽可能避免使用all_registers进行查询,因为它们往往会创建大量的对象。此类查询应替换为具有适当名称模式的单元格/引脚查询。

•当必须使用all_registers并且查询正在从时钟域,all_registers-clock有时可以具有与直接使用相同的覆盖范围时钟对象。例如,下面的两个命令在覆盖范围方面是等效的。然而使用getclocks的第二种形式要高效得多,因为多循环路径约束引用单个时钟对象,而不是可能的数十万个连续对象元素。

原件:

set_multicycle_path –from [all_inputs] –to [all_registers –clock clk1]
Optimal:
set_multicycle_path –from [all_inputs] –to [get_clocks clk1]

优化运行时间的排序约束

在内存中加载正时约束时,正时引擎会验证每个新约束并打印消息以标记潜在问题。某些时间限制部分使无效时序数据库(也称为时序图)和一些其他时序约束要求正确应用最新的时序数据库。一旦定时数据库过时,需要后续的定时更新,例如,更新自动推导时钟或禁用设计中的某些定时路径。查询时钟的XDC命令或遍历设计以查询网表对象需要最新的定时数据库。影响定时数据库状态的交错约束和命令可以是运行时由于定时信息被多次无效和更新,因此是密集的。对于运行时优化,AMD建议您订购时间限制和查询小心下表列出了XDC约束

运行时最密集的组合之一是set_disable_timing与all_fanout或all_fanin。应避免这种组合。例如:

set_disable_timing–from<pin>-to[all_fanout…]set_disable _timing-from[all_fanin…]-到<pin>

基于上表,运行时优化的最佳约束顺序为:

1.XDC约束set_disable_timing、set_case_analysis和set_external_delay。

2.对时序图有影响的约束。

3.不需要时序图更新的约束。

For example, the following sequence of constraints is not optimal.
create_clock –name clk1
create_generated_clock –name genclk1 –master_clock [get_clocks -of
[get_pins ...]] set_disable_timing ...
create_clock –name clk2
set_false_path -from [get_clocks -of [get_pins ff1/C]] set_case_analysis ...
create_clock –name clk3
set_max_delay -to [get_clocks -of [get_pins ff2/C]]
The following shows a more optimal and runtime efficient sequence.
set_disable_timing ...
set_case_analysis ...
create_clock –name clk1 create_clock –name clk2
create_clock –name clk3
create_generated_clock –name genclk1 –master_clock [get_clocks -of
[get_pins ...]]
set_false_path -from [get_clocks -of [get_pins ff1/C]]
set_max_delay -to [get_clocks -of [get_pins ff2/C]]

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

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

相关文章

谈谈微服务的Ribbon知识点

Ribbon负载均衡 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。(负载均衡RestTemplate调用)&#xff0c;在服务调用过程中的负载均衡一般使用SpringCloud的Ribbon 组件实现 , Feign的底层已经自动集成了Ribbon , 使用起来非常简单。 Configuration…

[Halcon模块] Halcon13.0查询算子模块归属

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

案例082:基于微信小程序的跑腿管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

HarmonyOS概述

HarmonyOS概述 HarmonyOS系统架构 内核层—系统服务层—框架层—应用层 内核层&#xff1a; 内核子系统: HarmonyOS采用多内核设计&#xff0c;支持针对不同资源受限设备 &#xff0c;选用适合的OS内核&#xff0c;为上层提供基础操作系统能力。驱动子系统: 硬件驱动框架(H…

3-10岁孩子语文能力培养里程碑

文章目录 基础能力3岁4岁5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&#xff09; 阅读推荐&父母执行3岁4-5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&a…

创建Maven Web工程

目录下也会有对应的生命周期。其中常用的是&#xff1a;clean、compile、package、install。 比如这里install &#xff0c;如果其他项目需要将这里的模块作为依赖使用&#xff0c;那就可以 install 。安装到本地仓库的位置&#xff1a; Java的Web工程&#xff0c;所以我们要选…

机器学习 | 聚类Clustering 算法

物以类聚人以群分。 什么是聚类呢&#xff1f; 1、核心思想和原理 聚类的目的 同簇高相似度 不同簇高相异度 同类尽量相聚 不同类尽量分离 聚类和分类的区别 分类 classification 监督学习 训练获得分类器 预测未知数据 聚类 clustering 无监督学习&#xff0c;不关心类别标签 …

node.js mongoose schemaTypes

目录 官方文档 简介 SchemaType 示例 配置SchemaType规则 通用规则 特定schemaType规则 String Number Date Map monggose会根据shcemaType将文档值转换成指定的类型 官方文档 Mongoose v8.0.3: SchemaTypes 简介 SchemaTypes是在使用Mongoose时&#xff0c;用于…

【深度学习】Sentece Embedding - SImCES

前言 句子向量表示一直作为很多自然语言处理任务的基石&#xff0c;一直是NLP领域的热门话题&#xff0c;BERT-Flow以及BERT-whitenning其实像是后处理&#xff0c;将bert的输出进行一定的处理来解决各向异性的问题。 而SimCSE《Simple Contrastive Learning of Sentence Embed…

线上BUG引起思考:package.json 中的 ^~ 该保留吗?

一、写在前面 一次线上项目 bug&#xff0c;引发了关于 package.json 中的 ^~ 是否该保留&#xff1f;保留可能引发的后果&#xff1f;以及如何在版本更新便利和版本更稳定中取舍的思考&#xff1f;这个 bug 是由于线上部署打包时&#xff0c;自己下载了最新依赖&#xff0c;于…

硬件基础-电感

电感 目录 1.原理 2.作用 3.高频等效模型 4. 直流偏置特性 5.器件选型 6.电感损耗 7.功率电感 8.贴片电感 9.共模电感 10.差模电感 1.原理 电感是阻碍电流的变化,储能 电感的磁芯决定了电感的饱和电流&#xff0c;也决定了电感值与电流的变化曲线&#xff0c;磁滞损…

P1 H264码流结构分析 (上)

目录 前言 01 什么是码流结构 02 H264帧类型的区别 03 片slice 前言 从本章开始我们将要学习嵌入式音视频的学习了 &#xff0c;使用的瑞芯微的开发板 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525…

石器时代H5小游戏架设教程

本文讲解石器时代 H5 之恐龙宝贝架设教程&#xff0c;想研究 H5 游戏如何实现&#xff0c;那请跟着此次教程学习在拥有小游戏源码的情况下该如何搭建起来 开始架设 1. 架设条件 石器时代架设需要准备&#xff1a; 一台linux 服务器&#xff0c;建议 CentOs 7.6 版本&#xf…

ros2 学习08 topic 话题定义及示例

topic 在ros 中的作用 节点实现了机器人各种各样的功能&#xff0c;但这些功能并不是独立的&#xff0c;之间会有千丝万缕的联系&#xff0c;其中最重要的一种联系方式就是话题&#xff0c;它是节点间传递数据的桥梁。 大家可以想一下&#xff0c;这两个节点是不是必然存在某种…

作业--day34

使用select完成TCP并发服务器和客户端 server.c #include <myhead.h>#define PORT 8888 #define IP "192.168.125.137"int main(int argc, const char *argv[]) {int sfd socket(AF_INET, SOCK_STREAM, 0);if(sfd -1){perror("socket error");re…

Docker 网络模式 -day05

docker 启动时候还会有&#xff0c;名为docker0的虚拟网桥&#xff0c;注意网址为 127.0.0.1 [rootiZuf6hxabqikytnrumsi4gZ ~]# ifconfig docker0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.2…

基于k6和python进行自动化性能测试

摘要&#xff1a;在性能测试中&#xff0c;达到相应的性能指标对于一个软件来说十分重要&#xff0c;在本文中&#xff0c;将介绍一种现代化性能测试工具k6。 import http from k6/http; import { sleep } from k6; export default function () {http.get(https://test-api.co…

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 &#xff08;一&#xff09;新建文件夹 &#xff08;二&#xff09;打开文件夹 &#xff08;三&#xff09;打开运行终端 &#xff08;四&#xff09;创建基础项目 &#xff08;五&#xff09;创建app 1. 安装Django &#xf…

note-1

一个“逆向思维”的小例子&#xff1a;“一男生晚上到某银行ATM机存款&#xff0c;碰ATM机出现故障&#xff0c;5000元被吞。当即联系银行&#xff0c;被告知要等到天亮才能维修。其绞尽脑汁的想突然灵机一动&#xff0c;使用公用电话致电客服称&#xff1a;ATM机多吐出3000元&…

VR智慧酒店:提升人气入住率,助力酒店开辟新赛道

随着智能科技的不断进步&#xff0c;智能感、科技感也体现在我们的住宿体验上&#xff0c;VR智慧酒店可以让用户沉浸式体验高质量的酒店服务&#xff0c;这种全新的体验方式助力开启智能化酒店获客新模式&#xff0c;引爆超人气入住率。 传统的酒店行业推广成本高、效果差&…