中文 英语

实际处理器验证

当创建一个新的处理器,验证需要多少钱?设置正确的ROI是很重要的。

受欢迎程度

自定义处理器正在复兴,刺激的早期成功RISC-V ISA和迅速的生态系统建设。但这一转变是在质疑处理器验证已经成为失传的艺术。

年前定制的处理器是很常见的。但随着市场巩固在少数几家公司也开发这些处理器所需的工具和技术。当钟摆摆动回到特定于应用程序的设计,该行业正努力填补这一空缺。

这是与处理器尤其困难,因为所需的设计灵活性。处理器可以实现几乎任何函数都可以用软件因为硬件设计不知道软件最终将执行。但这也意味着任何错误,无论多么小,看似无关紧要的,可能会导致灾难性的结果——和处理器的世界中,这样的例子比比皆是。

但这也引发了一些重要的问题。例如,当一个处理器是根深蒂固的,只有足够的软件执行功能在一个设备,是near-exhaustive验证有必要吗?这是建立在商业核心的成本,但可以设置较低的酒吧吗?

“人们用RISC-V设计已经讲过合规套件,说你符合ISA的定义,“保罗•坎宁安表示公司副总裁和总经理节奏设计系统。“确保你与生态系统的兼容性可能比其他任何。这是唯一最低要验证。在你判断如何更加验证是值得做的事情。”

对那些想要出售一个商业核心,或者当核心访问用户级软件,这是不够的。“一个好的处理器验证流需要包含所有的行业标准技术,”丹尼尔Schostak说,建筑师和研究员手臂的中央工程集团。“这包括覆盖率驱动约束随机模拟,正式的验证,及各种硬件原型,每个使用互补的方式,以确保没有石头扩军。今天的复杂的处理器设计需要订单的项目数以百计的人年的努力,这种努力是verification-related而不是设计相关的。”

“验证是一个重要的元素在我们的处理器设计方法,“罗迪厄克特说,高级营销总监Codasip。“我们之间使用一致性检查指令准确、周期精确的描述一个处理器核心和我们生成一个UVM环境彻底验证处理器RTL与国际空间站黄金参考。我们确信,处理器需要一个高水平的功能和RTL代码覆盖率,和我们使用直接测试并生成随机汇编程序实现这一目标。”

运行所有软件
但多少验证取决于应用程序。许多RISC-V核心用户的建筑深深嵌入式系统。“如果你建立一个根深蒂固的处理器,它真的只是你的团队将会看到它——你的软件的家伙,”Simon Davidmann说治之软件公司的首席执行官。“如果你的团队构建自己的RISC-V核心,或者建立一个专有的核心——或者你甚至构建或购买一个IP提供商——这是永远不会测试和充实来自IBM的核心,MIPS或手臂。”

软件的变化可以在这个方程有很大的影响。“你可能不得不考虑如果你让post-silicon升级,“节奏的坎宁安说。“软件你验证pre-silicon可能不是最终是什么,尤其是如果它是一个嵌入式部分将在市场多年。如果你正在构建的东西进入消费者的设备,你可以卖5或10年之后让芯片。”

这是项目计划的一部分。“限制验证将有相当大的影响,因为你可以更好地管理风险,”科林·麦克拉说,副总统的验证平台想象力的技术。“只要你准备下调一些功能或可能花一些额外的钱,时间和精力上软件修复,这将是一个更多的控制。你仍然需要一定程度的质量,但它确实包含了问题,你不需要告诉世界任何bug。你可以保护你的品牌。你可以专注于真正重要的东西,这将是一个好方法降低成本与产品相关联的。”

最低要求是兼容的。“整个合规的概念,因为你可能会得到来自一个厂商的工具链,和处理器IP从另一个角度来看,“治之”Davidmann说。“利用生态系统,你必须确保你的核心是兼容。”

