蜂鸟E203 仿真之路
本文记录自己在学习蜂鸟E203的过程。下面简单介绍一下仿真之路所遇到的困难和走过的坑。
1、环境开发 :一般选择ubuntu 18.04 这个版本,安装这个教程很多,可以自行学习。
2、在Linux中安装工具:
sudo apt-get install autoconf automake autotools-dev curl device-tree-compiler libmpc-dev libmpfr-dev libgmp-dev
gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev git
3、下载 e203_hbirdv2 project 选择其中一种即可。
git clone https://github.com/riscv-mcu/e203_hbirdv2.git
git clone https://gitee.com/riscv-mcu/e203_hbirdv2.git
4、编译工程自带例程 ,下载芯来的工具链
芯来工具链官网:芯来工具链_专业RISC-V处理器IP及解决方案公司 (nucleisys.com)

下载好 RISC-V GNC toolchain 后,可以将压缩包直接拖进虚拟机中。可以看到如下:

接下开始配置riscv- tests。打开终端,在终端中操作如下命令:
cp nuclei_riscv_newlibc_prebuilt_linux64_2022.12.tar.bz2 ~/ cd ~/ tar -xjvf nuclei_riscv_newlibc_prebuilt_linux64_2022.12.tar.bz2 cd <your_e203_dir>/ mkdir -p ./riscv-tools/prebuilt_tools/prefix/bin cd ./riscv-tools/prebuilt_tools/prefix/bin/ ln -s ~/gcc/bin/* .
其中 两个地方需要注意:
nuclei_riscv_newlibc_prebuilt_linux64_2022.12.tar.bz2 这里是根据自己下载的工具版本而定。
your_e203_dir 是自己的E203存放目录。
注意最后一步有的是这样的命令:
ln -s ~/nuclei_riscv_newlibc_prebuilt_linux64_2022.12.tar.bz2/gcc/bin/\* .
完成之后,开始编译测试:
cd <your_e203_dir>/riscv-tools/riscv-tests/isa source regen.sh
完成之后,进行跑仿真,需要安装两个软件 iverilog+gtkwave 或者 VCS+Verdi 。这里我们以iverilog+gtkwave 为说明。
注意:如果要使用iverilog为仿真工具,确保这个工具版本为12.0。
安装 iverilog 和gtkwave 命令如下:
# 从github下载
git clone https://github.com/steveicarus/iverilog.git
#进入iverilog目录
cd iverilog
#检测依赖文件、配置环境并编译
sh autoconf.sh
./configure
make
#运行测试demo检查是否编译成功
make check
#安装iverilog
sudo make install
#查看iverilog的版本
iverilog –v
#安装波形查看工具
sudo apt-get install gtkwave
注意:安装iverilog12.0时vvp_proc_loops.c:28:31: error: initializer element is not constant static unsigned break_label = LABEL_NONE?这里会报错!
解决方案:找到这个c文件把这两个信号声明后面的“= LABEL_NONE”去掉,在之后的两个int()块里面再分别加上= LABEL_NONE赋值就行。
#找到该文件
cd ~/iverilog/tgt-vvp
#使用vim或者gvim 打开该文件 并修改。保存
gvim vvp_proc_loops.c


在安装好iverilog 和gtkwave 后,我们开始综合网表。
# cd ~/e203_hbirdv2/vsim 进入自己文件存放位置
cd ~/<your_e203_dir>/vsim
make clean
make install
make compile SIM=iverilog
综合网表成功后,可以运行仿真。
make run_test SIM=iverilog
成功仿真界面:

注意:如果出现错误 /bin/sh: Syntax error: “&” unexpected,则需要转换shell类型为bash:
# 查看shell类型,需要将dash改成bash
ls -l /bin/sh
sudo dpkg-reconfigure dash
#选择 no
查看波形:
// Using Verdi:
make wave SIM=vcs // Using GTKWave:
make wave SIM=iverilog

运行一下命令进行回归测试,并查看回归结果:
// For VCS:
make regress_run SIM=vcs // For iVerilog:
make regress_run SIM=iverilog
make regress_collect

至此,仿真成功。
参考资料:
1、Hummingbirdv2 E203 仿真排坑之路 - 简书 (jianshu.com)
2、4.1. How to run simulation — Hummingbirdv2 E203 Core and SoC 0.2.1 documentation (nucleisys.com)
蜂鸟E203 仿真之路的更多相关文章
- 蜂鸟E203系列——Linux开发工具
欲观原文,请君移步 Vivado安装 vivado是运行工程的工具,所以必须安装 后台回复[vivado2017]可获取vivado 2017.4 | 后台回复[vivado2020]可获取vitis ...
- 蜂鸟E203系列——Linux调试(GDB+Openocd)
欲观原文,请君移步 本文基于文章<蜂鸟E203系列--利用 Hbrid-E-SDK 环境开发程序> GDB 简介 GDB(GNU Project Debugger),是 GNU 工具链中的 ...
- 手把手教你蜂鸟e203移植(以Nexys4DDR为例)
准备工作:(网盘链接:) 1.蜂鸟e203的RTL源码: 2.一段分频代码: 3.顶层设计文件(system.v) 4.开发板文件: 5.Nexys4DDR电路图: 6.Nexys4DDR管脚约束模板 ...
- 蜂鸟E203 IFU模块
E203的IFU(instruction fetch unit)模块主要功能和接口如下: IFU的PC生成单元产生下一条指令的PC. 该PC传输到地址判断和ICB生成单元,就是根据PC值产生相应读指请 ...
- 蜂鸟E203系列——Linux下运行hello world例程
欲观原文,请君移步 创建程序 在 -/hbird-e-sdk-master/software 路径下创建一个"helloworld"中文件夹 在 -/hbird-e-sdk-mas ...
- IIC_slaver 的仿真之路
IIC_slaver 是网上下载的.testbench文件是自带的,出现如图错误. compile >> compile option >> include direct ...
- 真正的RISC-V开发板——VEGA织女星开发板开箱评测
前言 由于最近ARM公司要求员工"停止所有与华为及其子公司正在生效的合约.支持及未决约定",即暂停与华为的相关合作,大家纷纷把注意力投向了另一个的处理器架构RISC-V,它是基于精 ...
- RISCV 入门 (学习笔记)
文章目录 1. risv 相关背景 1.1 arm 授权费 1.2 riscv 发展历史 1.3 riscv 风险 2. 指令集 2.1 可配置的通用寄存器组 2.2 规整的指令编码 2.3 简洁的存 ...
- 痞子衡嵌入式:盘点国内RISC-V内核MCU厂商(2018年发布产品)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内RISC-V内核MCU厂商(2018). 虽然RISC-V风潮已经吹了好几年,但2019年才是其真正进入主流市场的元年,最近国内大量 ...
- UART学习之路(四)VerilogHDL实现的简单UART,VIVADO下完成仿真
用VerilogHDL实现UART并完成仿真就算是对UART整个技术有了全面的理解,同时也算是Verilog入门了.整个UART分为3部分完成,发送模块(Transmitter),接收模块(Recei ...
随机推荐
- vue项目PC端如何适配不同分辨率屏幕
配置前言 项目构建:基于vue-cli3构建,使用postcss-px2rem px2rem-loader插件进行rem适配实现原理:每次打包,webpack通过使用插件postcss-px2rem, ...
- 微信小程序客服、支付、定位、下拉加载功能
一.客服功能 1.只要你微信小程序,后台添加了客服,引用以下button,就可以进入聊天(在小程序官网如何添加客服用户,请自行百度,谢谢) 2.通过按钮方式 <button open-type= ...
- Docker入门与实战-Docker镜像的使用
Docker入门与实战 二.Docker镜像的使用 1.获取镜像 命令:docker [image] pull image-name[:tag] 说明: name为镜像仓库名称,严格来说, ...
- 深入浅出 OkHttp 源码解析及应用实践
作者:vivo 互联网服务器团队- Tie Qinrui OkHttp 在 Java 和 Android 世界中被广泛使用,深入学习源代码有助于掌握软件特性和提高编程水平. 本文首先从源代码入手简要分 ...
- GitHub上SSH keys和Deploy keys的区别
平时安装一个git然后去GitHub进行SSH keys 配置最后就开始使用,然后换一台电脑再使用$ ssh-keygen -t rsa -C "your email"生成一个ss ...
- WPF入门实例 WPF完整例子 WPF DEMO WPF学习完整例子 WPF实战例子 WPF sql实例应用 WPF资料源码
WPF 和 WinForms 都是用于创建 Windows 桌面应用程序的开发框架,它们有一些相似之处,但也有很多不同之处. 在开发速度方面,这取决于具体情况.如果您熟悉 WinForms 开发并且正 ...
- # 代码随想录算法训练营Day10 栈与队列| 理论基础 232.用栈实现队列 225. 用队列实现栈
栈与队列理论基础 队列是先进先出,栈是先进后出 关于栈的四个问题 C++中stack 是容器么? 我们使用的stack是属于哪个版本的STL? 我们使用的STL中stack是如何实现的? stack ...
- Lucene检索全流程学习笔记
一 简介 写作目的 1 为什么学习Lucene lucene是基于倒排索引的检索工具库,倒排索引是典型的文本匹配,它能够精确匹配用户搜索的query,它的缺点是不擅长语义理解,而深度学习检索模型擅长的 ...
- 阿里云ASK试用心得(避坑贴)
前言 常年BP阿里云的各种服务,今天却被阿里云给上了一课,这一套组合拳把我安排的明明白白,血亏50大洋,算是提前为各位大佬排坑了,预祝大家中秋快乐 目的 最近阿里云首页放出了免费试用的活动,本着不用白 ...
- Java使用redis-Redis是并发安全的吗?
大家都清楚,Redis 是一个开源的高性能键值对存储系统,被开发者广泛应用于缓存.消息队列.排行榜.计数器等场景.由于其高效的读写性能和丰富的数据类型,Redis 受到了越来越多开发者的青睐.然而,在 ...