基于形式化的方法缩短数字设计IP的验证时间

当我们谈论数字IP的sign-off时,我们指的是对模块的完整验证。 设备数据表中列出的每个功能都需要验证。 此外,每条RTL语句描述,分支和表达式也需要验证。 仅当功能(特点检查)和RTL代码覆盖率都达到100%时,IP才被signed-off。 为此,我们可以考虑两种不同的模式来实现目标:通用验证方法(UVM)方法(经典方法)和基于形式化的方法(新方法)。 本文将介绍基于形式化的方法是如何显著减少验证时间的。

 

 

经典的方法

 

多年来,我们一直使用UVM+SV 或者UVM+e语言的方法来验证数字IP。 这种方法基于复杂的面向对象/面向方面的语言,用于构建被约束的随机测试以验证数字模块并发现错误。 使用这种方法,我们可以通过简单地随机化数据生成来检查模块的功能并运行数百个测试,这有助于我们找到边界条件和/或死锁。

 

数字IP验证环境的开发可以分为以下任务:

    • UVM测试平台开发(验证IP,记分板,检查器)
    • UVM寄存器开发(验证配置和状态寄存器)
    • UVM测试开发(验证功能特征)
    • 运行受约束的随机测试(UVM测试使用随机数据运行多次)
    • 代码和功能覆盖率的提取
    • 通过创建新测试和/或增加随机运行次数来完善覆盖范围

 

有时在测试平台中添加SystemVerilog断言(SystemVerilog Assertion,SVA),以检查特定条件,例如握手信号之间的关系。 图1总结了这些步骤。

 

 

图1 传统的IP验证方法要求添加测试,直到达到足够的覆盖率为止。

 

通常,在形式化方法的不可达流程的帮助下,可以证实代码覆盖的步骤。 形式化的不可达流程“改进”了经典方法,使我们可以发现无法通过任何模拟覆盖的无效/无法访问的RTL代码。 通过这种方法,这样的代码就从总体代码覆盖范围的计数中删除。

 

 

 

全新的方法

