中文 英语
系统与设计
的意见

通过验证为开源RISC-V内核增加价值

使用工业级技术验证PULP RI5CY核心的合作为社区提供了一套指导方针。

受欢迎程度

通过Steve Richmond (Silicon Labs), Mike Thompson (OpenHW Group), Lee Moore (Imperas Software)

现代SoC验证已经成熟到有些人建议在提到第一个硅样品时使用“原型”这个词现在是不必要的。这部分归功于商业EDA行业,它提供了贯穿整个设计过程的创新和工具,并且验证工作已经成为专门的会议和标准的专业。RISC-V的开源ISA引起了人们对自定义处理器设计选项和相关设计自由的极大兴趣,这超出了主流处理器IP提供商的路线图。因此,RISC - V使任何SoC开发人员都可以考虑设计定制的处理器,这反过来刺激了对基于UVM和SystemVerilog的既定SoC设计验证(DV)流程进行调整的兴趣,以解决处理器验证的复杂性。在此基础上,RISC-V的开源ISA重新燃起了人们对开源硬件IP的兴趣。在这样的背景下,OpenHW集团成立,使社区能够合作开发具有工业实力验证的开源硬件IP,以提供通常与商业IP质量相关的信任和信心。

但这篇文章不仅仅是一个典型的案例研究总结(是的,剧透警告,项目成功完成了)。在这里,我们强调,作为一个开源项目,项目的所有方面都可供社区使用,包括:

  • 所有文件包括验证策略和DV计划。
  • 测试工作台,测试用例和功能覆盖源代码。
  • 用于测试用例控制、回归和CI管理的脚本。
  • 里程碑完成的检查列表。
  • 代码和功能覆盖结果。

以上所有都是开源产品,可以“开箱即用”,也可以作为其他人遵循的指导方针。这为长期笼罩在神秘之中的处理器验证的黑暗角落和少数专业团队的秘密技术提供了聚光灯和洞察力。

OpenHW集团[1]制定了一个明确的目标:利用成员贡献的资源(人员、计算、工具)和专业知识开发具有工业实力验证的开源RISC-V处理器IP。使用PULP RI5CY内核作为起点是通用嵌入式内核的自然选择,因为它已经获得了一些普及。因此,通过基础核心捐赠,OpenHW core - v - verif项目是自然的起点,因此验证从一开始就是主要焦点。

第一步:测试的计划就是成功的计划

由于OpenHW组是来自不同组织的成员的集合,因此它们是围绕关键活动的典型任务组安排进行结构的。早期的验证任务小组会议有助于澄清可用的测试、测试台和其他开源示例项目的状态,并根据贡献成员的经验获得一般指导。宣称该项目为工业级知识产权对核查框架有影响。仅仅验证核心并产生一份报告是不够的。预计核心IP的未来采用者还需要访问测试平台和验证环境,以便在新SoC设计的IP选择过程中完成其尽职调查,并且/或在核心IP修改或扩展时作为开发过程中的参考。

这些想法和意图在验证策略计划中被捕获,并且由于测试计划将作为项目完成的指导,因此策略定义了总体目标。作为一个开源社区项目,这些计划和文档可以在OpenHW的CORE-V-DOCS GitHub存储库[2]上找到。

为了避免“锁定”任何单一的EDA供应商,测试平台和测试计划是围绕一组公共标准开发的,例如UVM和SystemVerilog,以及所有的脚本和设置,以允许采用者独立地和任何商业SystemVerilog供应商设置完整的测试环境。

OpenHW CORE-V CV32E40P:功能亮点

CV32E40P处理器IP核是一个体积小、功耗高的32位有序RISC-V核,具有4级管道。核心目标是具有性能和低功耗要求的应用,支持灵活的配置选项,以解决包括工业、物联网、消费和通用微控制器应用在内的一系列细分市场。

