DC脚本命令(set_optimize_register)_254、小小黑的博客-程序员宝宝_optimize_registers

技术标签: 脚本  DC脚本命令学习笔记  优化  

set_optimize_register

>>>该命令为对应的design设置优化寄存器属性,从而在优化的时候自动调用DC Ultra的optimize_regsiter命令来retime design。该命令通过移动组合逻辑在设计中的寄存器以实现目标时钟周期,然后在保持该时钟周期的同时最小化寄存器。optimize_registers属性对于为要转换为DesignWare合成库组件的HDL描述创建嵌入式dc_shell编译脚本特别有用。reset_design可以移除所有属性,包括optimize_regsiter属性。

set_optimize_register的可选项以及其含义如下:

true | false

指定设置优化寄存器属性开关值,默认值为true

-design design_list

指定design列表哪些用来retime,默认为current_design

-minium_period_only

表明在retiming中只进行timing的最小优化而不对面积的最小优化,默认情况下,同时优化面积和时序,该选项在你想要得到较好的timing时用到,但是area不是最优的,在timing优化满意时,你可以尝试通过重定时命令(retiming)来缩小区域,而不是使用此项。

-sync_transform multiclass | decompose | dont_retime

指定在设计中使用哪种转换方法用于同步顺序单元。如果没有任何输入引脚异步改变输出,则边沿出发寄存器是同步的。如果在锁存器不透明的时钟阶段器件没有输入引脚可以改变输出,则电平敏感锁存器被认为是同步的。默认选项为multiclass。

<<< 选项multiclass转换指定重定时过程中移动同步时序单元的clear,set和enable功能。根据set,clear和enable来对时序单元进行分类。组合单元的扇入或扇出处的连续单元的类别确定是否可以执行跨该单元的重定时。

<<< 选项decompose转换,指定将设计中的同步时序单元转换为D触发器或D锁存器的实例以及额外的组合逻辑以创建必要的同步功能。 在重新定时期间,只有D触发器/ D锁存器实例可以移动。

<<< 选项dont_retime指定同步时序单元在retiming期间不会被移动,他们可能会根据technology库将其映射称为不同的flip-flop。

-async_transform multiclass | decompose | dont_retime

指定设计中用于异步顺序单元格的转换方法。 如果至少有一个输入引脚异步改变输出,则边沿触发寄存器是异步的。 如果至少其中一个输入可以在锁存器不透明的时钟阶段期间改变输出,则电平敏感的锁存器是异步的。默认为multiclass。其他含义参考上面同步可选项。

-check_design

在retiming之前和之后显示设计中的额外信息。包含不同类别中的cell数量信息以及触发器和锁存器更多的细节内容,如果重定时不显示预期的结果,那么使用此信息来帮助解决问题。

-verbose

表示单元格的显式名称将与大部分-check_design选项类别的每个类别中的单元格数量一起显示。 明确的单元格命名可以帮助定位问题; 然而,输出的清单名字可能很长。 该选项只能和-check_design选项一起使用。

-print_critical_loop

在retiming期间显示关键循环。关键循环被定义为直接连接的组合和时序单元的序列,其总的组合延迟除以循环中寄存器的数量具有比设计中的任何其他循环更高的值。 关键循环限制了重定时可以实现的最小时钟周期。 如果在设计中给定数量的连续单元无法实现预期的时钟周期,则使用此选项可帮助解决设计的问题区域。 如果您正在流水线化数据路径,则可能需要在HDL代码中添加流水线阶段。

-clock clock_name

