摘 要:随着超大规模集成电路技术的不断发展,集成电路的集成度不断增加,片上系统(SOC)的规模越来越大,片上系统的设计就变得越来越复杂。开发IP核成为soc的重要设计手段。同时,IP核的测试也对科研人员提出了新的挑战。本文重点描述了IP的测试技术,证明了文献[1]中给出的伪穷举法。并以可编程8255并行I/O接口芯片为例说明了使用伪穷举法进行了IP核校验的方法。
关键词:IP软核;VHDL;IP核测试;8255;伪穷举法
一、引言
随着超大规模集成电路(VLSI)工艺的进展,集成电路的集成度不断增加,片上系统(SOC)的规模也越来越大,为了加快产品的研发进度,基于芯核的设计已成为EDA发展的必然趋势。然而,随着系统复杂度的提高,如何提高IP的可复用性,并且进行有效的测试成为设计人员必须面对的问题。
IP是知识产权模块的简称,通常分为三类:即硬核、软核和固核。硬核已经完成了全部的前端和后端设计,制造工艺也已经确定,逻辑电路、布局和工艺不能更改。软核是指包括逻辑描述(RTL和门级硬件描述语言代码)、网表和不能物理实现的用于测试的文档。固核是一种介于软核和硬核之间的IP。固核既不是独立的,也不是固定的,它可以根据用户的要求进行修改。
随着EDA技术的发展,设计人员已经能写出越来越复杂的IP核,但是目前对IP核的验证往往停留在简单的波形防真上,缺乏一个完善的测试方法体系。在对IP核进行测试的过程中, 最为重要的步骤是写出一个有效的测试集。 检测硬核或者固核的时候,因为核的电路逻辑结构和版图都是知道的,所以可以使用EDA工具产生逻辑层面上的测试集,但是软核一般是使用硬件描述语言描述的,目前EDA工具还不能自动生成功能层面上的测试集。穷举法能有效的发现功能上面的设计缺陷,但是穷举法的计算量太大,很难应用到复杂IP核的测试中。“伪穷举法”最早是用在逻辑层面上的有效测试方法,下文中介绍伪穷举法在功能层面上的应用。
1、IP软核的伪穷举测试法
作为一个商用IP核,必须对其进行系统的测试。穷举法有简单且功能强大的特点,但是对于有n个输入的电路系统可能有2n种可能的输入组合,如果要使用穷举法对复杂IP核进行测试是不可能的。伪穷举法的思路是将输入分成功能子块,对每个功能子块的输入包括两部分:外界的输入和其他子块的输入。将这两种输入看作功能子块的输入,使用穷举法进行测试,对其他的子块的输入取常数(一般是取0)。下面给出伪穷举法的证明,作为对文献[1]的补充。
定理: 当一个电路被切分成若干功能子块, 并且子块间在一种输入方式下,只存在单向的连接,那么用伪穷举法可以测试出所有的错误.
证明:使用归纳法证明:
当电路被分成一块,那么块与块间的连接是0,这个时候伪穷举法就是穷举法,可以测试出所有的错误。
a 当电路被分成两块,并且块与块间的连接为0的时候,这个时候对两个子块分别进行穷举法测试,可以发现子块所有的错误。并且因为子块之间没有联系,所以不存在连接错误,这样伪穷举法能够发现整个电路所有的错误。
b 当块与块间的连接为c的时候,不妨假设分成的两块是A和B,并且连接c是从A输出到B。那么对A使用穷举法可以测试出A所有的错误。对于B,他的测试输入是B的外围输入Bi和c。测试向量记为B(c, Bi)。对B使用穷举法也能检测出B所有的错误。
下面证明能够测试出所有的连接错误。我们使用反证法,假设有且仅有连接错误α不能被发现, 也就是说对于A和B都分别进行了穷举测试,并且没有错误。但是对于整个电路,存在输入(Ai, Bi)会产生错误。那么,根据伪穷举法的定义,对于功能子块A,输入Ai产生的输出(Aoi, c)是正确的。对与B,输入(c, Bi)输出也是正确的,那么输入(Ai, Bi)也同样是正确的,这样也就是说α不存在,同假设矛盾。
所以分成两块可以检测出所有的错误。
由归纳法,分成任意块都能检测出系统的错误。
证毕。
为了降低测试的数目,测试子块的划分应该遵循如下准则:
1、对于子块i,测试的输入为np + nc其中np是子块i原来就有的输入,nc是其他与i相关的模块产生的测试输入。因为nc要作耦合部分会被反覆测试。所以必须减少nc从而减少测试总的测试数目。同时减少nc也能减少系统的复杂程度,在手工测试中减少问题的发生。
2、不能将子块分得太细。因为分得细虽然可以减少np,但是有可能增加nc。
实际上,对IP软核进行测试,子块必须根据硬件描述语言(HDL),所以在使用HDL进行描述的时候,必须减少模块之间的耦合,从而方便使用伪穷举法进行测试。
如果块与块之间没有联系的话,还可以进行并行测试,减少测试的总次数。比如8位串行加法器,可以把每个一位加法器Fi作为一个功能子块。当奇数位的输入全部是0,那么偶数位的进位就被奇数位屏蔽掉,这样偶数位之间就没有联系。所以可以分别对奇数位和偶数位进行并行测试。
下面结合笔者设计的8255的IP核介绍一下伪穷举测试集方法的应用。
2、8255并行通信芯片
8255并行通信芯片IP软核是配合Intel位处理器而设计的通用可编程I/O接口器件,它能把外围设备连到微型计算机总线上。它由由数据总线缓冲器、读写控制逻辑、A组和B组两组控制电路、数据端口等组成。图1为8255的内部结构框图和引脚图
图1 8255的内部结构及引脚
8255共有三种操作模式:基本的输入/输出(方式0)、应答式输入/输出(方式1)和应答式双向输入/输出(方式2)。不同的工作方式有不同的功能及特点,如表1所示。
表1 8255三个数据口
工作方式 |
A口 |
B口 |
C口 |
0 |
基本输入输出
输出锁存
输入三态 |
基本输入输出
输出锁存
输入三态 |
基本输入输出
输出锁存
输入三态 |
1 |
应答式输入输出
输入输出均锁存 |
应答式输入输出
输入输出均锁存 |
作为A口和B口的控制位及状态位 |
2 |
应答式双向输入输出
输入输出均锁存 |
方式0或方式1 |
作为A口的控制或基本输入/输出 |
表2 8255端口及选择寄存器的控制信号
A1 |
A2 |
|
|
|
操作 |
0 |
0 |
0 |
1 |
0 |
A口→数据总线 |
0 |
1 |
0 |
1 |
0 |
B口→数据总线 |
1 |
0 |
0 |
1 |
0 |
C口→数据总线 |
0 |
0 |
1 |
0 |
0 |
数据总线→A口 |
0 |
1 |
1 |
0 |
0 |
数据总线→B口 |
1 |
0 |
1 |
0 |
0 |
数据总线→C口 |
1 |
1 |
1 |
0 |
0 |
数据总线→控制寄存器 |
× |
× |
× |
× |
1 |
数据总线为三态 |
1 |
1 |
0 |
1 |
0 |
非法条件 |
× |
× |
1 |
1 |
0 |
数据总线为三态 |
8255的控制信号有:
(片选信号):芯片选中信号,低电平有效,允许8255与CPU交换信息。
(读信号):低电平有效。此时允许CPU从8255端口中读取据或外设状态信息。
(写信号):低电平有效。此时允许CPU将数据、控制字写入8255中。
A0和A1(端口选择信号):一般与地址线A0、A1相连。他们与 、 信号相配合用来选择端口及内部控制寄存器,并控制信号传送的方向。
3、伪穷举法测试举例
在这个系统中,根据VHDL描述,输入被分成5个子块,分别是:控制信号模块、A口模块、B口模块、C口模块和数据口子块,对于每个子块nc=0。他们的测试向量记为为 Fi, Ai, Bi, Ci , Di。向量中每个元素∈{0,1}。
对于Fi来说,它包含A1、 A2、 、 和 5个输入,记为Fi(A1,A2, , , ),输出为控制信号输出,测试的目标方程的映射关系ζ(Fi, Ai, Bi, Ci , Di)参见表2。在测试时,穷举出Fi向量空间所有的值,做为输入。对于每个输入Fi,检查是否满足ζ(Fi, Ai, Bi, Ci , Di)。
同理对于Ai的测试,他的输入包括控制输入和数据输入, 然后所有输入进行穷举,检查Di的数据输出。Bi, Ci , Di依次类推进行测试。
这样,在保证测试集的完备的情况下,测试的复杂度由Ω(240)下降到Ω(28),大幅度的减少测试数目,也避免了由于测试数目过大而导致的重复测试和测试遗漏的问题。
二、结束语
IP软核由VHDL硬件描述语言写成,可读性好,容易按用户条件修改,但是EDA软件无法提供系统的测试方法。文中证明了伪穷举法的正确性。并且根据伪穷举法测试分块的原则,强调了在IP软核设计的过程中就应该减少模块间的耦合,增强可测试性。使用伪穷举法可以有效地进行IP软核的测试。尤其是使用了并行测试后,可以大大提高测试的效率。伪穷举法可以应用于测试IP核,尤其是HDL描述的软核。
参考文献
[1] R.Tang, P. E. Si, W. k. Huang and F. Lombardi. “Testing IP Core with Pseudo Exhaustive Test Sets”. ASIC, 2001. Proceedings. 4th International Conference on , 2001 Page(s): 740 -743
[2] I.Ghosh and S.Dey , “ A Fast and Low Cost Testing Technique for Core-Based Sytem-on-Chip,” IEEE Trans. On CAD of ICAS, Vol.19,2000,pp.863-877
[3] 曾繁泰.VHDL程序设计.北京:清华大学出版社,2001,278~284
[4] 徐惠民.数字逻辑设计与VHDL描述.北京:机械工业出版社,2002,1~10
|