当前位置: 首页 > news >正文

Formality:Bug记录

相关阅读

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


        本文记录博主在使用Synopsys的形式验证工具Formality中遇到的几个Bug。

Bug复现

情况一

// 例1
module dff (input clk,    input d_in,      output d_out    
);reg q1, q2;  always @(posedge clk) beginq1 <= d_in;  q2 <= q1;       endassign d_out = q2;
endmodule

        首先以例1的RTL代码作为参考设计和实现设计,然后在setup模式使用以下set_constant命令使得q1、q2触发器变成不可读触发器。

set_constant -type net r:/WORK/dff_chain/d_out 1
set_constant -type net i:/WORK/dff_chain/d_out 1

        关于不可读的更详细信息,可以参考下面的博客。

Formality:不可读(unread)的概念https://chenzhang.blog.csdn.net/article/details/145242304

        随后在fm_shell中使用match命令进行匹配,或在GUI界面点击Run Matching,此时fm_shell中显示的匹配结果与GUI界面显示的匹配结果出现了差别,如下所示。

// fm_shell的匹配结果
*********************************** Matching Results ***********************************1 Compare points matched by name0 Compare points matched by signature analysis0 Compare points matched by topology0 Matched primary inputs, black-box outputs0(0) Unmatched reference(implementation) compare points0(0) Unmatched reference(implementation) primary inputs, black-box outputs
****************************************************************************************
// GUI界面的匹配结果
3 points matched by name
0 points matched by signature analysis
0 points matched by topology
0 points matched by user
0 unmatched reference points
0 unmatched implementation points

        结果显示fm_shell没有考虑两对匹配的不可读触发器,而GUI界面考虑了,更严重的是,此时输入/输出端口没有显示在任何匹配报告中。

        这对最后的验证结果没有影响,不可读触发器在默认情况下会被归为Not Compared类而不进行验证(可通过verification_verify_unread_compare_points变量改变),如下所示。

********************************* Verification Results *********************************
Verification SUCCEEDED
----------------------Reference design: r:/WORK/dff_chainImplementation design: i:/WORK/dff_chain1 Passing compare points
----------------------------------------------------------------------------------------
Matched Compare Points     BBPin    Loop   BBNet     Cut    Port     DFF     LAT   TOTAL
----------------------------------------------------------------------------------------
Passing (equivalent)           0       0       0       0       1       0       0       1
Failing (not equivalent)       0       0       0       0       0       0       0       0
Not ComparedUnread                       0       0       0       0       0       2       0       2
****************************************************************************************

情况二

        以例2的RTL代码的作为实现设计,而使用例1的RTL代码作为参考设计,匹配结果如下所示。

// 例2
module dff (input clk,    input d_in,      output d_out    
);reg q1, q2, q3;  always @(posedge clk) beginq1 <= d_in;  q3 <= d_in; q2 <= q1;       endassign d_out = q2;
endmodule
// fm_shell的匹配结果
*********************************** Matching Results ***********************************3 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
****************************************************************************************
// GUI界面的匹配结果
5 points matched by name
0 points matched by signature analysis
0 points matched by topology
0 points matched by user
0 unmatched reference points
0 unmatched implementation points

        结果显示fm_shell的匹配结果中列出了这个未匹配的不可读触发器,而输入/输出端口显示在了匹配报告中。

情况三

        以例2的RTL代码作为参考设计和实现设计,匹配结果如下所示。

// fm_shell的匹配结果
*********************************** Matching Results ***********************************3 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
****************************************************************************************
// GUI界面的匹配结果
6 points matched by name
0 points matched by signature analysis
0 points matched by topology
0 points matched by user
0 unmatched reference points
0 unmatched implementation points

        结果显示fm_shell没有考虑这对匹配的不可读触发器,而GUI界面考虑了,而输入/输出端口显示在了匹配报告中。

Bug总结

         1、当使用set_constant命令导致不可读触发器时,fm_shell和GUI界面的匹配结果不一致,输入输出端口不会出现在任何匹配报告中,而匹配的不可读触发器不出现在fm_shell中(对最终验证没有影响)。

        2、即使不使用set_constant命令,fm_shell和GUI界面的匹配结果也不一致,匹配的不可读触发器不出现在fm_shell中(对最终验证没有影响)。

Bug反馈

        目前已在Solvnet上向Synopsys提出反馈,如下图所示。

相关文章:

  • 空格键会提交表单吗?HTML与JavaScript中的行为解析
  • Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
  • 神经网络如何表示数据
  • 每天五分钟深度学习PyTorch:RNN CELL模型原理以及搭建
  • 视频设备轨迹回放平台EasyCVR打造水库大坝智慧安防视频监控智能分析方案
  • bash的特性-bash中的引号
  • 网安知识“大乱炖“
  • vite前端项目在页面中引入根目录的json等文件
  • 意法半导体ST EDI 项目案例
  • 视频融合平台EasyCVR可视化AI+视频管理系统,打造轧钢厂智慧安全管理体系
  • JWT令牌:实现安全会话跟踪与登录认证的利器
  • 用react 写一个可左右滑动的柱状图
  • TV板卡维修技术【二】
  • 并行流parallelStream.map().collect()
  • RaabitMQ 快速入门
  • 本地生活服务平台搭建方案详解:同城跑腿外卖系统源码一体化开发
  • 数据结构-串
  • 手机上的PDF精简版:随时随地享受阅读
  • 机器学习常用算法总结
  • 【第三章】17-常用模块5-ngx_http_gzip_module
  • “ChatGPT严选”横空出世了,“DeepSeek严选”还要等多久?
  • TCL科技一季度净利增超三倍,去年半导体显示业务营收创新高
  • 证据公布!菲律宾6人非法登上铁线礁活动
  • 俄乌战火不熄,特朗普在梵蒂冈与泽连斯基会晤后口风突变
  • 经济日报金观平:统筹国内经济工作和国际经贸斗争
  • 海南旅文局通报游客入住酒店港币被调包:成立调查组赴陵水调查