DFT下release的sdc讨论

DFT下release的sdc主要包括三部分:

1、shift_sdc:

主要是检查scan_chain上寄存器q到si的timing情况;同时还要注意edt_logic和scan_chian之间的时序关系;channel_in/out或者wrap_cell_input/output的接口处的timing;处理的难点也在EDT和chain之间存在半周期收敛,即在shift_mode的时候,一正一负或者一负一正,存在setup只有半周期的slack,hoid的却有一个周期的slack,后期一旦setup出问题,只能降频。

Timing的处理方式:scan_chain上采用eco打拍(场景:跨时钟域时候,Q到si,Tessent工具会自动加lockup_latch_cell(向后借time)处理由于clk_skew过大导致的hold问题,同时还要考虑异步时钟分叉点过早,ocv影响,导致setup窗口被吃掉,对于大于100M的shift来说窗口更小,更危险,所以一般都是单时钟域收敛;稳妥解决办法:在edt_clock处加一个dummy_icg逻辑(E和SE恒1)使得cts的可长可短,解决setup问题。

对于带IP的模块,考虑ip内部的shift_timing是否和外部一致?ip_chain一般都固定好了,只能ip_chain_family处理;无法和外部同时去clk_domain,工具会报error);(场景:模块的规模可能很大,位置是畸形摆放,根据实际的pr位置来决定是否对链首链尾打拍或者链中间打拍,或者只针对违例的chain打拍)

edt逻辑内解压缩和压缩逻辑打拍(采用reg_cell,而不是lockup_latch_cell);edt到DFT逻辑打拍;latch到edt逻辑打拍;

寄存器和mem之间的打拍:根据项目经验一般对弈mem_clk大于800M的,在bist_data_in处打拍;

特殊情况,有些sram可能支持内部数字寄存器上chain测试,会留有si和so的pin;吃tcd自动上chain,就不要打拍处理了;但是注意有些sram的address_pin不一定能用内部的chain去shift和capture,所以为了提高覆盖率还是需要单独加一些hold_observe_cell去观察。

寄存器的rst,icg_gate,组合逻辑的gate,在shift时候都是确定值,所以不需要check时序;

shift时,没有进chain的寄存器不需要检查时序;

特殊机构:对于子系统模块的而言:还会出Flat_sdc,也要保证时序clean,此时需要注意:对于no_partion或者no_wrap的模块,其OCC 切换在顶层,本模块没有,只能用func_clk来驱动,也可以保证模块内部shift_timing收敛,但是从flat角度,即顶层来看,在一块出向量的时候,shif下由于flat dft_test_clk和func_clk的latency不一致,导致时序问题可能再次出现。解决办法:在模块级直接采用one_clk_Mux的方式,只用dft_test_clk,保证flat下模块级shift_timing完全收敛。但是mux带来的delay相对高频时钟来说很大,后端不一定能接收。

channel_in/out或者wrap_cell_input/output的接口处的timing:

一般channel_in/out分为内外部两部分:模块内指channel_in/out到edt的打拍,一般采取chan_in的第一级和chan_out的最后一级打拍pipie-reg_cell靠近端口排放,其余等距摆放;模块外指chann到Top的复用pad的路径,同样si的第一级和so的最后一级打拍pipie-cell靠近输入输出pad摆放,其他等距摆放。同时模块内的pipecell的时钟树尽可能的短。以上经验可以保证timing收敛更高,以及测试时间成本更小。

wrap_cell_input/output同理上述。

对于test_point(hold_cell型,clk来自dediceta_occ(快慢时钟都是silow_clk),rst来自ijtag_rst)来说:对于控制点,没有timing的影响,因为控制点触发器在捕获周期中捕获自己。 set_case_analysis control_point_en 0 确保:1.源触发器的保持路径不会放松;2.从源触发器到下一个SI引脚的扫描路径也不会放松

如果要在高速测试期间使用观察点observe_reg,那么它们必须满足从数据来源点开始的single_cycle_timing。在STA期间,用作“observe_point_en”的信号将不受约束,以允许STA工具检查这些单元的捕获和转移路径的时间。

如果在高速AC测试期间没有以满足观察点的单周期timing,则必须在ac_ATPG期间禁用该路径,通过使用“add_input_constraints observe_point_en -C0”。

由于sta和pr工具的操作方式不同,在STA期间使用“set_case_analysis”来防止检查给定路径上的计时,这将阻止Place and Route工具在同一路径上fix_timing。在慢速dc期间,这些单元格的保持路径必须满足timing要求,因此,应该使用set_false - setup - to <所有观察点flops>”

特殊:eco_chain的时序:为防止后期eco再次加入func_reg,这些reg进入eco_chian(一般设置多条,每条上有 1-2个dunmmy_reg)上时,需要打拍(latch)缓解hold问题。

如何书写shift_SDC:

creat_clock [get_ports name ] -add -period -waveform -name 

set_clock_groups -async -name ijtag -group {ijtag_tck}

set_input_delay  -clock ijtag_tck {ijtag_reset ijtag_ue ijtag_ce ijtag_si  ijatg_sel }

set_ouput_delay -clock ijtag_tck {ijatg_so}

