Formality:不可读(unread)的概念

相关阅读

Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482https://blog.csdn.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482


        在Formality中有时会遇到不可读(unread)这个概念,本文就将对此进行描述。不可读是一种状态,触发器、锁存器、输入端口等许多对象都可能位于这种状态,简单来说,不可读就是直接或间接没有驱动任何比较点。

        例1是一个RTL描述的不可读触发器的例子。

// 例1
module fred (a, b, clk, z);
input a, b, clk;
output z;reg ar1, ar2;assign z = ar1;
// Note ar2 does not drive anything
always @(posedge clk)
beginar1 <= a;ar2 <= a & b;
endendmodule

        对于Design Compiler来说,如果RTL描述中出现了没有负载的触发器,则门级描述中会自动将其移除,因此例1对应的门级网表如例2所示。

// 例2
module fred ( a, b, clk, z );input a, b, clk;output z;DFFQXL ar1_reg ( .D(a), .CK(clk), .Q(z) );
endmodule

        如果分别例1/例2作为参考/实现设计进行等价性检查,匹配时会提示一个出现一个不匹配的点(因为参考设计中没有移除不可读触发器,而实现设计中移除了),如下所示。

*********************************** 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命令即可报告未匹配的不可读点,如下所示。

**************************************************
Report         : unmatched_points-status unread Reference      : r:/WORK/fred
Implementation : i:/WORK/fred
Version        : O-2018.06-SP1
Date           : Wed Jan 22 15:31:44 2025
**************************************************1 Unmatched point (1 reference, 0 implementation):Ref  DFF        r:/WORK/fred/ar2_reg

        其实还有一对点也是不可读的,只是此时匹配成功了,它们就是输入端口b。可以使用report_unread_endpoints -all命令报告所有的不可读来源以及不可读的原因,如下所示。

**************************************************
Report         : unread_endpoints-all Reference      : r:/WORK/fred
Implementation : i:/WORK/fred
Version        : O-2018.06-SP1
Date           : Wed Jan 22 15:37:10 2025
**************************************************Following 2 blocking objects identified in the fanout:(Net )  r:/WORK/fred/ar2  (no reader)(Net )  i:/WORK/fred/b  (no reader)

        不可读点在原理图中会用特殊标识说明,图1是参考设计的原理图(需要注意,由于输入端口b的扇出只有不可读触发器ar2_reg,它也被间接认定为不可读状态),图2是实现设计的原理图。

图1 参考设计

图2 实现设计 

        即使不可读的比较点匹配成功,它们在默认情况下也会被归为Not Compared类而不进行验证,如Formality:比较点的验证状态和整体验证状态-CSDN博客一文所说(可通过verification_verify_unread_compare_points变量改变)。

        下面展示了使用RTL描述同时作为参考设计和实现设计,从而让一对不可读比较点匹配后的验证结果。

----------------------------------------------------------------------------------------
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

        使用report_not_compared_points命令可以报告所有处于Not Compared类的比较点,包括不可读。

        不可读状态是可能传递的,如例3所示RTL描述的触发器链,其中最后一个触发器q4_reg没有负载,但由于q3_reg的扇出只有不可读触发器q4_reg,,所以它也为不可读触发器,以此类推。

// 例3
module dff_chain (input clk,    input d_in,      output d_out    
);reg q1, q2, q3, q4;  always @(posedge clk) beginq1 <= d_in;  q2 <= q1;    q3 <= q2;    q4 <= q3;    endendmodule

        使用例3同时作为参考设计和实现设计时的验证结果如下所示,其中四个触发器都因为不可读而没有进行验证。

----------------------------------------------------------------------------------------
Matched Compare Points     BBPin    Loop   BBNet     Cut    Port     DFF     LAT   TOTAL
----------------------------------------------------------------------------------------
Passing (equivalent)           0       0       0       0       0       0       0       0
Failing (not equivalent)       0       0       0       0       1       0       0       1
Not ComparedUnread                       0       0       0       0       0       4       0       4

        使用set_constant命令设置常数值也可能导致不可读,以例4来说,如果将q4的输出线网d_out设置为常数0,则会导致触发器q4_reg不可读,从而导致四个触发器都不可读。

