几年前,我为参加一个活动租了一辆车,租车的人指出我的驾照几个月前就过期了。所以他不能把车租给我。我当时的妻子保释了我,但我决定推迟一天离开,以避免在没有执照的情况下被拦下的风险。这就意味着要紧急去车管所。
我发现我可以很快获得执照,但我必须参加笔试才能这样做——这是我从十几岁起就没有参加过(或学习过)的事情。所以,在没有任何准备的情况下,我去回答了这些问题,我知道这些测试一直以来都是不靠谱的,我担心自己是否能够合法驾驶处于危险之中。
我不记得具体数字了,但你不能错过太多。我错过了很多次。我问了这些问题,有一个问题特别突出:
“下列哪个地方不可以停车?”
我不记得其中两个答案了(显然不是),但另外两个是:
"在一个有条纹线的停车位"
“在自行车道上”
现在,我想不出有条纹线的停车位是什么——我不记得曾经见过这样的停车位,而且,由于我已经几十年没读过使用手册了,我对这个选择失去了兴趣。但我非常确定你不能把车停在自行车道上,这很好,因为这意味着它这就是答案,我不用担心另一个。
错了。
事实证明,有条纹的停车位是残疾人停车位旁边的区域,它被标记出来,给轮椅留出了移动的空间。对我来说,那“不是一个停车位”,而是一个非停车位,用条纹隔开,以免与停车位混淆。这不是一个“有条纹的停车位”。车管所可不是这么看的。
幸运的是,当我和评分员交谈时,我说:“但是你不能在自行车道上停车,对吗?”她断然同意:“哦,不。”所以,祝福她,她给了我一个。然后我开车离开了。合法的。
但它提出了一个观点,即测试是复杂的事情。当事情失败时,问题并不总是显而易见的。你唯一知道的就是有问题。在这种情况下,有三个可能的问题来源:
- 这个问题可能是错误的或模棱两可的
- 答案可能是错的
- 我可能只是得到了错误的答案
您也可以在验证周期中测试您的芯片设计。您可以通过测试台提出问题,刺激设计,看看它给出了什么答案。您使用断言作为答案键,并在答案错误时进行标记。而且,如果设计中有错误,它将被识别出来。
所以,就像车管所的测试一样,当答案是错误的,它实际上可能是三件事情之一的暗示:
- 测试台问题
- 断言问题
- 设计有问题
调试断言触发的每个实例可能会令人厌烦。如果涉及到复杂的断言和/或逻辑,这可能是完全令人难以置信的。为了应对这个挑战,一家名为Vennsa的新公司推出了一款名为OnPoint的工具,它可以为你做大量的调试工作。
理论上,自动化这种调试很容易。你取影响锥,扰动每个贡献者,看看会发生什么。你扰动所有的组合(和排列,如果这重要的话)并检查结果。任何给出观察到的故障的都成为问题根本原因的候选,理解问题可能在测试台或断言以及设计中。
如果你有足够的时间去探索这个爆炸的解空间的话,这个方法是可行的。我们大多数人都没有。Vennsa所带来的显然是一种巧妙的方法来保持解决方案空间的可控制性。结果通常是每个问题都有十几个可能的根本原因。
然后对这些嫌疑人进行排名。Vennsa在排名中有很多考虑因素(他们无法抗拒将自己与谷歌进行比较的诱惑——我相信风投们会喜欢这一点,因为你必须说你是“……的谷歌”或“……的eBay”或诸如此类的东西来吸引他们的注意)。例如,在奥卡姆剃刀的直观逆转中,他们将更复杂的嫌疑人排在比简单的嫌疑人更高的位置。换句话说,如果有问题的区域很复杂,就更有可能有问题。
然后,随着每个怀疑,提出了一个建议的修复,通过波形提供。这些修复已经经过了审查,以保证执行其中任何一个都不会导致沿着模拟轨迹的任何其他断言失败。这在一定程度上避免了打地鼠问题,即一个修复会导致另一个问题。但这并不能消除在修复到位后重新验证整个设计的需要,以确保它没有在更远的地方搞砸。
建议的修复可能涉及测试台、断言或设计。不能仅仅因为断言触发了,就简单地假设设计确实存在问题。
他们通过各种技术的组合来完成这一切,包括,根据他们的描述,形式化(占80%左右),以及卫星求解器、二叉决策树和其他计算奥秘。他们可以使用验证路径中的各种模拟器和正式工具。这些是测试设计的工具;OnPoint是测试错误的工具。
在一个完美的世界里,考试总是清晰而明确的,答案总是正确的,而考生是唯一未知的。事实上,在一个真正完美的世界里,考生也有完美的知识,永远不会考试不及格。但我们并不是生活在那样的世界里(好吧,查克·诺里斯是,但我们都不是)。考虑到这一不幸的现实,Vennsa希望能够帮助解决在出现问题时找出问题所在的挑战。
现在…他们是否能给车管所带来秩序,嗯,这是一个完全不同的问题……
更多信息:Vennsa