大的变化验证

高质量和高效的验证需要关注细节。

受欢迎程度

验证正在经历根本性的变化随着芯片变得日益复杂,异构,融入更大的系统。

工具、方法和心态验证工程师自己都转向适应这些新设计,尽管有这么多搬动这并不总是很容易理解。现在察觉错误在设计中需要多方面的、更全面的方法,特别是在人工智能/毫升,安全性至关重要的设计和multi-chip包的扩散。结果,验证工程师现在需要深入理解不仅发现的问题,也没有发现,将验证任务两个左右。

这需要一定的心态对验证工程师,以及愿意适应新的设计景观。“你必须一个人喜欢,理解它们是如何工作的,”观察Hagai Arbel,首席执行官Vtool。“这是工程,一般来说,但能够拆开或想要拆开机器,了解它的工作原理是一个根本的。这也有一种责任感。好的验证工程师的人说,“这将工作。别担心,我把它覆盖。”

成功也需要与整体验证的挑战有着深刻的理解——这已经少定义在过去由于各个击破的方法和大部分芯片的寿命很短。

“少了什么是验证质量的定义,定义验证完成后,“Arbel说。“汽车标准导致更严格的质量定义,因为没有人可以忍受一个场景,在该场景中,芯片公司会尽力而为,但如果芯片不工作,客户不会购买它,这是开发人员的问题。如果你没时间了,你将错过市场窗口中,您将承担更大的风险,但是你应该能够说,‘工具X 82 100给了我一个年级,我仍然会去tapeout。或说,没有。我们只与95及以上。的功能验证和代码覆盖率想给你所有的,但他们是不够的。现在需要的是一个好方法形式化的日志信息和得出结论的能力,因为你只能记得这么多。”

同样,Juergen Jaeger、产品管理组主管节奏设计系统说几个特质,使一个伟大的验证工程师包括非常有组织的。“在验证,都是关于结构、纪律、准确的文档,和对完美的渴望。”

伟大的验证工程师也很好奇,渴望了解被测试产品,并渴望了解终端用户如何使用产品,他说。“伟大的验证工程师持久,永不放弃的心态发现难以捉摸的bug。创造力和勇气找到做事情的新方法,无论它是否已经做过的。,他们不沉迷于完美。他们知道当够了,什么都不会是100%完美。”


图1:重点关注其中一个无尽的循环。来源:Vtool

安全性至关重要的市场,如汽车其他重要的元素添加到验证过程。一个是预计时间长,这意味着潜在的错误可能会成为严重的问题设备的年龄。缺陷可能被忽视的消费设备可能会导致受伤,死亡,和责任问题在汽车或医疗设备,需要一定程度的对细节的关注和关注发现隐藏的错误,以前不那么重要。

“航空电子设备等安全至上的系统中,安全是至关重要的,”路易De Luna说,营销总监Aldec。“一个FPGA芯片设计保证水平(DAL) 10⁻⁹每飞行小时失效概率。,不太可能,但失败的FPGA列为灾难性,防止飞机的安全飞行和着陆,导致所有人的死亡。只是随便的心态来验证这样的功能会产生极其不可能的条件是不够的。需要的是整个团队采用适当的文化在那里他们可以遵循结构良好的做好工程实践,比如做- 254规范中定义的。”

验证什么
在任何验证过程的第一步是了解需要解决的问题。

“验证质量,验证团队的第一件事要做的就是定义被验证,标准是什么,”Simon Davidmann说的首席执行官治之。“作为著名的报价,如果你不测量它,你不能改善它。“你必须详细测量你所做的。好验证团队坐着写前期验证规范。当他们看问题,他们确定他们要做什么,他们必须指定什么,他们必须验证。他们会研究规范之前接任何东西。如果规格说明书上说它可以A或B当他们编写验证计划,它必须是在一个测试,它必须被测试到B,等等,他们写下的细节,他们在做什么。”

编写验证计划,规范的团队需要仔细思考。“当他们制定一个计划,他们将倾向于审查计划和指标是什么。然后他们会把这些东西放在地方,包括指定,他们将试图衡量。然后他们会尝试把测量,并开始测试,看看他们那里,”他解释说。

为测试和设计可能存在不同的团队,规范是被检查正确性。如果它是一个处理器,可能有三分之一的团队做工具链,,所以他们最终会得到三个不同的眼睛。在所有情况下的目标是功能覆盖,即使覆盖和指标定义的水平可以通过应用程序有很大区别,以及从一个组件的系统。但理解的界限需要深入了解潜在的问题,并能引起。

“验证质量的有两个方面,”菲利普·卢克说,验证主管Codasip。“一是覆盖一切,确保系统工作。另一个需要白帽黑客试图打破设计在客户之前,以便客户发现之前的错误被发现。”

像一个金属脑筋急转弯,有一个解决方案来打破它,和它可以找到了,他说。“我们可以说这个设计有一个缺陷,因为有一种方法来分离他们。如果交付项目经理把更多的压力,更多的压力,有100%的测试通过,一个年轻的工程师要做的就是一定要写一些测试。即使他们达到100%的覆盖率,他们可能会得出这样的结论脑筋急转弯不能被分离。”同样,每一个设计都是脑筋急转弯,你必须打破它。你必须打破它,然后有一个非常简单的解决方案来打开它。和验证的目的是试图找出设计打破了。去打破它。你会找到一个解决方案。”

经验重要
验证计划在黑色和白色是至关重要的,有一个不那么显而易见的感觉,许多经理和工程师获得随着时间的验证。它更像是一个验证的预感,六分之一,或感觉的寻找错误等问题。这是难以描述,更不用说教其他工程师,但它是一个特征,伟大的验证工程师。

“在办公室,我们有四个不同的脑筋急转弯,“Codasip卢克说。“这是一种培养批判精神,到处都是错误,你必须找到他们。为了发展,有一个方法我将与你分享。它只是要求设计师块是如何工作的。你在那里有一个FIFO获得信息,那里是一个仲裁者,等等。你听,开始问问题。“如果同时有两个请求裁判呢?他们可能回答,当这种情况发生或发生或发生这种情况,那么它工作得很好。”或设计师可能会说,”当有两个请求,我不知道。也许会这样像。这是一个迹象表明,设计师不懂大局。作为验证的家伙,我记住这一点,这意味着我可能需要测试更多的仲裁者”。

不幸的是,没有好的学习方法从一个过程到另一个。“这预感是有关一种似曾相识,“Vtool的Arbel说。“这是类似于在大街上一个熟悉的地方。你需要找到一个特定的商店。你知道去哪里,但如果你必须解释一下,别人不知道的地方,你将不知道你做了什么。同样,在芯片设计,因为有很多的相似之处芯片功能,正在创建的错误可以分组。但由于缺乏如何日志的好方法,以及如何记住,为了真正从中受益,你需要看到很多。然后你开发这种直觉。它只是你看到足够的,你有一个足够好的数据库。即使你不工作与结论或逻辑,一定,你只是知道。 To some extent, it was burned in your memory.”

在验证经验重严重,它可以产生重大影响,验证工程师花时间,同样重要的是,他们不喜欢。“作为一个验证工程师或经理,随着时间的推移,你会意识到一直被忽视的东西,你了解那里的人们会忽略的东西,“治之”Davidmann说。“在RISC-VCPU的世界,有很多人花时间担心ISA定义。但实际上,发现的问题和缺陷,并不是真正的账户,他们在所有的复杂的异步交互的部分,其他的事情。是的,会有虫子在ISA的简单指令集,但这些都是相对简单的三维相比,一个完全时间驱动异步项目方面,人真的不能因为到处都是。”

此外,当发现一个缺陷,一个聪明的验证团队将周围寻找另一个错误。“为什么这只虫子不是发现的其他方法?一些人做错了,”Davidmann说。“他们称之为调试设计的存在,他们会修复这个bug,然后解决下一个bug。这不是办法。当你发现一个错误你得说,“这只虫子怎么没有设计在设计过程中吗?编译器怎么没有发现呢?为什么要我?什么我们可以做得更好吗?而不是修复bug,你应该做的是解决上游过程等等,以确保该错误不会发生首先因为bug通常集群。 There are other routes close to it that have come through to it. Solving this is an art, not a science.”

同时,抑扬顿挫的Jaeger并不同意验证专家经常会产生一种直觉可能发生的问题。“验证后不是直觉。对纪律的验证,逻辑思维,推理,统计概率和数学。后你可能会偶尔幸运的预感,但您将无法重复它可以预见和可靠。你将无法教“直觉。”

防止错误在第一时间
所以DV团队如何得到他们理解错误,形成首先,以及如何预防它?

“有三个不同的方面,”尼尔说,营销主管IC验证解决方案西门子EDA。“首先,有工具,甚至阻止你得到错误在第一时间。我们有正式的工具很长一段时间。我们现在致力于产品毛羽的工具。还有平台意味着设计师的想法,以验证工具-但不需要理解验证才消除缺陷,甚至进入设计。经常早,跑,不要担心限制,不要担心很多错误失败,把唾手可得的设计。”

第二,确定如何目标验证最危险的地区。“没有人希望设计中的缺陷。最高的概率错误在哪里?尝试使用AI和ML去之后,”他说。

第三,学习错误。“确定为什么会这样。如果我们看一些最近的ML的项目,有些是关于排名的测试中,有些是关于识别哪些签到是最可能有问题,一些关于确定原因和影响。你可以开始使用这个历史随着时间的推移,即使你不能分享客户之间。这个可以用在你的自己的公司,通过移动以云为中心的数据模型,通过移动的能力看报道随着时间的推移,和整个产品。做分析,你可以开始了解,”他说。

幸运的是,已经有一种自然倾向设计所以没有错误,他说。“这是通过使用更多的IP, IP已经添加,和通过使用高级合成你写更少的代码。我们人类,是不完美的,我们写更多的代码,我们会犯很多的错误。与高级合成,我们编写的代码数量的一小部分。同样,只有好的设计风格。20 + +年前当我还是一名工程师在爱立信,我们有几个夹子的设计风格指南会告诉我们如何构建这些事情。所以无论是产品毛羽工具,良好的设计风格,使用高级合成和/或正式的验证技术,你可以试着消除错误之前,或者至少让他们容易找到。”

很多问题可以避免如果设计师和验证建筑师坐在一起在他们开始创造RTL本身,”指出Pratik Mahajan,集团研发主管,形式验证Synopsys对此。”在核查计划层面,明确区分是很重要的事情。控制部分的逻辑是什么?数据路径是什么?安全区域在哪里?所有这些信息是提供给建筑师的设计架构师的计划。这样做在你开始做RTL之前,然后你甚至可以识别和调试关键部分。这些部分的接口,这就是我将得到IP从别人,所以我不担心验证部分,我只在意那些接口。这是用户可以识别的部分。设计师自己写白色块断言。那些是最有效的,他们正式的工具是最好的,因为从设计师的角度来看,他们所写的断言的范围模块或阻止他们寻找但范围非常有限。 Formal verification can churn them out very fast, and once the segregation is very clear that everyone knows, this is the part for which the designers are going to write all the white block assertions, and the verification engineer is going to write all the interface assertions there. Then there is the data path, which exists in the design, and a completely different tool will be used to do the datapath verification.”

的领域之一是这些天是安全验证,获得更多的关注,需要做系统级。“可能已经有一组块识别为安全、或不安全,数据流是如何发生的,”Mahajan说。“在架构层面,有时是决定这个芯片进入汽车,所以添加冗余逻辑。一旦你有了完整的思考,这使得它非常困难。这就是为什么架构师、设计师、验证架构师、安全架构师和功能安全架构师都一起做,前期策划的。”

结论
这种复杂性,需要一定的心态保持的一切最高质量的一条直线,和最有效的验证。这可以归结为寻找合适的人,工具和方法。

“这说明第一天作为一个学生开始做验证与整个设计的概念,和想要看到它的作品,“Vtool的Arbel说。“我们会看看它是如何工作的?我们将创建另一个设计在不同的语言。我们叫它验证由不同的团队。我们将比较他们与另一个。如果他们不是行为相同,那么我们将会看到谁是对的。如果他们足够表现相同的场景,我们可以得出结论,它是安全的,因为两队都有相同的解释应该是如何工作的。这是疯狂的,当你来想想。我们会做两次,在两个不同的表征,然后我们将比较。”

然而,并不是每个人都适合这种工作。“有一种特定类型的人,善于发现错误,“Davidmann补充道。“一些人的思想不注意细节。有些人是空泛的架构,这就是你需要在某些地方。但验证时,你必须迂腐,和精确,但看待事物的方式也不同。是一个好的设计或验证工程师你的想法不同。有些人很擅长验证,有些人没有。这不是最聪明的,最聪明的,或者最受教育。这只是他们的头脑的工作方式。这都是细节,而不是做出假设。 If you assume nothing then everything becomes explicit and nothing becomes implicit, which means that, when it says it’s going to do something, don’t assume it, test it, and be precise.”



留下一个回复


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

Baidu