《基于“矿板”低成本学习FPGA》移植OpenC906第三篇-跑仿真
一.
前言
前面我们移植了 openc906 到淘到的 fpga 板子上,生成了 bit 文件。打样的扩展板和器件还没准备好,趁着这个时间我们来跑一遍 openc906 的仿真,熟悉下。
这里开发环境基于 win11+WSL2+Ubuntu24, wsl 环境准备可以参考之前分享的文章。
二
.
准备工作
2.1
下载源码
git clone
https://github.com/XUANTIE-RV/openc906.git
如果连接不上可以取消代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
2.2
安装必备工具
sudo apt install make
sudo apt install gtkwave iverilog
2.3CSH
配置
sudo su
切换到
root
用户
2.3.1
安装
csh
sudo apt install csh
2.3.2
切换
bash
为
csh
sudo
nano /etc/passwd
将最后的
/bin/bash
改为
/bin/csh
Ctrl+x 退出 , 提示是否保存修改 , 输入 y 回车修改后退出。
重新打开终端,
sudo su
切换到
root
用户,并
echo $SHELL
查看是否切换到了
CSH
2.2.3
配置环境
cd openc906/C906_RTL_FACTORY/
source setup/setup.csh
2.4
编译工具链配置
2.4.1
下载工具链
从以下地址下载
https://www.xrvm.cn/community/download?id=4352528597269942272
我这里下载的是
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.2-20240904.tar.gz
wget https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1725611943439/Xuantie-900-gcc-elf-newlib-x86_64-V2.10.2-20240904.tar.gz
解压
tar -zxvf Xuantie-900-gcc-elf-newlib-x86_64-V2.10.2-20240904.tar.gz
2.4.2
配置工具链路径
sudo nano openc906/smart_run/setup/example_setup.csh
设置工具链路径为
setenv TOOL_EXTENSION /home/qinyunti/Xuantie-900-gcc-elf-newlib-x86_64-V2.10.2/bin
source openc906/smart_run/setup/example_setup.csh
提示语法错误
root@qinyunti:/home/qinyunti# source openc906/smart_run/setup/example_setup.csh
bash: /*Copyright: No such file or directory
bash: openc906/smart_run/setup/example_setup.csh: line 3: syntax error near unexpected token `('
bash: openc906/smart_run/setup/example_setup.csh: line 3: `Licensed under the Apache License, Version 2.0 (the "License");'
把前面的
license
部分注释掉
三
.
编译
cd openc906/smart_run/
每次重新打开过终端后以下两条指令都需要执行
source ../C906_RTL_FACTORY/setup/setup.csh
source
.
/setup/example_setup.csh
make help
可以查看命令
进行编译
make compile
,提示没有
work
目录需要手动创建
root@qinyunti:/home/qinyunti/openc906/smart_run# make compile
[THead-smart] Compiling smart now ...
[THead-smart] SIM = iverilog
/bin/sh: 1: cd: can't cd to ./work
make: *** [Makefile:65: compile] Error 2
创建
work
目录
mkdir work
在此编译提示以下错误
qinyunti% make compile
[ ] Compiling smart now ...
[ ] SIM = iverilog
iverilog: cannot open command file /gen_rtl/filelists/C906_asic_rtl.fl for reading.
make: *** [Makefile:65: compile] Error 1
qinyunti%
gen_rtl/filelists/C906_asic_rtl
位于
C906_RTL_FACTORY
目录下而不是
/
目录下
查看
Makefile
文件
sudo nano Makefile
路径如下
ifeq ($(SIM), iverilog)
SIM_FILELIST := $(SIM_FILELIST) -f ${CODE_BASE_PATH}/gen_rtl/filelists/C906_asic_rtl.fl -f ${CODE_BASE_PATH}/gen_rtl/filelists/tdt>else
SIM_FILELIST := $(SIM_FILELIST) -f ../logical/filelists/sim.fl
endif
qinyunti% echo ${CODE_BASE_PATH}
/home/qinyunti/openc906/smart_run
看到目录对应不上
必须要位于
openc906/C906_RTL_FACTORY
下执行
source ./setup/setup.csh
才会将
${CODE_BASE_PATH}
设置为
openc906/C906_RTL_FACTORY
路径才能对应上。
所以正确步骤如下,每一步的路径都要对。
假设当前位于
openc906
外,
cd openc906/C906_RTL_FACTORY
source ./setup/setup.csh
然后
cd
..
/smart_run/
source
.
/setup/example_setup.csh
然后再
make compile
如果还有提示
qinyunti% make compile
[THead-smart] Compiling smart now ...
[THead-smart] SIM = iverilog
xuantie_core.vvp: Permission denied
error: Code generator failure: -1
make: *** [Makefile:65: compile] Error 255
则使用注意要切换到
root
用户执行
四
.Runcase
在
work
目录下生成了
vvp
文件
qinyunti# ls work
xuantie_core.vvp
qinyunti#
make showcase
可以看到
caselist
qinyunti# make showcase
Case lists:
ISA_THEAD
ISA_INT
ISA_LS
ISA_FP
coremark
MMU
interrupt
exception
debug
csr
cache
qinyunti#
执行
coremark
make runcase CASE=coremark
提示如下错误
qinyunti# make runcase CASE=coremark
[THead-smart] Compiling smart now ...
[THead-smart] SIM = iverilog
Toolchain path: /home/qinyunti/Xuantie-900-gcc-elf-newlib-x86_64-V2.10.2/bin
/bin/sh: 1: Syntax error: Bad fd number
make[2]: *** [setup/smart_cfg.mk:61: coremark_build] Error 2
make[1]: *** [Makefile:101: buildcase] Error 2
make: *** [Makefile:125: runcase] Error 2
qinyunti#
先跳到
/bin
cd /bin
cp bash ./sh
再回到 smart_run 目录下,重新 runcase
还有错误
qinyunti# make runcase CASE=coremark
[THead-smart] Compiling smart now ...
[THead-smart] SIM = iverilog
Toolchain path: /home/qinyunti/Xuantie-900-gcc-elf-newlib-x86_64-V2.10.2/bin
make[2]: *** [setup/smart_cfg.mk:61: coremark_build] Error 2
make[1]: *** [Makefile:101: buildcase] Error 2
make: *** [Makefile:125: runcase] Error 2
qinyunti#
查看
log
sudo nano work/coremark_build.case.log
看到如下错误
原来是
Srec2vmem
无可执行权限
添加可执行权限
sudo chmod a+x ./tests/bin/Srec2vmem
重新
runcase
make runcase CASE=coremark DUMP=on
DUMP=on
表示生成
vcd
文件。
跑
coremark
我电脑太慢了,换个简单点的跑
make runcase CASE=csr DUMP=on
这个很快就跑完了
五.
查看波形文件
波形文件位于
work
目录下
test.vcd
输入
gtkwave
回车,打开
gtkwave
打开文件
此时可以双击左边的信号,查看波形
六
.
总结
以上跑了一遍仿真,初步了解了整个流程,整个过程有如下几点需要注意
1.
需要手动创建
work
目录
2.
需要切换
bash
为
csh,
先要安装
csh
,使用
root
用户,避免后面权限问题, 注意需要修改
root
用户的
bash
为
csh
。
3.
设置环境,注意一定要在
openc906/C906_RTL_FACTORY
下
source
,否则目录不对找不到
C906_asic_rtl.fl
文件。
cd openc906/C906_RTL_FACTORY
source ./setup/setup.csh
4.
设置编译器
cd
..
/smart_run/
source
.
/setup/example_setup.csh
example_setup.csh文件
中前面使用了
/**/
注释不符合语法,改为
#
注释掉。
5.
复制
/bin/bash
到
/bin/sh
下
cd /bin
cp bash ./sh
6.
Srec2vmem
文件添加可执行权限,
sudo chmod a+x ./tests/bin/Srec2vmem