芯片原厂必学课程 - 第十篇章 - 基于 RISC-V SoC 的 1024 点 FFT 设计
10-02-08 RISC-V 交叉编译的功能验证
新芯设计:专注,积累,探索,挑战
文章目录
引言
本次项目主要设计了一个基于 RISC-V 指令集架构的 SoC,这是一个具有 1024 点的时频转换功能的 FFT 系统。在理想情况下,只要指令存储器和数据存储器的容量足够大,基本上可以实现任意点的 FFT。本章《基于 RISC-V SoC 的 1024 点 FFT 设计》针对 1024 点的 FFT,首先给出了 FFT 系统的整体架构和 RISC-V 内核的硬件设计。接着,对于 RISCV 交叉编译环境的搭建进行了相关的概述。最终,针对基于 RISC-V SoC 的 FFT 设计,构造了基于软硬件协同仿真验证的 UVM 框架,证实了大点数 FFT 的 C 软件程序及其 RISC-V 硬件设计系统功能的正确性。
基于 RISC-V 交叉编译的环境搭建完成之后,对于其中的编译工具功能的正确性以及软件开发环境的可行性,可以通过下文的两种方式来加以验证。
NOTES:本文来自《芯片原厂必学课程 - 第十篇章 - 基于 RISC-V SoC 的 1024 点 FFT 设计》技术专栏
🌏 一、基于 Spike 模拟器的验证方式
这是一种通过安装 Spike 模拟器,自动构建虚拟的 RISC-V 指令集架构,来对最终的 ELF 可执行文件进行验证的方式。这里,Spike 模拟器几乎支持任意的指令集模块组合和架构位数,可以测试我们所搭建的 RISC-V 交叉编译工具链是否可以正常工作以及源程序的代码编写是否是正确的。这里,以一个基于简单的加法、乘法以及串口打印功能组合而成的 Demo.c 文件为例。
按照前面的 RISC-V 交叉编译流程,对 Demo.c 进行交叉编译,生成一系列的文件。
最终,通过“spike pk Demo”命令来调用 Spike 模拟器,进而执行 Demo 文件,相关的仿真结果如下所示。在 PC 主机的 Linux 客户端上正确显示了“This year is 2021”,从而证实了所搭建的基于 Linux 的 RISC-V 交叉编译环境是可以正常工作的。
🌏 二、基于 RISC-V 软核和 Vivado 软件的验证方式
第一种验证方式主要是针对软件编译工程师而言,较为简单。而对于想要进一步验证自己所设计的 RISC-V 处理器能否正常工作的设计人员来说,则可以采用基于 RISC-V 软核和 Vivado 软件的第二种验证方式。这种验证方式的前提是你必须要有一个 RISC-V 处理器,无论是软核的还是硬核的。软核就是指该 RISC-V 处理器是由 Verilog 等硬件描述语言设计和封装而成的一个 IP,硬核就是指该 RISC-V 处理器经过流片生成的实际的集成电路。
以基于 Verilog 设计的 RISC-V 软核且基础开发环境为 Xilinx 的 Vivado 软件为例。首先,将 Demo 可执行文件转为 Demo.coe 格式的 ROM 初始化文件,载入到 RISC-V 处理器的指令存储器中。接着,搭建简单的测试平台,编写相应的仿真激励文件。最后,查看 UART 接口对应的寄存器“UART_REG1”的时序仿真波形,可以转为有符号十进制的格式来查看。如下所示,最终得到的UART寄存器的数据为“2021”。这样就不仅仅验证了本次 GCC 工具链的开发以及 RISC-V 交叉编译环境搭建的正确性,同时,还验证了 C 程序以及 RISC-V 处理器核指令执行的功能的正确性。