掌握未来设计的形式验证HDL方法.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
掌握未来设计的形式验证 HDL 方法 形式验证工具可分为三大类:等效性检验、模型检验和理论验证。理论验证是可用的形式验 证技术中最先进的,但仍须进一步研究。模型检验是将一个设计与一组现存的设计所表现出 的逻辑属性相比较,这些逻辑属性是设计规格的直接表述。生成逻辑属性时,模型检验的使 用要比等效性检验涉及得更多一些。 在三种形式验证方法中等效性检验用得最为广泛,它用数学方法来验证参考设计与修正设计 之间的等效性。利用等效性检验工具可对这两种设计方案进行彻底的检验以保证它们在所有 可能的条件下都有一致的性能。还可以利用等效性检验来验证不同 RTL 或门级实施方案的 等效性(见图 1)。 图 1:设计在不同抽象级别的比较。 等效性检验的主要任务是比较两种设计中相应的组合功能块。进行该项检验时先将设计分成 较小的比较点或关键点,然后评估一个设计中给定的比较点上的逻辑功能是否与另一个设计 中对应的比较点/关键点的逻辑功能等效。比较点可以是输入端、状态点(或寄存器)和输出端。 图2 :每个逻辑锥都用一种专有格式表达(基本上是布尔代数方程式),这种格式可描述驱动 关键点的组合锥。 逻辑锥(logical cone,见图 2)是一组可驱动比较点的信号,它有 n 个输入(基本输入,状态点) 和一个输出(基本输出,状态点),也可以包含其他逻辑锥。 因此,等效性检验包括:映射两种设计表述中的等效关键点、比较前面映射的关键点并将两 种设计中任何不匹配之处标记/报告出来。 ASIC 设计的验证 比较扫描插入(scan insertion)之前和之后的网表。 形式验证方法有多种应用,可用之将一个设计在不同的抽取级别与参考设计比较,以对其进 行验证(见图 3) 。例如,逻辑合成后,可以将 RTL 描述与门级网表进行等效性比较。 形式验证工具具有“关闭”设计中的特定模块或步骤的能力,也可在检查等效性时将信号设置 为预定的值。因此,它并不是简单的“推-按钮”(push-button)方法,而包含了很多的设置和调 试功能。尽管图 4 表明在每个设计阶段都使用形式验证,但与实际的设计流程还相距甚远。 此外,某些形式验证还不具备与 RTL 特性等价的能力。 通常,形式验证工具允许用 VHDL(RTL/ 门级)、Verilog(RTL/ 门级)以及其他门级网表格式(如 EDIF 和 NDL)进行设计描述。利用门级网表作为形式验证工具的输入需要技术库中原型的 仿真模型。另外,也可限定一些约束条件以指导等效性验证过程。 形式验证的一个局限性表现在它假设参考设计是正确的。如果参考设计中有错误,在修正设 计中是无法检查出来的。另外一个局限性是不能验证时序,因此必须与静态时序分析工具配 合使用。然而,形式验证并不需要使用任何测试向量。 寄存器传输水平描述 编码方式对合成工具和形式验证工具的输出结果会有显著的影响。因此,理解不同的编码方 式及其解释是很重要的。这里列出的一些基本问题将有助于对形式验证过程的了解。 “未知(Unknown)”和“不介意(Dont care)”:在仿真中,未知(“X”)和不介意(“-”)可以取任何逻辑 值。另一方面,在合成中,与“不介意”的比较一般可视为 FALSE。 例 1:“不介意”条件 always @(b or sel) begin out = 1bx; case ( sel ) 3b000 : out = b[0]; 3b001 : out = b[1]; 3b010 : out = b[2]; 3b011 : out = b[3]; 3b100 : out = b[4]; 3b101 : out = b[5]; 3b110 : out = b[6]; endcase end 在例 1 中,合成工具将赋予“X”的值作为“不介意”条件。因此当条件为 sel=3b111 时并不能 推导出锁存器。如果形式验证工具不将 “X” 的赋值视为“不介意”条件,在此条件下则视为锁 存器而且将标记出合成网表和 RTL 的不匹配。 例 2 :“X”传播 if (a 1bX) out = b; else out = c; 在例 2 中,合成和仿真工具均将“X”视为“false”条件。因此,“输出”总是值“c” 。一定要确保形 式验证工具有一致的解释,否则 RTL 和网表就会不匹配,这一点非常重要。

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档