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.rhkb.cn/news/6336.html

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

相关文章

机器学习 vs 深度学习

目录 一、机器学习 1、实现原理 2、实施方法 二、深度学习 1、与机器学习的联系与区别 2、神经网络的历史发展 3、神经网络的基本概念 一、机器学习 1、实现原理 训练&#xff08;归纳&#xff09;和预测&#xff08;演绎&#xff09; 归纳: 从具体案例中抽象一般规律…

OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯

目录 简述 什么是高通滤波&#xff1f; 高通滤波的概念 应用场景 索贝尔算子 算子公式 实现代码 特点 沙尔算子 算子公式 实现代码 特点 拉普拉斯算子 算子公式 实现代码 特点 高通滤波器的对比与应用场景 相关阅读 OpenCV&#xff1a;图像滤波、卷积与卷积核…

豆包MarsCode 蛇年编程大作战 | 高效开发“蛇年运势预测系统”

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 豆包MarsCode 蛇年编程大作战 | &#x1f40d; 蛇年运势预测 在线体验地址&#xff1a;蛇年…

开源鸿蒙开发者社区记录

lava鸿蒙社区可提问 Laval社区 开源鸿蒙项目 OpenHarmony 开源鸿蒙开发者论坛 OpenHarmony 开源鸿蒙开发者论坛

关于CAN(FD)转以太网详细介绍

一、功能描述 CANFD 完全向下兼容 CAN &#xff0c;以下统称 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用来把 CANFD 总线数据转为网口数据的设备。 网口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四种模式。 可以通过软件配置和 Web 网页配置。 两路…

简洁实用的wordpress外贸模板

简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。 简洁实用的wordpress外贸模板 - 简站WordPress主题简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。https://www.jianzhanpress.com/?p828…

编程界“华山论剑”:PHP与Go,谁主沉浮?

在编程的广阔天地里&#xff0c;选择一门合适的编程语言就如同为一场冒险挑选趁手的武器&#xff0c;至关重要却又常常令人纠结。当我们面对 PHP 与 Go 这两种备受瞩目的编程语言时&#xff0c;这种纠结愈发明显&#xff1a;PHP&#xff0c;作为 Web 开发领域的老牌劲旅&#x…

QT6 + CMAKE编译OPENCV3.9

参考文档 [1] https://blog.csdn.net/rjkf_css/article/details/135676077 前提条件 配置好相关运行环境&#xff1a;QT6、OPENCV3.9的sources文件 OPENCV下载网页&#xff1a;https://opencv.org/releases/ QT6下载教程&#xff1a;https://blog.csdn.net/caoshangpa/article…

Python数据可视化(够用版):懂基础 + 专业的图表抛给Tableau等专业绘图工具

我先说说文章标题中的“够用版”啥意思&#xff0c;为什么这么写。 按照我个人观点&#xff0c;在使用Python进行数据分析时&#xff0c;我们有时候肯定要结合到图表去进行分析&#xff0c;去直观展现数据的规律和特定&#xff0c;那么我们肯定要做一些简单的可视化&#xff0…

终极的复杂,是简单

软件仿真拥有最佳的信号可见性和调试灵活性,能够高效捕获很多显而易见的常见错误,被大多数工程师熟练使用。 空间领域应用的一套数据处理系统(Data Handling System),采用抗辐FPGA作为主处理器,片上资源只包含10752个寄存器,软仿也是个挺花时间的事。 Few ms might take …

青少年CTF练习平台 贪吃蛇

题目 CtrlU快捷键查看页面源代码 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>贪吃蛇游戏</title><style>#gameCanvas {border: 1px solid black;}</style> </head>…

Linux进度条实现

Linux进度条实现 1.\r\n2.缓冲区3.缓冲区分类4.进度条实现 &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f680;系列专栏&#xff1a;【Linux的学习】 &#x1f4dd;&#x1f4dd;本篇内容&#xff1a;\…

服务器安装ESXI7.0系统及通过离线包方式升级到ESXI8.0

新到了一台物理服务器需要安装系统&#xff0c;项目不急用&#xff0c;先拿来做些实验。 本次实验目标&#xff1a; 1、在物理服务器上安装ESXI7.0系统&#xff1b; 2、通过离线包升级方式将ESXI7.0升级为ESXI8.0。 实验环境准备&#xff1a; 物理服务器1台&#xff0c;型号…

docker日志保留策略设置

docker日志保留策略设置 默认策略 默认情况下&#xff0c;docker使用json-file日志驱动&#xff0c;并且没有设置日志保留时间。 这意味着容器日志会一直保留在宿主机上&#xff0c;直到容器被删除或手动清理。如果不对日志进行限制&#xff0c;可能会导致磁盘空间被耗尽。 …

uniapp+Vue3(<script setup lang=“ts“>)模拟12306城市左右切换动画效果

效果图&#xff1a; 代码&#xff1a; <template><view class"container"><view class"left" :class"{ sliding: isSliding }" animationend"resetSliding">{{ placeA }}</view><view class"center…

MySQL训练营-慢查询诊断问题

慢查询相关参数和建议配置 slow_query_log long_query_time 日志开关&#xff0c;是否记慢查询日志以及超过多长时间判定为慢查询。 查看参数设置&#xff1a; SHOW VARIABLES LIKE ‘slow_query_log’;SHOW VARIABLES LIKE ‘long_query_time’; 实践建议&#xff1a; …

微服务学习-Nacos 注册中心实战

1. 注册中心的设计思路 1.1. 微服务为什么会用到注册中心&#xff1f; 服务与服务之间调用需要有服务发现功能&#xff1b;例如订单服务调用库存服务&#xff0c;库存服务如果有多个&#xff0c;订单服务到底调用那个库存服务呢&#xff08;负载均衡器&#xff09;&#xff0…

Mac 查看 Java SDK 和 Android SDK 的路径

1. Mac 如何查看 JavaSDK的路径 /usr/libexec/java_home -V2. Mac 如何查看 Android SDK 的路径 在 Android Studio 中按 cmd,打开设置&#xff0c;然后如下方式&#xff0c;第三步如果有值就是第三步的信息。 第三步如果没有值&#xff0c;点开Edit&#xff0c;值在下方&…

AI智慧社区--生成验证码

接口文档&#xff1a; 从接口文档中可以得知的信息&#xff1a; 代码的返回格式为json格式&#xff0c;可以将Controlller换为RestController前端发起的请求为Get请求&#xff0c;使用注解GetMapping通过返回的数据类型&#xff0c;定义一个返回类型Result package com.qcby.…

【LeetCode】--- MySQL刷题集合

1.组合两个表&#xff08;外连接&#xff09; select p.firstName,p.lastName,a.city,a.state from Person p left join Address a on p.personId a.personId; 以左边表为基准&#xff0c;去连接右边的表。取两表的交集和左表的全集 2.第二高的薪水 &#xff08;子查询、if…