Design Compiler:自适应重定时(Adaptive Retiming)

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


简介

        重定时是DC Ultra引入的一种时序优化技术,可以将时序单元(触发器和锁存器)穿越组合逻辑前后移动,以优化设计的时序和面积,为提升电路时序性能提供了一个重要手段。

        根据使用场景的不同,重定时可分为两类:自适应重定时(Adaptive Retiming)和流水线重定时(Pipelined-Logic Retiming),本文关注的重点是自适应重定时。

使用方法

        不管是线负载模式还是拓扑模式,只需要在使用compile_ultra命令综合时添加-retime选项(不能同时指定-top或-only_design_rule选项,否则-retime选项被忽略)即可自动在优化过程中执行自适应重定时,如下所示。

dc_shell> compile_ultra -retime

        需要注意的是如果时序单元拥有dont_touch、size_only或dont_retime属性,则该时序单元不会被重定时。

        在自适应重定时过程中被移动的时序单元将会被重新命名,使用前缀R和编号后缀(例如R_123),因此这些时序单元无法再与原始名(使用信号名前缀和reg后缀)对应。这通常不会给等价性检查带来问题,因为这些重命名都会被记录在SVF文件中,有关SVF文件的更详细介绍,参考下面的博客。

Design Compiler:set_svf命令以及svf文件简介https://blog.csdn.net/weixin_45791458/article/details/144069207?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522836664eccdd944f4e1a9cd4d2f2c8123%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=836664eccdd944f4e1a9cd4d2f2c8123&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-144069207-null-null.nonecase&utm_term=svf&spm=1018.2226.3001.4450

        可以使用set_dont_retime命令指定某些单元不参与重定时(包括自适应重定时与流水线重定时)。

自适应重定时与流水线重定时的区别

        自适应重定时一般用于整体通用设计,而不是那些显式使用流水线的逻辑,通过移动时序单元,以优化时序组(Path Group)中的关键路径(Worst Negative Slack, WNS)的延迟;对于那些显式使用流水线的数据通路,仍建议使用流水线重定时。可以同时使用自适应重定时和流水线重定时,它们并不冲突。

自适应重定时示例

        在综合前手动确定最佳的时序单元位置,并进行RTL编码通常是一项耗时且困难的工作。自适应重定时可以自动调整设计中时序单元的位置,以尽可能平衡时序单元间的延迟。当设计中的某些时序路径超过时序目标而其他时序路径又未充分利用时序裕量时,这项技术尤为有用。如果设计中所有时序路径都已满足时序目标,自适应重定时也可用于减少时序单元数量(如可能),以优化面积或功耗。在重定时过程中,时序单元会穿越组合逻辑向前或向后移动,如图1所示。

图1 自适应重定时

        图1的上半部分展示了向后移动时序单元,为了保证端到端功能正确,增加了一个时序单元,看起来就像是时序单元复制,但需要注意的是,这与为了分摊负载而进行的复制(Register Replication)是不一样的;图1的下半部分展示了向前移动时序单元,为了保证功能正确,减少了一个时序单元,看起来就像是时序单元合并,但需要注意的是,这与为了减少面积而进行的合并(Register Merging)是不一样的,但具有类似的功能。

复位的重要性

        上一小节说明了为了保证功能正确性,自适应重定时会增加或减少时序单元的数量,但是如果时序单元拥有异步复位/置位端,还需要更多操作才能保证功能正确性。

图2 复位值限制

        以图2为例,假设最初的时序单元是一个带异步复位的触发器(在图中用红色的0标注),再发生了向后重定时后,由于需要保证最后一个门的相关输入在复位时为0,除了需要增加一个触发器,还需要将带异步复位的触发器变更为带异步置位的触发器(在图中用红色的1标注)。

        除了图2所示的简单情况,自适应重定时还可以处理可能出现的复位/置位冲突情况,如图3所示。

