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

从内部角度验证自定义RISC-V处理器内核

RISC-V验证生态系统如何支持定制处理器设计的灵活性。

受欢迎程度

作者:Shubhodeep Roy Choudhury, Valtrix Systems, Lee Moore, Imperas Software
支持图片由Bill McSpadden提供,Seagate Technology

本文来源于2020年12月RISC-V峰会上的一次谈话,Bill McSpadden是微软的首席验证工程师希捷科技,介绍了他的团队在验证过程中所面临的挑战和经验两个自定义RISC-V处理器核心.虽然在技术会议上的技术演示可能并不完全出乎意料,但独特的部分是坦率地承认,在没有任何炒作或宣传的情况下,团队解决了当今行业中一些最具挑战性的验证问题——一个经验丰富的SoC团队如何验证定制的RISC-V处理器。本文捕获了演示文稿的一些亮点,并包括来自工具供应商Valtrix和Imperas的额外信息。

这个问题
我们面临的挑战是使用新的嵌入式处理器核心来提高HDD(硬盘驱动器)伺服控制器的性能,这超出了现有IP提供商的主流产品。硬盘伺服控制器的关键需求可以概括为:数学密集型应用程序工作负载,实时计算,并在固定的时间边界内。虽然某些方面可能与其他通用嵌入式应用程序相似,但很明显,当前的处理器IP系列路线图不足以满足需求。因此,伺服处理器的性能将达到最大,从而成为HDD顶级功能和性能的定义极限。

解决方案
该解决方案围绕新的高性能核心(HPC)开发,并对以下技术细节进行了高层总结:RISC-V规范参考[1]RV32IMFCN;机器和用户模式;推测性管道故障;4-wide取回和分派;8宽问题(峰值),高性能指令获取,包括分支预测;返回地址堆栈;和循环缓冲区。另外,双端口负载存储单元;大L1紧密集成存储器;多路L1缓存; decoupled high-performance FPU; PLIC (platform-level interrupt controller); native ECC support; and RISC-V debug and trace support. In short, an advanced processor design targeted at the key requirements for the HDD servo controller.

作为第一个核心的伙伴,项目范围扩展到作为并行项目共同开发区域优化通用控制器核心。区域优化核心的技术细节亮点包括:RISC-V规范参考[1]RV32/64IMCBN;机;主管;用户模式,支持SV39/SV32虚拟内存;5阶段,单次发行,有序管道;核心-本地中断控制器;加强PMP;专注于可选的安全功能;本机ECC支持; and RISC-V debug. Clearly this companion project achieved many efficiencies and advantages overall, but also expanded the workload and pressure on the verification team.

核实问题
这些基于工程规范的解决方案也提出了一个新的问题。作为所有特性和配置选项的结果,验证任务将非常重要。为了解决跨多个设计的一系列需求和用例需求,配置选项包括:核心架构(32/64位,支持的扩展)和核心架构的配置(机器/管理器/用户模式,支持的寻址,CSR位,实现等)。这导致了大量的排列,这给验证和验证工程师带来了一个非常严重的问题。

“我们怎么可能测试所有的配置/模式?比尔·麦克斯帕登(Bill McSpadden)在热情的开场白中问道。他接着解释说:“有经验的DV工程师至少知道一种解决这个问题的方法:约束随机验证环境(CRVEs)。”

因此,通过验证计划和围绕RISC-V处理器设计的DV挑战的一些深刻见解,为一个有趣的指南奠定了基础。

试验台
试验台是测试计划的中心。这是基于验证IP (VIP),指令退休监视器,和UltraSoC(现在是西门子EDA的一部分)指令跟踪解码器。fabric VIP和调试端口VIP被设置为在执行代码时向DUT(被测设备)注入刺激,这样就可以观察到活动——例如程序缓冲区执行、单步进、寄存器读取、CSR读取、抽象调试命令和中断——从而直接与核心的执行交互,并测试它是否正确响应。框图见图1。


图1:试验台架。

带有随机指令序列和记分牌的试验台
为了在测试台框架内运行核心,希捷团队开发了一个软件流程,如图2所示。指令生成器由Valtrix Systems[2]提供,它生成带有数万个文件的测试。它们在RTL模拟上运行,因此会生成两个基于指令退役监视器和UltraSoC跟踪输出的日志文件。这使得两个选项都可以与在Imperas RISC-V黄金参考模型[3]上运行的相同输入刺激进行比较,该模型是团队在任何“放行/不放行”录制决策时的首选模型。这种跟踪比较方法在检查指令序列时支持记分,在异常边界处支持CSR,并过滤掉陷阱处理程序的执行。


图2:随机指令序列和记分牌。

正在运行的测试计划的重点
对于每一个核心,希捷计划都使用了许多类似的组件和结构:

  1. 用面料VIP搭建测试台,加调试和跟踪VIP
  2. 使用Valtrix STING随机指令序列生成作为公共源
  3. 注入随机刺激(如调试端口上的调试抽象命令、程序缓冲区执行、单步执行、中断)
  4. 比较在核心RTL和架构Imperas黄金参考模型上运行的相同指令序列,以直接比较正确的行为

团队按照这种方法和流程进行了大量的模拟循环,在每晚的基础上运行数千到数万个测试,然后仔细检查和分析生成的日志文件比较报告。

RISC-V验证生态系统
在EDA和工具生态系统中,有许多选项可用于协助验证工作。这些工具包括:

本项目使用的约束随机指令序列生成器是STING,由Valtrix Systems提供。STING受到限制,以允许测试集中在特定的序列上。测试序列可以基于代码片段或Valtrix提供的片段,并添加新的片段以解决覆盖缺口。这是覆盖驱动验证的一个经典示例,它是衡量处理器核心DV任务完成进度的非常有用的方法。

RISC-V黄金参考模型被用作“可行/不可行”模型,以确定RTL在设计、测试、规范或测试台方面的正确行为和差异、错误或问题。

Valtrix指令序列生成器和Imperas Golden RISC-V参考模型的结合成为支持验证任务的基本伙伴关系。意外情况首先报告给Valtrix, Valtrix使用Imperas管理解决过程,包括每两周召开一次进度会议,定期更新情况,并在多个时区提供良好的响应时间。

麦克斯帕登说:“双方的关系一直很好。“STING发生器提供了出色的功能覆盖,我们可以在测试台架环境中进行测量。”

他说:“Imperas Golden RISC-V参考模型帮助我们在核心中发现了许多漏洞。”“然而,RISC-V架构测试没有发现任何错误,这是意料之中的,因为架构测试是完全验证的子集。”

结果
McSpadden指出:“我们的伺服固件在硅芯片到货后几周内就开始运行了。真正的应用软件运行在真正的硬件上,进行真正的磁盘访问。我们的总结‘按预期工作’最终归功于我们专业团队的所有努力,以及Valtrix、Imperas和RISC-V验证生态系统其他成员的支持。”

结论
RISC-V的开放标准ISA允许所有设计团队探索定制处理器设计的巨大灵活性。从最初的概念和特性权衡讨论开始,应该包括对处理器验证的考虑和影响。不断增长的RISC-V验证生态系统(包括Valtrix、Imperas和许多其他系统)可用于帮助和支持RISC-V规范的充分灵活性。

参考文献
[1]请参见RISC-V规范https://riscv.org/technical/specifications/
Valtrix系统公司https://www.valtrix.in
[3] Imperas软件https://www.imperas.com
riscvOVPsimPlus,免费的RISC-V参考模型https://www.ovpworld.org/riscvOVPsimPlus/

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



留下回复


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

Baidu