Verilator入门11:仿真玄铁测试case

news2024/10/13 4:22:00

这一节,介绍下如何使用verilator仿真玄铁,之前有相关介绍,本节将进一步介绍下玄铁具体case的仿真,首先需要clone玄铁代码:

git clone https://github.com/kknet/openc910.git

同时下载交叉编译工具,网站地址:https://www.xrvm.cn/community/download

下载工具:

我们这里下载的是x86_64版本,根据实际的操作系统下载,将文件解压到c910目录下面。在c910目录下运行如下脚本来设置必要的环境变量:

export TOOL_EXTENSION=/XXXXXXXXX/openc910/Xuantie-900-gcc-elf-newlib-x86_64-V2.0.3/bin
export VERILATOR_ROOT=/XXXXXXXXX/verilator
export PATH=$VERILATOR_ROOT/bin:$PATH
export PROJECT_PATH=`pwd`
export CODE_BASE_PATH=$PROJECT_PATH/C910_RTL_FACTORY

注意XXXXXXXX改成对应的目录,第一个TOOL_EXTENSION是我们前面下载的交叉编译工具的目录(注意设置到bin目录),第二个为VERILATOR的目录。

进入smart_run目录,这里面有一个Makefile,在我们设置好前面的环境变量之后,我们就可以通过这个Makefile来跑目前的一些测试case,现存的测试case在目录/smart_run/tests/cases下:

首先输入

make help

输出结果(目前测试的Makefile最后几个打印行没有加上双引号,会报错打不出来后面几行,如果遇到类似的问题,注意要加上):

注意修改Makefile的两个地方:

VERILATOR_FLAGS += --no-timing
SIMULATOR_OPT := -O0 -x-assign 0 -Wno-fatal --no-timing --threads ${THREADS}

这里加入--no-timing的verilator编译选项,因为verilator不支持#0这种延时相关的操作语句,加上这一选项会自动忽略掉时间相关的字段。

在smart_run目录下下构建work文件夹。

我们跑以下coremark这个case,在smart_run目录下输入指令:

make runcase CASE=coremark SIM=verilator THREADS=8 

会先使用交叉编译工具编译coremark这个测试case,然后调用先调用verilator编译c910的整个project,如果打印如下消息说明整个编译过程完成了。

此时,在work/obj_dir目录下会生成我们要仿真的程序Vtop,此时会自动运行该仿真程序,也可以进入work目录下,输入:

./obj_dir/Vtop

运行该仿真程序,结果如下:

先说到这里,后面会进一步详细分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1567111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv8 UI界面设计+热力图显示

进入可视化设计界面,设计UI pyside6-designer 设计好UI保存,然后通过以下命令将ui文件保存为py pyside6-uic myui.ui > myui.py 通过以下命令将资源文件qrc保存为py pyside6-rcc my_rc.qrc > my_rc.py 写主窗口函数实现功能... 项目基于yol…

vue 数据埋点

最近菜鸟做项目,需要做简单的数据埋点,不是企业级的,反正看渡一的视频,企业级特别复杂,包括但不限于:错误收集、点击地方、用户行为…… 菜鸟的需求就是简单收集一下用户的ip、地址、每个界面的访问时间&a…

Ubuntu20.04使用Neo4j导入CSV数据可视化知识图谱

1.安装JDK( Ubuntu20.04 JDK11) sudo apt-get install openjdk-11-jdk -y java -version which java ls -l /usr/bin/java ls -l /etc/alternatives/java ls -l /usr/lib/jvm/java-11-openjdk-amd64/bin/java确认安装路径为/usr/lib/jvm/java-11-openjd…

【VUE+ElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动

【VUEElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动 背景 当设置了几个固定列之后,表格无数据时,点击左侧滚动条却被遮挡,原因是el-table__fixed过高导致的 解决 在index.scss中直接加入以下代码即可 /* 设置默认高…

最优算法100例之26-翻转单词顺序

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句…

【北京迅为】《iTOP-3588开发板系统编程手册》第1章 系统编程初探

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

基于单片机的超声波测距仪设计_kaic

摘 要 如今社会持续深化转型,在人工智能领域,传感器采集外部数据,经过处理器对数 据运算和处理,从而实现相应的功能。比如自动驾驶技术中,超声波传感器应用广泛, 超声波是一种频率在 20khz 以上的声波&…

STM32-04基于HAL库(CubeMX+MDK+Proteus)中断案例(按键中断扫描)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式,生成代码四、MDK打开生成项目,编写HAL库的按键检测代码五、运行仿真程序,调试代码 一、功能需求分析 在完成GPIO输入输出案例之后,开始新的功能…

如何防止IP泄露,安全匿名上网?

当互联网成为每个家庭的重要组成部分后,IP地址就成了你的虚拟地址。您的请求从该地址开始,然后 Internet 将消息发送回该地址。那么,您担心您的地址被泄露吗? 对于安全意识高或者某些业务需求的用户,如果您正在寻找保护…

用户认证安全性测试

用户认证安全性测试 认证与会话管理认证--Authentication01 常见认证方式02 session认证Session Fixation攻击Session保持攻击 03 Token认证多因素认证session和token区别 04 暴力破解密码的那些事密码设置推荐策略 会话--Authorization 权限控制权限管理方式垂直权限管理水平权…

redis 集群 (主从复制 哨兵模式 cluster)

目录 一 主从复制 (一)相关理论 1,主从复制定义 2,主从复制的作用 3,主从复制架构图 4 sync 同步过程 5,主从复制流程 (二) 实验模拟 1, 实验环境 2, 修…

【ArduinoQuartus】在小脚丫STEP CYC10上安装PulseRain Reindeer并在软核上运行基础功能

【Arduino&Quartus】在小脚丫STEP CYC10上安装PulseRain Reindeer并在软核上运行基础功能 一、将Reindeer软核下载到STEP CYC10(一)下载PulseRain Reindeer软核(二)配置Reindeer软核到开发板1.将sof文件转换为jic文件2.将jic文…

【动态】江西省小型水库安全监测能力提升试点项目通过验收

近日,由北京国信华源科技有限公司和长江勘测规划设计研究有限责任公司联合承建的江西省小型水库安全监测能力提升试点项目圆满通过验收。 在项目业主单位的组织下,省项目部、特邀专家、县水利局二级项目部以及项目设计、监理、承建等单位的代表组成验收工…

OpenHarmony实战:小型系统器件驱动移植

本章节讲解如何移植各类器件驱动。 LCD驱动移植 移植LCD驱动的主要工作是编写一个驱动,在驱动中生成模型的实例,并完成注册。 这些LCD的驱动被放置在源码目录//drivers/hdf_core/framework/model/display/driver/panel中。 创建Panel驱动 创建HDF驱动…

Nginx从安装到高可用实用教程!

一、Nginx安装 1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本 2、上传nginx到linux系统 3、安装依赖环境 (1)安装gcc环境 yum install gcc-c(2)安装PCRE库,用于解析正则表达式 yum install -y pcre pcre-devel(3)zlib压缩和解压缩…

C++输出格式控制

setprecision(n)可控制输出流显示浮点数的数字个数。C默认的流输出数值有效位是6,所以不管数据是多少,都只输出六位。如果setprecision(n)与setiosflags(ios::fixed)或者setiosflags(ios_base::fixed)合用,可以控制小数点右边的数字个数。set…

中间件复习之-RPC框架

什么是RPC框架? RPC(Remote Procedure Call):远程过程调用。当多个应用部署在多个服务器上时,由于他们不在一个内存空间上,因此需要网络来进行通信,而RPC允许它像调用本地方法一样调用远程服务。 RPC原理 服务消费方通过RPC客户…

UE5 C++ LevelSequence

前言 最近在用UE C做一些功能,用到了Level Sequence功能,但是看了下UE官方论坛包括一些文章基本没有关于C 处理Level Sequence 这块内容,有的也是一些修改或者源码原理的一些内容分析,接下来我就把我新建Sequence包括一些库的调用…

CleanMyMac X中文---一键优化Mac,释放存储空间新利器

CleanMyMac X是一款专业的苹果笔记本系统管理工具,旨在全面优化和清理Mac内存,释放更多有效空间,使Mac始终保持最佳状态。它具备智能扫描功能,能够准确识别并清理系统垃圾、冗余文件以及大型和废旧文件,有效释放磁盘空…

深入了解美颜技术开发:利用深度学习打造直播美颜SDK

直播美颜不仅让主播在镜头前更加自信,也让观众享受到更美好的视觉体验。而在美颜技术的背后,深度学习技术正扮演着至关重要的角色。 一、美颜技术的发展历程 这些算法往往无法达到自然的效果,容易出现过度处理或者失真的情况。随着深度学习…