新方法基于形式化的验证流程 数字IP已使用此方法进行完全的验证,并且sign-off(形式化sign-off)。 该流程基于形式化应用程序的使用和SVA代码的开发,以验证该模块的所有功能。 和基于UVM的流程一样,也可以将形式化流程分为几个任务:

    • 使用静态工具清理RTL代码(RTL代码检查
    • 总线协议验证-例如 AMBA(advanced micro controller bus architecture)总线-利用基于断言的验证IP(ABVIP)
    • 控制和状态寄存器验证
    • 形式属性验证(功能特征验证)
    • 具有异步时钟域的IP的时钟域交叉验证(包括时钟和复位)
    • 代码和功能覆盖率提取
    • 通过证明新的SVA断言来优化覆盖范围

 

图2总结了这些测试。

 

 

图2 基于形式化验证方法是一种更简化的方法。

 

RTL准备就绪后,第一步就是使用形式化的整理工具对其进行分析。 这可以使Verilog / VHDL代码免于许多错误,例如:

 

    • 无效/无法访问的代码
      • 通常,无效/无法访问的代码可能会隐藏错误。 形式工具强调了这一点,表明某些陈述是无法达到的。 设计人员可以发现这种无法到达的原因是代码中的错误
    • 算术逻辑的数据溢出
    • 总线竞争
    • 有限状态机(Finite state machine, FSM)死锁和活锁
      • 这是对FSM的首次验证
    • 组合循环
    • 可测性设计(Design for testability,DFT)检查
    • 在扫描模式下对时钟和复位的完全控制

 

可以使用ABVIP有效地证明IP的总线协议(例如AMBA总线)。该概念与UVM验证IP非常相似,主要区别在于协议规则已得到详尽验证。模块的配置和状态寄存器可通过形式应用轻松验证。可以检查任何类型的访问策略,不仅可以进行简单的读/写或只读,还可以通过硬件写/通过软件读或清除写等方式进行检查。验证的这一步骤是详尽无遗的。

 

 

对于静态分析、总线协议和寄存器检查,设计人员无需编写任何SVA语句。形式化的应用程序会自动生成断言来证明RTL代码。IP的所有其他功能可以通过编写自定义SVA代码来验证。形式化的属性验证工具将详尽地证明断言。形式化方法使我们能够验证具有多个异步时钟的IP的重同步结构(例如握手)。在整个结构和形式分析过程中都会检查数据稳定性和重同步触发器。

 

与形式化流程一样,UVM流程也可以提取RTL代码覆盖率以及功能覆盖率。当未达到覆盖目标时,将开发并证明更多的SVA断言。

 

 

UVM vs. formal

 

为了更好地了解UVM与基于形式化方法之间的比较,我们可以将RTL代码建模为在一个空间中有许多状态。

 

数字设计所具有的状态和事务不仅与FSM有关,而且还与数字协议总线和/或计数器的整体组合有关。 状态可以是成百上千,我们的验证范围是覆盖所有空间。

 

当我们使用动态受约束的随机测试来模拟设计时,我们覆盖了该状态空间的一部分。 图3显示了一个示例; 黄色圆圈是应该验证并覆盖的可到达的状态空间。 通过UVM进行受约束的随机测试,绿色圆圈是已经覆盖的状态空间。 蓝色圆圈是无法访问的状态空间,代表由于参数配置或非合法状态而导致的死代码或无法访问的代码。

 

 

图3 UVM状态空间覆盖率

 

当然,可以通过开发新的UVM测试并以更大的随机性运行测试来增加状态空间的覆盖范围。

 

形式验证是详尽的。 证明SVA断言意味着验证所有的状态空间,这等效于运行数千个UVM测试。 图4展示了一个例子。 SVA约束(定义为假设属性)通过删除不合法的事务/状态来减少状态空间。例如, 在总线协议中,并非所有可能的信号组合均合法。

 

图4 形式化验证状态空间覆盖率

 

表1中逐项比较了UVM与形式化方法中的任务。

 

表1 UVM与形式化方法的逐项任务比较

 

 

形式化流程可用于所有验证任务,而UVM不适用于RTL静态代码或时钟域交叉(clock domain crossing,CDC)。 总线协议和寄存器验证使用形式化验证,而不是像UVM那样,可能需要花费数周的时间。 当形式化方法适配时,其功能特性将通过形式化流程进行验证。

 

 

将IP模块集成到片上系统(SoC)中,我们将两种方法都应用在一起以产生一种组合验证。 使用形式流程进行IO复用和不可达性(死代码)的连接检查,并开发了UVM动态测试以进行顶层验证。

 

如果我们以每个验证任务所需的周/天为单位来衡量工作量,并比较UVM流程和形式流程的结果,我们会发现图5中显示对数字IP的sign-off,使用形式化流程而不是UVM可以节省数周的时间 。

 

 

 

图5:UVM与形式化的任务工作量:UVM的任务较少,但总体而言需要更长的时间。

 

可以将在此验证步骤中节省的资源部署到顶层验证中,在该级别中,UVM方法仍被大量应用(图6)。

 

 

图6 形式化方法可节省大量时间。

 

使用形式化方法,我们可以在验证任务中节省数周的时间 当形式化流程适用时,与任何受约束的随机测试相比,数字IP的形式化sign-off可以使我们能够在更短的时间内找到更多的错误。 UVM方法被广泛应用于验证SoC层次的集成。

 

 

原文链接:https://www.edn.com/formal-based-methodology-cuts-digital-design-ip-verification-time/

 

 

 

扫描上图二维码可直达课程页面,马上试听

 

往期精彩:

路科发布| 稳中带涨!25w成芯片校招薪资平均底!2020应届秋招数据全面分析!

相约今晚8点 社招转岗有顾虑?成功上岸的同学来帮你

V2Pro 2020秋M1 我对你的迷惑和选择都深以为然

V2Pro春季班普遍学撑了,秋季班7月报名你还敢来么

UVM RAL模型:用法和应用

我们准备做第二期线下培训,依旧认真且严肃

如果你突然被裁员了,你的Plan B是什么?

[彩虹糖带你入门UVM]

理解UVM-1.2到IEEE1800.2的变化,掌握这3点就够

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值