本文记录的相关源工程和文件为:
core-v RISCV核功能验证工程:https://github.com/openhwgroup/core-v-verif
core-v 验证策略:https://core-v-docs-verif-strat.readthedocs.io/en/latest/#
core-v系列核cva6工程:https://github.com/openhwgroup/cva6
core-v系列核cv32e40p工程:https://github.com/openhwgroup/cv32e40p
LowRISCV Ibex核工程:https://github.com/lowRISC/ibex
core-v RISCV核相关说明文档:https://github.com/openhwgroup/core-v-docs
RISCV ISA指令序列产生器:https://github.com/openhwgroup/force-riscv
sail语言介绍:https://www.cl.cam.ac.uk/~pes20/sail/
sail RISCV开源项目:https://github.com/rems-project/sail-riscv

openHW全称为open-source hardware,是一个支持开源软件和硬件的非盈利组织。该组织开源的内容包括开源CPU核、相关IP、工具和软件等。

1. 指令集验证

指令集测试激励分为自检(self-checking)和预存(pre-existing)两种。

  1. 自检测试激励运行时按照源文件中指令顺序依次,并同时将指令执行结果和参考值作检查,若出错则程序跳转到fail,打断正常执行顺序,立即执行完成。类似的测试集有riscv-tests、riscv-compilance-tests等
  2. 预存测试激励运行时不会打断执行顺序,执行的结果会和指令集模拟器(ISS)的结果作对比,最终统计对比的结果。类似的测试集有riscv-dv等

验证环境中指令集验证的需求:

  1. 能够使用操作数产生合法的基本整数运算指令
  2. 在指令执行完成后能够检查通用寄存器的状态
  3. 指令执行完成后能检查副效应,例如溢出等。

基本指令集验证内容:

2. 相关CPU核的验证工程

1. cv32e40p

CV32E40P(RI5CY)是一个32bit的4级流水线核,支持整数运算指令、乘法除法指令、单浮点运算指令、压缩指令以及DSP扩展指令(包括硬件循环、SIMD扩展、位操作和增量指令)

该核的验证环境为借鉴下述Ibex工程,testcase的产生是可以基于UVM环境的(这种方式类似于Ibex核验证环境)。

该工程的指令集测试激励包含指令兼容性测试(偏定向测试,如riscv-tests和riscv-compilance-tests)和随机约束,和其他的一些测试用例。
系统级验证——指令集验证——openHW core-v验证环境及文件阅读记录

采用UVM搭环境的优势:
a)便于验证环境的结构建模
b) UVM环境类支持完全的UVM运行流程和log服务
c) 使用UVM sequence-item类可以产生随即约束激励
d)使用内建于验证环境中的参考模型预测执行的结果。(imperas有现成的开源ISS)
e) scoreboard可以比较参考模型和RTL的结果。
f) 功能覆盖率和代码覆盖率确保验证的完全性。
系统级验证——指令集验证——openHW core-v验证环境及文件阅读记录

2. CVA6

CVA6(ariane)是一个6级流水线、单发射、顺序执行的RV32GC或RV64GC核,支持M/U/S三种模式,支持linux操作系统

该核现存的验证环境尚未成熟,但同样可以构建UVM的验证环境

该工程的指令集测试激励包括riscv官方测试套件(即riscv-tests)

3. Ibex

Ibex不是openHW的core-v系列,而是lowRISC持续维护的较为成熟的一款核,验证环境也较为成熟,其结构和运行非常类似于CV32E和CVA6的激励随机约束。
系统级验证——指令集验证——openHW core-v验证环境及文件阅读记录

该验证环境激励的产生同样是基于GOOGLE的随机指令生成器

  • 验证环境特征
  1. 运行有效性
    testcase在验证环境中会持续运行完成,除非激励运行出错
  2. 方便调试
  3. 能够增加功能覆盖率
  4. 能够对比检查RTL运行的结果

3. 指令集描述语言——sail

sail是REMS构建的一种描述指令集的语言,可以认为是一种机器可读的形式化ISA模型。riscv基金会有意用其来描述RISCV指令集,且目前已有相关的开源工程。

初步来看,sail可以用来形式化testbench断言的参考模型,这些assertion可以根据sail spec来验证基于RISCV ISA的某微架构。目前该领域OneSpin GapFree已经在sail model和RTL代码间做了可比性的check,该公司仍在探索如何充分使用sail model

该语言将持续关注。

 

 

 

 

相关文章:

  • 2021-12-05
  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2021-10-20
  • 2021-10-05
猜你喜欢
  • 2021-05-15
  • 2021-11-24
  • 2022-02-22
  • 2021-04-14
  • 2021-09-18
  • 2021-05-22
  • 2021-10-25
相关资源
相似解决方案