在开发块基于PCI Express的SoC过程中,ClearSpeed公司为了在有限的时间和预算条件下确保PCI Express协议一致性而面临重重困难。PCI Express是新一代的总线接口。早在2001年的春季,英特尔公司就提出了要用新一代的技术取代PCI总线和多种芯片的内部连接,并称之为第三代I/O总线技术。随后在2001年底,包括Intel、AMD、DELL、IBM在内的20多家业界主导公司开始起草新技术的规范,并在2002年完成,对其正式命名为PCI Express.它采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。
ClearSpeed公司开始意识到,理想的方法可以产生显着的好处:它能化技术开发工作量,同时化测试应用控制。这种验证IP被称为UVC,包含了一致性管理系统,该系统将覆盖空间划分和映射到了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一致性系统。
选用第三方VIP的原因是因为:PCIe协议的复杂性;验证任务的工作量以及缺少内部资源;VIP的成熟度;独立的VIP可以由与内部开发小组不相干的外部PCIe组开发。
系统级测试
系统级测试平台包括了芯片和软件驱动堆栈。实际的软件驱动程序基本原样投入使用,并由软件驱动PCIe UVC.更多细节请参考图4.在本例中,并且每个事务都要传送给仿真器。这样运行起来虽然比较慢,但确实能让我们测试DMA引擎等。
图4:通过设备驱动程序连接到RTL仿真的软件接口。
驱动程序可以连接到PCIe层上面的仿真器。这样无需花费时间在完整仿真每个PCI事务上面就可以实现对更高层单元的仿真。这对仿真在处理器上运行的程序来说是非常有用的。
虽然通过使用UVC可以在测试规范允许的地方使用受限随机激励,但在系统级主要应用定向测试方法。一旦驱动程序堆栈经验证能与RTL一起工作,就可以运行较高层的软件。
运行这些应用程序能给功能验证和性能验证带来高度的信心。
在FPGA中建立PCIe原型
在CSX700的开发过程中,ClearSpeed公司生产了一种基于现有硅片但用FPGA提供PCIe接口的产品,这样允许我们模拟PCIe接口并执行兼容性测试。也就是说,我们能将被模拟的PCIe接口连接到运行各种OS的众多服务器上,从而在流片前确定兼容性问题。它还能让我们更彻底地测试带PCIe的软件驱动程序堆栈接口。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
该方法可以识别主要位于PCIe堆栈物理层中的缺陷,也让我们注意到我们连接的服务器中PCIe实现的变化数量,并促使我们提升取得很高覆盖的重要性:我们对覆盖划分优先等级,并为优先级对象设定100%的目标。然而,该方法不能识别通过仿真&覆盖也不能发现的PHY外的任何缺陷。这使我们相信,PCIe仿真中的高覆盖将有助于取得很高的首次流片成功率。
原型的其它优势还表现在软件开发方面。它能帮助PCIe软件驱动程序远早于CSX700硅片开发出来,加快基于CSX700的产品的上市时间。
可配置的验证环境
用于PCI Express的Incisive UVC能让用户专注于设计的任何部分或整个设计,并针对验证过程中每一阶段的特殊需要优化验证环境。Incisive UVC一般用于在模块、芯片和系统级对PCI Express器件进行功能验证。它也可以通过配置有选择地激活或关闭各个功能模块以及功能覆盖和检测机制来优化特殊任务的验证。这样可以提供到验证收敛的可预测路径,并化在仿真器和工作站方面做出的投资回报。
PCI Express采用串行方式传输Data.它和原有的ISA、PCI和AGP总线不同。这种传输方式,不必因为某个硬件的频率而影响到整个系统性能的发挥。当然了,整个系统依然是一个整体,但是我们可以方便的提高某一频率低的硬件的频率,以便系统在没有瓶颈的环境下使用。以串行方式提升频率增进效能,关键的限制在于采用什么样的物理传输介质。目前人们普遍采用铜线路,而理论上铜这个材质可以提供的传输极限是10 Gbps.这也就是为什么PCI Express的极限传输速度的答案。
PCI Express规格从1条通道连接到32条通道连接,以满足不同系统设备对数据传输带宽不同的需求。例如,PCI Express X1规格支持双向数据传输,每向数据传输带宽250MB/s,PCI Express X1已经可以满足主流声效芯片、网卡芯片和存储设备对数据传输带宽的需求,但是远远无法满足图形芯片对数据传输带宽的需求。 因此,必须采用PCI Express X16,即16条点对点数据传输通道连接来取代传统的AGP总线。
自动激励产生
与使用上千次定向测试的其它解决方案不同,用于PCI Express的UVC采用自动激励发生器来减少用户需要做的工作量。这种方法有助于用户更快地发现更多缺陷,并让设计师有更多的时间进行DUT的私有功能测试。CMS可以实现整个过程的自动化。
使用CMS实现覆盖驱动的验证
CMS向用户提供了可执行的验证计划。vPlan与Enterprise Manager以及内置功能覆盖模型一起可以提供清晰地哪些被覆盖、还有哪些没被覆盖所需的标准。这种方法被称为覆盖驱动的验证,可以帮助验证人员方便地识别覆盖漏洞,并将资源集中用于DUT的有问题部分。
Cadence的再利用方法可以快速建立功能验证环境,确保在从模块级验证向芯片级、系统级验证转移以及派生设计时能立即再利用基于UVC的环境。这种方法通过消除重复工作而节省了时间与资源。
覆盖点的优先级划分
通过使用能用来屏蔽掉与DUT无关的覆盖区/条目的"透视图",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;Power mgt是下一个优先级对象,因为在FPGA原型中没有覆盖到它(由于技术限制的原因);数据链路层是下一优先等级,因为它靠近PHY.
我们还要求更细颗粒的优先级划分:模块内的优先级划分。虽然一般来说可以使用透视图进行优先级划分,但这种方法不能满足所有需要和优先级划分的使用模型。它缺少更细的颗粒和一些对CMS用户(如ClearSpeed和IP开发人员)来说更重要的再利用因素。
一致性测试套件
CMS提供的一致性测试可以使你一开始就有一个很好的基本覆盖,并因此而快速启动验证工作。ClearSpeed公司是比较早介入的,在整个项目中也在不断自我修正,用户通过使用现成的CMS测试套件能够达到约70%的覆盖。
CMS测试也能经过配置进入PCIe协议的边界。然后,我们就可以写出许多自己的测试来驱动UVC达到想要的覆盖水平。
本文小结
上述验证方法被证实取得了很大的成功。采用了第三方的VIP,超出了我们的期望值,并成功地对将现有IP集成进ClearSpeed芯片进行了验证。作为成功的证明,我们在CSX700芯片上取得了首次流片成功,成果如下:
成功的一致性测试结果,包括在2008年2月份PCIe PlugFest上的所有机器中取得首次成功。
在许多服务器和芯片组上取得了100%成功的启动周期测试结果。
在所有可用服务器上成功地集成了ClearSpeed公司全套的支持OS.
满足所有的性能和功率目标要求。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。