账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
透过PCI介面验证SoC的方法
系统与晶片设计专栏(二)

【作者: 誠君】2002年09月05日 星期四

浏览人次:【3816】

过去一般晶片设计公司的开发工作可以大概区分为三大阶段:1. 需求规格确定;2. 系统分析与设计;3.验证除错。在理想的情况下,前两个阶段应该安排较长的时间,好让设计人员能充份开发出真正符合市场需求的晶片。


但是,在实务上,常因为许多特殊因素,在验证除错工作上耗费了比前两个阶段还要长的时间,例如:目前百万闸级SoC的「非再使用工程(Non-recurring Engineering ;NRE)」费用已达到100万美元。因此在SoC正式投产前,开展全面完整的测试是非常重要的。


本文将介绍典型PCI子系统设计中的验证策略及实现方法,充份应用直接和假随机测试产生方法、通讯协定检查器和功能覆盖分析(functional coverage analysis)方式,以期创造客观和可预测的测试过程。


元件与系统的相容性测试问题

随着采用随插即用矽智权(PnP IP)的单晶片系统(SoC)设计逐步进入实用阶段,元件与系统相容性测试问题变得越来越严重。问题的关键在于:IP的使用对功能性验证来说基本上没有什么帮助。另外,随着IP硬体和软体的日趋复杂,对通讯协定相容性和系统级验证的要求也越来越高。


对于SoC设计人员来说,在SoC中嵌入PCI介面来桥接晶片内汇流排和晶片外PCI本地汇流排的确是一个非常好的解决方案。 PCI具有强大的互连机能,专门用于连接各种高性能周边设备,例如:图形处理器、视讯处理器、SCSI和LAN等介面卡。目前为止全球已有70多个PCI组织,而PCI也成为全世界最受欢迎的汇流排标准之一。


事实上,全球有许多ASIC和IP供应商已开始供应包含单主(master-only)、单从(slave-only)和主从控制器(master-slave controller)在内的各种PCI和PCI-X介面控制器,而且这些控制器均支援同步和非同步PCI介面。建立PCI子系统验证环境的首要目标是要实现适用于最新PCI汇流排介面元件和周边元件的可再使用高效能随插即用型验证环境。


PCI子系统验证会遇到包括PCI本地汇流排需求和系统级需求在内的许多挑战。 PCI本地汇流排的功能十分强大,而且,这种复杂的数据处理没有固定的持续时间。另外,每个设计都会采纳一系列供应商提出的实现方案,因此每个IP内核或周边元件都有其特有的性能。此外,PCI子系统是一种多层次的硬体/软体系统,系统内的整体汇流排性能、频宽和反应时间取决于系统负载特性、汇流排速度和频宽(如图1所示)。


《图一 PCI子系统》
《图一 PCI子系统》

PCI测试环境

下面所要讨论的PCI子系统验证策略实现了模组化可再使用的测试开发和覆盖分析环境,该环境适用于PCI介面和子系统级的功能验证。利用简单的网表实例和元件功能与位址架构可以简化元件和元件之间的整合。此外,所有的测试产生器、处理器、监视器和通讯协定检查器都是在PCI级开发完成的。


PCI测试环境是遵守「PCI信号和系统测试综合论坛(PCI Signal and System Test Integrators Forum)」制定的PCI元件相容性测试规范。每项测试都需要进行严格的PCI通讯协定检查、功能覆盖测试以及PCI元件与系统级功能的分析。功能覆盖测试尤其重要,其结果可以用来客观地评估元件和系统功能,而且还能用来控制闭环(closed-loop)测试。


除了基本的相容性测试外,PCI测试环境还支援测试开发,利用假随机处理产生器还可以验证周边设备的核心功能和性能。这些假随机处理产生器可以改变多种处理参数,如命令类型、脉冲长度、目标地址、元件请求速率以及重试率。最后,由于PCI子系统本质上是一个多层次的硬体/软体系统,因此需要先将诊断和元件驱动程式与硬体模拟模型整合起来,这样可以简化软体的开发和除错。