指定其时序单元将被重新定时的时钟的名称。时钟不能是虚拟时钟;它必须有一个相关的时钟端口。如果create_clock命令没有指定名称,则时钟的名称可以是create_clock命令中指定的名称,也可以是时钟端口的名称。时钟的寄存器都是由这个时钟触发的连续的单元。从时钟端口到顺序单元的连接可以通过时钟门控单元,缓冲单元和反相器单元。如果指定了-clock选项并且重新定义了边缘触发的寄存器,则其他时钟的寄存器不会重新定时。如果对电平敏感的锁存器重新定时并指定-clock选项,那么由该时钟驱动的锁存器以及由完成双相时钟系统所需的其他时钟驱动的锁存器将重新定时。如果边沿触发的寄存器重新定时,则只有时钟触发的寄存器被重新定时。默认情况下,由上升沿触发的寄存器重新定时。可以使用-edge选项指定不同的边缘。

-edge rise | fall

指定寄存器在时钟上升沿还是下降沿retime,这个选项只能和-clock选项一起使用,当电平敏感的锁存器被重定时时,这个选项并不重要。

-latch

指定对电平敏感的锁存器进行重新定时而不是边沿触发的时序单元(触发器)。 如果使用此选项,设计中的边缘触发时序单元将不会移动。 为了能够重新锁定锁存器,它们必须由对称的两相时钟系统驱动。 即使使用-latch选项,用于防止门控时钟中的毛刺的锁存也不会被移动。 这些锁存器位于时钟门控单元的扇形中。

-justification_effort low | medium | high

指定在寄存器反向调整期间要使用的调整工作级别。 您可以指定低,中或高的值。 指定低确保理由很快终止,但QoR可能不好。 指定中等提供了良好的QoR和相当的运行时间。 指定高可以提供最佳的QoR,而不考虑运行时间。 此选项的默认值是中等。

-delay_threshold target_clock_period

表明设计编译器改进在重要循环报告中给出的延迟小于最差延迟的路径。 Design Compiler进行额外的重定时器传递,直到所有这些路径都被优化在给定的目标时钟周期内运行。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/immeatea_aun/article/details/78648886

智能推荐

Linux复习提纲_Junoxiang的博客-程序员宝宝

一、嵌入式操作系统概述1.嵌入式开发特点(传统开发和嵌入式开发的区别)、是否有操作系统的参与(在软件与硬件层移植了操作系统)移植:修改操作系统的原码A传统开发的缺点软件移植性差;软件工程师得懂硬件;软件的功能性差(用户体验和功能);B.嵌入式开发的优点解决了传统开发的软硬件耦合度过高导致的问题;多任务机制;提供了丰富的网络协议栈;提供了丰富的开源软件和工具;2.嵌入式操作...

Unity3d 顶点着色器传入的顶点数据_nateYang123的博客-程序员宝宝

一、Cg顶点程序必须在结构中传递顶点数据。几种常用的顶点结构定义在文件UnityCG.cginc中。在大部分情况下仅仅使用它们就够了。结构如下:1、appdata_base: 包含顶点位置,法线和一个纹理坐标。2、appdata_tan:包含顶点位置,切线,法线和一个纹理坐标。3、appdata_full:包含位置、法线、切线、顶点色和两个纹理坐标。4、appdata_img:

python多线程爬取ts文件并合成mp4视频_七里香还是稻香的博客-程序员宝宝

python多线程爬取ts文件并合成mp4视频目录python多线程爬取ts文件并合成mp4视频前言一、分析页面二、整体思路逻辑三、源代码四、技巧写在最后前言在我看来,爬取视频可以分为简单、中等以及困难三种级别。简单级别:网页直接给出了mp4格式的视频链接,所以可以像下载图片一样发个请求就可以轻松获得中等级别:就是网页给出的是ts文件,所有的ts文件会存储在一个m3u8文件中,我们请求这个m3u8文件即可拿到全部的ts文件的请求网址,然后把全部的ts都下载下来,最后再将它们合成一个mp4格式的视

HDU 题型_abns的博客-程序员宝宝

基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、 1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、 1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、11...

Android ViewBinding include怎么玩_柯基爱蹦跶的博客-程序员宝宝_viewbinding 使用include