OpenHW验证环境:CORE-V-VERIF

  • 提供了一个强大的,全面的仿真环境的CV32E40P核心[1]
    • RISC-V规格参考- RV32IMCZifencei处理器[3]
  • 易于适应其他CORE-V核心,如CV32E40X, CV32E40S和CVA6。
  • 免费下载于GitHub: openhwgroup/core-v-verif [4]
  • 工业级验证
  • UVM环境
  • 在任何完全兼容systemverilog的模拟器上运行
  • 完整的代码覆盖
  • 定义良好的全面功能覆盖
  • 打开并完成验证计划[2]


图1:用于CV32E40P的OpenHW CORE-V-VERIF测试台。

CORE-V-VERIF CV32E40P试验台导览

图1所示的CORE-V-VERIF测试台是使用SystemVerilog基础设施围绕CV32E40P RTL构建的,由6个主要组件组成:

  • Corev-dv,谷歌开源ISG(指令蒸汽发生器)- riscv-dv[5]的扩展
  • 设计在测(DUT) - CV32E40P RTL
  • Imperas RISC-V参考模型[6]
  • 步进-比较状态机,使DUT和RM保持同步,并在每条指令退役时比较它们的状态。
  • UVM代理从测试程序异步地断言调试请求和中断。
  • 完整的功能覆盖模型,以演示DV计划中所有项目的覆盖。

core-v-verif指令流生成器(ISG)被称为corev-dv。它被实现为riscv-dv的扩展,即谷歌ISG。Riscv-dv是一个开源项目,它支持许多RISC-V ISA配置选项,以提供有效但随机的指令序列源。这些测试用不寻常且具有挑战性的指令序列和极端情况来测试处理器。值得注意的是,corev-dv扩展了riscv-dv SystemVerilog/UVM类,以创建增强的调试和中断功能。riscv-dv的底层实现没有任何改变,这使得core-v-verif可以在riscv-dv实现的过程中跟上新的riscv-dv功能,并根据需要添加特定于openhw的特性。

生成的测试程序被编译并在被测设备和参考模型上运行。这是通过将参考模型封装在SystemVerilog DPI中实现的,这样测试台就支持核心、测试台组件和参考模型的RTL的联合仿真。随着模拟的进行,收集所执行指令及其操作码的功能覆盖范围。RTL和RM之间的任何差异都被实时标记为UVM错误。不需要对示踪输出进行后处理来确定测试是否通过。除了ISG测试序列外,还可以应用其他测试套件、定向测试和RISC-V国际RISC-V架构验证测试套件[7]。

Step-and-Compare的快速指南

在上面的概要中,DUT和参考模型之间的比较是驱动整个验证过程的基本引擎。虽然单独的指令流可能会出现一些独特的极端情况,但对于处理器来说,一个主要的额外挑战是由异步中断和调试事件引起的交互。步进-比较方法(有时也称为锁步)在指令边界上维护DUT和参考模型之间的同步。这允许对异步事件进行受控和可重复的分析,还提供了任何差异的直接调试视图。在验证中,仅仅找到一个错误是不够的,快速准确地追踪到失败的根本原因并记录纠正措施是至关重要的。逐步比较方法允许在发现问题时平稳有效地过渡到调试和分析。

参考模型在处理器DV步进比较中的关键作用

Imperas参考模型本身对于确保状态比较结果的验证质量至关重要。Imperas模型为所有RISC-V规范提供了完整的包络功能,包括已批准的子集扩展和草案(正在积极开发中)。这还包括对不同版本级别的支持,例如2.2、2.3的用户规范或1.10、1.11的特权规范。在尚未批准的子集扩展方面,核心模型包含许多正在开发中,例如向量0.7到1.0,位操作0.90到当前草案,加上DSP和加密(标量)和调试0.13,2,0.14.0等。

随着各种RISC-V规范的成熟,预计未来的设计可能会基于跨基本和扩展选项的混合版本,可以在Imperas参考模型配置中轻松选择。模型本身作为二进制对象存在,在本例中通过DPI链接到SystemVerilog可执行文件。为了控制和观察模型的行为,它包含了一个控制和状态接口,以便同步执行,并提取完整和全面的体系结构状态以进行RTL比较。

