混合仿真

专家在餐桌上,第2部分:找到正确的平衡性能、可见性、周转时间和验证的目标。

受欢迎程度

半导体工程坐下来讨论日益增长的使用混合验证方法与弗兰克Schirrmeister,高级组产品管理和营销主管节奏;项目主任Russ Klein pre-silicon调试产品导师,西门子业务;首席架构师蒙大拿系统;技术销售经理,Kalpesh Sanghvi IP与平台Open-Silicon。第一部分可以被发现在这里。以下是摘录的谈话。

SE:如果之间的过渡模拟,模拟FPGA原型是越来越容易了,我们看到后两个侵蚀模拟?

Schirrmeister:你做不同的事情不同的水平。价格差异仍然存在。你可以做出同样的争论正式的和仿真。我们有一些用户不再使用模拟一些街区,这让我害怕。但是他们是舒适的。我仍然需要看到东西摆动。但从来没有引擎消失,因为我们正在处理一个NP完全问题。可以做一些模拟仿真不能做的事情。我们还没有时间教模拟器,所以最后tape-out仍然是封闭的测试设计(DFT)模拟,门电路级仿真,需要时间。这是一个平衡,我们会聪明与平衡引擎时使用。

Moorby:但你总有模拟的问题,您可能无法运行足够刺激的问题。

Schirrmeister:仿真和FPGA更是如此,得到性能而不是调试可见性。

克莱因与引擎:有权衡。做某些事情很好,但其他一些糟糕的事情。如果你有non-synthesizable结构设计中,那么它很难获得到一个模拟器。而涅槃将这些引擎的图灵测试,我不应该在意引擎使用,只要我得到必要的结果。但有时候确实需要运行在一个特定的引擎。

Schirrmeister:有问题的时候,我们知道我们正在做的。这是一个真正的问题,你从来没有真正完成,问题需要重新修改,“当你有足够的信心,你将不会失去你的工作如果你带出去吗?”

Moorby:这是一个渐近函数实际上你永远不会。

Sanghvi:我们有一个设计,我们使用模拟和仿真。我们使用仿真的验证套件,但一个子系统运行需要大量的用例。我们搬到仿真和跑整个子系统与不同的用例。它还需要一个现实世界的接口,用于仿真和FPGA但不能用于仿真。这就是我们决定采取分区方法的设计和启用验证要做。我们应该早点去模拟。

Moorby:你是说,如果你知道你最终将模拟器,你不应该接触到一个软件模拟器吗?

Sanghvi:我们开始模拟环境。我们应该比我们早了。

Moorby:这意味着软件模拟器仍然是一个有用的功能,即使它会慢一些。

Schirrmeister:这是一个平衡的问题。我照顾仿真和FPGA产品,这是一个有趣的平衡。你必须小心你何时何地切换。有些事情我只能做模拟,但对于其他的事情我不希望的时候,做先进的调试,然后FPGA的性能。有顾客用仿真软件开发。他们买模拟器软件开发吗?不,他们是可用的,如果没有更高优先级的任务,他们使用它。它运行在一个兆赫和使用手臂模型得到一个有效的速度快的大约50 mhz,这取决于类型的你正在做的事情。在过去我们已经花了很长时间的问题,提出一个FPGA原型和需要3或4人的团队。今天,我们创造了更多的级别:模拟;fpga仿真;FPGA原型与自动流,然后手动优化FPGA原型如果你拥有必要的资源和需要。

克莱因:还有模拟器照耀的情况。考虑周期。如果你写一些RTL你想看到它运行,编译并运行它在模拟可能需要5到10秒。我必须编译,仿真合成,地点和路线,把它到模拟器,这一切需要时间。小设计,可能是几分钟,但想想它会做什么代码编写的生产力。

Moorby:这是当你变得越来越原始编码正确运行几个周期。然后你开始真正的验证任务。当正式出来他们叫仿真验证,非正式和软件团队一直在努力甚至成为“半正式的。'如果你有情况你使用约束random-when你随机扔东西在一个解决方案,你很快就会发现bug,但经过一段时间不管你做多少,你不做任何进展情况不是渐近。有一个缺口,你永远不会填补因为错误可能存在于规范和只发现一次产品。仿真可能的危险在于,你可能做更多的验证,但你仍然做任何事情来填补这一差距。

