DFT专栏目录:
- DFT专栏之1.TessentMbist——Flow and main steps
- 一、Design Loading
TessentMbist flow:
1 Design Loading
Design Loading是使用TessentMbist 的第一步。该步骤如图1所示,包括:
Design Loading
set_context dft -rtl read_cell_library ../library/adk.tcelllib set_design_sources -format verilog -y {../library/mem ../design/rtl} \ -extension v set_design_sources -format tcd_memory -y ../library/mem -extension lib read_verilog ../design/rtl/blockA.v set_current_design blockA
具体指令可参考Tessent Reference manual
以下将对step中的每个具体步骤做详细解析:
注意:由于tessent本身就是基于TCL搭建而成的,且DFT设计环境都是基于Tessent指令搭建而成的,所以在学习DFT(使用mentor,现在成为simens EDA工具)时,应该配合Tessent Reference manual一书学习具体指令操作。
1.1 Set the Context
set_context dft -no_rtl #还有其他选项
在testent Shell中,设置context意味着两件事。首先,将context设置为dft,为要创建的 memory BIST硬件。其次,必须指定要读入的设计类型是否写入RTL。如果是,则必须指定-rtl。如果要读取的设计是一个gate_level Verilog netlist(门级网表),则应该指定-no_rtl。当使用-no_rtl模式时,在dft插入阶段的末尾会写出一个连接的门级网表。在rtl模式下,输入设计的文件结构被保留,只有修改过的设计文件在dft插入阶段结束时与新创建的测试IP一起被写入。要读入的门级网表可以是Verilog、VHDL或混合语言。
在启动Tessent shell 后第一个任务就是要设置context和system mode。术语“context”指的是一个广泛的功能类别,通常对应于特定的点工具、产品或许可特性,例如Tessent FastScan。每个context包括几个system mode(setup、analysis和insertion),这些模式指定了工具当前的操作状态。通过设置context和system mode,您可以指示希望Tessent Shell执行的任务类型。
具体可参考tessent user‘s manual中context以及system mode部分了解。
1.2 Read the Librarier
read_cell_library ../library/adk.tcelllib
你可以使用read_cell_library命令在库文件中读取设计中实例化的库单元格。在将memory BIST插入RTL设计时,此时,读取memory BIST库就足够了,但并不典型,因为一些库单元是在RTL设计中为pad单元和时钟控制实例化的。当Tessent单元库不包括pad信息时,LV pad库由read_cell_library命令支持,可以使用pad信息来增加Tessent单元库。内存BIST库被认为是Tessent Shell中的Tessent Core Descriptions(TCDs),并被加载并称为TCDs。LV flow的内存BIST模型无需修改就与Tessent Shell兼容,并在flow中作为TCDs加载和引用。
例如:
例1——下面的示例说明如何读取Tessent单元格库文件中的pad IO宏。
read_cell_library ../library/adk_complete.tcelllib
例2——下面的例子展示了如何显式地读取内存中的BIST模型。
read_core_descriptions ../library/128x64_RAM.memlib
例3——下面的例子展示了如何使用set_design_sources来引用内存BIST库。使用tcd_memory类型作为-format选项指示工具期望读入内存库文件。
set_design_sources -format tcd_memory -y ../library/memlibs -extensions memlib
1.3 Read the Design
在设置完context和加载完libraries cell之后,可以通过read_verilog命令来读取design。
同时,在此时也可加载Memory placement (DEF, or Design Exchange Format files) 、 power domain data (UPF,
Unified Power Format 和CPF, Common Power Format files) 。这些数据影响内存BIST planning,包括内存patition和内存BIST控制器分配。
例如:
例1——下面的示例显示如何读入一个netlist,该netlist可以是RTL级别,也可以是gate-level级别。
read_verilog ../netlist/cpu_top.v
例2——下面的示例显示如何指定要搜索的文件和目录库Verilog模块。
set_design_sources -format verilog -v ../design/top.v -y ../design -extensions v gv
例3——下面的例子展示了如何读取包含存储器位置信息的DEF(Design Exchange Format files)文件和描述与存储器相关的功率域的UPF(Unified Power Format)文件。
read_upf ../data/design/power/blockA.upf
read_def ../data/design/layout/blockA.def
1.4 Elabrorate the Design
设计加载的下一步是使用set_current_design命令详细说明设计。
set_current_design命令指定执行所有后续操作的设计的root。如果缺少任何模块描述,设计细化将识别它们。对于memory BIST insertion而言,如果模块不包含内存或内存扇入中不包含时钟树元素,则允许模块没有定义。您可以使用add_black_box -module命令指定它们。
1.5 Report the Design Data
你可以使用几个命令来检查加载的设计和相关库。下面一节提供了更常用的报告命令示例。
例如:
例1——下面的示例运行set_design_sources,然后报告所引用的设计源。
> set_design_sources -format verilog -y {../data/design/mem \
../data/design/rtl} -extension v
> report_design_sources
// ICL search_design_load_path: activated
// BoundaryScan search_design_load_path: activated
// Scan search_design_load_path: activated
// ----------------------------------------------------
// format type path file extensions
// ------- ---- -------------------- ---------------
// Verilog dir '../data/design/mem' 'v v.gz'
// Verilog dir '../data/design/rtl' 'v v.gz'
例2——下面的例子报告了当前加载在testent Shell中的内存模型以及其他测试核心描述。使用-levels 1选项只显示核心名称和类型。当未设置此选项时,将显示整个模型内容。
> report_config_data -partition tcd -levels 1
Core(SYNC_1R1W_16x8) {
Memory {
// Not shown
}
}
Core(SYNC_1RW_32x16) {
Memory {
// Not shown
}
}
Core(SYNC_2R2W_12x8) {
Memory {
// Not shown
}
}
注意:如果加载了内存以外的核心描述,它们也会显示在这个报告中。
例3——下面的示例报告在设计细化过程中发现的内存实例。
> report_memory_instances
//
// Memory Instance: blockA_l1_i1/blockA_l2_i1/mem1
// ----------------------------------------------
// bist_data_in_pipelining : off
// physical_cluster_override :
// power_domain_island :
// test_clock_override :
// use_in_memory_bist_dft_specification : auto
// use_in_memory_bisr_dft_specification : auto
//
// Memory Instance: blockA_l1_i1/blockA_l2_i1/mem2
// ----------------------------------------------
// bist_data_in_pipelining : off
// physical_cluster_override :
// power_domain_island :
// test_clock_override :
// use_in_memory_bist_dft_specification : auto
// use_in_memory_bisr_dft_specification : auto
这个report命令提供额外的属性信息以及内存实例路径。可以通过加载额外的设计数据(如UPF文件)来间接设置这些属性,以指定power domain islands,也可以使用set_memory_instance_options命令显式地更改这些属性。
下一节将继续讲解flow中的Specify and Verify DFT Requirements部分