一种用于微处理器功能验证的测试程序生成方法及装置制造方法及图纸

技术编号:4022148 阅读:194 留言:0更新日期:2012-04-11 18:40
一种用于微处理器功能验证的测试程序生成方法及装置;方法包括:A、随机生成μ+λ个个体并保存成原始生成种群;将所述原始生成种群作为当前种群;B、结合指令库,将当前种群中的个体转化为测试程序;C、仿真执行当前种群中的各个体转化得到的测试程序,生成功能覆盖报告;D、如果当前种群是原始生成种群,则直接进行步骤E;否则选择当前种群中的个体进行λ次交叉、变异操作,产生的新个体也保存进当前种群,然后进行步骤E;E、根据功能覆盖报告,从当前种群中选出至少μ个个体作为新一代种群;F、如果满足停止条件,则输出该新一代种群中个体对应的测试程序集;否则将该新一代种群作为当前种群,返回步骤B。

【技术实现步骤摘要】

本专利技术涉及微处理器的指令级验证,特别涉及一种用于微处理器功能验证的测试 程序生成方法及装置。
技术介绍
随着集成电路制造工艺的快速发展,微处理器设计规模和复杂度越来越高,并引 入许多新的微体系结构特征,如深度流水线,动态调度,乱序执行等。微处理器作为计算机 系统中的核心部件,其功能正确性是最终产品正常工作的关键,需要有效的验证方法来发 现设计中潜藏的设计错误。如果存在功能验证漏洞,导致设计错误流入到最终产品中,会给 企业带来巨大损失。现阶段,微处理器芯片级验证主要采用模拟执行大量汇编测试程序的方法,其基 本思想是把测试程序翻译成机器码,作为测试激励施加于待验证设计,在仿真模拟后获得 输出并评估其正确性,或者与黄金参考模型的输出进行比对。当前,主要使用定向或受限随机的方法来生成测试程序。定向测试程序生成针对 性强,可以覆盖到复杂的边角情况,但该方法自动化程度低,工作量较大。受限随机方法使 用约束(constrains)和偏倚(bias)技术,通过设置不同的约束条件来控制测试程序的生 产方向,可以提高随机向量的质量,在一定程度上减少对人的依赖,但该方法会产生大量冗 余测试程序,对约束的设置也需要工程师丰富的经验,经常需要多次尝试运行才能确定约 束参数,并且在验证目标和如何产生有针对性的测试激励之间缺少关联。当前,覆盖率反馈的测试生成(coveragedirected test generation, CDG)方法 通过自动覆盖分析来发现尚未覆盖到的测试点,并自动引导测试激励生成方向,可以使大 部分模拟验证进程自动化,成为微处理器功能验证的研究热点之一。常用的覆盖模型,如代 码覆盖模型和翻转(Toggle)覆盖模型,模型复杂度低,覆盖结果通常过于乐观,并且和功 能验证兴趣点缺少关联。功能覆盖模型和所要实现的功能关联最紧密,是微处理器功能验 证中最重要的覆盖模型。演化计算是一种借鉴生物演化和自然遗传选择的思想和原理来求解实际问题的 一种极为有效的方法,它采用简单的编码技术来表示各种复杂的结构,并通过对一组编码 表示进行简单的遗传操作和优胜劣汰的自然选择,来指导学习和确定搜索的方向。它提供 了一种求解复杂方法优化问题的通用框架,不需要事先描述问题的全部特点,不依赖于问 题的具体领域,对问题的种类有很强的鲁棒性。演化算法可以同时搜索解空间内的多个区域,而且特别适合大规模并行处理。在 众多优化计算方面得到广泛的应用。Coron等使用演化计算技术来进化测试程序本身,探 索得到一个执行效率更高的测试程序。经过不断的改进,已经成功应用于简单的设计如 8051,中等规模微处理器如LE0N2和Pentium 4处理器的测试和验证工作中。图1示出了 Coron等提出的测试程序演化方法的流程图,其执行过程如下步骤101,生成初始种群,当前代数gen = 0。随机生成包含μ个个体的初始种群,染色体个体使用有向图(Directed Graph,DG)来表达,DG的每个节点包含一个指针指向指 令库中的宏单元(Macro)。步骤102,确定当前种群,gen = gen+1。确定使用初始种群作为当前种群,还是使 用新一代种群作为当前种群。步骤103,将个体转化为测试程序。结合指令库,将当前种群中的个体,转化为测试 程序。使用DG表达的个体,每个节点包含一个指针指向Macro,通过随机产生Macro所需的 参数值,将Macro映射成一条汇编指令或代码片段,这样每条染色体就对应一个程序流,可 以转化成一个有效的汇编测试程序。步骤104,测试平台执行各测试程序,生成覆盖报告。现有的测试程序演化方法,使 用覆盖率作为个体的适应度值,所以,覆盖报告中包含每个测试程序模拟执行后取得的功言隨盖率。步骤105,判断是否发现设计错误。如果发现设计错误,则转到步骤111 输出触发 设计错误的测试程序,供验证人员和设计人员分析使用,算法运行结束。如果没有发现设计 错误,则转到步骤106。功能验证的目的就是发现设计错误,测试平台包含待验证设计和周 期精确的黄金参考模型,可以通过对测试程序的执行结果进行比对,来判断是否存在设计错误。步骤106,获得覆盖报告,根据覆盖率为种群中个体赋一个适应度值。个体的适应 度值就是该个体在模拟执行时所取得的功能覆盖率,作为个体的评价依据。步骤107,演化生成新的测试程序。选择当前种群中的个体进行λ次交叉、变异操 作,产生λ ’个新个体并合并进当前种群中。演化操作包括变异和交叉操作,可以修改DG拓 扑结构或内部参数,得到新的个体。其中交叉操作对两个核交换后生成新个体。核是一个 完整的指令序列段,不和核外发生分支关联。如果在选择连续节点作为核时遇到有连接到 外部的分支边,则需要把其相关联节点都包含进核中。变异包括对DG拓扑结构的变异(增 加节点、删除节点)和对DG节点内部参数的变异(修改节点参数值)。步骤108,确定新一代种群。对当前种群中的个体按照适应度值排序,将适应度值 最高的前μ个个体选取出来保留,作为新一代种群。步骤109,判断是否满足停止规则。如果满足停止规则,则转到步骤110 输出最优 解,即新一代种群中各个体对应的测试程序集。否则如果不满足停止规则,则转到步骤102, 继续进行下一代演化。可以根据验证需求设计多种停止规则,如可以设计为达到最大演化 代数时即停止运行,或者达到期望的功能覆盖率时则满足停止规则,也可以设计为达到某 种稳态时则停止演化(该稳态可以是在连续指定代数内,没有搜索到更优的解)。现有测试程序演化方法使用覆盖率作为适应度函数值,根据适应度值大小对个体 排序,并将排在前面的μ个个体保留至下一代。使用这种精英保存策略存在如下弊端对于适应度值低的测试程序,很可能覆盖到了 一些关键的边角情况。所以,只根据 功能覆盖率大小来决定个体的存活,会淘汰掉一些重要的测试程序,影响验证收敛效果。两个适应度值都很高的测试程序,可能包含许多相似基因或覆盖大部分相同的功 能点。传统的保留策略会将这些测试程序都保留到下一代,导致早熟收敛。但现有的演化测试程序自身的方法在过去的应用实例中,主要用于代码覆盖率模 型或其它简单的自定义覆盖模型。不适合功能覆盖模型和需要较大规模测试程序的设计验证,这是因为微处理器功能覆盖模型通常包含大量差异度很大的兴趣点,要达到功能覆盖 率目标需要大规模测试程序。而现有的测试程序演化方法,测试程序由种群中的个体映射 得到,演化算法运行过程中需要检查测试程序的有效性,计算成本受染色体编码长度影响 很大。另外,现有演化测试程序方法在解空间中探索唯一的最优测试程序,这对于复杂 覆盖模型需要很大的搜索努力,极大增加算法的运行时间,并且单个最优解搜索不适合功 能覆盖模型的多兴趣点特征,影响算法的收敛速度。微处理器设计的复杂度和规模较大,功能覆盖模型复杂度较高,包含大量差异度 很大的兴趣点,传统的测试程序演化方法要达到功能覆盖率目标需要大规模测试程序,这 对于复杂覆盖模型需要很大的搜索努力,极大增加算法的运行时间。综上所述,使用现有的测试程序演化方法可以在解空间中搜索高品质测试程序, 但用于微处理器功能覆盖模型验证时效果不佳,缺少验证微处理器功能覆盖率模型的实际 经验。所以如何将测试程序演化技术应本文档来自技高网...

【技术保护点】
一种用于微处理器功能验证的测试程序生成方法,包括:A、随机生成μ+λ个个体并保存成原始生成种群;将所述原始生成种群作为当前种群;B、结合指令库,将当前种群中的个体转化为测试程序;C、仿真执行当前种群中的各个体转化得到的测试程序,生成功能覆盖报告;D、如果当前种群是原始生成种群,则直接进行步骤E;否则选择当前种群中的个体进行λ次交叉、变异操作,产生的新个体也保存进当前种群,然后进行步骤E;E、根据功能覆盖报告,从当前种群中选出至少μ个个体作为新一代种群;F、如果满足停止条件,则输出该新一代种群中个体对应的测试程序集;否则将该新一代种群作为当前种群,返回步骤B。

【技术特征摘要】

【专利技术属性】
技术研发人员:程旭佟冬张良
申请(专利权)人:北京北大众志微系统科技有限责任公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利