平头哥开源RISC-V处理器C910仿真-FPGA常见问题社区-FPGA CPLD-ChipDebug

平头哥开源RISC-V处理器C910仿真

 

导言

最近花了点时间用VCS仿真了一下平头哥的开源RISC-V架构CPU,跑了几个case,但还没有时间去研究,仅仅是跑了一下,因为官方的教程没有特别的详细,加上有时候会出各种报错,所以把仿真的流程记录一下。

平台环境

Linux:CentOS7 仿真器:VCS2020 波形debug:Verdi2020 GNU tool chain:X86(2.6.0) 注意:我记录的问题仅在以上环境出现,并且后续版本不排除官方会修复一些问题,比如之前版本有脚本语法错误,当前版本就修复了。

前期准备

执行命令clone平头哥的仓库:

$git clone git@github.com:T-head-Semi/openc910.git

在官网下载工具链,官网地址如下:

https://occ.t-head.cn/community/download?id=4090445921563774976
Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz//这是我下载版本

下载完毕解压。

我放的目录如下:

└── openc910
    ├── C910_RTL_FACTORY
    │   ├── gen_rtl
    │   └── setup
    ├── doc
    │   ├── openc910_datasheet.pdf
    │   ├── QR_code_openXuantie.png
    │   ├── 347216204351223201C910347224250346210267346211213345206214.pdf
    │   └── 347216204351223201C910351233206346210220346211213345206214.pdf
    ├── LICENSE
    ├── README.md
    ├── smart_run
    │   ├── impl
    │   ├── logical
    │   ├── Makefile
    │   ├── setup
    │   ├── tests
    │   └── work
    └── tools
        └── newlib

执行:

$cd openc910/smart_run/setup // 进入该文件夹
$gvim example_setup.csh      // 打开文件

将如下一行修改为你自己的工具路径,就是你刚才下载并解压的工具链,这里我放在tools下,newlib就是那个解压后的工具,我改了个短的名字。

setenv TOOL_EXTENSION /usr/example/openc910/tools/newlib/bin

在smart_run目录下建立空文件夹work,这个文件夹我下载的代码版本缺失,实际需要用来存放仿真的一些文件。

注意C910_RTL_FACTORY文件夹下有个setup文件,里面是setup.csh,执行:

$cd openc910/C910_RTL_FACTORY/setup
$csh
$source setup.csh
Root of code base has been specified as:
    /usr/example/openc910/C910_RTL_FACTORY

继续执行:

$cd openc910/smart_run/setup
$csh
$source setup.csh
Toolchain path($TOOL_EXTENSION):
    /usr/example/openc910/tools/newlib/bin(你之前设置的工具路径)

最后一步修改文件夹smart_run下的Makefile 执行make help会打印可用的命令,如果你下载的和我是一个版本的代码,执行完会有报错,是因为最后几行打印信息,把”号丢掉了,大家添加上即可。文件中这2处如下设置,注意,我这里仅用VCS仿真,所以DUMP默认我就打开,后续命令就不用重复输出命令。

SIM = vcs
DUMP = on

关于VCS的命令SIMULATOR_OPT处,修改为如下,对于2020版本最后加-debug_acc+all -debug_region+cell+encrypt,如果是比较老的版本加-debug_all,因为新版本快不支持-debug_all了,如果用这个命令,VCS会给警告。

SIMULATOR_OPT := -sverilog -top tb -full64 -kdb -lca -debug_access +nospecify +notimingchecks +lint=TFIPC-L -debug_acc+all -debug_region+cell+encrypt

仿真生成的文件以及log,全部在work文件夹,波形文件名字为:novas.fsdb大家进入work执行相关命令,用verdi打开文件即可,也可以在makefile中添加命令:

verdi:
 @cd ./work && verdi -sv -f ../logical/filelists/sim.fl -ssy -ssv -top tb -ssf novas.fsdb &

这样就可以直接用命令直接打开波形文件了。

仿真

前期准备工作完成,执行命令make showcase 打印可用的case,如下:

  Case lists:  
    ISA_AMO
    smoke_bus
    debug_gpr
    ISA_THEAD
    cache_op
    debug_memory
    ISA_FP
    ISA_IMAC
    coremark
    hello_world
    MMU
    csr
    ISA_BARRIER
    plic_int
    sleep

我们执行一个hello_world,输入命令:make runcase CASE=hello_world如果你用其他仿真器(例如Verilator),后面需要添加SIM=Verilator,或者makefile文件里面修改默认值。执行make help,会打印出执行命令的格式。

执行完,命令行打印如下:

Hello Friend!
Welcome to T-HEAD World!
!!! PASS !!!after ASM c is cangedd to 3!

**********************************************


simulation finished successfully


**********************************************


$finish called from file “../logical/tb/tb.v”, line 273.
$finish at simulation time            917950000
V C S   S i m u l a t i o n   R e p o r t
Time: 91795000000 fs
CPU Time:     16.990 seconds;       Data structure size:  83.6Mb


然后执行make verdi 就可以打开波形了

图片[1]-平头哥开源RISC-V处理器C910仿真-FPGA常见问题社区-FPGA CPLD-ChipDebug

总结

简单给个教程,减少大家查错误和看文档的时间,如果还有遇到一些问题,还可以和我讨论,当前就先把仿真跑起来,这个开源CPU还是值得一学的,尽管被删减了不少功能。

 

请登录后发表评论