Formality:时序变换(二)(不可读寄存器移除)
相关阅读
Formality
https://blog.csdn.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482
一、引言
时序变换在Design Compiler的首次综合和增量综合中都可能发生,它们包括:时钟门控(Clock Gating)、寄存器合并(Register Merging)、寄存器复制(Register Replication)、常量寄存器移除(Constant Register Removal)、不可读寄存器移除(Unread register removal)、流水线重定时(Pipeline Retiming)、自适应重定时(Adaptive Retiming)、相位反转(Phase Inversion)、多比特寄存器组(Multibit Banking)。
合适的时序变换越多,就能获得更好的结果质量(QoR),但时序变换会无法避免地造成等价性检查的困难,因为这改变了逻辑锥的结构。虽然使用SVF文件能够解决大部分的问题(关于SVF文件的介绍,参考Design Compiler:set_svf命令以及svf文件简介一文),但对这些时序变换的了解有助于在不使用SVF文件时进行设置和在SVF文件失效时进行调试。
本文将详细阐述时序变换中的不可读寄存器的移除,将简单介绍不可读寄存器的概念,有关不可读概念的详细介绍,参考下面的这篇博客。
Formality:不可读(unread)的概念
https://chenzhang.blog.csdn.net/article/details/145242304
二、不可读寄存器移除

图1 不可读寄存器的综合
如图1所示,当Design Compiler识别到不可读寄存器后,它会将其从设计中移除(可通过set_unloaded_register_removal命令或compile_delete_unloaded_sequential_cells变量改变);Formality将自动识别不可读寄存器(无需使用SVF文件和用户设置),一般情况下参考设计中会存在未匹配的不可读寄存器,即使不可读寄存器匹配成功了,默认情况下也不会进行验证(可通过verification_verify_unread_compare_points变量改变)。
三、示例
例1 不可读寄存器
// 参考设计
module unread(input a, b, clk, output z);
reg a_r1, a_r2;assign z = a_r1;
always@(posedge clk) begina_r1 <= a;a_r2 <= a & b; // 没有负载
endendmodule// 实现设计
module unread ( a, b, clk, z );input a, b, clk;output z;DFFQXL a_r1_reg ( .D(a), .CK(clk), .Q(z) );
endmodule
下面的图2是参考设计的原理图,图3是实现设计的原理图。

图2 参考设计的原理图