下一步-扩展和/或修改CV32E40P

由于开源核心根据定义为采纳者提供了修改或扩展设计的机会,因此验证环境和参考模型支持这一点。

除了支持的配置设置和指令子集的标准集之外,Imperas参考模型还可以扩展到支持自定义扩展指令集,以及自定义控制/状态寄存器。更重要的是,这是作为扩展实现的,而不是对现有信封模型的修改,确保之前验证的功能不会被无意中修改,只是从其基础选择的功能进行扩展。这方面的一个很好的例子是Debug规范的包含和支持,该规范就其潜在的实现而言是高度可配置的。

调试规范的自定义行为可以在绑定到此自定义配置的基本模型的侧扩展中描述。

结论

通过敬业的工作和专家的协助,OpenHW验证工作组的成员和贡献者最近宣布:

  • CV32E40P RISC-V CPU经过全面验证,可作为开源RTL使用
  • CORE-V-VERIF UVM SystemVerilog测试台是开源的
  • 功能和代码覆盖率是100%
  • 所有测试通过
  • DV计划、覆盖报告和项目完成检查表都可以作为开源构件使用。

开源CV32E40P已被选为许多新的SoC设计项目的起点,并在Metrics Technologies提供的基于云的SystemVerilog环境支持的回归测试框架中积极维护。

欲知详情,请浏览以下连结,或联络我们www.imperas.com

参考文献
[1] OpenHW组https://www.openhwgroup.org

[2] OpenHW组文档库https://github.com/openhwgroup/core-v-docs

[3] RISC-V规格https://riscv.org/technical/specifications/

[4] OpenHW组验证存储库https://github.com/openhwgroup/core-v-verif

[5]谷歌ISGhttps://github.com/google/riscv-dv

[6] Imperas软件https://www.imperas.com/riscv

[7] RISC-V一致性测试https://github.com/riscv/riscv-arch-test

[8] PULP平台https://www.pulp-platform.org

作者要感谢他们的OpenHW验证任务组贡献者在CORE-V-VERIF项目开发和使用期间的所有辛勤工作、帮助和建议:Mike Thompson (OpenHW集团)、Steve Richmond (Silicon Labs)、David McConnell和Greg Tumbush (EM microelectronics - us)、Lee Moore (Imperas软件)和Aimee Sutton (Metrics Technologies)以及整个OpenHW成员和生态系统的所有支持者。我们也要感谢PULP平台团队[8]对OpenHW集团RI5CY核心的贡献。

Steve Richmond是Silicon Labs中央研发部门的设计验证经理,负责验证先进的计算引擎(AI/ML)、处理器和加速器。他还是OpenHW集团验证任务小组的联合主席,负责监督OpenHW核心验证方法的开发和执行,包括最近的CV32E40P。Richmond在网络、处理器和混合信号设计方面拥有超过20年的设计验证经验。

Mike Thompson是OpenHW集团工程、验证任务组的主管。他是一名高级IC功能验证工程经理,拥有超过20年的经验。Thompson领导了该学科的各个方面,具有广泛的模拟、仿真和原型设计经验,以及正式验证项目的管理经验。他拥有多个SV/UVM项目的实践经验和管理经验,并为约束随机、覆盖驱动的验证工作开发了驱动SV/UVM的团队。

Lee Moore是Imperas公司RISC-V处理器模型和仿真工具的首席工程师。在加入Imperas之前,Moore曾担任EDA供应商(如Co-Design Automation和Ambit)以及ASIC供应商NEC Electronics的高级咨询工程师。摩尔还是一名私人飞行员,最近开发了一种低成本的空中交通感知设备PilotAware,帮助飞机看到和被看到。



留下回复


(注:此名称将公开显示)

Baidu