首页 > 其他分享 >【平头哥开源CPU——玄铁C910】开源项目库配置和前仿真记录

【平头哥开源CPU——玄铁C910】开源项目库配置和前仿真记录

时间:2024-06-12 11:03:41浏览次数:8  
标签:csh -- 玄铁 套件 开源 处理器 测试 C910 内存

C910开源项目库配置

C910开源项目库中有很多问题,比如我做到make compile的时候一直在报错无法找到工程下的某个文件,主要原因是平头哥官方提供的环境变量配置文件类型是.csh的,而我的linux工作站里没有csh而且没有联网。所以把csh文件内容做了修改也成功跑通了,现在分享一下。

配置工程文件环境变量

首先第一步是配置工程文件的地址变量,主要用于使用Makefile做仿真。执行以下指令:

$ cd C910_RTL_FACTORY
$ source setup/setup.csh

(注:如果你的电脑支持csh,那么只需要直接在终端输入csh就会自动跳转到csh命令模式,后面还有一个需要修改的地方也可以进入csh模式之后直接source即可)
现在开始就遇到了第一个问题:由于我的虚拟机不支持csh,所以直接source setup.csh文档会报如下错误

在这里插入图片描述

对于这个问题,我采取的办法是把.csh文件改写成bash可以执行的文件,需要修改以下两个地方:
在这里插入图片描述

修改成:

#!/bin/bash

set pattern="\/setup"`echo '$'`
export CODE_BASE_PATH=`pwd|perl -pe "s/$pattern//"`
echo "Root of code base has been specified as:\n    $CODE_BASE_PATH"

然后再执行这个指令就可以了:

$ source setup/setup.csh

出现这个结果就说明没问题了(如果不放心的话可以再echo一下 CODE_BASE_PATH)
在这里插入图片描述

修改Makefile中的错误

第二步,是在smart_run文件夹里

$ cd ../smart_run
$ make help

这里又会报错,这是由于Makefile里的文件的最后几行引号没写全,按照前面的写法,在分号前面全都加上引号就不会报错了。
在这里插入图片描述

链接 GNU编译链

第三步,下载GNU编译链。XuanTie玄铁官网 (xrvm.cn)

第四步,还需要你再source一个.csh文件,这个文件是GNU编译链工具的地址,需要你修改成从平头哥官网上下载的编译链解压后的bin目录的地址。
在这里插入图片描述

只需要修改csh为bash,setenv改成export就行,注意等号后面要写你自己的GNU编译链的绝对地址。

#!/bin/bash

export TOOL_EXTENSION=这里写你GNU编译链的绝对地址

echo 'Toolchain path($TOOL_EXTENSION):'
echo "    $TOOL_EXTENSION"

然后在smart_run文件夹下source刚刚改过的.csh文件

source ./setup/example_setup.csh

新建work文档

第四步,尝试执行make compile,发现报错没有work文档
解决办法就是在smart_run文件夹下创建一个work文件夹就可以了,创建之后的文件结构如下:

|--C910_RTL_FACTORY/
  |--gen_rtl/     ## Verilog source code of C910
  |--setup/       ## Script to set the environment variables
|--smart_run/     ## RTL simulation environment
  |--impl/        ## SDC file, scripts and file lists for implementation
  |--logical/     ## SoC demo and test bench to run the simulation
  |--setup/       ## GNU tool chain setting
  |--tests/       ## Test driver and test cases
  |--work/        ## Working directory for builds
  |--Makefile     ## Makefile for building and running sim targets
|--doc/           ## The user and integration manual of C910

再次尝试运行 make compile,就成功啦!
在这里插入图片描述

前仿真

跑一下前仿真主要是为了走一下流程,看一下代码的情况。
默认你已经配置好了verdi和vcs环境。

首先我们打开smart_run文件夹下面的makefile文件,查看一下Makefile关于vcs的内容:
在这里插入图片描述

大概在94行的位置,这里是启动vcs生成fsdb文件的配置,我们只需要在进行编译的时候加上一个参数即可:

make compile SIM=vcs UPF=on

CASE说明

这里是一些case的介绍,不保证完全准确:

ISA_AMO:原子内存操作(Atomic Memory Operations)测试套件,用于验证处理器执行原子内存操作的正确性。这些操作包括加载/存储、比较交换(compare-and-swap)、加载/保留/释放(load/reserve/release)等。

smoke_bus:烟雾测试(smoke test),用于验证处理器的基本功能是否正常工作。该测试套件通常包含一些简单的指令和操作,以确保处理器能够正确执行基本的指令集架构(ISA)。

debug_gpr:通用寄存器(general-purpose register)调试测试套件,用于验证处理器的通用寄存器是否能够正确读写。该测试套件通常包含一些对通用寄存器的操作,例如加载、存储、比较等。

ISA_THEAD:线程支持测试套件,用于验证处理器是否支持线程执行。该测试套件通常包含一些多线程程序,以确保处理器能够正确调度和执行多个线程。

cache_op:缓存操作测试套件,用于验证处理器的缓存是否能够正确工作。该测试套件通常包含一些对缓存的操作,例如加载、存储、刷新等。

debug_memory:内存调试测试套件,用于验证处理器的内存访问是否正确。该测试套件通常包含一些对内存的操作,例如加载、存储、比较等。

ISA_FP:浮点运算测试套件,用于验证处理器的浮点运算单元是否能够正确执行浮点运算。该测试套件通常包含一些浮点运算指令,例如加、减、乘、除、平方根等。(此case无法跑通)

