文章目录

  • 引言
  • 一、源代码结构
  • 二、下载源码
  • 三、下载工具链
  • 四、编译仿真
  • 五、查看波形
  • 总结

引言

身边很多朋友在跑平头哥的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相关的设置,因此需要先进行相应的设置

  1. 先修改SIMULATION_OPT
  2. 然后再新加一个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的仿真验证相关推荐

  1. @卡尔曼滤波 跑通调参

    可以先像一开始接触PID那样,先把整个系统跑通,感受一下它是咋用的.后面再回过头来研究原理. 学习OpenCV2--卡尔曼滤波(KalmanFilter)详解 四旋翼姿态解算--互补滤波和拓展卡尔曼 ...

  2. 【点云3D目标检测】跑通CIA-SSD过程中的一些报错集锦

    前言 本文主要是介绍了在跑通CIA-SSD系列算法过程中遇到的一些bug,下面是对CIASSD算法的一个简单的介绍. CIA-SSD其基本思想是校准单步目标检测中分类和定位两个任务,提出Confide ...

  3. aistarter助手程序未运行_师傅领进门之6步教你跑通一个AI程序!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 源码下载地址请点击原文查看. 初学机器学习,写篇文章mark一下,希望能为将入坑者解点惑.本文介绍一些机器学习的入门知识,从安装环境到跑通机 ...

  4. 跑通Yolov5的一些心得

    跑通Yolov5的一些心得 1.文件安装准备(版本要求) #pytorch 1.5.1 #torchvision 0.6.1 #vs2015 conda create -n yolov5 python ...

  5. 20230129在AIO-3568J开发板在原厂Android11下跑通6275s

    20230129在AIO-3568J开发板在原厂Android11下跑通6275s 0.使用Firefly的AIO-3568J的自带Andorid11,内核按照Firefly的模式编译,Android ...

  6. 无剑100SOCwujian100挂UART外设之②跑通自带UART

    一.为什么 首先跑通自带的UART,有助于我们熟悉UART的使用. 二.是什么 下载官方的SDK示例,或者下载慕课的示例也可以.如下图所示,在while循环中,添加了printf("test ...

  7. YOLOV5使用(一): docker跑通,详解TensorRT下plugin的onnx

    yolov5的工程使用(以人员检测为案例) 使用ubuntu为案例 docker run --gpus all -it -p 6007:6006 -p 8889:8888 --name my_torc ...

  8. 在Rockchip RK3399 Pro开发板上跑通第一个Qt程序

    在Rockchip RK3399 Pro开发板上跑通第一个Qt程序 准备工作:将Qt从Windows移植到Linux 一.交叉编译器的准备 下载交叉编译工具 安装交叉编译工具 二.交叉编译Qt库 三. ...

  9. 【全网唯一】全网唯一能够跑通的,跑不通你来找我~用node.js完成微信支付下单功能,且只需要一个文件wxpay.js就解决业务流程的node.js程序

    先吐为敬! 最近心血来潮研究nodejs如何完成微信支付功能,结果网上一搜索,一大堆"代码拷贝党"."留一手"."缺斤少两"."不 ...

最新文章

  1. python数据转换函数_常用python数据类型转换函数总结
  2. numpy完整版总结
  3. Google I/O 2019上提及的Javascript新特性
  4. 数据仓库自动抽取:通过 SQL Server 企业管理器中的数据转换服务 (DTS) 设计器 创建 Analysis Services 处理任务...
  5. 寄存器映射与直接操作寄存器
  6. ora-01591:锁被未分布式事物处理/Distrib tran
  7. OpenCV傅立叶变换
  8. pycharm遇到的小问题
  9. 设计Twitter时间轴并进行搜索
  10. 从北京站到天通苑怎么走,
  11. 基于差分分级和关联规则挖掘的气象数据关联性分析实战
  12. 关于Meminfo中MemAvailable 理解
  13. 计算机更新好不,系统更新好还是系统不更新好?
  14. openlayer 图层上下_OpenLayers 之 图层(Layers) 详解
  15. html5绘制圆形,Canvas绘制圆形
  16. 将无线网卡变身为 wifi 热点的 完整批处理文件 或者 让i电脑变成wifi热点
  17. vue实现浏览器桌面通知
  18. 【Flutter小记9】flutter 打包的apk在某些真机无法安装或打开
  19. R语言统计方法-我常用的
  20. Git下载代码--git clone命令

热门文章

  1. IO系统的功能和层次模型
  2. 基于python的土壤细菌在kobas库的功能预测代码
  3. 逻辑右移和算术右移有什么区别?
  4. qt SceneView模拟发送鼠标点击事件
  5. 知识点 - 多边形的重心、核、三角形的心
  6. CTFshow-命令执行(4)
  7. 长线、短线在现货黄金中是什么意思的专业术语
  8. NTP的时间戳的LSW转换为unix的usec
  9. java,循环和判断,黑马程序员作业
  10. arduino nano烧录出错