ATPG原理及實現——3.SPF & Quick STIL


一、STIL Protocol文件基礎結構

 

包含的內容:

  • scan input和output的名稱
  • 哪些pin充當“clock”
  • pins、clock、measures的時序定義
  • 端口約束、等效關系
  • test setup sequence、test_setup macro
  • Scan enable sequence、load_unload procedure
  • Scan shift sequence、Shift procedure
  • 其他與設計有關的過程:master_observe,shadow_observe

 

示例:

STIL;
ScanStructures{
    ScanChain "chain1" { ScanIn “SDI[1]"; ScanOut SDO[1] ; }
    ScanChain "chain2" { ScanIn "SDI[2]"; ScanOut SDO[2] ; }

Procedures {
    "load unload" {
          // clocks & resets off; enable scan
          V{CLOCK=0; RSTB=1; SCAN_EN=1; CONF_ENABLE=0;}
             shirt {
                 V { _si=##; _ so=##; CLOCK=P;}  //pulse shift clock; ##會用實際的pattern替代
               }
          }
}

MacroDefs {
    "test setup" {
        V {CONF = 1; CONF ENABLE = 1 ; CLOCK = P;}
        V {CONE = 0; CONE ENABLE = 1; CLOCK = P;}
        V {CONF = 1; CONE ENABLE = 1; CLOCK = P;}
        V (CONF _ENABLE = 0; CLOCK = 0;}
}
}

 

二、創建SPF方法

①使用DFTC創建SPF(常用,首選)

②使用快速STIL命令

  

③手動創建SPF

在DRC或TEST模式下,可以使用以下命令來編寫模板SPF文件:

write_drc_file <file> [-replace]

           [-generic captures] (默認設置,將針對所有故障模型的單周期通用捕獲過程寫入帶有單個協議文件的輸出drc文件中)

           [-nogeneric_captures]

常規/慢周期:multiclock_capture
at-speed周期:allclock_launch,allclock_capture

 

如果SPF可用,讀入spf:

 run_drc <spf_file>

 set_drc <spf_file>  run_drc

 

三、手動定義

1.定義PI

定義PI約束

-- 在整個測試程序中保持端口恆定,定義Pl(原輸入)約束:

    add_pi_constraints  1  ASIC_TEST

-- 查看現有的PI約束列表:

    report_pi_constraints

-- 查看輸入、輸出、輸入輸出、所有端口的列表:
    report_primitives [-pis l -pos l -pios l -ports]

定義PI Equivalences

-- 端口上的PI equivalences:

    add_pi_equivalences [list P1 P2 P3]

    add_ pi_equivalences ENA_P -invert ENA_N

-- 定義差分時鍾:

    add_clocks 0 CLKP -shift

    add_clocks 1 CLKN -shift

    add_pi_equivalences CLKP -differential CLKN

-- 查看現有的P1 equivalences:

    report_pi_equivalences

 

 2.quick STIL clock(一般不用,使用DFTC自動生成已經有了)

手動定義時鍾:

add_ clocks <off_state> <port_name>  -shift

                  -timing <[list period leading trailing strobe]>

//Examples:
add clocks 0 [ list c1k1 c1k2] -timing [list 100 45 55 40] -shift  //-shift使時鍾在scan shift期間在load_unload過程中產生脈沖
add_clocks 1 SLAVE_CK -timing [ list 100 30 90 95]

定義OCC(internal clock):

add clocks <0 | 1> <pirgoames_list> -intclock 
                                    -pll_source <node_name>
                                    -cycle <<<cycle_id> always_on l always_off l<int_node_name> <0 l 1 >>> 
    
//example
add_clock 0 "my_pll_ctrl/intclk" -intclock 
                                 -pll_source u_pll/clka 
                                 -cycle { 0 "my_pll_ctrl/u_clock_chain/launch_enable" 1  \
                                          1 "my_pll_ctrl/u_clock_chain/capture_enable" 1 }

注意:

在定義內部時鍾之前,請先指定set_drc -num pll_cycles選項(定義capture模式下允許的PLL時鍾周期數)

定義ATE時鍾:

add_ clocks  <0 l 1> <pin_names_list>  -shift

                                                               -refclock

                   -timing {<<period><LE><TE><measure_time>>}

add_clocks 0 ate_clk1 -refclock -shift -timing {100 45 55 20}

如果在capture過程中需要產生脈沖,則ATE時鍾也必須定義為TetraMAX的參考時鍾。

定義異步set/reset:

①TetraMAX要求將影響時序設備的存儲狀態、測試儀周期內執行脈沖操作的所有port定義為“clocks”

TetraMAX時鍾包括: 傳統clock、flip-flops和latch的異步set和reset、 RAMS的write/read控件

用作同步和異步的reset不應定義為時鍾。 使用以下drc選項: set_drc  -allow_unstable_set_reset

 

3.SPF Capture procedures

//Capture procedure for stuck-at patterns
"multiclock_capture" { W "_default_wET_";
    F { "TEST_MODE"=1;}
    V ( "_pi" = \r169 #;  " po"=r164 #; }}
//Capture procedures for Transition or Path Delay patterns
"allclock_launch" { w "_launch_WFT_";
    F {“TEST_MODE"=1;}
    V{ "_pi"= \r169 #; "_po"=\r164 #; }}
"allciock_capture" { w "_capture_WET_";
    F {"TEST_MODE"=1;}
    V {"_pi"= \r169 #; "_po"=\r164 # ; }}
"allclock_launch_capture" { w "_launch_capture_WFT_"
    F {"TEST_MODE"=1 ; }
    v {"_pi"= \r169 #; "_po"= r164 #;}}
//Clocks pulses are controlled as part of the _pi signal group

4.在SPF中定義scan chain

add_scan_chains chain1 SDI2 SDO2

add_scan_chains chain2 SDI1 D1

add_scan_enables 1 SCAN_EN

add_scan_enables Z BIDI

Scanstructures {
        scanchain "chain1"    {ScanIn SDI2; ScanOut SDO2; }
        scanchain "chain2"    {ScanIn SDI1; ScanOut D1; }
      }
Procedures {
    " load_unload"(
          V {CLOCK = 0;BIDI =Z ; SCAN EN=1;}”
               shift {
                  V {_si=##; _so=##; CLOCK=P;) // pulse shift clock
                }
         }
}

四、TetraMAX獲取時間信息

TetraMAX使用基於周期的模擬器進行DRC分析。模擬器本身沒有定時功能,但是事件按特定順序發生,並在特定時間應用於測試儀

  • 事件順序和時間來自測試協議,測試協議可以來自多個地方:

   從DFTC寫入的SPF文件

   使用Quick STIL命令指定的時間

   TetraMAX中的默認計時

   手動輸入到SPF中的時間

  • TetraMAX在此期間的定時的作用:

    DRC:使用timing值和事件順序進行DRC檢查。

    ATPG和故障模擬:不使用timing信息

   pattern:timing與輸出向量相關聯

1.在已存在的UPF中更新timing

read_drc

update_ *

read_drc <original_SPF_file>
update_wft  -wft <name>  -period <d>  -force <d>   -strobe <d>
update_clock  -wft <name>  -clock <name>  -pulse {<le><te>)
update_scale  -wft <name>  -unit <nslps>
write_drc_file <new_SPF_file>
…………
run_drc <new_SPF_file>

2.SPF中的波形表和信號組

在STIL文件中把定義的時序保存為WaveformTable

Timing {
     WaveformTable "_default_MFT_"  {
          Period  "100ns" ;
          Waveforms {
               "_default_In_Timing_" { 01ZN {'0ns' D/U/z/N; }}
               "_default_cLk0_Timing_" {P {'0ns' D; '45ns' U; '55ns' D;}}    //D高電平  U低電平
               "_default_Out_Timing_"  {X {'0ns' X; }}
               "_default_Out_Timing_"  {HTL {'0ns'; '40ns' H/T/L; }}
              }
           }
}

STIL文件用SignalGroups節省空間

SignalGroups {
      "_default_clk1_Timing_" = '"prst_n"';
      "_default_clk0_Timing_" = '"sdr_clk"+"sys_clk"' ;
      "_default_In_Timing_" = '"pframe_n"+ ..."pad[0]"'; 
      "_default_out_Timing_" ='"pframe_n" + ... "pad[0]"';
      "_si" = '"pad[0]" + ... "pad[5]"' {scanIn;}
      "_so" = '"sd_ A[0]" + ... "sd_A[5]"'{scanout;} ;
}

五、不同的Bond-outs

功能引腳的不同bond-outs可以完全在TetraMAX中處理,2個步驟:

step.1 在build之前從網表中刪除未綁定的pin

   add_net_connections PI {pi_list}  -remove

   add_net_connections PO {po_list]  -remove

   add_net_connections PIO {bidir_list}  -remove

step.2 從協議文件中刪除引腳:

   從信號部分刪除

   從相關的signalGroups中刪除(_pi_po等)

   減少procedures中signalgroups更改中的重復計數

注意:如果使用Quick STIL命令,則不需要第二步

 

  • 如果未綁定測試端口,則應更改設計的測試方法,而不是更改ATPG

   查找掃描鏈的最低配置
   盡可能在內部限制恆定信號並通過初始化序列進行驅動
   考慮多模式掃描設置(用於晶圓測試的完整鏈條的測試模式、在封裝測試時重新配置以減少鏈條;注意:每種模式需要單獨運行的ATPG)
   使用壓縮邏輯減少對頂層引腳的需求(自適應掃描可以通過有限的引腳驅動許多鏈)

  • 如果無法訪問鏈,則會影響pattern質量,覆蓋范圍,運行時間和pattern數

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM