Cadence公司的数字IC设计工具:形式验证工具(Conformal)——(2)

2023-10-23 16:31

本文主要是介绍Cadence公司的数字IC设计工具:形式验证工具(Conformal)——(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

一、通用命令

二、Genus帮助验证

三、hierachical comparision

参考


前言

上一篇文章介绍了Conformal工具的使用流程和VPXMODE模式下的常用命令,具体见:

Cadence公司的数字IC设计工具:形式验证工具(Conformal)——(1)_cadence conformal_qq_42922513的博客-CSDN博客https://blog.csdn.net/qq_42922513/article/details/131312909

本篇文章,对常用的tclmode模式下的命令进行介绍。

一、通用命令

#打开或关闭Tcl命令集回显。默认off
tcl_set_command_name_echo {off | on}#Writes the transcript to a specified file.
set_log_file <filename> {-replace | -append}#指定Conformal在读取设计时如何处理未定义的单元格。默认情况下,如果遇到未定义的单元格,则发出error消息。
set_undefined_cell <error | black box > [-both | -golden | -revised]#全局指定Conformal如何在Golden和Revised设计中呈现非驱动信号。系统默认指定在Golden和Revised设计中,未驱动信号被分类为高阻抗(Z)。
set_undriven_signal <z | 0 | 1 | x>#指定要解析的库或设计模块,但在运行read_library或read_design命令时不会进行转换。这些模块自动成为黑盒。此命令在初始解析期间应用,因此名称匹配仅适用于原始模块名称。通常用该命令对RAM, ROM, Analog IP 等做设置。对于解析和预处理后由Conformal确定并应用名称的参数化模块或VHDL generic模块,必须使用add_black_box命令。
add_notranslate_modules <module_name>#specifies the naming rules for an RTL or hierarchical design。Conformal使用重命名规则来构造设计模块、实例、变量或端口的名称。在read_library和read_design之前执行此命令。
set_naming_rule#读入LEF文件,其中包含设计的库信息。
read_lef_file <filename>#read_design和read_library命令的文件查找路径
add_search_path <directoty> [-design | -library] [-golden | -revised | -both]#read library
read_library -liberty <file> [-both]#读入golden和revised设计文件。如果打算读入需要特定命名约定的RTL设计,请先使用set_naming_rule命令。
read_design <file> [-golden | -revised | -both] [-replace]
-noelaborate:读入不同编程语言的文件时需要
-root <module_name>:指明顶层模块
-merge bbox:将设计空间中的所有黑盒模块替换为库空间中的模块。#完成用-noelaborate选项指定的read_design命令。在此步骤中,将synthesize模块并创建完整的设计层次结构。
elaborate_design [-root <module_name>]#指定将被定义为黑盒的模块或实例。这些新定义的黑盒被分类在黑盒的User类中。原始设计中已经包含的黑盒被分类在黑盒的System类中。
add_black_box -module <module_name>#当使用-auto选项时,它会自动确定运行analyze_setup命令的最佳位置。analyze_setup命令分析netlist并设置flattened design,以便进行准确的比较。这有助于重建以下常见的设置问题:sequential constanting、sequential merging、loop cutting、clock gating和phase mapping。此命令在SETUP模式下进行。
#当综合步骤使用命令set optimize_merge_seq true时(Genus默认使用),需要使用此命令。
set_analyze_option -auto#分析网表,建立平面化设计,以便准确比较。这有助于避免错误的不等价。该命令还可以分析和重构以下常见的设置问题:sequential constanting、sequential merging、loop cutting、clock gating和phase mapping。此命令在LEC模式下进行。
#要使用此命令解析sequential constant optimization,必须同时使用以下命令:set_flat_model -seq_constant
analyze_setup#为扁平化模型指定某些条件。
set_flatten_model
-noseq_constant:不要通过锁存器和寄存器传播常量数据。默认的。
-seq_constant:通过锁存器和寄存器传播常量数据。
-seq_constant_x_to <0 | 1>:当触发器始终处于x状态时,将触发器优化为恒定值(0或1)。与-seq_constant开关一起使用。
-nodff_to_dlat_zero:如果时钟端口为零,不要将DFF转换为DLATCH。默认为转换。
-nodff_to_dlat_feedback:如果Q输出反馈到D输入,不要将DFF转换为DLATCH。默认为转换。
-hier_seq_merge:在分层dofile文件生成中启用用户指定的sequential merge。此选项自动启用平衡约束提取。默认无。
-gated_clock:重构DFF时钟端口的门控时钟逻辑。如果不能自动确定时钟引脚,请使用add_clock命令定义时钟引脚。默认无。#指定map方法、阶段、区分大小写,以及在Conformal map关键点时对unreachable点和blackboxes的处理。
set_mapping_method
-name <first | guide | only>:默认为first
-alias:在map期间将关键点名称更改为名称别名。使用add_name_alias命令指定名称别名。#分析数据路径模块。根据分析结果,Conformal可以自动解决乘数(multipliers)、算子合并(operator merging)和资源共享(resource sharing)问题。如果不首先将Revised design关键点map到Golden design关键点,则无法运行此命令。
analyze_datapath#结束现有的Conformal会话并返回到操作系统。
exit
-force:exits without confirmation

二、Genus帮助验证

#启用在当前运行中使用验证信息,并使用它来帮助优化验证。只有启用了此命令,当前运行的验证信息才能被写出来,即使用write_verification_information命令。
set_verification_information <verification_information_directory>#读取有助于改进验证设置的与验证相关的综合信息。该命令只能在set_verification_information命令之后使用。目前,此命令只能从Genus生成的fv目录中读取,即directory为fv/*。netlist_name为directory文件夹中文件xxx.fv.json中的xxx。
read_implementation_information <directory> [-golden <netlist_name>] [-revised <netlist_name>]#指定一个JSON数据文件,该文件包含用于在映射期间更改关键点名称的名称别名。filename可以使用fv/*文件夹中以“.alias.json.gz”结尾的文件。
add_name_alias <filename> [-golden | -revised] [-replace]#将验证信息写入指定目录。该命令通过set_verification_information命令启用。缺省情况下,使用set_verification_information命令指定的verification_information_directory。
write_verification_information <verification_information_directory>

三、hierachical comparision

#使具有多个实例的指定模块唯一。该命令允许您在分层脚本生成过程中纠正“incompatible”的实例化警告。如果Conformal没有使模块唯一,则它们不会包含在分层文件中。
#相对于比较整个设计的复杂性,每个子模块的比较具有较低的复杂性。因此,这种分层比较方法在解决中止问题时非常有用。为了最小化每个子模块比较的复杂性,可以最大化在分层文件中写出的子模块的数量。在执行分层比较之前使用uniquify命令,可以最大化分层文件中包含的模块数量。
uniquify -all [-nolibrary | -library] [-golden | -revised]
-all:在给定的默认值范围内,使指定设计中的所有模块唯一。#写出一个层次dofile脚本,该脚本验证两个层次设计,从低级模块开始,一直到顶级根模块。所有未输出到分层dofile脚本的模块都将被平铺到它们的父模块中,以便进行比较。
write_hier_compare_dofile <filename>
-noexact_pin_match:在向分层dofile脚本写入模块时,不要考虑pin名匹配。默认考虑。
-constraint:传播根模块约束和等价,并将它们应用于分层dofile脚本。默认不传播。
-balanced_extractions:通过同时使用扁平化的golden和扁平化的revised设计,提取一组平衡的层次约束。
-input_output_pin_equivalence:提取模块内的输入-输出引脚等价,并将其应用于分层dofile脚本。当设计具有feedthroughs(feedthrough path:in 直接到out 的path)或feedback buffers时,可以使用这种方法。
-prepend_string <string>:在每个模块的关键点比较之前,将任何command字符串附加到分层dofile脚本。使用“;”分割command。命令外使用双引号括起。#运行动态层次比较。该命令在完成时产生以下三种状态之一:1、Equivalent;2、Nonequivalent;3、Inconclusive。
run_hier_compare <filename>
-dynamic_hierarchy:自动将子模块扁平化以将任何设计错误传播到顶层。平面化的模块被合并到层次结构中的下一层,并在该层进行比较。

参考

在ICC中,一般说的feedthrought是什么? - 后端讨论区 - EETOP 创芯网论坛 (原名:电子顶级开发网) -

这篇关于Cadence公司的数字IC设计工具:形式验证工具(Conformal)——(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/269036

相关文章

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll