在开发第一块基于PCI Express的SoC过程中,ClearSpeed公司为了在有限的时间和预算条件下确保PCI Express协议一致性而面临重重困难。PCI Express是一种复杂的协议,具有特别大的覆盖范围。从管理的角度看,保证协议一致性没有其它更好的方法,只有采用标准驱动的验证过程。遗憾的是,即使做了上千次覆盖相关场景的测试,仍留有相当大的覆盖漏洞,从而使得这个方法没有可预测性,成本也很高。而另外一种普通的随机测试方法也没有足够的可预测性。
ClearSpeed公司开始意识到,理想的方法可以产生显著的好处:它能最小化技术开发工作量,同时最大化测试应用控制。ClearSpeed公司率先采用Cadence公司提供的商用化PCIe验证IP。这种验证IP被称为UVC,包含了一致性管理系统(CMS),该系统将覆盖空间划分和映射到了PCIe规范。CMS还提供受限随机测试(称为测试序列)形式的一致性测试套件,用于自动取得针对每个PCIe规范部分的高功能性覆盖。
ClearSpeed公司还在UVC基础上创建了自己的受限随机测试套件。相关覆盖在每次测试组运行之后都会进行分析,从而能清楚地理解覆盖漏洞出现在什么地方,并指导新的测试应在什么地方进行以到达未被覆盖的场景。这种方法还向ClearSpeed提供了无价的项目管理工具,因为它能帮助理解和报告验证状态。ClearSpeed公司目前能够在每个主要的规范领域正常地跟踪覆盖、缺陷统计和测试故障。
工程背景
ClearSpeed公司的产品范围包括芯片、加速器卡、机架模块、软件和支持。ClearSpeed公司的芯片、加速器卡和机架模块都可以与工业标准的x86系统一起使用。ClearSpeed公司的芯片采用C语言进行编程,并且公司向用户提供可与所有标准软件开发工具协同工作的完整IDE,如图1所示。

图1:ClearSpeed产品概要。
与以前的CXS600芯片相比,主要变化如下:
1. 一个芯片上有两个处理器内核(“MTAP”)
2. 芯片上有一个标准的PCIe接口(相对私有PCIx接口而言)
3. MTAP有多项的改进
总体验证需求和策略
图1给出了ClearSpeed产品的架构。为了确保这个复杂产品的质量,需要对以下性能进行验证:
1. 驱动程序代码与芯片的紧密集成
2. 众多软件库和应用程序的集成
3. 与各种主机(操作系统和芯片组)环境的兼容性
4. 高性能和低功率
从芯片本身看,主要验证挑战是最新引入的PCIe接口。为了应对这些验证挑战,ClearSpeed公司采用了一种适合待测复杂设计的先进验证策略。整个验证策略中有一些要点是可以明确的:
-
这种验证策略是以仿真为基础,并采用了覆盖驱动的伪随机方法。
-
使用了分层仿真策略,从模块级开始,并逐渐向外扩展。
-
与软件的协同仿真非常重要,它有助于展示产品的正确性,并在芯片回厂时为硅片取得成功取得了良好开端。
-
软件协同仿真也是分层执行的,从驱动程序开始,一直扩展到应用程序。
-
模块和层次体系之间的验证再利用。
- 使用验证IP。这样做有利于充分利用该领域专家的现有知识,并有利于加快测试平台的开发速度。
总的验证指导原则是在芯片开发初期从商业和技术角度获得签字确认标准。这些确认标准是客观性的,可以使用合适的准则进行测量。这样做具有很多优点,包括:
1. 能够使所有感兴趣方预先同意用于验证的对象。
2. 能够在项目执行中跟踪向验证签字确认方向发展的进程。
3. 能够建立流片时的信心。

图2:ClearSpeed公司当前的CXS700架构。
为了与上述原则保持一致,预先对CSX700验证确认标准进行了定义。所选的关键指标有:
1. 功能覆盖目标:
(1) 优先级1覆盖目标达到100%
(2) 所有其它覆盖目标至少达到95%,并检查所有未实现的覆盖目标。
2. 编写和支持的所有系统级测试。
3. 在所有可用PCIe服务器中工作的原型PCIe。
4. 检查缺陷发现率以确保(与功能覆盖一起)我们正在接近所有最重要缺陷已经被发现的点。
5. 检查任何突出并已知未修复的问题,并评估它们的影响。
下面将在上文描述的总体验证策略框架下讨论PCIe验证策略。
模块级验证
图3所示是PCIe模块级测试平台。ClearSpeed公司已经开发过图中所示的AVCI、PVCI和私有协议,因此PCIe接口提出了主要的验证挑战。由于我们使用的IP来自不同的管线PHY和端点内核供应商,因此这种挑战越发艰巨。

图3:PCIe模块级测试平台。
从图3可以看出,测试平台采用了许多UVC。除了PCIe UVC外,其它UVC都是ClearSpeed公司自己开发的。测试平台的其它部分使用公司自己的UVC有利于建立同质的eRM一致性系统(随后的uRM和现在的OVM)。
选用第三方VIP的原因是因为:PCIe协议的复杂性;验证任务的工作量以及缺少内部资源;VIP的成熟度;独立的VIP可以由与内部开发小组不相干的外部PCIe专家组开发。
系统级测试
系统级测试平台包括了芯片和软件驱动堆栈。实际的软件驱动程序基本原样投入使用,除了在堆栈底部做了一些修改,即将调用做进了仿真环境中,并由软件驱动PCIe UVC。更多细节请参考图4。在本例中,驱动程序完成与硬件对话要做的所有事情,并且每个事务都要传送给仿真器。这样运行起来虽然比较慢,但确实能让我们测试DMA引擎等。

