zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    linux系统安装mysql数据库
    pyinstaller打包问题
    jmeter-Parameters和Body Data两种方式传参的区别
    jmeter-保存响应到文件
    Jenkins获取运行job的用户信息
    pytest插件(多重校验、用例依赖、执行顺序、失败重跑、重复执行、标记)
    谷歌开发者工具(F12)
    Linux常用命令
    一般什么原因会导致偶现问题?
    Fiddler模拟接口返回进行测试(二)
  • 原文地址:https://www.cnblogs.com/yilia-er/p/14237403.html
Copyright © 2011-2022 走看看