Build Mode


一、Build Mode

 

 

 

  • 讀入網表:   BUILD-T> read_netlist /libs/0.18u/*/??DFF*.v    (?代表1位,*代表n位)

  • 若兩個同名文件默認讀入最后一個:  set_netlist -redefined_module  last | first
  • 只能讀structural Verilog libraries

 

Empty Box VS. Black Box

set_build  -reset_boxes; #Clears black & empty box list
set_build  -empty_box BUS SWITCH
set_build  -black_box RAM32x8  -empty_box IRQ_CORE

# In Tcl mode, must use list for multiple black box modules:
set_build  -black_box [list RAM32x8 RAM64X8]

# Report all black box modules:
report_modules  -black box

 

二、快速到達各個模式

(2)快速到達DRC Mode 

第一次過程:

BUILD-T>  read_netlist  ...

BUILD-T>  run_build_model

DRC>  write_image pass1.image.gz  -compress gzip -replace

隨后的過程(快速到DRC mode):

BUILD-T>  read_image pass1.image.gz

DRC-T>  

(2)快速到達TEST mode

第一次過程:

BUILD-T>  read_netlist . .

BUILD-T>  run_build_model

DRC-T>  run_drc DUT.spf

TEST-T>  write_image pass1.image.gz   -compress gzip   -replace -violations

隨后的過程(快速到test mode):

BUILD-T>  read_image pass1.image.gz

TEST-T>  #Ready to resume in TEST mode

 

 

 

 

 

三、Memory DFT

1.測試RAM / ROM內部fault

--無法通過門級stuck-at fault技術來測試RAM / ROM的晶體管級結構

--memory BIST(MBIST)通常用於測試內部memory fault

2.測試ATPG中的RAM / ROM 周圍的邏輯

①應用black box模型(不推薦):

 綜合設計中的供應商RAM / ROM原語通常表現為black box,memory周邊邏輯的覆蓋率會很低

②對Basic-Scan ATPG使用bypass模式(常用):

 如果memory支持bypass模式,則可以使用bypass模式來獲取周圍邏輯的覆蓋范圍

③編寫順序ATPG的功能模型(最好):

 通過用用戶提供的功能Verilog模型替換black box RAM / ROM單元,可以最大化周圍邏輯的可測試性

   (后兩者可結合使用)

Black Box or Bypass Mode

非掃描順序單元(包括memoty)會導致DFT阻塞

 

 

解決:

① 對RAM添加bypass,以便圍繞RAM的某些邏輯可以使用Basic-Scan ATPG測試;

  手動修復RTL(如果memory沒有bypass模式);

 

 

 ② 使用TetraMAX model

     -- 啟用Fast-Sequential ATPG以允許TetraMAX通過memory進行測試

     -- 將寫入控制信號傳遞到top-level port:在順序周期內控制寫;在掃描移位期間保護memory

 

 

3.Memory應該clock穩定&load穩定

① momery is “clock stable”——如果當所有時鍾都處於“off state”時其內容穩定

  -- memory必須是時鍾穩定才能被ATPG使用

② momery is “load stable”——如果momery在掃描移位期間處於穩定狀態

 -- 通常用有ScanEnable的memory的WriteEnable或ChipSelect信號來實現

 -- 通過使用多個負載來測試memory周圍的故障,從而使ATPG更加有效

 -- 還具有降低scan shift期間功耗的好處

③ 報告memory的屬性:

  report memory  -all  -verbose

 

 4.示例

RAM model

本示例中的RAM具有level敏感的write和read端口

module MY_ATPG_RAM(read,write, data_in,data_out, read_addr , write_addr );
input read, write;
input [7:0] data_in; //8bit data width
input [3:0] read_addr; //16 words
input [3:0] write_addr; //16 words
output [7:0] data_out; //8 bit data width

reg [7:0] data_out; //output holding reg
reg [7:0] memory [0:15]; //memory storage
event WRITE_OP; //event for write-thru

    always @(write or write_addr or data_in)
        if (write)  begin
            memory[write_addr] = data_in;
            #0; ->WRITE_OP;
        end
    always (read or read_addr or WRITE_OP)
        if(read) data_out = memory[read_addr] ;
endmodule    

ROM model

module ROM_8x4 (ADDR, SINE);
    input  [2:0]  ADDR;
    output [ 3:0]  SINE;
    reg  [3:0]  SINE;
    reg  [3:0]  ROM  [0:7];

initial
    $readmcmb ("ROM_Bx4.dat” , ROM );

always @ ( ADDR )
    if  (ADDR<=7)
         SINE = ROM[ADDR]
endmodule

 


免責聲明!

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



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