由于主机运行的是本地作业系统和驱动程式,因此需要藉由中间处理器(transactor)才能与PCI设备的硬体模型协同工作。 PCI汇流排通讯协定必须检查从PCI 2.2到PCI-X的全部汇流排处理规范。本文讨论的验证策略采用了严格和客观的验证方法,要求为每项测试指标定义一组客观的通过/失败(pass/fail)标准。由于所定义的测试标准能满足被测元件的性能要求,同时也满足业界标准和规范,因此测试标准中的数据能与业界实际应用保持一致。


相容性测试的三个等级

测试文件是在一系列相容性测试的基础上产生的,而这些符合PCI组织及系统测试综合论坛规定的相容性测试又分为三个等级,它们是:PCI元件介面级;PCI系统介面级;独立于元件的核心功能级。


元件介面相容性基础测试是PCI国际组织定义的,其根据就是专用于元件的主从通讯协定测试方案​​下的PCI 2.2相容性检查表及该表的PCI-X附录。它是迷你型的通讯协定测试方案​​,是与主从元件所用的元件通讯协定检查表一起使用的,可作为PCI本地汇流排规范2.2版的通讯协定相容性测试的简化规范,并且有助于设计审查(design review)。当然,前提条件是配置暂存器必须设置为适当的状态,并由通讯协定检查器监视PCI汇流排。上述通讯协定测试方案​​主要用于模拟环境,但也可用于硬体测试环境。


系统测试开发论坛(System Test-IF )的PC99测试技术规范第4章 - PCI测试规范提供了有关系统介面相容性测试的内容。另外,在论坛所提供的测试规范中,还有许多针对不同设备类型,例如:网路卡、数据机等的专门测试技术规范。


独立于设备的系统相容性测试需要考虑包括应用软体、专用驱动程式和设备特殊机能在内的多种硬体和软体通讯协定间的相互关系和影响,而且必须在功能和性能测试的基础上做系统级架构相容性测试。另外,相容性测试必须涵盖到相容性测试覆盖矩阵中的每个PCI元件和系统级性能。矩阵对照测试的依据是:


  • 1. 硬体和系统功能;各种晶片、电路板以及当前使用的系统级模拟模型配置;


  • 2. 相容性测试覆盖范围;


  • 3. 根据通讯协定检查器和功能覆盖模型的通过/失败标准所制定的测试实现方法和测试结果,就很容易跟踪PCI架构性特点以及晶片、电路板的测试范围(大量随机案例),并有利于开展系统级验证测试。



验证环境的具体实现过程还确定了另外的目标,包括:利用以数据处理为主,且适用于功能测试产生器、结果检查器和架构性参考模型,可以提高编写和再使用测试的效率;利用整合的模拟及功能覆盖分析来开展闭环随机测试,并向验证小组不断提供有益的帮助。


覆盖分析和通讯协定检查器

在大规模特别是包含有假随机验证环境的验证测试中,覆盖测试的自动化是非常重要的,它能让人很容易地理解大量测试案例的复杂测试过程。具体来说,覆盖测试可用来正确评估测试的整体进程,去除那些重复和低效的测试案例,确定尚没有被测试过的区域,并能识别出回归测试组(Regression Suites)。另外,覆盖测试可以划分为两大类,即代码覆盖(基于程式)测试和功能覆盖(与特殊处理有关)测试。


代码覆盖测试会在模拟过程中,检查设计中哪些部份已经完成了测试。某个高阶模组会指示所有的状态机控制器、数据通道和控制机制,至少以一个工作模式来运作。代码覆盖工具还会测试累积性模拟,并对状态值和状态变换、数据和控制值以及线覆盖实施追踪。


