蜂鸟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 ...
随机推荐
- Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized. 问题解决方法
先说结论,这是由于itext和asian版本不一致造成的. 如果你的需求仅仅是生成pdf,则使用解决办法1,如果需求有导出word则使用解决办法2 解决办法1: 将pom文件的com.lowagie ...
- 本地socket通讯
本地socket通讯 虽然学过网络socket,但是对于本地socket通讯却不是很熟悉,刚在项目中看到,所以在网上找了一篇介绍的比较详细的,mark下!!! socket ...
- 笔记:C++学习之旅---顺序容器
笔记:C++学习之旅---顺序容器 STL = Standard Template Library 标准库模版 容器可以使用范围for输出或者迭代器进行输出 一个容器就是一些特定类型对象的集合.顺 ...
- 【Vue3】引入组件Failed to resolve component: MyButton If this is a native custom element
引入组件时页面上并没有出现组件的影子,其他元素正常,初步确定是组件引入部分语法出了问题,打开开发者工具看到控制台报出错误代码: Failed to resolve component: MyButto ...
- 基于CentOS 7.6安装及配置APISIX 3.0环境
最近一直在研究微服务相关内容,通过对比各大API网关,发现新起之秀 APISIX无论从开源程度上来讲还是功能上,都拥有很大的优势. 经历了几天折磨一样的学习,目前在本地环境中配置成功了一套,以供自己留 ...
- vue处理图片路径出问题时显示默认图片
<img :src="item.url? item.url: '' " alt :onerror="defaultImg" /> 这里一定要判断sr ...
- 2022-05-12:小歪每次会给你两个字符串: 笔记s1和关键词s2,请你写一个函数, 判断s2的排列之一是否是s1的子串。 如果是,返回true; 否则,返回false。 来自字节飞书团队。
2022-05-12:小歪每次会给你两个字符串: 笔记s1和关键词s2,请你写一个函数, 判断s2的排列之一是否是s1的子串. 如果是,返回true: 否则,返回false. 来自字节飞书团队. 答案 ...
- 2022-03-01:k8s安装phpmyadmin,yaml如何写?
2022-03-01:k8s安装phpmyadmin,yaml如何写? 答案2022-03-01: yaml如下: apiVersion: apps/v1 kind: Deployment metad ...
- 2021-07-29:最大路径和。给定一个矩阵matrix,先从左上角开始,每一步只能往右或者往下走,走到右下角。然后从右下角出发,每一步只能往上或者往左走,再回到左上角。任何一个位置的数字,只能获得
2021-07-29:最大路径和.给定一个矩阵matrix,先从左上角开始,每一步只能往右或者往下走,走到右下角.然后从右下角出发,每一步只能往上或者往左走,再回到左上角.任何一个位置的数字,只能获得 ...
- ABP - 初识 ABP
ABP框架 ABP是用于创建现代化Web应用程序的完整体系结构和强大的基础架构,以模块化的方式进行开发,所有模块以nuget包的方式提供,开箱即用,遵循最佳实践和约定,提供SOLID开发经验. 缩写 ...