蜂鸟E203运行Verilog仿真测试

系列文章目录

第一章 蜂鸟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

在这里插入图片描述
在这里插入图片描述


总结

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

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值