欢迎光临
我们一直在努力

基于DFT的loopback测试(DFT)

1、背景

        在大型的SOC芯片中,往往集成了各大供应商的IP模块,这些IP包含pcie phy、usb phy和emmc phy等。而对于phy中的analog部分,通常也需要对应的ATE pattern去cover测试项。

        通常,IP厂商针对这个IP,会直接release出一套经过验证后的ATE测试方案,这套测试方案兼顾了function和dft的loopback测试。function的loopback测试是必须要做的,而dft的loopback测试方案可做可不做,取决于项目是否需要dft在loopback测试上做一个备份方案或者调试方案。

        所以,DFT owner还是需要搞清楚loopback的ATE pattern该怎么产生,接下来将以pcie IP来展开描述loopback测试。

2、厂商提供的测试架构

2.1 两种访问接口的描述

        根据手册,PHY中的控制寄存器可通过两种接口访问:

        (1)控制寄存器并行接口(CR):CR并行接口是一个同步的16位数据或地址的并行接口,用于实现对PHY内部寄存器的访问,当输入信号cr_para_sel设置为“1”时,CR并行接口会被激活;

        CR并行接口包含如下的信号:cr_para_addr、cr_para_clk、cr_para_rd_data、cr_para_rd_en、cr_para_wr_data、cr_para_wr_en、cr_para_ack。

        (2)串行测试接口(JTAG):该JTAG接口可以访问内部的TAP控制器,TAP控制器中支持多种指令,当配置指令为CRSEL字段时,就可以实现对PHY内部寄存器的读写访问。

        一个PHY就对应一个JTAG接口,当实际design中采用多个PHY的集成方式时,就会存在多套JTAG接口。为了用一个TAP控制器实现全局控制,可以采用菊花链的方式进行设计。

2.2 IR codes

        下表描述了支持的JTAG instruction,IR寄存器和DR寄存器的最低位数据是从jtag_tdi移位的第一个bit数据。

instruction IR DR operation
IDCODE 8\’h01 32bits shift out ID code
CRSEL 8\’h31 18bits control register access
BYPASS all others 1bits jtag_tdi to jtag_tdo bypass

2.3 CRSEL instruction

        当选用CRSEL instruction运行时,可以通过JTAG接口访问内部的寄存器;当JTAG状态机处于update-dr的阶段时,DR寄存器的移位数据可以被load到CRSEL寄存器中。CRSEL寄存器的每个bit数据的对应关系如下:

16 to 17 bits 0 to 15 bits
cmd address
cmd write data
cmd read data

        可以看到,CMD字段用于决定执行哪一种数据类型的访问,数据类型包括地址、数据、写和读四种。下表记录了CRSSEL寄存器中CMD字段所对应的编码方式:

CMD ENCODE description
ADDR 2\’b00

DR寄存器的update-dr数据对应即将写入数据的地址

WRITE 2\’b01 DR寄存器的update-dr数据对应即将写入的数据
DATA 2\’b10 DR寄存器的update-dr数据对应即将读出的数据,数据需要被compare
READ 2\’b11 DR寄存器的update-dr数据对应即将读出数据的地址

        所以,为了执行一个写操作,首先通过执行ADDR命令,并在地址字段中指定寄存器地址;随后使用WRITE命令,在写入数据字段中指定待写入数据,即完成了数据写入目标寄存器的操作。

        为了执行一个读操作,首先通过执行READ命令,并在地址字段中指定寄存器地址;随后使用DATA命令,此时写入的数据是不可用的,需要读取的目标寄存器状态会在shift-dr阶段从jtag_tdo流出。

3、厂商提供的测试向量

        在第二章中,描述了访问接口、支持的IR以及CRSEL寄存器等内容,同时也了解了整个测试的流程大体为:配置写地址、配置写数据、配置读地址以及比较读数据。

        紧接着需要弄清楚的问题是:在什么地址写入或读出并比较何种数据,这些地址信息、数据信息和读写操作的顺序必须非常精准的获取,于是我们应该先去复现厂商提供的测试向量并仿真pass。

3.1 数据包路径描述

        所有的design数据和仿真数据均在下面的路径中:

macro:
interface rtl

phy:
include interface ipxact rtl sim spyglass synth testbench upf

pma:
atpg behavior bscan gds ibis_ami icv interface lef netlist pi timing

upcs:
include interface rtl sim spyglass synth testbench upf

3.2 loopback测试脚本

        在phy/testbench的路径下可以找到针对loopback测试的ATE testbench脚本:

        phy/testbench/ATE_TESTBENCH.README

3.3 loopback测试仿真

        按照脚本中描述的仿真命令运行仿真,会得到一个仿真的log文件:vrun.log

        该log中的打印信息如下:

161.5ns – Info – SUP REF Prescaler : Differential REFCLK detected
161.5ns – Info – SUP REF Prescaler : Differential REFCLK detected
162.5ns – Info – SUP REF Prescaler : Differential REFCLK detected
700 <test.tb.jtag.reset> JTAG Driver has reset the JTAG Port
700 <test.tb.jtag.install> JTAG Driver Installed
10700 <test.tb> Testbench Init Complete
10702 TEST: Start of test…
10702 PHY Reset de-asserted
Enter CR ACCESS
Waiting for 2 microseconds for expected events to take place
17900 Waiting for sram_init_done to get asserted
100000 INFO: <test.tb> Heartbeat
200000 INFO: <test.tb> Heartbeat
Waiting for 1 microseconds for expected events to take place
Reading SRAM_INIT_DONE
279650 <test.tb.jtag.read_cr_wo_set_ir> JTAG reading control register address: 0

赞(0)
未经允许不得转载:171主机测评 » 基于DFT的loopback测试(DFT)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址