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:觉得有用就点个赞收藏吧 

<think>好的,我现在需要帮助用户了解数字IC设计中的标准单元库相关信息。首先,我应该回顾用户提供的引用内容,看看是否有相关的信息。用户引用了四个来源,其中引用3提到了后端实现流程中的库文件,比如网表库、时序库、物理库,这可能与标准单元库有关。引用2提到了一些书籍,可能包含相关内容。 接下来,我需要确定标准单元库的基本概念、组成和作用。标准单元库通常包括逻辑门、触发器、锁存器等基本单元,每个单元都有对应的物理布局、时序模型和功耗信息。这些信息在后端设计流程中用于综合、布局布线和时序分析。 用户可能想知道如何获取标准单元库的资料和教程。根据引用3,库文件是后端设计的关键部分,通常由代工厂或EDA厂商提供,比如Cadence、Synopsys的工具支持。因此,获取标准单元库可能需要通过合作代工厂或购买EDA工具。此外,引用2提到的书籍如《专用集成电路设计实用教程》和《数字设计和计算机体系结构》可能包含相关内容,用户可以参考。 另外,引用4提到学习使用Modelsim进行仿真,可能涉及到标准单元的仿真模型,这也是标准单元库的一部分。用户可能需要了解如何将这些库集成到设计流程中,进行验证和综合。 用户可能还有疑问,比如标准单元库的具体内容、如何选择适合的单元库、如何生成自定义单元库等。需要确保回答覆盖这些方面,并提供相关资源和学习路径。 最后,生成相关问题时要围绕标准单元库的应用、获取途径、组成要素、设计工具等,确保问题能引导用户进一步深入学习。</think>### 数字IC设计中的标准单元库详解 #### 1. 标准单元库的定义与作用 标准单元库(Standard Cell Library)是数字IC后端设计的核心基础,包含逻辑门(如AND、OR、NOT)、触发器(Flip-Flop)、锁存器(Latch)等基本电路单元的**物理布局**、**时序模型**(时序库)和**功耗参数**。这些单元以固定高度、可变宽度的形式预定义,便于自动化布局布线工具(如Cadence Innovus、Synopsys ICC)实现逻辑网表到物理版图的转换[^3]。 #### 2. 标准单元库的核心组成 - **物理库(Physical Library)**:定义单元版图的GDSII文件、LEF(布局交换格式)文件,包含金属层、接触孔等物理信息。 - **时序库(Timing Library)**:以.lib格式存储,描述单元的延迟、建立/保持时间、驱动能力等时序特性。 - **功能模型**:Verilog/VHDL行为级模型,用于前端仿真验证[^4]。 - **功耗模型**:包含静态功耗(漏电)和动态功耗(开关活动)数据。 #### 3. 标准单元库的获取途径 - **代工厂提供**:如TSMC、SMIC等厂商会针对不同工艺节点(28nm、14nm等)提供配套单元库,需签署NDA协议获取。 - **EDA厂商工具包**:Synopsys 的 DesignWare、Cadence 的 Genus 解决方案包含通用库。 - **开源资源**: - **Nangate 45nm FreePDK**:基于开放工艺的设计套件(需学术用途申请) - **OpenCell Library**:SkyWater 130nm工艺的开源单元库(GitHub可下载) #### 4. 学习资源推荐 - **书籍** - 《专用集成电路设计实用教程》第6章“标准单元设计流程”详解单元库的生成与验证[^2] - 《数字IC设计:方法、技巧与实践》第4章“后端物理实现”分析库文件与工具链的交互 - **实践工具链** - **Synopsys 32/28nm Educational Kit**:面向高校的免费教学套件(含标准库) - **Cadence Genus/Innovus**:通过大学计划获取教育版,配合教程实验 #### 5. 关键设计流程中的库应用 ```tcl # 示例:综合脚本中加载标准单元库(Synopsys Design Compiler) set target_library "stdcells.db" # 时序库 set link_library "* $target_library" set symbol_library "stdcells.sdb" # 符号库 set synthetic_library "dw_foundation.sldb" # DesignWare库 ``` 此脚本展示了如何将标准单元库绑定到综合工具,确保逻辑映射和时序约束的正确性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值