如何优化验证

没有所谓的完美的策略,但大部分可以改善。

受欢迎程度

改善的速度验证工具和方法一直是惊人的,但这对于验证团队创造了新的问题。

在过去的20年里,验证改变了从单一语言(Verilog)和工具(模拟器)利用多种语言(testbench语言,断言语言、报道语言约束语言),许多工具(模拟器,模拟器,快速原型、正式的、集中的应用程序)和多个抽象(系统、事务、RTL门)。最近推出的便携式刺激标准(PSS)也可以启动另一个验证过程的转换。

而验证工程师的数量增加了在这段时间内,验证不再是一个任务可以交给初级工程师。它需要一个广泛的技能和语言跨多个概念域。事实上,它是不太可能的任何一个工程师能掌握一切,做一些必要的专业化程度。不断学习和适应的变化验证景观是非常必要的。

然而,验证经理有一个相对固定的预算的人们和金钱。因此,他们必须谨慎选择,如何,当部署资源来减少错误的机会逃脱。最后,验证是一个无限的挑战,但是没有人无限的时间和资源。如果有一些公式就好了,可以使用整个行业,但每个产品都是不同的,有不同的经济、时间和技术力量,每个团队必须处理。

“我们有这么多的工具和技术,”Tran Nguyen说,工程服务主任手臂。“最终我们关心的是市场的时候,我们想做一个设计每10个月。基本上是相同的时间,花了一个小设计,但是现在有成千上万的盖茨和我们需要做的一切都在同一时间内。这意味着你必须增加吞吐量。您可以运行很多的周期,但如果这些周期不太有用的或没有专注于正确的事情,那就是浪费了。你怎么知道哪个周期是有效的?这是什么意思是有效的吗?”

在一开始这并不总是显而易见的。“也许你看多少个周期发现bug,“阮说。”但看另一种方式——而不是发现bug的周期确认设计是正确的?你可以有更多的技术,更快的技术,但你必须正确的运行。你不能只是一个单一的解决方案通过添加更多的周期。”

每个公司都有自己的方法,甚至经常变化的团队在一个公司。Raju Kothandaraman,图形硬件工程总监英特尔指出,在他的公司把许多不同的指标,资源利用率,事情多快可以运行在特定的环境中,时间和根源,这是基本的调试部分。

“作为验证工程师我们密切关注这四个指标,“Kothandaraman说。“多快RTL是硬件或软件修复进入系统,这就是我们所说的构建?如何有效利用资源对工作速度得到了计算服务器吗?然后,如果我们有高效testbenches[的]运行有效和正确使用的资源和基准对其他行业?验证,最后,最具挑战性的部分是调试吞吐量的速度你可以缩小一个bug。我们测量所有的整个周期。它需要得到正确的心态的人。人们对不同垂直需要精明,不断驱动生命周期更快。”

戴尔,GPU平台仿真经理和方法论三星,很多关注模拟。“吞吐量基本上是模拟器可以提交多少就业岗位,合理的迭代,所以调试团队总是忙碌的。这将定义的输出效率多少我们可以找到RTL bug。有很多事情在这一连串的高层次的目标,这意味着从一个仿真基础结构的角度来说,你需要有效率运行基础设施建设基础设施是有效的,你testbench生成的方式你不浪费周期,你还需要产生足够的自动脚本的方法,这样您就可以诊断你的失败和重新使用调试方法。在仿真中,建造时间具有重要意义。在批处理运行时也需要时间,排队需要时间,所以你要确保你的工程师不坐着等待输出而不是更有效率。我们必须使用它,与CAD团队,也与EDA行业合作,加快和提高效率的过程。”

成功的指标
如何衡量效率并不总是显而易见的,但它是很重要的。

“我深信,你不能优化无法测量,”保罗•坎宁安表示公司副总裁和总经理系统验证群节奏。“吞吐量的概念是非常直观的,但我们必须使它可衡量的。没有一种方法。它不是一个简单的事情。有一个原始的吞吐量的概念。这是一个基本措施,你可能会像汽车的性能,而不是驾驶汽车的人的表现。周期每秒将是(度量),或时间波形,或能力。在一天结束的时候,你可以有最神奇的,高性能的法拉利,但如果这个人开车没有什么好处你仍然不会得到太多的性能。这是你必须去高阶指标,如时间错误的根源,或有多少虫子可以每人每天根源。或者,要多少钱你错误根源,多少计算资源消耗。 These are also important. You have to create a tree or a layered stack of these metrics and look at them all. You cannot say one is more important than another. They are just different. It is a mindset.”

