集成电路验证与算法知识点总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
集成电路验证与算法知识点总结
黑盒:验证工程师不需了解设计的任何实现细节,所有的验证都必须通过接口完成,不能对内部状态进行直接访问,对内部的结构和实现不需过多了解,缺陷可观测性和可控性比较差。白盒:对待验证设计的内部结构和实现完全可见,也具有完全的可控性,优点在于能够快速的设置感兴趣的状态和输入组合,或者分离特定的功能,可以很容易的在验证过程中对结果进行观察并在输出与期望结果不一致时立即报错,但这种方法与特定的实现紧密相关,并且不能用于不同的实现或者将来的二次设计并且还需要验证工程师对设计实现的细节有相当的了解,以便正确生成有意义的条件以及合理地确定对什么结果进行观测白盒是黑盒的有益补充可以保证与实现有关的特性功能的正确性。
灰盒:介于黑盒和白盒之间的一种折中方案。黑盒可能不能验证设计的所有部分,而白盒不具备可移植性和独立性,与黑盒一样,灰盒通过最顶层接口对设计进行观测和控制,一般而已,灰盒最主要是验证与特定实现有关的重要特征。
遗传算法:5个参数的定义:Np是种群数量,Ng是每一代的数量No是产生子代的数量,Pi是通过反转产生2代的概率,Pu是通过变异产生子代的概率。基本思想:首先计算每一个个体的适应度Fitness Np(i)通过竞争选择出Ng个个体,然后根据适应度随机选择双亲,产生下一代,产生下一代的方式中Pi的概率是通过反转产生,Pu的概率通过变异产生,还有的是通过双亲交配产生,产生下一代的个体数量为No,由Ng和No选择出Np个以保持种群数量不变。一直遗传下来,直到种群的适应度足够高或不再提高为止。
验证计划:①明确的验证目标②验证策略③验证手段:基于行为级的模拟,静态时序分析还是形式化验证④结果检查手段:开发的验证环境是自检查,还是验证结果与参考模型的输出结果对比,还是验证结果直接和期望结果对比⑤建立验证环境的要求:内容有验证对象的抽象层次,验证模型的来源,包括行为模型,模拟模型等;验证环境的要素,包括结果检查,激励源等。⑥制定验证方案,即验证用例设计⑦验证结果的质量标准,内容包括验证向量数目,功能覆盖率和代码覆盖率⑧回归测试,什么时间进行回归测试,采用哪些激励进行回归测试⑨验证问题跟踪与管理,内容包括验证过程中发现的问题的记录和解决问题的情况,以及由此引发的代码更改记录⑩制定验证的进度安排和小组人员职责和分工⑾验证计划评审的节点和内容。
断言:监测设计中正确行为或错误行为的验证对象。断言将设计要求转换成了验证对象,从而可以用模拟器或形式化验证工具,评测设计要求是否被满足.断言分为3种:第一种为Assertion,用于描述设计所期望的正确行为;第二种为Constraint,用于描述设计所处环境的行为;第三种为Cover,用于描述设计及其所处环境应该会到达的状态。
SV A是SystemVerilog的断言,比较适合用Verilog编写的RTL代码,SV A是免费的,而PSL 需要购买。SV A的不太适合验证异步时钟接口。
PSL比较适合用VHDL编写的RTL代码。PSL的断言可以用于验证异步时钟接口。PSL的断言功能比SV A要强,例如,PSL支持具有Liveness功能的断言,但SV A不支持openspabc的功能验证(不包括时序和物理设计验证)①处理器体系结构设计验证②RTL设计模拟验证③DFT验证;系统级环境验证:固件操作系统和各类驱动;
使用工具:软模拟,加速器仿真,形式化验证;商业工具+定制工具
模拟:1适用于所有设计层次,2需要测试向量,3完整的模型,部分的验证,4输入驱动,施加激励,比较输出,5不完备的验证方法,只能证明设计有错而不能证明无错,6验证输入空间的点,一次检查一个输出点,7难点在于确定模拟激励是否足够。
形式:1理论上最佳的验证法,数学方法受限于问题规模,2不需要测试向量,3部分的模拟,完整的验证,4输出驱动:期望的输出行为,5完整性,不忽略输出空间的任一点,6验证属性,一次检查一组输出点,7难点在于确定属性是否完备。
验证:1预测并保证设计与综合在制造过程中能够根据输入输出完成功能,2检验设计的正确性,3主要方法为模拟,硬件仿真和形式化方法,4在设备制造之前多次重复,但对一个设计仅一次完整正确验证,5为设计质量负责。
验证四要素:1DUV,2测试模式,3参考输出,4比较模式。
测试:1用于保证按照设计综合结果来产生的器件,不受制造错误影响,2检验产生结果的正确性(芯片在制造过程中正确)3分两步,设计期间产生测试,生产后应用测试,4对生产出来的每个产品均完成一次测试,5对器件质量负责
三种模拟引擎:1基于事件的模拟方法:仅对事件发生的时刻,对事件影响的模块和信号进行求值,不是所有的输入变化都会导致输出变化,既能验证功能又能验证时序。2 基于时钟周期的模拟方法:以模拟引擎所知道的最小时间粒度,在每个时间点对模型求值,不能处理异步电路,对时钟域,只能处理同步电路,只能模拟电路,不能验证时序。3硬件仿真。
形式化验证方法:1模型检验,检验设计是否具有所需属性的方法。2等价性检验,比较设计的两种实现是否一致。3定理证明。
BDD,OBDD,ROBDD的关系:BDD二叉决策图,一个有向无环图,不唯一。OBDD变量按一定顺序组织的BDD,不唯一。ROBDD在OBDD中,合并重复节点,删除冗余节点,唯一跟变量顺序有关。
投片准则:从功能验证角度看,最重要的投片准则是错误率和覆盖率,错误率反映了随着时间的进行发现错误的多少,其中一个常用的准则是,当进行充分的验证,至少在一个周期内没有发现新错误,就可以投片了。对代码覆盖率而言,语句,状态机应达到100%,路径,表达式应在95%以上,功能达100%。
堆栈设计:对输入的结论:内部是一个堆栈,堆栈深度和数据宽带多少,同一时刻只能压一个数据。对输出的结论:可以同时读栈顶的两项,数据位0为有效标识;有堆栈满和溢出的标识,没有堆栈空的标识;溢出时,必须重新输入,满时,不需重新输入
①根据输入确定验证计划:正常写数据(压栈),考虑写数据之间的延迟;读写命令(压栈和弹栈)同时输入;pop_buf所有可能输入情况;空栈时弹栈;满栈时压栈;清空堆栈;同时弹栈+清空堆栈;同时写栈+清空堆栈;堆栈所有数据可能值遍历;堆栈读写+清空事件状态机。②根据输入输出确定验证计划:压栈栈顶和弹栈栈顶数据必须相同;连续压栈测试堆栈满与堆栈溢出信号;假设堆栈延迟为1拍,验证一个时钟周期后是否能够获得上一次压栈数据;corner case 1,在空栈的时候读数据,弹栈排空或清空堆栈。2 假设堆栈延迟1拍,不足1拍弹栈,不要弹出刚刚写入数据。
Calc1验证计划:1验证层次,在calc1顶层测试2需要的工具硬件\软件3风险与依赖:时间人力硬件资源4待测试的验证场景5验证矩阵6测试细节:每个测试用例由谁写,测试用例由谁整合,所有测试用例的覆盖率数据统计7不同验证类型下的方法黑盒测试的用例,类似优先级控制等模块的灰盒测试8验证策略:定向测试随机测试形式化验证9可能随机测试的权重控制9抽象层次:是否需要构建汇编器,输入修改为汇编文件?
低功耗流程CPF:1定义CPF所使用的各种资源,库声明,各类低功耗单元说明;CPF设计,首先定义power domain,DVFS电压条件,3低功耗工作模式4低功耗工作模式转换5低功耗规则6连接电源地网络7定义pin脚连接8ETC 9Candence LP Lab。
划分的基本目标:1功能一致性,2模块独立性,3划分有效性。