ISA_IMAC:整数乘加累加单元(integer multiply-accumulate unit)测试套件,用于验证处理器的整数乘加累加单元是否能够正确执行整数乘加累加运算。该测试套件通常包含一些整数乘加累加指令。(此case无法跑通)

coremark:CoreMark测试套件,用于评估处理器的性能。该测试套件包含一些常用的计算任务,例如矩阵乘法、滤波等。(此case无法跑通)

hello_world:经典的“Hello, World!”程序,用于验证处理器是否能够正确执行程序。

MMU:内存管理单元(memory management unit)测试套件,用于验证处理器的内存管理单元是否能够正确管理内存。该测试套件通常包含一些对内存页面的操作,例如分配、释放、映射等。

csr:控制和状态寄存器(control and status register)测试套件,用于验证处理器的控制和状态寄存器是否能够正确读写。该测试套件通常包含一些对控制和状态寄存器的操作,例如设置、清除、读取等。

ISA_BARRIER:内存屏障(memory barrier)测试套件,用于验证处理器的内存屏障是否能够正确保证内存操作的顺序。该测试套件通常包含一些对内存屏障的指令。

plic_int:平台级中断控制器(platform-level interrupt controller)测试套件,用于验证处理器的平台级中断控制器是否能够正确处理中断。该测试套件通常包含一些对中断的生成和处理的操作。

sleep:睡眠测试套件,用于验证处理器是否能够进入睡眠状态。该测试套件通常包含一些对睡眠模式的控制指令。

标签:csh,--,玄铁,套件,开源,处理器,测试,C910,内存
From: https://blog.csdn.net/CSDNsang_/article/details/139619652

相关文章

  • ThingsBoard前端Vue版本开源啦!!!!
    ThingsVue......
  • 聊聊GLM-4-9B开源模型的微调loss计算
    概述Github官方地址:GLM-4网上已经有很多关于微调的文章,介绍各种方式下的使用,这里不会赘述。我个人比较关心的是微调时的loss计算逻辑,这点在很多的文章都不会有相关的描述,因为大多数人都是关心如何使用之类的应用层,而不是其具体的底层逻辑,当然咱也说不清太底层的计算。可了解其......
  • 目前最流行、需要熟练掌握的技术栈及一些优秀的开源项目推荐
    作为中高级.NET程序员,掌握全面且最新的技术栈对于提升职业竞争力至关重要。以下是目前最流行、需要熟练掌握的技术栈及一些优秀的开源项目推荐:1..NETCore/.NET5+技术栈:ASP.NETCoreEntityFrameworkCoreBlazorgRPCSignalR开源项目:OrchardCore-模块化、多租......
  • Qwen2.0正式开源及评测数据集理解
    6月7日,阿里巴巴正式开源了大模型——Qwen2。Qwen2一共有5种预训练和指令微调模型,包括Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B以及Qwen2-72B。与相比Qwen1.5,Qwen2的性能实现大幅度提升。在测试数据方面,在针对预训练语言模型的评估中,对比当前最优的开源模型,Qwen2-......
  • RT-thread 运维方法选择(基于开源组件)
    方案选择,需要支持4G和WIFI模组链接工具包优点缺点备注rtty1.功能全,兼容linux1.需要搭建一个服务器2.无成熟软件包支持嵌入式设备 webclient1.兼容性好,代码少。1.需要搭建一个服务器2.基于客户端做业务 webnet1.官方支持,兼容性好。1.需......
  • 开源无代码 / 低代码平台 NocoBase 1.0.1-alpha.1: 区块支持高度设置
    NocoBase是一个极易扩展的开源无代码开发平台。完全掌控,无限扩展,助力你的开发团队快速响应变化,显著降低成本,不必投入几年时间和数百万资金研发,只需要花几分钟部署NocoBase。NocoBase中文官网官方文档在线Demo新特性区块支持高度设置(#4441)参考文档:区块高度链接操作:......
  • 开源超闭源!通义千问Qwen2发布即爆火,网友:GPT-4o危
    鱼羊发自凹非寺量子位公众号QbitAI开源大模型全球格局,一夜再变。这不,全新开源大模型亮相,性能全面超越开源标杆Llama3。王座易主了。不是“媲美”、不是“追上”,是全面超越。发布两小时,直接冲上HggingFace开源大模型榜单第一。这就是最新一代开源大模型Qwen......
  • 开源高性能结构化日志模块NanoLog
      最近在写数据库程序,需要一个高性能的结构化日志记录组件,简单研究了一下Microsoft.Extensions.Logging和Serilog,还是决定重造一个轮子。一、使用方法  直接参考以下示例代码:NanoLogger.Start();DateTime?nullable=null;constboolboolValue=true;constcharch......
  • C#开发的目录图标更改器 - 开源研究系列文章 - 个人小作品
          因为有一些项目保存在文件夹里,然后想着用不同的图标来显示该文件夹,但是Windows提供的那个修改文件夹的操作太麻烦,需要的操作太多(文件夹里鼠标右键,属性,自定义,更改图标,选择文件,选择图标,点击确定),于是就想自己用C#开发一个目录图标管理器,能够快速的将文件夹图标更改为自......
  • 开源工业物联网网关 v2.1.1发布
    变量维护增加只写(WriteOnly)类型缓存最近3次原值,可以用raw、$pv、$ppv获取,配合表达式灵活进行计算增加触发字段,用于上升沿等监控触发采集和上传驱动增加西门子plc中文字符串的读写完善modbus协议连读增加modbus协议double类型解析修正modbus浮点类型数值写入modb......