图3 出现冲突的自适应重定时

        假设网表1是最初的设计,其中有些触发器使用异步复位,也有些触发器使用异步置位(在图中用0或1标注),它们的复位/置位信号是共用的。假设发生了向后重定时,就和图2类似,触发器R4依旧保持原来的异步复位,而触发器R7则从异步复位变成异步置位。

        为了保证异或门C5的输出在复位/置位时为1,触发器R5和R6则存在两种情况,一种如网表2所示,一种如网表3所示。区别在于网表3可以合并触发器R4和R5并允许进一步向后自适应重定时,而网表2则无法合并,自然也无法进一步向后自适应重定时。

时序例外下的限制

        如果存在时序例外,Design Compiler仅在所有被移动的时序单元具有相同的时序例外设置时,才允许它们一起进行重定时移动(还需要将compile_retime_exception_registers变量设置为true),支持的例外类型包括:

set_max_delay
set_min_delay
set_multicycle_path
set_false_path
group_path

        例如,以下命令中的两个触发器具有相同的时序例外。

set_max_delay 10 -to [get_pins r0/D r1/D]

        写成两条命令也可以,但需要保证值的设置一致。

set_max_delay 10 -to [get_pins r0/D]
set_max_delay 10 -to [get_pins r1/D]

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

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

相关文章

解决kali Linux在VMware中的全局缩放问题

在每次启动kali时,因为屏幕分辨率过高,系统整体特别小,该怎么操作调整合适呢 在搜索中搜索kali HiDPI Mode 选择yes 然后就会自动调整合适了

Python关键字梳理

在 Python 中,关键字(Keywords)是具有特殊含义的保留字,它们用于定义语法和结构。async 是 Python 3.5 引入的关键字,用于支持异步编程(Asynchronous Programming)。下面我将详细讲解 async 及其…

结构体实战:用Rust编写矩形面积计算器

文章目录结构体实战:用Rust编写矩形面积计算器📐 问题描述1️⃣ 基础版:独立变量(混乱版)2️⃣ 进阶版:使用元组3️⃣ 终极版:使用结构体(优雅版)🎯 运行结果…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的场景零售创新研究

摘要:本文聚焦场景消费逻辑,探讨开源链动21模式AI智能名片S2B2C商城小程序在场景零售中的应用。通过分析场景消费中消费者体验的关键作用,结合该技术组合的特性,阐述其如何优化场景内容、增强场景美感,为消费者创造超乎…

新发布:26考研院校和专业大纲

复习方向错了,努力可能白费 近日,多所高校陆续发布2026年硕士研究生招生考试自命题科目大纲,为备考的学子们指明了复习方向。今年的考纲有哪些重要变化?又该如何应对?本文为你全面梳理! 院校和专业发布详情…

matlab/Simulink-全套50个汽车性能建模与仿真源码模型9

50个simulink模型(所有模型罗列如下,没罗列就是没有,包含子模块总共50个。) 基于汽车驱动力-行驶阻力平衡图的汽车动力性仿真模型 基于汽车动力特性图的汽车动力性仿真模型 基于汽车功率平衡图的汽车动力性仿真模型 电动汽车动力…

为什么星敏感器(Star Tracker)需要时间同步?—— 从原理到应用的全解析

为什么星敏感器(Star Tracker)需要时间同步?—— 从原理到应用的全解析 引言 在卫星姿态控制系统中,星敏感器(Star Tracker, 简称“星敏”) 是最精确的姿态测量设备之一,其精度可达角秒级&…

【Cocos TypeScript 零基础 24.1】

目录 首次实战开发心得实战项目<修仙录游戏> 首次实战开发心得 遇到的技术问题也多 发表问题也不少 收入问题 本人都将会写篇专栏总结一下 实战项目<修仙录游戏> 上图是已上线的实战项目二维码 耗费的时间太久了 下次将跟新开发遇到的各种奇奇怪怪的问题 各位看…

Linux关机指令详解:shutdown命令的使用指南

掌握shutdown命令的正确使用对于Linux系统管理员至关重要&#xff0c;它不仅能确保系统安全关闭&#xff0c;还能避免数据丢失和用户工作中断。 目录 一、基本语法 二、常用选项 三、使用示例 立即关机 10分钟后关机 指定时间关机&#xff08;如23:00&#xff09; 重启系…

青少年编程与数学 02-022 专业应用软件简介 08 电子设计自动化软件

