验证的周期

验证周期

在这里插入图片描述
功能验证有着一整套完备的流程,而且从硬件系统定义贯穿到硅后测试部分。一般来讲,一个验证团队会基于时间差同时进行多个项目,多个项目之间自然也存在着借鉴、更新的关系,所以验证的环境和复用性也是在不断提高的。而每一个项目在进行瀑布模式的开发时,验证团队也会在不同细分的流程当中完成每一项任务,同时在进入到下一项任务之前也会进行一些重要检查点(checkpoint)的核对工作。又由于验证人员会不断地在新项目中提高验证环境,所以验证的周期也是不断往复、螺旋上升的过程。

上图就将功能验证的各个关键节点列了出来。首先验证周期的起始点是从创建验证计划开始的,而验证计划需要参照系统工程师给出的模块功能详述文档。接着验证人员会开发验证环境,在创建验证环境的过程中,验证人员一般会邀请设设计人员和系统人员一同回顾验证计划,确保验证计划没有明显的遗漏,所以验证计划的回顾是第一个检查点。

当验证环境准备完毕,而且已经有一些可供测试的激励时,验证人员会比对设计的输出结果和参考结果,在这一过程中,如果发现有比对结果错误的时候,验证人员首先需要自己去调试环境,并且定位到硬件描述文件存在缺陷的大致位置。如果验证人员有充分的经验,他还可以进一步给设计人员修改代码的建议。

当硬件设计经过了一定数量的激励测试,验证人员就可以准备递归(regression)测试了。递归测试就是将已有的所有测试序列都执行一次,一般来讲,随机激励的递归测试要大于直接测试的递归,不过这种优势会随着验证完成率曲线的增长而变得不那么明显,具体的原因就是随机激励无法给出定向激励来填补剩余的验证空间,而直接测试则可以被有经验的验证人员运用恰当,用来验证边界情况。在完成递归测试之前,我们需要进行第二个检查点“验证代码检查”,这一检查点的作用就是一通来回顾验证代码以期发现可能遗漏的测试激励、不恰当的随机约束、代码结构的缺陷等。

在完成递归测试以后,我们进行第三个重要的检查点“流片前验证完备性检查”。一般这项检查是验证经理最后签字的,对于验证经理他会根据一份检查清单来将量化的验证进度综合评定,最后考虑是否已经完成验证的任务。当然,这一过程并非只有在流片前才会评估,而是发生在这一期间内若干阶段,包括模块验证阶段、子系统验证阶段、芯片系统验证阶段和最后的网表验证阶段,每一个阶段验证经理都有相应的通过标准和检查清单,来逐一判定出每一个模块、子系统和最终的芯片系统是否达到了验证的目标。

进而,在最终流片以后,验证团队也需要和硅后系统测试团队完成对接。这是由于,硅后系统测试阶段才是真正能够判定小到每一个功能模块大到整个芯片系统的各项功能能否正常工作的标准 。通常来说,系统测试团队也会参考功能验证团队的验证计划,先从底部测试每个模块的功能,在逐步向上层走,最终测试整个芯片的联合功能。而在系统测试环节中,如果发生了功能测试失败,那么系统测试人员会同验证人员一同协作,最终来定位到是硬件自身缺陷还是测试中的环境配置或者寄存器设置问题。如果最终测试发现了硬件缺陷,那么硬件团队和软件团队也会一起评估该缺陷是否是不可修复的。一般针对硅后测试发现缺陷的情况,首先会考虑是否有软件修复的可能,其次才会想硬件上面有无变通的办法,当两方面都无法解决的时候,我们只能宣告,一个缺陷在硅后测试发现了。当然,比这还不幸的是,这个缺陷是一个致命缺陷。

在经过系统测试以后,验证团队会就最终在硅后测试中发现的缺陷展开逃逸分析,来思考为什么漏洞会在片后测试环节中被发现。这其中可能引起漏洞在硅前验证阶段逃脱的情况包括有:

验证计划制定不充分,没有覆盖完全功能验证点。

激励序列生成不完全,没有完全覆盖可能生成的有效激励情况。

验证环境不完备,例如比较器(comparator/scoreboard)没有足够完善判断设计的输出结果。

在展开逃逸分析之后,我们需要展开整个验证周期的最后一项检查点吸取教训。吸取教训是一种被动的方式,这是因为在已经完成的项目中我们犯了一些错误。如果我们不想被同一块石头绊倒两次的话(没有人会愿意吧……),我们需要吸取教训。这种被动的方式和我们主动去提高验证效率没有冲突,恰恰是在我们没有考虑到的地方学习,在我们考虑到的地方主动完善,使之成为一种内外结合提高验证能效的方式。在这里,我们给出一些关于吸取教训的建议:

1、**请在整个验证周期内保持收集突发状况、如何克服、陷阱从哪来、遗憾没有做到的事情有哪些等等跟验证完善有关的地方。**之所以建议这么做,是因为我们通常在项目介绍以后会懈怠下来,而且我们的记性不足以记住事发当时的一些细节,还有我们可能会忘掉当时的一些心理痛苦。所以就像做一份验证记录一样,保持着这样一份完整记录,将来我们可以从中很快地串起来我们一路是如何走过的。

2、除非有一些个别情况,否则验证缺陷的暴露会跟整个模块验证团队都有关系, 因为我们可能一起制定的验证计划不够充分、一起回顾测试序列的时候也不够仔细、一起……所以在一起接受教训的时候,要想团队整体的疏忽在什么地方,每个人也因此需要考虑到自己在验证周期的不同阶段应该充分履行的责任是什么

3、尽量地从一些教训中去量化今后可以加强的地方。比如,功能覆盖率和代码覆盖率的指标如果是硬性的,那么验证人员就不应该做出妥协,应该想办法去达到这个标准,又比如一些跨时钟域的问题没有发现,或者在网表仿真的时候才发现,这种情况,我们就应该将跨时钟域检查、同步单元检查作为标准在验证过程中执行下去。

验证周期的一些细节

对验证周期的细些细节展开讨论,目的在于更详细地帮助大家了解认知清楚每一个阶段的具体任务和值得注意的地方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值