除了是兼容的,它必须是适合的目的。“在你的验证计划,它可能说我需要这些软件的工作负载,”坎宁安说。“如果定义的点我舒适,CPU是正常,那么相关的投资回报(ROI)额外的验证?人们谈论的渐近线报道关闭。你可能选择一个点更早在曲线上,说,“我做够了。很多验证相关的成本是非常,非常长尾。的ROI是不一样的我,因为我只是使用一个嵌入式应用程序。下个月我可能再花费百万美元做额外的验证,但是当我做了足够了吗?”

这个问题很难回答,因为需求可以改变。“你从一组最小的场景,确保你能够运行有意义的程序,处理器应用程序中可能会受到空间,“说Hagai Arbel,首席执行官Vtool。“我们最近在一个定制的处理器应用程序参与,他们开始与假设没有人触摸的代码,但随着时间的推移,他们想放松限制。最后,他们想要的软件团队能够开发更多的软件和解决新的应用硅后会到达。尽管这是一个定制的处理器和他们不卖它作为一个通用的处理器,它仍然最终需要相同级别的成熟度和验证作为Arm处理器。”

必须平衡风险,灵活性和成本。“当你定义你的验证策略和做验证,你没有必要的应用程序将运行在最终产品可用,“想象力的麦凯乐说。“你需要有一定程度的灵活性,但来自灵活性复杂性,这通常需要更多的时间和金钱来验证正确。”

定义策略
这个行业有很多经验验证复杂的IP块和将这些整合到更复杂的系统。是什么让处理器验证不同?“平均硬件有块级规范,你可以很好地理解需求,“Vtool的Arbel说。“但是处理器时,你不能只是有架构师写的规范和知道它为您提供你想要的性能。往往有很多团队之间的误解——硬件实现团队,软件团队,以及在端系统。”

这些块级方法和方法继续适用于单个模块或接口在一个处理器。“在单位和互连级别、快速大容量正式的工具擅长验证任何方面的设计保证正确协议和/或高度并发性,”首席技术专家说Duaine普赖尔导师,西门子业务。“一致性协议、订购转换和内存子系统的各个方面属于这一类。正式也是宝贵的,未经改装的指令集可以被正式指定的元素。”

在多个团队参与也意味着多个模型。“有必要把一个强调系统方面的设计和验证过程,“说迈克尔•Warmuth Jens集团经理功能安全&系统可靠性验证弗劳恩霍夫IIS的自适应系统的工程部门。“验证要做整个完整的设计过程,以防止破损和差距。这可以通过使用系统级模型从概念阶段到原型的验证,通过重用之前测试用例的设计步骤。设计和验证过程必须尽可能高效的完成。”

它需要所有可用的工具来完成。“处理器验证与其他大型复杂的设计有很多共同之处,但也有独特的方面,”尼古拉·Tusinschi说,设计验证专家OneSpin解决方案。“Multi-instruction序列提供了特殊的挑战,需要自动化的形式验证技术。角落相关异常情况下,管道的危险,缓存一致性协议,和IEEE 754浮点操作极不可能在模拟运动,所以只有完整的正式证明可以提供所需的信心。即使基线ISA合规,这听起来很简单,只能确定如果正式证明。”

今天提供的工具行业可能还不够。“尽管开源ISA的出现,像RISC-V,支持自定义扩展处理器设计者提供了大量的自由,它提出了一个非常有趣的验证的挑战确保所有的设计都是兼容的,功能正确,”罗伊Shubhodeep Choudhury说,创始人之一Valtrix系统。“这要求测试生成器的设计方式的转变,他们需要高度可配置允许验证的自定义特性以及遗产/基线特征。”

这需要知识的实现。“你可以编写ISA指令,你可以开始生成随机程序,”坎宁安说。“但是多少随机程序,计算你需要运行多少?多少个周期的随机指令之前你舒服你足够覆盖吗?你进入这个领域需要更聪明。你想指导随机化和结构在某些方面。指导,这可能是基于CPU的微体系结构规范。这很好,因为你可以尝试生成指令序列,是为了锻炼你的微体系结构的不同部分。但是你可能没有覆盖一切。”