// 例4
module dff_chain (input clk,    input d_in,      output d_out    
);reg q1, q2, q3, q4;  always @(posedge clk) beginq1 <= d_in;  q2 <= q1;    q3 <= q2;    q4 <= q3;    endassign d_out = q4;
endmodule

         使用例4同时作为参考设计和实现设计,并使用set_constant -type net r:/WORK/dff_chain/d_out 0和set_constant -type net i:/WORK/dff_chain/d_out 0命令设置常数0,此时report_unread_endpoints -all命令的结果如下所示。

**************************************************
Report         : unread_endpoints-all Reference      : r:/WORK/dff_chain
Implementation : i:/WORK/dff_chain
Version        : O-2018.06-SP1
Date           : Wed Jan 22 16:12:04 2025
**************************************************Following 2 blocking objects identified in the fanout:(Net )  r:/WORK/dff_chain/d_out  (blocked by constant)(Net )  i:/WORK/dff_chain/d_out  (blocked by constant)

        报告中清晰地说明了不可读的原因是因为常量阻塞。 

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

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

相关文章

【27】Word:徐雅雯-艺术史文章❗

目录 题目​ NO1.2 NO3 NO4 NO5 NO6.7 NO8.9 NO10.11 注意&#xff1a;修改样式的字体颜色/字号&#xff0c;若中英文一致&#xff0c;选择所有脚本。格式相似的文本→检查多选/漏选格式刷F4重复上一步操作请❗每一步检查和保存 题目 NO1.2 F12另存为布局→行号布局…

关于ARM和汇编语言

一图流 ARM 计算机组成 输入设备 输出设备 存储设备 运算器 控制器 处理器读取内存程序执行的过程 取指阶段&#xff1a;控制器器通过地址总线向存储器发送想要获取的指令的地址编号&#xff0c;存储器将指定的指令发送给处理器 译码阶段&#xff1a;控制器对指令进行分…

PyTorch使用教程(9)-使用profiler进行模型性能分析

1、简介 PyTorch Profiler是一个内置的性能分析工具&#xff0c;可以帮助开发者定位计算资源&#xff08;如CPU、GPU&#xff09;的瓶颈&#xff0c;从而更好地优化PyTorch程序。通过捕获和分析GPU的计算、内存和带宽利用情况&#xff0c;能够有效识别并解决性能瓶颈。 2、原…

2025-01-22 Unity Editor 1 —— MenuItem 入门

文章目录 1 Editor 文件夹2 MenuItem3 使用示例3.1 打开网址3.2 打开文件夹3.3 Menu Toggle3.4 Menu 代码复用3.5 MenuItem 激活与失活4 代码示例 1 Editor 文件夹 ​ Editor 文件夹是 Unity 中的特殊文件夹&#xff0c;Unity 中所有编辑器相关的脚本都需要放置在其中&#xf…

docker 安装 mysql 详解

在平常的开发工作中&#xff0c;我们经常需要用到 mysql 数据库。那么在docker容器中&#xff0c;应该怎么安装mysql数据库呢。简单来说&#xff0c;第一步&#xff1a;拉取镜像&#xff1b;第二步&#xff1a;创建挂载目录并设置 my.conf&#xff1b;第三步&#xff1a;启动容…

linux-samba服务配置与应用

1.了解samba的配置文件 2.熟悉samba服务的实例 以前我们在windows上共享文件的话&#xff0c;只需右击要共享的文件夹&#xff0c;然后选择共享相关的选项设置即可&#xff0c;然后如何实现windows和linux的文件共享呢&#xff0c;这就涉及到了samba服务&#xff0c;这个软件…

Spring Boot 整合 Redis 步骤详解

文章目录 1. 引言2. 添加依赖3. 配置 Redis 连接信息4. 创建 Redis 操作服务类5. 使用 RedisTemplate 或 ReactiveRedisTemplate6. 测试 Redis 功能7. 注意事项8. 总结 Redis 是一个高性能的键值存储系统&#xff0c;常用于缓存、消息队列等多种场景。将 Redis 与 Spring Boot …

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明&#xff1a;用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大。 结果&#xff1a; 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询…

K8S中Service详解(三)

