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

原文地址:https://www.cnblogs.com/yilia-er/p/14237403.html