其他工具不适合的问题。“现有的验证工具都有自己的长处,但他们都有大的弱点,”麦克拉说。“世界的模拟时间太久因为编译时间是有问题的,特别是在设计尺寸增加。你的cpu上运行仿真是平的性能代价。所以我们并没有真正提高性能。该行业的最大问题是缺乏统一的报道。我们不得不开发自己的验证管理基础设施之上的工具,我们从供应商购买。我们还必须解决状态空间的限制能力的工具。我们驾驶的正式的工具和添加方式和方法。我们也做了相同的故障注入和故障分析。 The tools are too weak in terms of state space ability, so we developed our own methodologies to make them work in our environment.”

两个验证阶段
总的来说,人们谈论两种处理器验证的一般方法。第一个使用传统UVM方法,而第二个利用软件生成器。在这两种情况下,一个参考模型是用于验证结果。

验证主管达Tomusilovic Vtool,解释UVM-style验证方法的原则。“图如图1所示给出了验证环境架构,与一个活跃的VIP被用于预处理器指令内存与有意义的操作码,喂参考模型。周围一群主动和被动贵宾被实例化处理器以收集和反应生成的事务CPU、进料检查程序,比较其对模型的期望。在这个过程中,参考模型建成后,大部分的精力投资在调试硬件错误一侧,和参考模型中的错误本身在另一边。”


图1所示。块级测试环境:来源:VTool

活跃的贵宾也可能是一个流发生器,如RISC-V发生器是由谷歌提供的。

几个模型和执行环境可以为这种类型的验证。“自定义的验证流处理器,如RISC-V,需要包括一个指令集仿真器(ISS), RTL模拟器,FPGA仿真器和FPGA原型,”路易De Luna说,营销主管Aldec。“重用和可移植性测试环境从一个到另一个将发挥重要作用。之间的比较结果ISS(处理器运行参考模型)和RTL模拟器是一个很好的起点,但是很快就会碰到了墙由于大量的处理器配置需要验证——特别是通过添加自定义指令和寄存器。一些应用程序和严格的时间要求,如那些在汽车和航空电子设备,将模拟的时间大大增加。”

如果性能是一个问题,模拟原型设计必须扮演一个角色。“处理器设计流必须开始在C算法层面上,其次是有效的高级合成,再加上混合多个抽象级别的验证和分析,仿真是前面和中心,”Lauro Rizzatti说验证专家。“FPGA原型,升级处理数十亿门设计完整系统验证tape-out之前,完成了设计流。”

第二阶段是软件。“我们引入了一个高层,C领域特有的语言,在c++环境中实现,“Vtool的Tomusilovic说。这是图2所示。“这是编译成二进制文件运行的处理器。软件模拟器,也用c++编写的,以二进制文件作为输入,模拟根据处理器的规范,并产生预期的结果,与软件执行日志。”


图2所示。系统级测试环境。来源:VTool

当软件被执行,快速的执行RTL变得愈加重要。“软件应用程序和固件可以使用FPGA原型,测试“Aldec的De Luna说。“重用相同的fpga板模拟原型将不仅省钱,而且也易于迁移的RTL尤其是如果它需要划分为multiple-FPGAs。验证的自定义处理器将不仅是一个模拟的努力,它需要强大的工具,包括借助硬件环境彼此相互联系的。”

两阶段方法突出的一些问题与报道。“报道主要是强调块水平通常UVM试验台,“Tomusilovic说。“我们使用保险证明的所有随机场景将行使。最重要的是,我们定义一些系统级场景覆盖点是否行使某些系统的场景。所以,而不是定义一些复杂覆盖点,我们仅仅依靠某些系统的场景是跑去。”

结论
很大一部分处理器公司提供的价值是广泛的验证环境,他们已经建立了过去二十年或更多。EDA市场停止生产工具为他们明确,因为市场规模变得太小了。相反,处理器的公司继续发展必要的工具和方法。

可扩展的处理器架构已经存在了很长时间,但他们在大型EDA公司必要的工具开发经验。市场正在迅速改变,和工具被用来填补空洞。目前尚不清楚这是否会成为开源,或者如果EDA行业将他们长期的必要的支持。在此期间,知识和经验在处理器验证已成为一个非常热门的商品。



留下一个回复


(注意:这个名字会显示公开)

Baidu