- 设计和库的需求
- 指定验证MBIST的需求
- 创建配置MBIST的DFTspec
- process MBIST的DFTspec
加载设计与memory 库;
可以使用 read_core_descriptions 命令读取内存中BIST logicvision设计流程中的旧模型.旧模型会转化为TCD的新的描述.需要注意的是 需要在logic vision MemoryTemplate中指定cell name;
在gate-level的设计插入流程中,需要读取Tessent的单元库.对于顶层设计的插入,必须包含pad单元库;
对于 RTL-level的设计流程,是不需要上述的单元库的直到testbench simulation这一步;
#设置dftspec的需求
set_dft_specification -memory_test on
#如果你存在 可修复的memory,就必须指定Memory repair的需求
#当前的MBIST流程不允许附加的Memory repair逻辑独立于BIST的逻辑;
Memory的物理布局信息是划分Memory controler的众多因素之一;
其他因素包括: power consumption,power domain,测试时间预算;
#使用
read_def
#命令去加载layout信息;
#使用
set_memory_instance_options -physical_cluster_size_ratio 10
#设置物理簇的大小,以芯片对角线百分比表示物理簇的大小;
read_upf
#使用
add_clock
#告诉tessent工具所要使用的时钟和他们的频率;
#这些信息会在之后的DRC中使用,也会关系到Memory controller的分组;
有两种方法更改默认的DFTspec;一是直接修改默认的DFTspec文件然后加载到tessent中去;而是使用set_defaults_value或者是更通用的指令set_config_value,去修改各种属性的值;
如何设置仅影响一个或者一组Memory的更改;
大多数使用 set_memory_instance_options命令的更改只有在design rule check之后才能可见;
example:
使用 set_memory_instance_options 命令中的-use_in_memory_bist_dft_specification 的选项
,为一个指定的memory 做配置
一旦完成设计规则检查就可以开始创建 DFTSpec
这一阶段比较重要的命令包括:
report_memory_instance
get_memory_instance_option
create_dft_specification
#以及dftspec修改所使用的命令
add_config_element
get_config_value
set_config_value
#以及使用ui展示dftspec的命令
display_specification
有些约束对于dftspec存在全局的影响, 你可以使用 set_memory_instance_options命令去修改这些约束.下面举一个例子展示你改变的加载的power domain的信息所需要的步骤;
check_design_rule指定会分析设计,并将power domain的信息附加到每一个Memory instance上;如果你test setup使用其他的power domain
DFTspec中的一些参数会对设计的性能和面积以及其他方面造成影响;
为了获得更高的测试覆盖率,tessent在做Mbist的时候会添加Memory bypas逻辑以及一些用于观测的register,
我们可以通过调整bypass和observation register的数量最小化Memory的面积.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdkM8zLW-1666421116771)(evernotecid://B004F96B-9AA0-47D6-BD23-E56FA9C545DF/appyinxiangcom/12890172/ENResource/p872)]
dftspec中的这些属性会影响到 bypass 和observation 寄存器的数量;
默认, 每个存储器接口, 观测逻辑简化后地址控制信号和观测寄存器之比为3,bypass logic不做简化,等于存储器数据输出端口的数量;
插入观测逻辑是可以通过设置AdvanceOptions(observation_xor_size)关闭的,这个选项是通过XOR树来指定地址和控制信号与观测寄存器的缩减比; 这个缩减比从1:1一直可扩大到多:1;
存储器 bypass逻辑的插入取决于Memory的TCD中Transparentmode属性决定.DFTspec中 step/MemoryInterface/scan_bypass_logic属性可以用来覆盖TCD中的设置.
同步bypass方案是默认和最常见的方案,对于一部旁路方案,不使用旁路寄存器就可以实现XOR约简.
DFTspec中 memoryInterface/data_bits_per_bypass_signal 属性用来指定组合到一个XOR tree中的数据输入信息的数量,此设置在为RAM创建bypass logic时十分有用,工具提供了一个灵活的区间,1对1到多对1;
和 observation register一样, 要限制缩减比例需要考虑避免 旁路寄存器的全速时序路径比存储器路径更critical;
不同配置:
不同种类的Memory分配给不同的控制器;
位于同一个controller的DRAMs必须有一致的行列宽度和bank dimensions;
Memory通过 physical region,clock domain,Memory cluster 进行分组; 由多个clock domain 驱动的multi-port memory,选用最快的clock domain进行分组;
指定不同group lable的memory 分到不同的组中;
memory进一步划分兼容组,以便于在单个Memory controller步骤中对一组的memory进行并行测试;如果并行测试不同size的memory还要比串行测试他们话的时间要长,那么最好把不同大小的Memory放到不同的组中;这经常发生在一个Memory的行地址很多列地址很少而另一个列地址很多行地址很少的情况下;
所有的memory必须使用相同的算法;
所有的Memory必须使用相同的operation set;
所有的memory必须为相同的种类(SRAM ROM DRAM)
所有的DRAMs 必须为相同的row column 以及bank adress bits;
对于计数范围,所有的Memory的column segments(列段)必须有相同的low value, high value 可以不同;
Memory的bit grouping必须全部为偶数或者奇数;
所有的Memory必须有一致的bist_data_out_pipelining的设置
所有的Memory必须有一致的DataOutStage的设置;
内存组的划分要保证没有超过 Max_power_per_step和max_memories_per_step
set spec [create_dft_specification]
#创建一个 DFTSpec
#在这条命令的最后,会报告当前DFTSpec生成的名字
#tip: 使用 tcl 中的set 命令去捕获 create_DFTSpec 返回的数据;
#设计 仅在process_dft_specification 时发生改变
Tessent工具会分析你设置的信息和约束;下面的例子会展示如何检查和修改DFTSp
report_config_data $spec
report_config_data $spec/MemoryBist/Controller(c1)
#报告所有未指定的配置(默认配置)
report_config_data -show_unspecified
一些信息将你在报告DFTspec的时候才能看到,像 Memory的分组仅影响DFT的解决方案,但只能在创建之后才能看出结果,修改这些信息需要对DFTspec进大量的编辑,更简单的方法是直接改变输入的数据并重新创建DFTspec;
下面的例子中,你想移动一个Memory到一个独立的controller;
report_config_data $spec/MemoryBist/Controller(c1)
report_memory_instances -limit2
#报告两个instance的信息;
set_memory_instance_options mem1 -physical_cluster_override MyCluster
set spec [create_dft_spec -replace]
#report_config_data一下检查是否修改成功
display_specification
这里没什么好说的
More articles You can follow the official account:“IC练习生”
IC民工不定期更新