Schirrmeister:人们将值分配给他们发现的bug类型。你描述的是验证和确认之间的区别。验证确保最初的意图是正确的和验证确保规范编写。两个不同的东西。这就是为什么我们经常谈论FPGA原型系统验证,因为你现在不够快,你可以把它,看看它是如何工作的。有一组高价值的缺陷,很难找到和95%的缺陷被发现在第一周期的20%。的挑战便携式刺激是你发现的错误类型,系统集成水平很难找到,即使IP验证可能需要几天或几周发现bug。在SoC水平很难找到错误和缺陷分布将会非常不同。

Moorby:所有相关的工具SystemVerilog是时代的他们在做一个好工作。我们需要它,它是标准化的。

SE:如果验证任务分布在多个引擎,现在你怎么把所有的报道数据提供一个统一的模型的完整性?

Schirrmeister:有数据库,如统一的覆盖标准的互操作性。在实际的方式,这都是关于指标和测量。我们看到人们非常结构化验证计划然后合并覆盖不同的引擎。我们还不完全,但我们可以从模拟合并范围,模拟和正式的。一切都回到核查计划的关系。也是你如何找出如果事情增加覆盖范围。

克莱因:我们一直在uci数据库现在一段时间,它是所有这些引擎的意图将他们的结果会跟踪它的常用工具。

Schirrmeister:客户跟踪他们花多少钱在模拟,模拟各是多少,多少在正式,任务完成的引擎。

SE:我们已经讨论了模型可移植性和感动但没有真正谈论了Testbench进化的平台。有不同程度的交互可以在这些平台上。

Schirrmeister:验证修改的重点。验证功能的对象。我和便携式刺激验证吗?如果发现错误的功能知识产权,然后出事了。我应该发现他们之前。所以,这些工具的验证是验证的对象的集成;这个项目一起工作。这不是验证基本功能,验证,当你将他们和testbench抽象的一部分,你会发现你不会寻找的东西。

克莱因:有一个很大的块级别的形式,因为这是行业集中在很长一段时间。单独的IP块验证。在这行业做得很好。现在我们正在考虑采取集合的IP和确保他们的工作,和有更少的工作找出需要收集哪些数据,如何定义的上下文中报道意味着什么50 IP块?该行业仍有工作形式化。

Schirrmeister:验证的目标改变,你可能会开始看表演。有些人关心性能验证当他们把一切放在一起。当块都试图相互交流和访问内存,是我用于每个块的性能还见面吗?

克莱因:有新类型的分析,成为有趣的系统层次。一个客户有总线监视器在整个设计和他们跑很多软件通过它和显示器说,一切都是正确的,但是当他们引导Linux,它通过一部分摔倒在地。相同版本的Linux运行原型和真正的董事会。我们收集所有的内存事务在硬件和收集所有的交易软件,当我们发现一个排队是不同的。这是错误和发现不同类型的我们过去所做的事情。

Moorby:当我们开始谈论这提醒了自上而下的设计。行为Verilog的承诺是,你可以得到这个工作很快,然后所有的这些块相互连接,他们的想法是,你吃一块和插头的门电路级的版本。系统的其余部分保持不变,除了那一块。在现实中,你发现连接的世界完全改变。接口抽象必须参与这个,当你得到这种类型的微妙的错误。这是模块之间的接口问题。当你处理多个引擎,复杂性是一样的——他们以正确的方式交谈吗?

有关的故事
混合仿真(第1部分)
使用单一执行引擎为验证任务是迅速成为例外当用户试图平衡性能,精度和上下文。
混合仿真逐渐升温
使用模拟和仿真的结合可以有利于一个SoC设计项目,但它并不总是一件容易的事情。
仿真的足迹
为什么突然模拟器是不可或缺的越来越多的公司,和接下来会发生什么。
FPGA原型的进展
流行的设计方法使更复杂的硬件/软件验证之前第一个硅可用。



留下一个回复


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

Baidu