功能覆盖测试方法需要用到监视器(monitor)和检查器(checker)。藉由收集模拟过程中,有关临时相关性组合所产生的资讯以及状态条件和次序资讯,监视器可以管理整个验证过程。因此可以用这种方式在架构性能的测试作业范围内对一项测试或一组测试作出评估。根据模拟过程中测得的覆盖水平,可以动态增加更多的假随机测试案例,或者增加全新的测试。覆盖分析数据可以保存在数据库中以备未来做更好地集中、分类和分析。监视器可以提供不止一种的特殊功能覆盖分析方法。


然而,现在仍不能保证这些固定的、假随机性的功能测试能用在所有系统的作业模式中。此外,用于PCI的小型覆盖监视器子系统包含有汇流排命令类型、目标位址、数据处理类型(消息、延迟、分支与合并)和长度、终止和错误条件。


在模拟期间,通讯协定检查器会在通讯协定、架构和演算法没有遭到破坏的前提下对系统性能和假设条件进行验证。而在复杂的平行系统中,通讯协定规则的相互影响是非常微妙的,很容易遗漏一些问题,因此需要为每个通讯协定规则制作通过/失败声明(assertion)。一份通讯协定规则必须支援信号与事件之间复杂的临时性关系,而PCI通讯协定规则的一个小型化子集需要包含元件选择时序、最大处理长度、数据相位时序和终止及重试资讯。


假随机测试的三步骤

开展系统级相容性验证最重要的是要利用随机测试产生偏僻案例(corner cases)和耐用测试(stress tests)。一般可以藉由产生大量系统性地高度相关的处理特性来完成。在尝试了所有的人工测试后会发现,假随机测试方法能提供更有效的途径来提高功能覆盖水平。假随机测试是一种高效率的智慧化测试方法,它不像穷举测试需要长时间的模拟。从这些非常有用的随机方法中可以发现限制性随机案例、循环案例、边界案例和一些加权案例演算法。另外,对多个结构化参数之间固有关系的充分理解能改进随机案例的品质,并提高设计人员的设计效率。


假随机测试过程有三个步骤。首先,需要根据特定的测试规范选择架构化性能特点;其次,要获得可支援测试内容(包括随机参数)的测试样板;第三,需要开发一个处理器(transactor)能作为测试样板与硬体模型之间的实体介面。当模拟过程同时用到多个随机测试产生器时,由于子系统中相互独立的功能间会出现较为复杂的关系,因此常常会产生很多问题,这也是PCI子系统所用的随机测试中的设计关键。


VLE是Verilog HDL验证语言的延伸

在Verilog硬体描述语言(HDL)中通常都有测试产生器、通讯协定检查器和监视器的代码。 Verilog支援平行处理,其数据类型可支援硬体实现、通用数据类型,其任务与函式可改进模组性能。然而,与一般的编程语言相比,Verilog语言缺乏用户可定义的数据架构、巨集、强大的随机函式以及程式间可相互沟通的同步原始函式(interprocess synchronization primitives),例如:锁定(locks )、互斥体(mutexes)和旗语(semaphores)。在测试平台的开发中,无论是Verilog还是与它同类的一般性编程语言都无法提供有效的表达方法来开发高效的假随机测试、临时通讯协定检查器和功能覆盖监视器。