青少年编程与数学 02-022 专业应用软件简介 08 电子设计自动化软件一、什么是EDA软件&#xff08;一&#xff09;定义与起源&#xff08;二&#xff09;功能与分类&#xff08;三&#xff09;技术发展趋势二、EDA软件在当前国际竞争中的重要性&#xff08;一&#xff09;技术壁…

TypeScript系列:第六篇 - 编写高质量的TS类型

掌握这些&#xff0c;ts类型声明事半功倍 &#x1f4aa;&#x1f3fb; 不要做 永远不要使用类型 Number、String、Boolean、Symbol 或 Object 这些类型指的是非原始装箱对象&#xff0c;使用 number、string、boolean 和 symbol 类型不要使用 any 作为类型&#xff0c;除非正在…

逐步构建高性能http服务器及聊天室服务器

目录 如何拿到浏览器发来的http请求 如何给浏览器发送响应 响应基本原理 给浏览器发送一个网页作为响应 给浏览器发送一个图片作为响应 接下来我们要做什么 完善业务逻辑 浏览器如何访问特定文件 访问根目录下的文件 访问子文件夹下的文件 习惯性目录结构 GET请求带…

水下航行器外形分类详解

在水下航行器的设计领域&#xff0c;外形是影响其性能和功能的关键因素之一。根据不同的设计目的和应用场景&#xff0c;水下航行器的外形可以按照多种方式进行分类。 本文将详细介绍几种常见的分类方式及其对应的外形特点。 按流体动力布局分类 标准回转体 外形标准回转体外…

Ubuntu:Mysql服务器

mariadb与mysql完全兼容&#xff0c;使用时感受不到差别 目录 1 mariadb的安装2 启动mysql3 关闭防火墙4 连接到mysql5 Mysql的配置文件6 Mysql远程访问 1 mariadb的安装 apt install mariadb-server检查安装 ls /etc/init.d2 启动mysql service mysql restart3 关闭防火墙…

使用systemd 监控服务并实现故障自动重启

一、为什么需要自动重启&#xff1f; 在生产环境中&#xff0c;服务可能因内存溢出、资源竞争、外部依赖中断等问题意外崩溃。手动恢复效率低下&#xff0c;而 systemd 的自动重启机制可在秒级内恢复服务&#xff0c;显著提升系统可用性。 ⚙️ 二、systemd 自动重启的核心配置…

在 React 中使用 WebSockets 构建实时聊天应用程序

实时通信已成为现代 Web 应用程序&#xff08;尤其是在聊天应用程序中&#xff09;不可或缺的功能。实时通信提供了一种强大的方法来实现客户端和服务器之间的实时双向通信。在本指南中&#xff0c;我们将逐步讲解如何使用React WebSockets构建实时聊天应用程序。 先决条件 在…

实验五-Flask的简易登录系统

一、实验目的和任务 1.掌握Flask框架的基本使用方法 2.理解Web应用的会话管理机制 3.实现用户认证系统的基本功能 4.学习模板继承和表单处理技术 要求&#xff1a;请将思考题的答案写在实验报告中 二、实验内容 1.基础环境搭建&#xff1a;创建项目目录结构、安装必要依赖包…

WebSocket类明明注入了Bean,为什么报错为null

在 WebSocket 类中注入 Bean 看似可行而注入 Bean 报错为null&#xff0c;通常是由于Spring 的单例管理机制与 WebSocket 多实例创建特性冲突导致的&#xff0c;具体分析如下&#xff1a;原因分析Spring 的单例特性&#xff1a;Spring 默认以单例模式管理 Bean&#xff0c;即一…

Python 爬虫开发指南:从基础到实战

在大数据时代&#xff0c;数据成为了宝贵的资源。Python 爬虫作为高效获取网络数据的工具&#xff0c;受到越来越多开发者的关注。本文将详细介绍 Python 爬虫的相关知识&#xff0c;助你快速入门并掌握爬虫开发的核心要点。 一、Python 爬虫概述 Python 爬虫&#xff0c;即网…

99、git 超时问题

报错&#xff1a; Push failed ssh: connect to host github.com port 22: Connection timed out Could not read from remote repository