跳转到主要内容

验证必备:AMBA4 SystemVerilog Asseration

judy 提交于

作者: 玉骐,文章来源:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/w06MhHhIa9GnOIve97_7tg"&gt; Spinal FPGA微信公众号</a></span>

ARM所推出的AMBA4总线相对来讲还是应用广泛的。无论是芯片设计里还是FPGA设计里,时常能见到AMBA4总线的身影。在验证领域,SystemVerilog Asseration还是一个很常见的验证手段。在Xilinx Vivado中有提供AMBA总线相关的Checker VIP,其内部也是采用的SystemVerilog Asseration来实现。今天给大家推荐下ARM自家所推出的BP063 AMBA4 SVA组件。

<strong>获取方式</strong>

可通过ARM官网对应的链接,需通过注册ARM账号来获取相关文件:https://developer.arm.com/Architectures/AMBA#Tools-and-Software

若不想注册账号,我在github上也上传了一份,也可通过github进行下载:https://github.com/xiaochuang-lxc/AMBA-SVA

<strong>使用</strong>
下载下来后文件夹里包含了sva文件和docs资料:
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570555-3007…; alt=""></center>

详细的使用教程可以参照文件夹里面的BP063-RLNC-000313.pdf,这里就不在照本宣科的给从头到尾讲了,文档中已详细说明了如何使用及各种参数的配置。

<strong>One More Thing</strong>

参照文档基本可以保证能够正常使用。对于SVA而言,其本质无非是通过各种规则进行检查,若不符合情况则根据错误等级进行报错。在ARM AMBA4 SVA里面,出错后的错误等级分为了$error和$warning两种:
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570555-3007…; alt=""></center>

在仿真器执行时,对于$warning其只是打印信息,并不会影响仿真器继续向下执行。如果对于一些规则检测,如果你觉得使用$warning并不符合需要,则可以手动对源代码进行修改。例如下面对于ready超时的检测:
<center><img src="https://cdn.eetrend.com/files/2023-05/%E5%8D%9A%E5%AE%A2/100570555-3007…; alt=""></center>

这里当仿真时不符合设计预期时会通过`ARM_AMBA4_PC_MSG_WARN来进行$warning报警,如果需要出错时仿真立即停下来那么则可以将其替换更改为`ARM_AMBA4_PC_MSG_ERR。