set_input_delay -clock tessent_virtual_force_pi {dft_scan_en dft_edt_updata *edt_chann_in* *wrapoc_si* }

set_input_delay -clock tessent_virtual_fmeasure_so {*edt_chann_out* *wrapoc_so* }

set_case_ana 1 rst_muxout_pin

set_case_ana 1 {ltest_en dft_scan_en all_test atpg_mode rst_sel}  注释:atpg_mode是icg_ip中mode选择信号,有多种mode选择控制Icg开关,控制功耗;rst_sel也是rst_ip的控制方式选择。

set_case_ana 1 */occ/test_mode_reg/Q

set_case_ana 0 inject_tck_mux_sel

set_false_path *cgc_SFIFT_REG_CLK/*

set_false_path cgc_fast_clock/*

set_multicycle_path -setup 2 -from *tessent_sib*/to_enable_int*

set_multicycle_path -hold 2 -from *tessent_sib*/to_enable_int*

set_multicycle_path -hold 1 -from  edt_contro/low_pwr/low_power_hold_reg*

set_multicycle_path -setup 3 -through *edt_scan_out_buf/in  -through  *edt_scan_in_buf/in

set_multicycle_path -hold 2 -through *edt_scan_out_buf/in  -through  *edt_scan_in_buf/in

特殊的scan_mode_add的一些特殊信号:set_case_ana 

2、dc_capture_sdc:

主要是检查q到D的时序,dc_scan_capture采用slow_clk;存在多个clk_group的(port_clk或者occ_gen_clk);同时存在和功能下相同的clk下的setup multicycle_path可以放松,但是若存在一正一负的情况,setup只有半T,没法放松;难点在于功能下的hold可以放松,但是dc_capture_mode下没法放松。

注意:setup 的timing一定是没有via的;hold_timing_via和func下基本一样多,若tycal or worst下的比func多,则有问题。

如何书写capture_SDC:

creat_clock [get_ports name ] -add -period $slow_period -waveform -name 

creat_clock [get_ports ijtag_tck] -add -period 40ns -name ijtag_tck

set_clock_groups -async -name ijtag -group {ijtag_tck}

set_clock_groups -async -name  dc_scan_async -group {func_clk bisr_clk div_clk scan_clk}

create_generated_clock [get_pins ] -divde  -source -master -name -comb

set_input_delay  -clock ijtag_tck {ijtag_reset ijtag_ue ijtag_ce ijtag_si  ijatg_sel }

set_ouput_delay -clock ijtag_tck {ijatg_so}

set_multicycle_path -setup 2 -from *tessent_sib*/to_enable_int*

set_multicycle_path -hold 2 -from *tessent_sib*/to_enable_int*

clk来自上述clk_group:

set_multicycle_path -setup 2 -rise_form  -rise_to 

set_multicycle_path -hold 1   -rise_form  -rise_to 

set_multicycle_path -setup 2 -fall_from -fall_to

set_multicycle_path -hold 1 -fall_from -fall_to

set_multicycle_path -setup 2 -fall_from -rise_to

set_multicycle_path -hold 1 -fall_from -rise_to

set_multicycle_path -setup 2 -from tessent_virtual_force_pi -to clk

set_multicycle_path -hold 1  -from tessent_virtual_force_pi -to clk

set_multicycle_path -setup 2 -from clk -to tessent_virtual_measure_po

set_multicycle_path -hold 1  -from clk -to  tessent_virtual_measure_po

set_input_delay -clock tessent_virtual_force_pi {func_clk bisr_clk dft_scan_clk ijtag_tck bisr_si ijtag_* }

set_input_delay -clock tessent_virtual_fmeasure_so {bisr_so ijtag_so }

set_case_ana 0 dft_scan_en  dft_burn_in 

set_case_ana 1 ltest_en all_test

set_multicycle_path -setup 2 -from dft_edt_updata dft_pad_reset

set_multicycle_path -hold 1  -from dft_edt_updata  dft_pad_reset

set_multicycle_path -hold 1 -from  edt_contro/low_pwr/low_power_hold_reg*

set_multicycle_path -setup 3 -through *edt_scan_out_buf/in  -through  *edt_scan_in_buf/in

set_multicycle_path -hold 2 -through *edt_scan_out_buf/in  -through  *edt_scan_in_buf/in

set_case_ana 1 */occ/test_mode_reg/Q

特殊的scan_mode_add的一些特殊信号:set_case_ana 

3、mbist_func_sdc:

将tessent工具在mbist_gate下吐出来的mbist_sdc和func_sdc merge在一起减小sta_mode的种类,收敛mbist时序。

相当于dft_ac_capture的时序,除带iP的模块,存在bypass_dft_专有高频时钟,需要单独声明async_clk_group在sdc中。

但是容易出现假path,无法辨别是否。

注意:为防止occ_chain_reg时序出现问题,一般ocC的逻辑在pr时摆放在一起,保证occ内部的cts尽可能的短,以至就可以忽略时序问题。

对时序敏感的部分,DFT 会出cell.list抓取报告提供给pr,并指导摆放原则。

对于mem高频时序紧张问题,一般采用pr给的mem_group作为指导文件来分controler来做测试电路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值