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

目录

前言

一、通用命令

二、Genus帮助验证

三、hierachical comparision

参考


前言

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

Cadence公司的数字IC设计工具:形式验证工具(Conformal)——(1)_cadence conformal_qq_42922513的博客-CSDN博客icon-default.png?t=N7T8https://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 创芯网论坛 (原名:电子顶级开发网) -

                                            PS:觉得有用就点个赞收藏吧 

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值