图3 实现设计的原理图
例1的匹配结果如下所示,可以看出参考设计中存在一个未匹配的不可读点。
*********************************** Matching Results ***********************************2 Compare points matched by name0 Compare points matched by signature analysis0 Compare points matched by topology2 Matched primary inputs, black-box outputs0(0) Unmatched reference(implementation) compare points0(0) Unmatched reference(implementation) primary inputs, black-box outputs1(0) Unmatched reference(implementation) unread points
****************************************************************************************
使用report_unmatched_points -status unread可以显示该点的详细信息,可以看出不匹配的点就是被Design Compiler移除的不可读寄存器,如下所示。
**************************************************
Report : unmatched_points-status unread Reference : r:/WORK/unread
Implementation : i:/WORK/unread
Version : O-2018.06-SP1
Date : Thu Jan 23 22:32:31 2025
**************************************************1 Unmatched point (1 reference, 0 implementation):Ref DFF r:/WORK/unread/a_r2_reg
例1的验证结果如下所示,可以看到即使参考设计中出现了未匹配的寄存器,但由于其被识别为不可读寄存器,因此验证成功。
********************************* Verification Results *********************************
Verification SUCCEEDED
----------------------Reference design: r:/WORK/unreadImplementation design: i:/WORK/unread2 Passing compare points
----------------------------------------------------------------------------------------
Matched Compare Points BBPin Loop BBNet Cut Port DFF LAT TOTAL
----------------------------------------------------------------------------------------
Passing (equivalent) 0 0 0 0 1 1 0 2
Failing (not equivalent) 0 0 0 0 0 0 0 0
****************************************************************************************
假设使用RTL描述同时作为参考设计和实现设计,不可读寄存器能够匹配成功,如下所示。
*********************************** Matching Results ***********************************2 Compare points matched by name0 Compare points matched by signature analysis0 Compare points matched by topology2 Matched primary inputs, black-box outputs0(0) Unmatched reference(implementation) compare points0(0) Unmatched reference(implementation) primary inputs, black-box outputs
****************************************************************************************
验证结果如下所示,可以看出不可读的比较点默认情况下会被归为Not Compared类而不进行验证。
********************************* Verification Results *********************************
Verification SUCCEEDED
----------------------Reference design: r:/WORK/unreadImplementation design: i:/WORK/unread2 Passing compare points
----------------------------------------------------------------------------------------
Matched Compare Points BBPin Loop BBNet Cut Port DFF LAT TOTAL
----------------------------------------------------------------------------------------
Passing (equivalent) 0 0 0 0 1 1 0 2
Failing (not equivalent) 0 0 0 0 0 0 0 0
Not ComparedUnread 0 0 0 0 0 1 0 1
****************************************************************************************
如果将verification_verify_unread_compare_points变量设置为true,则会对成功匹配的不可读比较点进行验证,如下所示。
********************************* Verification Results *********************************
Verification SUCCEEDED
----------------------Reference design: r:/WORK/unreadImplementation design: i:/WORK/unread3 Passing compare points
----------------------------------------------------------------------------------------
Matched Compare Points BBPin Loop BBNet Cut Port DFF LAT TOTAL
----------------------------------------------------------------------------------------
Passing (equivalent) 0 0 0 0 1 2 0 3
Failing (not equivalent) 0 0 0 0 0 0 0 0
****************************************************************************************相关文章:
Formality:时序变换(二)(不可读寄存器移除)
相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一、引言 时序变换在Design Compiler的首次综合和增量综合中都可能发生,它们包括:时钟门控(Clock Gating)、寄存器合并(Register Merging)、…...
MathType下载与安装详细教程
MathType 软件简介安装步骤重新嵌入word 软件简介 数学公式编辑器MathType 是一款专业的数学公式编辑工具,理科生专用的工具。MathType公式编辑器能够帮助用户在各种文档中插入复杂的数学公式和符号。数学公式编辑器工具可以轻松输入各种复杂的公式和符号ÿ…...
docker中运行的MySQL怎么修改密码
1,进入MySQL容器 docker exec -it 容器名 bash 我运行了 docker ps命令查看。正在运行的容器名称。可以看到MySQL的我起名为db docker exec -it db bash 这样就成功的进入到容器中了。 2,登录MySQL中 mysql -u 用户名 -p 回车 密码 mysql -u root -p roo…...
内外网文件摆渡企业常见应用场景和对应方案
在如今的企业环境中,内外网文件摆渡的需求越来越常见,也变得越来越重要。随着信息化的不断推进,企业内部和外部之间的数据交换越来越频繁,如何安全、高效地进行文件传输成了一个关键问题。今天,咱就来聊聊内外网文件摆…...
【Block总结】PKI 模块,无膨胀多尺度卷积,增强特征提取的能力|即插即用
论文信息 标题: Poly Kernel Inception Network for Remote Sensing Detection 作者: Xinhao Cai, Qiuxia Lai, Yuwei Wang, Wenguan Wang, Zeren Sun, Yazhou Yao 论文链接:https://arxiv.org/pdf/2403.06258 代码链接:https://github.com/NUST-Mac…...
自制一个入门STM32 四足机器人具体开发顺序
0 前期准备 1. 知识储备 学习 STM32 微控制器的基础知识,包括 GPIO、定时器、串口通信等外设的使用,可通过官方文档、教程和视频课程进行学习。了解舵机控制原理,因为四足机器人通常使用舵机来实现关节运动。掌握基本的机械结构设计知识&am…...
物联网智能项目之——智能家居项目的实现!
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于物联网智能项目之——智能家居项目…...
[免费]微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序智能商城系统(uniappSpringboot后端vue管理端),分享下哈。 项目视频演示 【免费】微信小程序智能商城系统(uniappSpringboot后端vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…...
C28.【C++ Cont】顺序表的实现
🧨🧨🧨🧨🧨🧨🧨🧨🧨初二篇🧨🧨🧨🧨🧨🧨🧨🧨🧨 目录 1.知识回顾…...
【电工基础】低压电器元件,低压断路器(空开QF),接触器(KM)
一.低压电器元件定义 电器可分为高压电器和低压电器两大类,我国现行标准是将工作在交流1200V(50Hz)以下、直流1500V以下的电器设备称为低压电器。 二.低压断路器,空开,空气断路器 1.空开图片与使用方式 当电路中发生严重过载、短路及失压等故…...
从 UTC 日期时间字符串获取 Unix 时间戳:C 和 C++ 中的挑战与解决方案
在编程世界里,从 UTC 日期时间字符串获取 Unix 时间戳,看似简单,实则暗藏玄机。你以为输入一个像 “Fri, 17 Jan 2025 06:07:07” 这样的 UTC 时间,然后轻松得到 1737094027(从 1970 年 1 月 1 日 00:00:00 UTC 开始经…...
[前端开发]记录国内快速cdn库,用于在线引入JavaScript第三方库
字节跳动的两个库,官网地址如下,搜索时优先找第一个,可用来链接axios,Boostrap等等第三方库 1. 字节跳动静态资源公共库 比如说搜索lodash,用于节流防抖的库,点击复制即可,一般是****.js或****.min.js这样的为后缀名的链接 点击复制即可, <script src"https://lf9-cd…...
留学生scratch计算机haskell函数ocaml编程ruby语言prolog作业VB
您列出了一系列编程语言和技术,这些可能是您在留学期间需要学习或完成作业的内容。以下是对每个项目的简要说明和它们可能涉及的领域或用途: Scratch: Scratch是一种图形化编程语言,专为儿童和初学者设计,用于教授编程…...
CF 766A.Mahmoud and Longest Uncommon Subsequence(Java实现)
题目分析 (小何同学语文不太好,看这个题弯弯绕绕,看不懂一点,哈哈哈。)在尝试示例中分析之后,题目的意思大概就是,两个字符串相同就输出-1,不同就输出最长的那个字符串长度 思路分析 数据输入存值之后&…...
React 的 12 个核心概念
文章目录 一、JSX:逻辑与视图的桥梁二、组件:模块化构建的核心三、Props:单向数据流的基石四、State:动态交互的核心五、useEffect:副作用管理的利器六、Context:跨层级数据共享的利器七、React.memo&#…...
玩转大语言模型——使用langchain和Ollama本地部署大语言模型
系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…...
【数据结构】(2)时间、空间复杂度
一、衡量算法好坏的指标 时间复杂度衡量算法的运行速度,空间复杂度衡量算法所需的额外空间。这些指标,是某场景中选择使用哪种数据结构和算法的依据。如今,计算机的存储器已经变得容易获得,所以不再太关注空间复杂度。 二、渐进表…...
分享14分数据分析相关ChatGPT提示词
数据分析 在研究过程中数据分析扮演着至关重要的角色,它能够帮助研究者从海量数据中提取有价值的信息,从而为研究结论提供坚实的依据。而ChatGPT在数据分析领域展现出了强大的辅助能力,为研究者提供了全方位的支持。当研究者提供清晰且具体的…...
dify实现原理分析-rag-数据检索的实现
数据检索的总体执行步骤 数据检索总体步骤如下: #mermaid-svg-YCRNdSE7T1d0Etyj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YCRNdSE7T1d0Etyj .error-icon{fill:#552222;}#mermaid-svg-YCRNdSE7T1d…...
Day30-【AI思考】-错题分类进阶体系——12维错误定位模型
文章目录 错题分类进阶体系——12维错误定位模型**一、认知层错误(根源性缺陷)****二、操作层错误(执行过程偏差)****三、心理层错误(元认知障碍)****四、进阶错误(专业级陷阱)** 错…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