图4:通过设备驱动程序连接到RTL仿真的软件接口。
驱动程序可以连接到PCIe层上面的仿真器。这样无需花费时间在完整仿真每个PCI事务上面就可以实现对更高层单元的仿真。这对仿真在处理器上运行的程序来说是非常有用的。
虽然通过使用UVC可以在测试规范允许的地方(例如在一些要写入的数据中,在定义范围内的地址中)使用受限随机激励,但在系统级主要应用定向测试方法。在系统级存在许多现成的定向测试,主要目标是用它们扩展测试这个芯片的变化(如前所列出的)。许多vPlanning会话被保持以获得测试规范,然后我们就能跟踪这些测试的实现。一旦驱动程序堆栈经验证能与RTL一起工作,就可以运行较高层的软件。
运行这些应用程序能给功能验证和性能验证带来高度的信心。
在FPGA中建立PCIe原型
在CSX700的开发过程中,ClearSpeed公司生产了一种基于现有硅片(CSX600)但用FPGA提供PCIe接口的产品,这样允许我们模拟PCIe接口并执行兼容性测试。也就是说,我们能将被模拟的PCIe接口连接到运行各种OS的众多服务器上,从而在流片前确定兼容性问题。它还能让我们更彻底地测试带PCIe的软件驱动程序堆栈接口。
该方法可以识别主要位于PCIe堆栈物理层中的缺陷(FPGA中的PHY不同于我们芯片中的PHY),也让我们注意到我们连接的服务器中PCIe实现的变化数量,并促使我们提升取得很高覆盖的重要性:我们对覆盖划分优先等级,并为最高优先级对象设定100%的目标。然而,该方法不能识别通过仿真&覆盖也不能发现的PHY外的任何缺陷。这使我们相信,PCIe仿真中的高覆盖将有助于取得很高的首次流片成功率。
原型的其它优势还表现在软件开发方面。它能帮助PCIe软件驱动程序远早于CSX700硅片开发出来,加快基于CSX700的产品的上市时间。
可配置的验证环境
用于PCI Express的Incisive UVC能让用户专注于设计的任何部分或整个设计,并针对验证过程中每一阶段的特殊需要优化验证环境。Incisive UVC一般用于在模块、芯片和系统级对PCI Express器件进行功能验证。它也可以通过配置有选择地激活或关闭各个功能模块以及功能覆盖和检测机制来优化特殊任务的验证。这样可以提供到验证收敛的最可预测路径,并最大化在仿真器和工作站方面做出的投资回报。
自动激励产生
与使用上千次定向测试的其它解决方案不同,用于PCI Express的UVC采用自动激励发生器来减少用户需要做的工作量。利用包含所供序列库在内的自动化情景产生功能,用户可以覆盖主要协议功能以及难以到达的情景和边界案例。通过增加少量测试,剩余的边界案例就能被一一验证。这种方法有助于用户更快地发现更多缺陷,并让设计师有更多的时间进行DUT的私有功能测试。CMS可以实现整个过程的自动化。
使用CMS实现覆盖驱动的验证
CMS向用户提供了可执行的验证计划(vPlan)。vPlan与Enterprise Manager以及内置功能覆盖模型一起可以提供清晰地报告哪些被覆盖、还有哪些没被覆盖所需的标准。这给用户提供了验证过程的路线图、收敛标准以及可预测的验证过程,并向项目或管理方提供明晰的状态报告。这种方法被称为覆盖驱动的验证,可以帮助验证人员方便地识别覆盖漏洞,并将资源集中用于DUT的有问题部分。
Cadence的再利用方法可以快速建立功能验证环境,确保在从模块级验证向芯片级、系统级验证转移以及派生设计时能立即再利用基于UVC的环境。这种方法通过消除重复工作而节省了时间与资源。
覆盖点的优先级划分
通过使用能用来屏蔽掉与DUT无关的覆盖区/条目的“透视图(perspective)”,ClearSpeed公司能够只考虑与实现有关的覆盖点。ClearSpeed使用以下这个透视图:
“端点, AER = On, VC 1-7 = Off, 完成器退出 = Off, 配置请求重试状态 = Off, 抑制 = Off"
CMS允许由主要的PCIe模块TPL、TXN、DLL、PHY、PMG、SYS和CONFIG报告覆盖,这有助于ClearSpeed公司根据技术风险划分验证工作的优先级。
我们认为物理层(PHY)存在较高的风险,因为物理层有两个不同的IP供应商,而且FPGA原型测试中没有覆盖PHY(因为FPGA使用不同的PHY);Power mgt是下一个最高优先级对象,因为在FPGA原型中没有覆盖到它(由于技术限制的原因);数据链路层是下一优先等级,因为它靠近PHY。
我们还要求更细颗粒的优先级划分:模块内的优先级划分。虽然一般来说可以使用透视图进行优先级划分,但这种方法不能满足所有需要和优先级划分的使用模型。它缺少更细的颗粒和一些对CMS专业用户(如ClearSpeed和IP开发人员)来说更重要的再利用因素。
一致性测试套件
CMS提供的一致性测试可以使你一开始就有一个很好的基本覆盖,并因此而快速启动验证工作。ClearSpeed公司是比较早介入的,在整个项目中也在不断自我修正(附加的覆盖项目和一致性测试),因此一致性测试取得的覆盖在项目过程中会有变化。据Cadence公司目前估计,用户通过使用现成的CMS测试套件能够达到约70%的覆盖。
CMS测试也能经过配置进入PCIe协议的边界案例。然后,我们就可以写出许多自己的测试来驱动UVC达到想要的覆盖水平。
本文小结
上述验证方法被证实取得了很大的成功。这种方法基于的是标准驱动的验证,采用了第三方的VIP,超出了我们的期望值,并成功地对将现有IP集成进ClearSpeed芯片进行了验证。作为成功的证明,我们在CSX700芯片上取得了首次流片成功,成果如下:
-
成功的一致性测试结果,包括在2008年2月份PCIe PlugFest上的所有机器中取得首次成功。
-
在许多服务器和芯片组上取得了100%成功的启动周期测试结果。
-
在所有可用服务器上成功地集成了ClearSpeed公司全套的支持OS。
- 满足所有的性能和功率目标要求。
