网站建设源码导入,平面设计课程培训,网站全站搜索代码,提升网站打开速度相关阅读
Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一、引言 时序变换在Design Compiler的首次综合和增量综合中都可能发生#xff0c;它们包括#xff1a;时钟门控(Clock Gating)、寄存器合并(Register Merging)、…相关阅读
Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.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 Compilerset_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
****************************************************************************************