ViewBinding遇到include的时候怎么玩ViewBinding根据xml来生成单个binding文件,通过资源id来生成对应字段,比如:在fragment_tab_me里引入include_mine_head_layout&lt;!--引入布局--&gt;&lt;include layout="@layout/include_mine_head_layout" /&gt;使用时可能想到: // 在Fragment使用 override fun onCreateView(infl

Mac下启动XAMPP时无法启动Apache服务_tianshu8的博客-程序员宝宝_mac 无法启动apache

1、原因分析Mac上自带的Apache服务器已经启动,因此需要将其关闭后再启动XAMPP2、解决方法1、使用命令sudo apachectl stop将自带的Apache服务关闭2、使用命令sudo /Applications/XAMPP/xamppfiles/xampp start重新启动XAMPP3、解决方法1、使用命令sudo apachectl stop将自带的Apache服务关闭2、使用命令sudo /Applications/XAMPP/xamppfiles/xampp

随便推点

组合公式_瑞雪_的博客-程序员宝宝

1465 -- 【高精度】组合公式C(m,n)1634Description  C(m,n)就是求n个数中选m个数选择方案数。其计算公式为: C(m,n)=n!/(m!*(n-m)!)Input  输入文件共一行两个数m,n(1&amp;lt;=m&amp;lt;=n&amp;lt;=1000).Output  输出文件共一行一个数为计算结果Sample Input4 5Sample ...

Anti-Aliasing (SSAA , MSAA , MLAA , SRAA) 简介_pizi0475的博客-程序员宝宝

http://blog.csdn.net/codeboycjy/article/details/6312758  前两天在浏览游民星空的时候,小编居然在文章中挂了一篇技术文章,是关于SRAA的。对于AA的了解很少,正好入职之前还有几天的空闲时间,所以就这个机会把AA的一些基本算法简单学习了一下,不过也只是学习到了一点皮毛而已。本文将简单介绍四种反走样算法,他们分别是: SS

MySQL 增量同步到 PostgreSQL_weixin_34219944的博客-程序员宝宝

MySQL 增量同步到 PostgreSQL作者digoal日期2016-10-20标签PostgreSQL , MySQL , 数据同步 , binlog背景接触到越来越多MySQL的数据库迁移到PostgreSQL的需求,整理了一些从MySQL增量迁移到PostgreSQL的开源项目。有一些是基于binlog的,增量效果比...

Ubuntu搭建LAMP及相关配置_epsilon1的博客-程序员宝宝

Ubuntu搭建LAMP全教程按照以上教程安装phpmyadmin可能遇到phpmyadmin中使用配置文件中定义的控制用户连接失败问题找到/etc/phpmyadmin中config.inc.php 文件,问题为此配置文件中用户名和密码不匹配,找到下面两句,修改为你的当前用户名和密码。$cfg['Servers'][$i]['controluser'] = 'root

linux ipa 权限管理,利用Freeipa实现Liunx用户身份、权限的统一管理 | 企业安全拥抱开源..._weixin_29215969的博客-程序员宝宝

原标题:利用Freeipa实现Liunx用户身份、权限的统一管理 | 企业安全拥抱开源*本文原创作者:agui,本文属FreeBuf原创奖励计划,未经许可禁止转载在《企业安全拥抱开源之FREEOTP部署实战》一文中(下面简称上文),已经介绍了Freeipa的部署方法和OTP的启用方法,本文继续深入介绍如何将Linux接入进行统一的身份管理。在未部署统一身份管理系统时,管理员需要分别在每一台主机上为...

一个6年java程序员的工作感悟,写给还在迷茫的你_weixin_33806300的博客-程序员宝宝

前言很多年前,刚刚从大学毕业的时候,很多公司来校招。其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”。我当时的标准回答是(原话):“成为在某一方面能够独当一面的技术专家“。后来经历了几家不同的公司,换了不同的方向,才知道这个真是一个很难的问题。因为兵无常势,什么东西都是在不断的变化,一早的时候看好的东西可能会被淘汰。...

推荐文章

热门文章

相关标签