蜂鸟E203运行Verilog仿真测试

  • Post author:
  • Post category:其他




系列文章目录


第一章 蜂鸟E203运行Verilog仿真测试





前言

最近才入门RISC-V处理器设计,一个纯纯的小白,从蜂鸟E203开始学习,以此记录学习过程。这篇文章主要讲了如何在Linux系统下进行蜂鸟E203的verilog仿真测试。




一、预先准备

1. 蜂鸟E203开源项目

https://github.com/riscv-mcu/e203_hbirdv2


2. Linux操作系统(本文使用Ubuntu 20.04)

3. GCC工具链

4. iverilog 12



二、测试集

下载好项目解压后,文件中已经包含了测试用例。蜂鸟E203使用的测试用例源于RISC-V架构正式维护的riscv-tools项目,这个项目可以在Github上搜索riscv/riscv-tools,里面包含许多内容,而蜂鸟为了方便舍去了其中的部分内容,将项目里的测试用例进行了修改,添加了更多的测试用例。由于文件大小变得很小,也方便快速下载。

测试程序主要由汇编程序编写,目的是为了测试指令集架构中定义的指令是否正确。下面是测试add的汇编程序(源代码在isa/rv64ui/add.S),例如第二行的代码,0x00000001与0x00000001相加,期望结果设为0x00000002,测试通过则进行下一个测试点,对 0x00000003和0x00000007相加结果进行测试,通过则继续下一个测试点,如果测试不通过则跳转到TEST_FALT地址;如果每个测试点都通过,最后则会执行到TEST_PASS。

测试add的部分汇编程序代码如下:

1.	TEST_RR_OP( 2,  add, 0x00000000, 0x00000000, 0x00000000 );  
2.	TEST_RR_OP( 3,  add, 0x00000002, 0x00000001, 0x00000001 );  
3.	TEST_RR_OP( 4,  add, 0x0000000a, 0x00000003, 0x00000007 );  
4.	  
5.	TEST_RR_OP( 5,  add, 0xffffffffffff8000, 0x0000000000000000, 0xffffffffffff8000 );  
6.	TEST_RR_OP( 6,  add, 0xffffffff80000000, 0xffffffff80000000, 0x00000000 );  
7.	TEST_RR_OP( 7,  add, 0xffffffff7fff8000, 0xffffffff80000000, 0xffffffffffff8000 );  
8.	  
9.	TEST_RR_OP( 8,  add, 0x0000000000007fff, 0x0000000000000000, 0x0000000000007fff );  
10.	TEST_RR_OP( 9,  add, 0x000000007fffffff, 0x000000007fffffff, 0x0000000000000000 );  
11.	TEST_RR_OP( 10, add, 0x0000000080007ffe, 0x000000007fffffff, 0x0000000000007fff );  
12.	  
13.	TEST_RR_OP( 11, add, 0xffffffff80007fff, 0xffffffff80000000, 0x0000000000007fff );  
14.	TEST_RR_OP( 12, add, 0x000000007fff7fff, 0x000000007fffffff, 0xffffffffffff8000 );  
15.	  
16.	TEST_RR_OP( 13, add, 0xffffffffffffffff, 0x0000000000000000, 0xffffffffffffffff );  
17.	TEST_RR_OP( 14, add, 0x0000000000000000, 0xffffffffffffffff, 0x0000000000000001 );  
18.	TEST_RR_OP( 15, add, 0xfffffffffffffffe, 0xffffffffffffffff, 0xffffffffffffffff );  



三、仿真步骤



STEP1 下载项目

下载好开源项目,然后解压。

在这里插入图片描述



STEP2 编译RTL文件

先进入vsim文件夹中,然后打开命令行窗口,使用命令make install CORE=e203,会生成install文件夹,在其中放置所需要的脚本,且将脚本中的关键字设置为e203。

make install CORE=e203

在这里插入图片描述

使用命令make compile,编译Core和Soc的RTL代码。

make compile

在这里插入图片描述



STEP3 运行默认的一个测试用例

使用命令make run_test,等待程序执行,运行结束后,将会打印出“PASS”,即通过测试用例。

make run_test

在这里插入图片描述

可以关注寄存器


X3


的值,如果测试通过


X3


为1,否则为0.

在这里插入图片描述



STEP4 运行回归测试集

使用命令make regress_run CORE=e203,然后等待各个testcase逐个运行。这一步等待时间会比上一个步骤长许多,因为需要测试多个测试集。这一步感觉等了好几分钟。

make regress_run CORE=e203

在这里插入图片描述

命令行窗口中打印了许多测试结果,观察不是特别方便,可以使用命令make_regress_collect CORE=e203,可以在vsim/run里查看各个log文件。

make_regress_collect CORE=e203

在这里插入图片描述

在这里插入图片描述




总结

测试集只能测试一些基本功能,例如加法,乘法等,能否成功运行,并不能保证处理器的功能完备与正确。处理器的验证与普通数字电路的验证有较大的区别,需要专门的验证方法学和专业手段,工作量极大。



版权声明:本文为MisakaBilibili原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。