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维错误定位模型**一、认知层错误(根源性缺陷)****二、操作层错误(执行过程偏差)****三、心理层错误(元认知障碍)****四、进阶错误(专业级陷阱)** 错…...
西门子SMART200 PLC梯形图,SR20,昆仑通态触摸屏组态画面,常压电热水锅炉比例模糊...
西门子SMART200 PLC梯形图,SR20,昆仑通态触摸屏组态画面,常压电热水锅炉比例模糊控制追目标温度,PLC源触摸屏源CAD原理图图纸全套常压电热水锅炉那种“冰火两重天”的加热体验谁懂?茶水间或者小烘干池边上,…...
TurboQuant革命:KV-Cache压缩技术如何重塑大模型推理经济
上一篇:Qwen3.5-Max-Preview与国产大模型技术突破:阿里通义千问2026最新进展全解析 下一篇:2026年AI-Agent产业化全景:从概念验证到规模化部署的完整路径 摘要 2026年3月24日,Google Research发布了一项名为TurboQuan…...
ModTheSpire模组加载器全攻略:解锁杀戮尖塔无限可能
ModTheSpire模组加载器全攻略:解锁杀戮尖塔无限可能 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 副标题:从零开始的模组探索之旅——让你的游戏体验突破边界…...
ESP32-S3实战指南:SPI多设备管理与高效数据传输
1. ESP32-S3的SPI总线基础认知 第一次接触ESP32-S3的SPI总线时,我完全被各种专业术语搞懵了。后来在实际项目中反复折腾才发现,SPI本质上就是个"快递小哥",负责在芯片和外围设备之间搬运数据。ESP32-S3内置了4个这样的"快递站…...
AI+Python 双驱动计量经济学:从多源数据处理到 SCI 论文--多源数据处理、机器学习预测及复杂因果识别全流程实战随机森林模型核心技术
为什么你自学了这么久,还是做不出成果?很多科研人做计量经济学研究,最大的问题不是不够努力,而是没有一套完整的全链条体系:只学了模型操作,却不懂底层理论,换个研究问题、换个数据集就不会做了…...
Qwen3.5-9B惊艳效果:上传物理实验图→识别仪器→生成操作步骤视频脚本
Qwen3.5-9B惊艳效果:上传物理实验图→识别仪器→生成操作步骤视频脚本 1. 模型能力概览 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,在多模态理解和逻辑推理方面表现出色。这个模型最令人惊艳的能力在于它能够: 准确识别实验仪器&…...
基于Maxwell的750W内转子伺服电机设计:14极12槽优化方案解析
基于maxwwell设计的经典750W,3000RPM 内转子 私服电机,14极12槽,外径76 轴向长度56.7 ,转矩1Nm,直流母线12V,辅助槽优化了齿槽转矩,特色是转子加工方便,永磁同步电机(PMSM BLDC&…...
Go性能剖析pprof工具使用
Go语言凭借其高效的并发模型和简洁的语法,成为众多开发者的首选。随着项目规模扩大,性能问题逐渐显现。如何快速定位性能瓶颈?Go内置的pprof工具正是解决这一问题的利器。本文将带你深入了解pprof的核心功能,助你轻松优化代码性能…...
内网穿透技术应用:在本地开发机部署Qwen3-ASR-0.6B并供外网测试
内网穿透技术应用:在本地开发机部署Qwen3-ASR-0.6B并供外网测试 你是不是也遇到过这种情况?在本地电脑上好不容易部署好了一个AI模型,比如Qwen3-ASR-0.6B这个语音识别模型,自己测试跑得挺欢。结果想给同事或者朋友演示一下&#…...
DevOps实践:如何让开发、测试、运维不再“打架”?
质量不再是孤岛在追求快速迭代的现代软件开发中,开发、测试与运维团队之间的隔阂与摩擦,常常被戏称为“部门战争”。开发团队渴望快速交付新功能,测试团队需要足够的时间来保障质量,而运维团队则首要追求系统的稳定与可靠。当发布…...
