微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 主流DSP存储器测试方法学习指南:TI KeyStone

主流DSP存储器测试方法学习指南:TI KeyStone

时间:06-22 来源:TI供稿 点击:

被其它比特干扰。

  这个算法既可以用来测试数据总线连接,也可以用于测试存储器单元。当用于测试存储器单元时则每一个存储单元都需要走"1"走"0",这将是最耗时的测试;而用于测试数据总线连接时,只需要走一遍"1",再走一遍"0"就可以了(地址不限)。

  2.3.2 地址线走比特

  地址走比特用于测试地址总线的连接。地址线走比特测试的伪代码如下:

  Write 0 to first address;

  Write 0xFFFFFFFF to last address;

  bit_mask_value = 1;

  for(number of valid address bits)

  {

  write bit_mask_value to address of bit_mask_value;

  readback the data at first address and compare to 0;

  inversed_bit_mask_value = bit inverse of bit_mask_value;

  write inversed_bit_mask_value to address of inversed_bit_mask_value;

  readback the data at last address and compare to 0xFFFFFFFF;

  bit_mask_value = bit_mask_value<<1; //bit walking

  }

  和数据走比特类似,这个测试既可以检测地址比特粘连(bit-stuck)问题,还可以检测地址比特间串扰。

  例如,如果

  written value = 16 at address 16

  readback value = 16 at address 0

  written value = 0xFFFFFFEF at address 0xFFFFFFEF

  readback value = 0xFFFFFFEF at address 0xFFFFFFFF

  测试中,想要写往地址16 的数据实际被写到地址0;而想要写往地址0xFFFFFFEF 的数据实际被写到最后一个地址单元。这往往说明地址比特4 被其它比特干扰。

  2.4 浮动总线问题

  如果测试软件写入并很快从相同地址读出一个值的时候,如果数据线上存在电容特性,写操作会给数据线上的电容充电,总线会短暂的保持它的状态。当测试软件读操作时,总线会返回刚写入的值,即使实际上该数据并没有正确地被写入存储单元。这就是浮动总线(floating buses)问题。

  浮动总线可能会"欺骗"简单的测试程序,为了规避浮动总线问题,需要在紧邻的对相同地址的写和读操作之间对其它地址写入一个和原来写的数据相反的数据。例如,

  write A to address X;

  write inversion of A to address Y;

  read value from address X;

  这样,浮动总线的问题就可以规避了。

  2.5 测试结果的深入分析

  从存储器测试结果的初步分析中,如果我们发现比特粘连或干扰,还需要进一步深入分析原因。通常原因可能来自于三方面:

  1. 对于外接存储器,PCB 出问题的可能性比较大。最常见的包括焊接问题或设计问题。例如,某个比特被短接到电源或地。通常我们可以用万用表测量信号线之间或信号线和电源或地之间的阻抗来定位这种问题。串扰问题的定位则比较复杂,可能需要用示波器来测试所有相关的信号来确定串扰源。

  2. 存储单元失效。如果是外接存储器,我们可以用示波器或逻辑分析仪在总线上监测写入和读出的数据,如果总线上监测到的写数据是对的,而读出的数据是错的,则往往是存储单元失效。

  3. 存储控制器失效。如果我们排除了以上问题而怀疑存储控制器时,可以把好的板子和坏的板子上的控制器互换,如果问题跟着控制器走,则往往说明是控制器失效。
  本文选自电子发烧友网6月《智能工业特刊》Change The World栏目,转载请注明出处!

  3 存储器测试覆盖率

  完善的存储器测试应该涵盖:

  ·系统中所有的存储器

  ·所有可以访问存储器的模块,包括DSP 核和DMA 传输控制器

  ·所有不同的访问路径

  3.1 用不同的主模块测试

  如图1 所示,主要有三个主模块可以访问存储器:

  ·DSP 核可以访问所有存储器

  ·EDMA 可以访问所有存储器

  ·IDMA 只可以访问每个核本地的L1 和L2 存储器

  理论上,我们应该用所有的主模块测试所有可访问的存储器,但这样有太多组合,很多重复的测试可能浪费很多时间。所以,测试的组合需要被优化,既保证所有主模块和存储器都被覆盖,又要避免无用的重复测试。

  通常DMA 访问存储器的效率比DSP 核高很多,所以,对外部大存储器的测试优先采用EDMA。

  用DMA 测试存储器是,我们需要一个额外的缓冲区 (buffer),测试流程如下:

  DSP core wirtes test data to the DMA buffer

  DMA copy the contents of the DMA buffer to the memory under test

  DMA copy the contents of the memory under test back to the DMA buffer

  DSP core reads the contents in DMA buffer and compare to expected value.

通常,用于DMA

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top