
可测试性设计流程:Tessent MBIST
本文主要讲述可测试性设计流程中MemoryBIST部分,用于帮助大家快速了解 Tessent MBIST flow,了解Tessent shell commands的基本用法,参考(翻译)自《Tessent MemoryBIST User’s Manual》,FYI。
Design flow for Tessent MBIST
本文主要讲述可测试性设计流程中MemoryBIST部分,用于帮助大家快速了解 Tessent MBIST flow,了解Tessent shell commands的基本用法,参考(翻译)自《Tessent MemoryBIST User’s Manual》,FYI。
文章目录
Design loading
- Set the context
设置context是Tessent shell的需求,用来指定目前需要工具来做的事以及工具处理对象的状态。比如,只有在context被设置为dft时,才可以创建MBIST hardware。如果当前的design是RTL需要指定-rtl,如果是门级网表需要指定-no_rtl。如果是门级网表那么在dft insertion 阶段结束时会把额外的连接网表写出来。如果是RTL会把更改的结构和testIP创建出来。设计的格式可以是Verilog、VHDL、mixed language。set_context dft -rtl open_tsdb ../core_tsdb_outdir set_tsdb_output_directory
如果MBIST结构已经在block中插入了,当它要集成到Hier level,需要使用open_tsdb command来打开子模块的TSDB,如果子模块和主模块使用相同的TSDB则不需要这个命令,但需要set_tsdb_output_directory指定输出路径。 - Read the libraries
使用read_cell_library command来读取在design中实例化的库单元的库文件。MBIST library在Tessent Shell中被叫做Tessent Core descriptions(TCDs)并且作为TCDs被加载。使用set_design_sources 来调用TCD。通常MBIST library file由memory IP厂商提供,使用前不需要进行修改。read_cell_library ../lib/IO_macros.tcelllib read_core_descriptions ../lib/r.memlib set_design_sources -format tcd_memory -y ../lib/memlibs -extensions memlib
如果有repair需求,flow需要有额外的设置:- memory library file必须包含特定的wrapper来产生和插入repair逻辑。
- Redundancy Analysis wrapper也是必须的用来产生解决memory repair问题(冗余逻辑memory repair 的修复方案)的BIRA逻辑。
#repair_enable
read_verilog ../fuseBox.v -interface_only -exclude_from_file_dictionary
read_core_description ../fuseBox.tcd
#DEF
read_def
- Read the design
在设置好context并且load完需要的库后,就可以使用read_verilog来read design。除此之外Memory placement(DEF, Design Exchange Format files)、power domain data(UPF, Unified Power Format)、CPF(Common Power Format files)也可以在这一步load进去,这些文件会影响memory的分区以及memory BIST controller的规划。 - Elaborate the Design
使用set_current_design命令对design进行详细设计。该命令指定后续操作针对的对象,如果在设计中缺少某些module,工具将会识别出来,也可以使用add_black_box -module来对它们进行定义。 - Report the Design Data
可以使用一系列命令来检查loaded design以及和库的连接情况。report_design_sources report_config_data report_memory_instances
Specify and verify DFT Requirements
- Set DFT Specification Requirements
为了插入MBIST,必须使用set_dft_specification_requirements指定DFT specification的要求,这会启用针对MBIST的DRC spec并且让create_dft_specification执行时包括MBIST wrapper。set_dft_specification_requirements -memory_test on (-boundary_scan on -tck_injection on) set_design_level chip
如果有repair需求,flow需要有额外的设置:set_dft_specification_requirements -memory_test on -memory_bisr_chains auto -memory_bisr_controller auto
- Add Properties and Constraints
在创建DFT specification时可以增加或更改properties和constraints:
为了在chip level插入MBIST,必须要连接4个TAP pin(TDI、TCK、TMS、TDO)到IO macros,TRST是可选的,如果TAP pin已经命名为tck,tdi,tms,tdo,trst,会自动进行设置。
也可以使用默认的配置,DefaultsSpecification,它会被自动读到.tessent_startup file或者也可以使用read_config_data指定。set_attribute_value tck_p -name function -value tck set_config_value report_config_syntax add_primary_inputs add_pin_constraints add_dft_signals
- Define Clocks
在详细设计时,Tessent shell会自动trace memory clk pin到clock source。所以我们只需要定义clk。add_clocks CLK -period 12ns -label blockA_ram_clk add_clocks clk_ref -period 10ns -label clk_ref add_clocks U_PLL/VCO -label clk_100mhz -reference U_PLL/REF -freq_multiplier 4
- Run DRC
运行DRC check来保证约束的正确性,一旦DRC干净了,Tessent shell将会从SETUP模式跳转到ANALYSIS模式。
如果设计在setup模式存在任何问题,比如定义时钟有误则会发生DRC违例,只有清理干净所有违例才能进入下一步骤。check_design_rules #memory clock path中存在时钟门控单元 add_dft_clock_enables #设计中包含多路复用器并且必须控制 add_dft_contrl_points #要在memory clock path插入多路复用器 add_dft_clock_mux
Create DFT Specification
基于DFT requirements specified来创建DFT specification。
-
Invoke create_dft_specification
使用create_dft_specificcation命令自动创建一个DFT specification,这个specification会存储在内存中,可以使用report_config_data来报出这个specification。
DFT specification包括IJTAG network wrapper到BIST controller的电路以及MBIST wrapper到MBIST的配置。IJTAG网络符合IEEE1687标准。set dft_spec [create_dft_specification] report_config_data $dft_spec read_config_data
-
Edit/Configure the DFT Specification According to Your Requirements
使用默认配置不需要修改,如果要自定义可以参考以下方法:
Method1: 更改设计约束并重新生成DFT specification
使用这种方法重新回到setup模式修改配置后重新生成DFT specification。set_system_mode setup set_memory_instance_options -physical_cluster_size_ratio 40 check_design_rules create_dft_specification -replace
Method2: 使用GUI界面进行直接修改
首先使用 display_specification命令启动GUI界面然后进行修改,可以report_config_data 来查看当前做的修改,如果要加到DFT specification中可以使用 read_config_data。Method3: 在内存中直接修改DFT specification
可以通过 add_config_element和set_config_value命令来对DFT specification进行修改,通过这种方法每次运行相同的flow,specification都会被修改。 -
Validate the DFT Specification
这是一个可选的步骤,通过这个步骤可以确认修改后的specification是否存在error。process_dft_specification -validate_only
Process DFT Specification
Create DFT Hardware with the DFT Specification
按照Specification创建相应结构。
process_dft_specification
使用该命令生成并插入DFT specification需要的所有DFT硬件结构,在chip level会插入TAP controller,在physical和sub-block level会插入IJTAG scan interface。
Extract ICL
Extract ICL用来验证process_dft_specification命令创建并插入的ICL module连接是否正确,是否存在DRC问题,如果不存在,提取顶层的ICL description并创建本部分综合使用的SDC。如果存在DRC可以使用open_visualizer来debug。
Preparation for Pattern Generation
Create Patterns Specification
create pattern specification创建默认的pattern specification。pattern specification是一个用来告诉你process_patterns_specification创建了哪些用来测试的配置文件。可以通过对默认的pattern_specification进行修改来生成想要的测试pattern specification。
- Automatically Created Patterns Specification
当使用create_patterns_specification产生默认的pattern specification时,默认的pattern specification只会存储到内存中,每次执行process_patterns_specification 时会将它的副本写入到TSDB/pattern目录中,并且验证没有error,如果想看specification的具体内容可以使用report_config_data命令。
set pat_spec [create_patterns_specification]
report_config_data $pat_spec
- Edit/configure the Patterns Specification According to Your Requirements
可以通过以下方法来根据个人需求修改或配置pattern specification,通常是不需要修改的。
Method1: Edit the pattern specification in memory
这是首选的方法,可以通过tcl或dofile来修改,可以在以后迭代使用。
set pat_spec [create_patterns_specification]
set_config_value -in $pat_spec/Patterns(MemoryBist_p1)/tester_period 50ns
Method2: Write out the patterns specification, edit the file, and read the file back in
先将pattern specification写出来再对file进行修改,显然这种方式更简单但是不推荐,因为它会覆盖掉原文件,所以假如必须要使用最好先复制一份原文件备份。
create_patterns_specification
report_config_data
write_config_data initial_mbist_cfg.pat_spec -wrappers PatternsSpecification(blockA, signoff)
read_config_data bonding1_config_edited.pat_spec
report_config_data
Method3: Use the GUI to edit the patterns Specification
使用add_config_tab PatternsSpecification()命令并通过GUI编辑模式进行specification修改。
add_config_tab PatternsSpecification(blockA,rtl,signoff)
Process Patterns Specification
Process Patterns According to the Patterns Specification
使用命令process_patterns_specification来根据默认的patterns specification或者根据个人需要修改过的patterns specification生成patterns和testbenches。
process_patterns_specificcation
Run and Check Test Bench Simulation
这是使用Tessent Shell来插入MBIST的最后一个步骤。对MBIST进行仿真验证并查看结果。
- Run Simulations
使用run_testbench_simulations命令来启用simulation编译并执行simulation test benches。testbench来自于process_patterns_specification命令产生的<tsdb_outdir>/patterns/.patterns_signoff。
run_testbench_simulations
- Check Results
使用check_testbench_simulations命令来check run_testbench_simulations的结果。
check_testbench_simulations
- Formal Verification
Just reminder,please run formality check to see if there any other issue.
Test logic Synthesis
对于RTL和netlist的测试逻辑综合方法是不同的。
- RTL Design Flow Synthesis
- Using Generated SDC for MemoryBIST
extract_icl和extract_sdc命令在执行后都会创建相应的sdc用于综合、布局布线和静态时序分析。需要注意的是extract_sdc命令在使用时必须在extract_icl之后。
当extract_icl的对象是带有sub-block的physical block,那么会为physical block和sub-block都生成sdc。 - Synthesizing the RTL Design with Test Logic
这个过程可以通过写脚本来自动实现,由综合工具去综合带有DFT的RTL design。使用 write_design_import_script命令可以生成让综合工具用来执行综合命令的脚本。
write_design_import_script
- Gate Level Design Flow Synthesis
门级网表的综合flow是全自动化的,只需要使用run_synthesit命令去综合测试逻辑并集成到design中就好。
- Run Synthesis
run_synthesis 命令只会综合TSDB中包含的test logic RTL。当创建和插入MBIST、Boundary scan、IJTAG逻辑时,生成的RTL会自动写到TSDB中,在执行process_dft_specification命令期间。
run_synthesis
- Concatenate Netlist Generation
当run_synthesis命令成功执行完成后,会把综合后的test logic以及为此而修改的design module创建并放置到TSDB的dft_inserted_designs目录中。
更多推荐
所有评论(0)