如何跑通平头哥RISC-V E902的仿真验证
文章目录
- 引言
- 一、源代码结构
- 二、下载源码
- 三、下载工具链
- 四、编译仿真
- 五、查看波形
- 总结
引言
身边很多朋友在跑平头哥的RISC-V开源项目中的case仿真时,或多或少都碰到了一些问题,现在我用E902作为例子,来介绍下仿真流程,并且可能碰到的问题,以及解决方法。
一、源代码结构
E902的开源代码位于:
https://github.com/T-head-Semi/opene902
目录结构如下:
|--E902_RTL_FACRORY/|--gen_rtl/ ##the source verilog code of E902 |--setup/ ##set the environment variables
|--smart_run/ ##the RTL simulation environment|--impl/ ##sdc file|--logical/ ##the SoC demo and test bench to run the simulation |--setup/ ##GNU tool chain setting|--tests/ ##include the test suit, linker file, boot code and so on|--work/ ##the working directory|--Makefile ##the simulation script
|--doc/ ##the user and integration manual of E902
官方文档里有一个RAEDME.md可供参考。接下来我们按照官方的流程走一遍,其中有些地方需要注意。
二、下载源码
官方文档里有一个RAEDME.md可供参考。接下来我们按照官方的流程走一遍,其中有些地方需要注意。
$ cd E902_RTL_FACTORY
$ source setup/setup.cs
接着进入smart_run目录,这是跑case的目录:
cd ../smart_run
三、下载工具链
在跑仿真之前还需要先下载并设置工具链,最新的版本是2.6.1,工具链的官网地址是:
https://occ.t-head.cn/community/download?id=4090445921563774976
下载解压后,打开smart_run下的example_setup.csh,将TOOL_EXTENSION的值进行修改:
设置好之后,然后source下setup/example_setup.csh,可能会看到如下问题
我们将开头Line1-14的注释删掉,然后重新source就可以了,这样工具链就设置好了
四、编译仿真
接着就可以开始跑仿真了,如果不知道输入什么命令,可以输入make help看一下
我们先执行make showcase查看一下有哪些case可以跑
如果我现在想跑hello_world这个case,在终端输入如下命令
$ make runcase CASE=hello_world SIM=vcs DUMP=on
Makefile中默认使用的仿真工具是,而我用的是vcs,所以需要用SIM=vcs来指定使用vcs进行仿真,同时我希望可以dump波形,所以加了DUMP=on,执行上述命令之后,我们会看到如下结果
提示没有work目录,需要我们手动mkdir work,新建一个work目录,然后再重新执行上述命令,这个时候我们会看到另外一个问题
重新设置下tests目录下文件的权限
$ chmod 744 -R tests
然后再重新执行仿真命令,恭喜你,这时我们会看到仿真成功了
五、查看波形
仿真完成之后,我想使用verdi查看波形,Makefile中并没有添加verdi相关的设置,因此需要先进行相应的设置
- 先修改SIMULATION_OPT
- 然后再新加一个target
以上两步设置完成之后,就可以在终端输入以下命令来启动Verdi
$ make verdi SIM=vcs
有一些朋友会碰到verdi打开波形之后,tb下hierarchy有问题的情况
如果是verdi2018以下的版本,建议将Makefile中line37的-debug_access换成-debug_all,如果是2018以上版本,则不用管,重新仿真之后,打开verdi就可以看到hierarchy了
总结
由于我使用的仿真工具是vcs,且我希望默认都dump波形,所以我对makefile做了如下的修改,这样在make的时候就不需要指定那么多参数了
关于makefile的知识点,后面我们会再单独介绍。对于上面流程,有什么不清楚的地方,欢迎私信我,更多更好的文章,请关注我的微信公众号 : Verifier_road
如何跑通平头哥RISC-V E902的仿真验证相关推荐
- @卡尔曼滤波 跑通调参
可以先像一开始接触PID那样,先把整个系统跑通,感受一下它是咋用的.后面再回过头来研究原理. 学习OpenCV2--卡尔曼滤波(KalmanFilter)详解 四旋翼姿态解算--互补滤波和拓展卡尔曼 ...
- 【点云3D目标检测】跑通CIA-SSD过程中的一些报错集锦
前言 本文主要是介绍了在跑通CIA-SSD系列算法过程中遇到的一些bug,下面是对CIASSD算法的一个简单的介绍. CIA-SSD其基本思想是校准单步目标检测中分类和定位两个任务,提出Confide ...
- aistarter助手程序未运行_师傅领进门之6步教你跑通一个AI程序!
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 源码下载地址请点击原文查看. 初学机器学习,写篇文章mark一下,希望能为将入坑者解点惑.本文介绍一些机器学习的入门知识,从安装环境到跑通机 ...
- 跑通Yolov5的一些心得
跑通Yolov5的一些心得 1.文件安装准备(版本要求) #pytorch 1.5.1 #torchvision 0.6.1 #vs2015 conda create -n yolov5 python ...
- 20230129在AIO-3568J开发板在原厂Android11下跑通6275s
20230129在AIO-3568J开发板在原厂Android11下跑通6275s 0.使用Firefly的AIO-3568J的自带Andorid11,内核按照Firefly的模式编译,Android ...
- 无剑100SOCwujian100挂UART外设之②跑通自带UART
一.为什么 首先跑通自带的UART,有助于我们熟悉UART的使用. 二.是什么 下载官方的SDK示例,或者下载慕课的示例也可以.如下图所示,在while循环中,添加了printf("test ...
- YOLOV5使用(一): docker跑通,详解TensorRT下plugin的onnx
yolov5的工程使用(以人员检测为案例) 使用ubuntu为案例 docker run --gpus all -it -p 6007:6006 -p 8889:8888 --name my_torc ...
- 在Rockchip RK3399 Pro开发板上跑通第一个Qt程序
在Rockchip RK3399 Pro开发板上跑通第一个Qt程序 准备工作:将Qt从Windows移植到Linux 一.交叉编译器的准备 下载交叉编译工具 安装交叉编译工具 二.交叉编译Qt库 三. ...
- 【全网唯一】全网唯一能够跑通的,跑不通你来找我~用node.js完成微信支付下单功能,且只需要一个文件wxpay.js就解决业务流程的node.js程序
先吐为敬! 最近心血来潮研究nodejs如何完成微信支付功能,结果网上一搜索,一大堆"代码拷贝党"."留一手"."缺斤少两"."不 ...
最新文章
- python数据转换函数_常用python数据类型转换函数总结
- numpy完整版总结
- Google I/O 2019上提及的Javascript新特性
- 数据仓库自动抽取:通过 SQL Server 企业管理器中的数据转换服务 (DTS) 设计器 创建 Analysis Services 处理任务...
- 寄存器映射与直接操作寄存器
- ora-01591:锁被未分布式事物处理/Distrib tran
- OpenCV傅立叶变换
- pycharm遇到的小问题
- 设计Twitter时间轴并进行搜索
- 从北京站到天通苑怎么走,
- 基于差分分级和关联规则挖掘的气象数据关联性分析实战
- 关于Meminfo中MemAvailable 理解
- 计算机更新好不,系统更新好还是系统不更新好?
- openlayer 图层上下_OpenLayers 之 图层(Layers) 详解
- html5绘制圆形,Canvas绘制圆形
- 将无线网卡变身为 wifi 热点的 完整批处理文件 或者 让i电脑变成wifi热点
- vue实现浏览器桌面通知
- 【Flutter小记9】flutter 打包的apk在某些真机无法安装或打开
- R语言统计方法-我常用的
- Git下载代码--git clone命令