Verilog HDL验证语言延伸(VLE)是VCK的一个子集,它能提供一些必需的函式与数据类型,可用于开发人工指导测试和自动假随机指导测试以及结果检查器、功能覆盖图和通讯协定检查器。幸运的是,由于VLE是Verilog语言的扩展,设计人员能很容易地学会VLE新功能的用法。 VLE的基础是IEEE 1364-1995 Verilog HDL标准中提到的Verilog用户自定义任务(user-defined task)和函式语法。 VLE具有以下一些性能特点:


  • 1. 列表功能(list functions)支援新数据类型。所提供的列表是可变的、未排序的,包含所有Verilog和VLE能支援的数据类型,甚至也包括列表(lists)类型。同时列表也支援范围符号(Range Notation),因此可提供数值(value)范围的定义。


  • 2. 随机变量函式能将一个或多个随机值产生器声明为标准的包括VLE记录类型在内的Verilog数据类型。同时它还支援不少随机数位产生器演算法,包括简单随机、加权分布、边界案例以及在不重复的情况下能一次穷举所有值的循环再生演算法。合法的随机值子集合可被定义为列表函式。此外,利用随机变量组和其它特殊的随机变量相关函式可建立复杂的相关性,并且藉由呼叫更新函式(Update Function)可赋予随机变量一个新数值。


  • 3. 信号历史函式可提供对信号历史的存取,包括变量值和修改次数。查询函式能在指定的模拟时间存取变量历史,或者存取可查寻到前面N个数值的数值修改历史索引。


  • 4g. 通讯协定和临时检查任务(check tasks)所提供的函式可用于检查变量与表达式之间的临时关系。


  • 5. 旗语任务所提供的同步函式可用于对共享资源的存取控制,并具有延缓和即时两种选项。另外,这是一种计数式(counting)旗语,对资源的存取不具备排他性。


  • 6. 任务增强功能支援参考性呼叫(call by reference),并能藉由建立任务变量的保护性拷贝支援同时呼叫。任务变量现在已包含了记忆体和记录类型(record types)。


  • 7. 记录函式(record functions)具有声明和存取记录的功能。这里的记录非常类似于C语言中的结构(struct)或者C++中的容器物件(Container Object),记录的每个域可以是任何Verilog或VLE数据类型,甚至可以是记录类型。记录数据类型提供了功能强大的用户自定义Verilog架构。另外,可直接映射为C结构的「$c_record」能被直接建立。


  • 8. 功能覆盖函式(Profile Function)用于分析模拟的功能覆盖,而功能覆盖监视器可以跟踪变量中数值的变化,包括状态机的变化。功能覆盖函式可以声明功能覆盖监视器、设置变量的合法值、控制和更新人工或自动的功能覆盖测试数值,还能声明功能覆盖方程式并报告功能覆盖结果。功能覆盖测试可以在模拟期间动态地进行,并支援覆盖面的增大。



结语

虽然利用基于VLE的自动化测试平台(testbench)可以改善硬体测试性能,但系统相容性方面仍需慎重考虑软硬体之间的相互作用。 ASIC和SoC的复杂架构为晶片处理器、韧体和即时作业系统(RTOS)的设计带来了严苛的挑战。系统综合测试的重点在于韧体和设备驱动程式的除错,因此,韧体与驱动程式两者就形成了软体应用程式、高层通讯协定堆叠、RTOS和独立嵌入式系统硬体平台架构之间重要的介面。


系统相容性验证需要开发工作于软体抽象层级(abstraction level)的测试,并提供能表示模型和演算法的软体数据,且与系统保持更好的一致性。诊断测试程式是在软硬体协同模拟环境下运行的,该模拟环境采用了基于VCI API的硬体软体处理器(transactor)。


如今,SoC设计的成败是由验证环境决定的,SoC中的随插即用IP元件的生命力是取决于验证环境的品质和严谨性,PCI本地汇流排标准中提供了一个理想的案例可供参考。 「PCI信号和系统测试综合论坛」已明确客观地定义了PCI元件与系统级相容性验证的具体要求,这将加快SoC的设计步伐。


相关文章
轻松有趣地提高安全性:SoC元件协助人们保持健康
从设计到制造 模组化仪器高弹性优势完全发挥
仿真和原型难度遽增 Xilinx催生世界最大FPGA
SmartBond元件增加蓝牙网状网路支援能力
我们能否为异质整合而感谢亚里士多德?
comments powered by Disqus
相关讨论
  相关新闻
» 美光针对用户端和资料中心等市场 推出232层QLC NAND
» 摩尔斯微电子在台湾设立新办公室 为进军亚太写下新里程碑
» 爱德万测试与东丽签订Micro LED显示屏制造战略夥伴关系
» 格斯科技携手生态系夥伴产学合作 推出油电转纯电示范车
» Arm:因应AI永无止尽的能源需求 推动AI资料中心工作负载


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK84T3T9A5ESTACUKA
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw