story · 2023年10月07日

芯片验证心理学

芯片验证是一项技术任务,但也涉及一些重要的经济学和心理学因素。

在理想的世界里,我们希望验证芯片的每一种可能的排列组合。 但在大多数情况下,这根本不可能。即使是一个看似简单的模块,也可能有成百上千种可能的输入和输出组合,为所有这些可能性创建验证用例是不切实际的。

对一个复杂的模块进行全面验证需要花费太长的时间和太多的人力资源,在经济上是不可行的。

此外,软件验证员需要有正确的态度,才能成功地验证芯片模块。在某些情况下,验证人员的态度可能比实际验证过程本身更重要。

验证心理学

造成芯片遗漏bug的主要原因之一,是大多数芯片验证工程师一开始就对这个术语(芯片验证)下了错误的定义。他们可能会说:

  • ''芯片验证是证明不存在bug的过程。''
  • ''验证的目的是证明芯片能执行其预期的功能。"
  • ''验证是建立信心的过程,让人相信芯片能做它应该做的事情。"

这些定义都是不对的。

当你验证一个芯片时,你希望给它增加一些价值。通过验证增加价值意味着提高芯片的质量或可靠性。提高芯片的可靠性意味着发现并消除bug。

因此,不要为了证明芯片没有bug而对其进行验证;相反,首先假设芯片包含错误(这几乎对任何芯片都是一个有效的假设),然后验证芯片,找出尽可能多的bug。

因此,更恰当的定义是这样的:

验证是以发现bug为目的的过程。

虽然这听起来像是一个微妙的语义游戏,但这确实有着一个重要的区别。了解芯片验证的真正定义会对你的工作成功与否产生深远的影响。

人类倾向于以目标为导向,确立适当的目标会产生重要的心理影响。

如果我们的目标是证明芯片没有错误,那么我们就会下意识地朝着这个目标前进;也就是说,我们倾向于选择导致芯片失败概率较低的验证数据。另一方面,如果我们的目标是证明芯片有bug,那么我们的验证数据发现bug的概率会更高。与前者相比,后者能为芯片本身带来更多价值。

验证是以发现bug为目的的过程。”这一定义暗示验证是一个破坏性的,甚至是虐待狂的过程,这就解释了为什么大多数人觉得验证是困难的。这可能与我们的本性相悖;

我们大多数人的人生观都是建设性的,而不是破坏性的。大多数人倾向于制造物品,而不是将其撕碎。所以很多应届生更乐于从事设计开发,而不是验证验证。哈哈~

加强验证正确定义的另一种方法是分析 "成功 "和 "不成功 "这两个词的使用--特别是项目经理在对验证用例的结果进行分类时的使用。大多数项目经理把没有发现bug的验证用例称为 "成功运行验证",而发现新错误的验证通常称为 "不成功"。

这又是颠倒了。不成功 "指的是不理想或令人失望"。在我们的思维方式中,一个结构合理、已执行的软件验证在发现bug时就是成功的。

当然,同样的验证, 如果最终确定不再发现bug,也是成功的。

唯一不成功的验证是没有正确检查芯片功能的验证;在大多数情况下,没有发现任何bug的验证用例很可能被认为是不成功的。

发现新bug的验证用例很难被认为是不成功的,相反,它已被证明是一项有价值的投资。不成功的验证用例是指芯片产生了错误的结果 ,但验证用例却没有发现。

打个比方,一个人因为身体不舒服而去看医生。如果医生做了一些化验,但没有找到问题所在,我们就不称这些化验为 "成功的化验";这些化验是不成功的化验,因为病人的净资产因昂贵的化验费而减少,病人仍然生病,而且病人可能会质疑医生的诊断能力 。

然而,如果化验确定病人患有消化性溃疡,那么化验就是成功的 ,因为医生现在可以开始适当的治疗了。因此,医学界似乎在正确的意义上使用这些词语。

当我们开始验证程序时 ,我们应该把它看作是生病的病人。

"验证是证明bug不存在的过程 "等定义的第二个问题是几乎所有芯片,甚至是微不足道的芯片,都不可能实现这样的目标。

同样,心理学研究告诉我们,当人们着手完成一项明知不可行或不可能完成的任务时,他们的表现就会很差。例如,如果有人要求你在 15 分钟内解决填字游戏,你可能在10分钟后就不会有什么进展,因为如果你和大多数人一样,你会认为这项任务似乎是不可能完成的。然而,如果要求你在四小时内给出解决方案,我们有理由期待在最初的十分钟内看到更多的进展。

将芯片验证定义为发现芯片中bug的过程,使其成为一项可行的任务,从而克服了这一心理问题。

"验证是证明bug不存在的过程 "等定义的第三个问题是,做了应该做的事情的芯片仍然可能包含错误。也就是说,如果芯片没有做它应该做的事情,那么bug显然是存在的;但如果芯片做了它不应该做的事情,那么bug也是存在的。

总之,芯片验证被视为试图找出芯片中bug的破坏性过程更为恰当。当然,你最终还是希望通过芯片验证来建立某种程度的信心,即芯片做了它应该做的事,而没有做它不应该做的事。

假设有人向你声称"'我的芯片是完美的'"(即没有bug)。要对这种说法建立一定的信心,最好的办法就是尝试反驳它,也就是说,尝试找出不完美的地方,而不仅仅是确认芯片对某组输入数据的运行是正确的。

作者: digital ic
来源:数字芯片实验室

推荐阅读

更多数字IC设计技术干货等请关注数字芯片实验室专栏。添加极术小姐姐(微信:aijishu20)微信可申请加入IC设计交流群。
推荐阅读
关注数
12313
内容数
219
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息