令事态更加复杂的是,不再仅仅是验证功能。“我们有几个关键指标,”三星的Chang说。“一个是功能,另一种是出于性能和权力。你必须确保GPU运行任务。你也必须确保你的GPU将运行内核和驱动程序,确保一切工作在一起。内核和司机扮演关键角色的调度和分派工作和处理结果。很多错误发生在驱动程序之间的通信,内核,RTL的固件。我们开发多个不同testbenches满足每个验证团队的需要。运行内核,我们实际上需要一个混合的环境。”

许多产品必须运行多个应用程序。“一件事,我们采用本质上是理解工作性质作为我们的架构定义的一部分,”英特尔Kothandaraman补充道。“设计和验证团队是相互密切合作以确保从一开始就要求理解。添加大量的值,定义我们想要什么类型的功能在我们的低水平验证,以及扩展到硅。”

思考长期也会有好处。“互操作性是效率和吞吐量的一部分,”手臂的Nguyen说。“你使用几种技术,因为每个人都有优点和缺点。为了能够跳他们之间,你应该能够尽可能多的testbench重用。项目之间,通常会从一个产品到另一个,您可以重用很多。所以重用的基础设施,从testbench,从testcase——所有这一切贡献。验证工程师稀缺,我们需要尽可能地重用他们,这意味着自动化和减少不确定性。这是获得良好的吞吐量的关键。”

的抽象层次
在这个过程中另一个变量抽象。“有些事情,你可能在晶体管级或在单元级别,其他的东西发生在门和RTL,还有一些东西会发生在软件层面,“节奏的坎宁安说。“有不同的抽象级别,和利用是非常重要的获得最好的吞吐量。抽象是工具,你必须使用合适的工具,正确的工作。你不想休息法拉利路。”

但这往往与约束。“对于软件开发来说,他们通常开发虚拟testbench模型,然后跳上与真正的RTL模型模拟,“阮说。“但这来得很晚,因为RTL稳定在比赛中较晚。通常软件团队不会使用不稳定的RTL。这意味着启动周期是至关重要的。很短的。你必须提供在这一段时间内很多东西。”

这是一个很大的推动力。“如果你看看数据从肠易激综合症,花在软件中的增长率超过硬件投入的增长率,”坎宁安说。“你想左移位和尝试尽可能多的软件验证和启动pre-silicon。所以有很多压力和价值来驱动。同时运行的硬件验证和软件打开。”

随着工具的变化和新工具的可用时,验证团队还需要注意可能的影响变化。“协作与EDA是很重要的,以确保他们有一个理解你的路线图,虽然没有透露它,“Kothandaraman说。“你必须告诉他们你的挑战,你希望看到未来。我们还需要了解的新工具来了。这种合作与EDA是迄今为止最好的方法来获得对吞吐量。你必须开放和诚实的与EDA供应商,确保他们的态度,他们是团队的一部分。作为一个例子,我们总是不得不考虑我们是否应该使用更加正式的或多个模拟。”

英特尔并不孤独。”正式的是一个很好的例子,”坎宁安说。“有大量的东西我们现在与动态验证,可以更有效地与正式完成。它仍然是相当早期的正式和有更多的,我们可以做。这是正确的某些问题的工具。现在我们正在引入诸如PSS testbenches更高层次的写作。我们必须明白将会发生什么。有时我们需要改变司机,有时我们需要改变。没有什么是固定的,只要我们有一个团队的态度,然后我们将尽可能快速推动吞吐量的提高。”

结论
验证工具和方法将继续快速发展,这意味着每个验证经理都必须不断地评估他们的流程的有效性。这也意味着验证工程师必须准备连续再教育如果他们继续生产。

底线:从来没有一个更激动人心的时刻在验证,验证进化PSS发起一个新的篇章。



留下一个回复


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

Baidu