HeadLiness类型的Service 在某些场景中&#xff0c;开发人员可能不想使用Service提供的负载均衡功能&#xff0c;而希望自己来控制负载均衡策略&#xff0c;针对这种情况&#xff0c;kubernetes提供了HeadLiness Service&#xff0c;这类Service不会分配Cluster IP&#xff0c;…

npm install 报错:Command failed: git checkout 2.2.0-c

[TOC](npm install 报错&#xff1a;Command failed: git checkout 2.2.0-c) npm install 报错&#xff1a;Command failed: git checkout 2.2.0-c export NODE_HOME/usr/local/node-v14.14.0-linux-x64 npm config set registry https://registry.npmmirror.com 使用如上环…

DDD - 微服务落地的技术实践

文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…

通过视觉语言模型蒸馏进行 3D 形状零件分割

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01;对应英文要求比较高&#xff0c;特此说明&#xff01; Abstract This paper proposes a cross-modal distillation framework, PartDistill, which transfers 2D knowledge from vision-language models …

【大模型】ChatGPT 高效处理图片技巧使用详解

目录 一、前言 二、ChatGPT 4 图片处理介绍 2.1 ChatGPT 4 图片处理概述 2.1.1 图像识别与分类 2.1.2 图像搜索 2.1.3 图像生成 2.1.4 多模态理解 2.1.5 细粒度图像识别 2.1.6 生成式图像任务处理 2.1.7 图像与文本互动 2.2 ChatGPT 4 图片处理应用场景 三、文生图操…

从零到一:Spring Boot 与 RocketMQ 的完美集成指南

1.Rocket的概念与原理 RocketMQ 是一款由阿里巴巴开源的分布式消息中间件&#xff0c;最初用于支持阿里巴巴的海量业务。它基于发布-订阅模型&#xff0c;具备高吞吐、低延迟、高可用和强一致性的特点&#xff0c;适用于消息队列、大规模数据流处理等场景。以下是对 RocketMQ …

(1)STM32 USB设备开发-基础知识

开篇感谢&#xff1a; 【经验分享】STM32 USB相关知识扫盲 - STM32团队 ST意法半导体中文论坛 单片机学习记录_桃成蹊2.0的博客-CSDN博客 USB_不吃鱼的猫丿的博客-CSDN博客 1、USB鼠标_哔哩哔哩_bilibili usb_冰糖葫的博客-CSDN博客 USB_lqonlylove的博客-CSDN博客 USB …

没有公网IP实现seafile本地IP访问和虚拟局域网IP同时访问和上传文件

前言 Ubuntu 24.04 LTSDocker 安装 seafileOpenWrtTailscale Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘中&#xff0c;已经实现了本地局域网放问Ubuntu IP来访问Seafile&#xff0c;以及通过 Ubuntu 的 Tailscale IP 访问Seafile。但是&#xff0c;文…

【Uniapp-Vue3】setTabBar设置TabBar和下拉刷新API

一、setTabBar设置 uni.setTabBarItem({ index:"需要修改第几个", text:"修改后的文字内容" }) 二、tabBar的隐藏和显式 // 隐藏tabBar uni.hideTabBar(); // 显示tabBar uni.showTabBar(); 三、为tabBar右上角添加文本 uni.setTabBarBadge({ index:"…

TCP全连接队列

1. 理解 int listen(int sockfd, int backlog) 第二个参数的作用 backlog&#xff1a;表示tcp全连接队列的连接个数1。 如果连接个数等于backlog1&#xff0c;后续连接就会失败&#xff0c;假设tcp连接个数为0&#xff0c;最大连接个数就为1&#xff0c;并且不accept获取连接…

windows下使用docker执行器并配置 hosts 解析

本篇目录 1. 问题背景2. 环境准备2.1 云上开通windows 2022 英文版机器2.1.1 安装 git2.1.2 安装 runner2.1.3 装docker2.1.4 注册runner并使用docker执行器 3. 项目信息3.1 编写window bat脚本3.2 项目.gitlab-ci.yml文件 4. 测试结论4.1 运行流水线 5. troubleshooting问题1&…

计算机毕业设计hadoop+spark视频推荐系统 短视频推荐系统 视频流量预测系统 短视频爬虫 视频数据分析 视频可视化 视频大数据 大数据

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…