在过去的几年里,阿里集团平头哥陆续推出了几款RISCV处理器,有些处理器已经在产业界得到了应用,比如在某志的D1处理器中,就嵌入了平头哥的玄铁C906内核为 “芯”。RISCV虽然是一个开放标准,并且网络上也不乏一些开源核的RTL实现,但是商用的RISCV内核一般都是闭源的。不过令人惊喜的是,在今年十月,平头哥将其设计的四款RISCV内核开源,这其中就包括D1使用的C906核心。

玄铁 C906 是阿里巴巴平头哥半导体有限公司开发的低成本 64 位 RISC-V 架构处理器核,玄铁 C906 基于 64 位 RISC-V 架构,并对 RISC-V 架构进行了扩展增强。扩展增强包括:

1.指令集增强:重点针对内存访问、算术运算、位操作、Cache 操作四个方面进行增强,总计扩展130 条指令。同时,玄铁处理器开发团队在编译器层面对这些指令进行支持,除 Cache 操作指令外这些指令均可编译产生,包括 GCC 和 LLVM 编译.

2.内存模型增强:扩展内存页面属性,支持 Cacheable、Strong order 等页面属性,并在 Linux 内核上进行支持.

  • 玄铁 C906 的主要体系结构参数包括:
  • RV64IMA[FD]C[V]架构
  • 平头哥指令扩展增强技术
  • 平头哥内存模型增强技术
  • 5 级整型流水线,单发按序执行
  • 128 位的向量计算单元,支持 FP16/FP32/INT8/INT16/INT32 的 SIMD 计算.

C906是RV64位指令集,5 级按序单发射,8KB-64KB L1 Cache支持,不支持L2 Cache,支持半/单/双精度,VIPT四路组联L1数据缓存.

C906框图

开源地址:T-Head Semiconductor Co., Ltd. · GitHub

下面以openC906为例,介绍如何基于开源项目搭建一个处理器内核仿真平台。通过仿真平台可以获得CPU内部时钟级的运行信息,捕捉到程序运行任意时刻的信号,这对于一名系统工程师来讲,意义重大。下面开始。

环境准备

  1. ubuntu18.04
  2. iverilog,vvp,gtkwave工具
  3. 平头哥裸机GCC编译器

iverilog(vvp), gtkwave安装:

gcc:

平头哥芯片开放社区(OCC)

我选择的包为:Xuantie-900-gcc-elf-newlib-x86_64-V2.0.3-20210806.tar.gz,下载后解压:

获取RTL代码

git clone https://github.com/T-head-Semi/openc906.git

配置&修改

代码下来,不能直接仿真运行,必须要做一些修改。感觉平头哥在文档方面做得很差劲,比较不注意细节,GITHUB上文档就三言两语,即便为社区做了好事,在一些细节上不注意,也会遭到埋怨。下面就将这些平头哥文档中没有说明,但是必须要解决的问题列举出来。

首先看一下目录结构:

这个目录结构和GITHUB文档中给出的结构有所不同,sdk中缺少smart_run目录下的work目录。

work目录需要手工创建,而文档中并没有说明,这是第一个问题, 没有work目录会导致后面运行make 失败,我们手工创建,创建之后目录列表是下面的样子:

其余问题我们在具体操作步骤中解决。

综合

RTL环境需要在csh中运行,csh有一些不便,比如不支持自动补全等等,不知道为何T-HEAD一定要将配置脚本写为.csh格式。

首先,配置工程路径环境变量,执行以下命令序列:

$ csh
% cd C906_RTL_FACTORY
% source setup/setup.csh

然后将工具链路径替换为真实的编译器路径:openc906/smart_run/setup/example_setup.csh

之后切换到smart_run目录

初始化工具链环境变量:

 % source./smart_run/setup/example_setup.csh

 可以看出这里除了问题,这就是第二个平头哥文档没有注意的问题,解决方式是删除example_setup.csh头部的版权声明部分,不知道平头哥怎么发布的,难道发布之前都没有测试么?基本的语法错误都会犯?

删除之后,再次运行,这次成功:

之后是综合,进入到openc906/smart_run目录,执行make help:

综合的话,执行命令make compile

这个错误,经过请教群友(GITHUB上有钉钉群),他经历过同样的问题,修改方式如下:将56行的static integer FILE修改为integer FILE.

怀疑这个问题和iverilog的版本有关,在群里得到确认,还是那句话,既然构建系统中指定iverilog为默认的综合工具,在发布之前都没有验证么?对于这么大一家公司来讲感觉有些不可思议。

不管怎样,流程还要继续,再次编译,这次成功执行:

在work目录下,生成了仿真VVP文件

执行 make showcase,查看有哪些用例可以跑:

我们执行其中一个,执行make runcase CASE=coremark,又出错:

这次出错的改法是,拷贝命令添加 -fr 选项:

仍然有错误,看到了/bin/sh提示,想到莫非是shell解释其不对,修改/bin/sh指向bash

这样做果然可以解决这个问题,不过新问题又来了,如下图,没关系,兵来将挡,水来土掩。

可以看到编译过程会以LOG文件的形式被记录下来:coremark_build.case.log

在work目录中果然有同名文件:

我们打开这个文件,看里面有没有记录出错信息,找到最后,一条错误赫然出现在眼前:

 Srec2vmem是什么鬼?看名字,猜测它可能是将ELF的BINARY 转换为仿真TB可以加载的数据格式的工具,根据经验,如果它属于SDK中的工具,是由可能下载下来后不带有可执行属性,这也是LINUX的安全策略,我们强制修改其为可执行:

至此,修改的文件包括:

之后再次执行make runcase CASE=coremark DUMP=on

DUMP=on表示我们需要生成VCD文件查看waveform.

Binggo! 错误尽除,VVP执行仿真产生波形VCD文件中,倒上一杯咖啡慢慢等吧!

查看波形:

用GTKWAVE打开波形文件:

CPU内部对你已经毫无秘密可言了,用这种方法分析系统,只要你肯投入,相信没有解决不了的问题。

quartus ii综合仿真

C906是用Verilog开发的,可以用altera的综合仿真工具quartus ii进行布局布线综合仿真,并且得到方框图。

建立综合工程File->New Project Winzard .....解决编译错误,综合仿真,综合成功即可,不用关心布局布线失败,因为我也不清楚目标FPGA应该选择哪个。

上一步成功后,点击菜单Tools->NetList Viewers->RTL Viewer 打开综合方框图即可查看。

要注意,工程的名字要和你想要查看的顶层wrapper的名字相同,比如下图我需要看MMU的顶层结果,就选择对应的aq_mmu_top.v文件的模块aq_mmu_top作为工程名进行综合。

TLB wrapper结构翻译过来如下图:

pmp wrapper 结构


结束

平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真相关推荐

  1. 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux

    去年 6 月份,中科院大学教授.中科院计算所研究员包云岗,发布了开源高性能 RISC-V 处理器核心 -- 香山. 近日,包云岗在社交平台晒出图片,香山芯片已流片,回片后进行了串口调通,1 月 24 ...

  2. 开源RISC-V处理器(蜂鸟E203)学习(三)低成本方案,成功运行hello word程序

    1.简述 经过不懈的努力,终于成功运行hello word程序,这是一个极低成本的学习方案,感兴趣继续往下看. 2.准备 1)硬件 如图,从左到右依次为: Xilinx FPGA HS3 Cable( ...

  3. 开源RISC-V处理器(蜂鸟E203)学习(五)A100T-FPGA 移植蜂鸟Hbirdv2,实现Centos下调试器USB识别以及程序编译烧写,并进行C语言仿真

    1.简述 最近购买了一块适合做原型验证FPGA板卡,板卡接口和外设比较丰富,十分适合跑一些小型的SOC工程,比如蜂鸟E203:板卡自带FPGA烧写器和软核CPU的JATG调试器,还有USB接口的UAR ...

  4. 网传字节实习生删库,有员工回应昨晚处理事故到三点;快手宣布7月将取消大小周;中科院发布国产开源RISC-V处理器“香山”...

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Life can be hard at times, but yo ...

  5. 简评几款开源RISC-V处理器

    RISC-V 能够实现"自主可控"与"普世通用"的国产处理器,中国应该拥抱此技术. 胡振波 转存失败重新上传取消 RISC-V指令集是怎么回事就不多说了.开门见 ...

  6. keil 增加 芯片包_国内首家!平头哥刚刚宣布开源RISCV内核MCU芯片设计平台

    ▲点击上方 雷锋网 关注 开源MCU芯片设计的平台目标群体包括芯片开发者.IP供应商.高校及科研院所等,开发者可以基于该平台设计面向细分领域的定制化芯片. 文 | 包永刚 雷锋网消息,平头哥刚刚在乌镇 ...

  7. 中科院发布国产开源高性能RISC-V处理器“香山”,对标ARM-道合顺大数据infinigo

    6月22日至25日上午,首届RISC-V中国峰会在上海科技大学举办.本届大会上中科院大学教授.中科院计算所研究员包云岗重磅发布国产开源高性能RISC-V处理器"香山". 根据包云岗 ...

  8. 这本读者期待的芯片书《手把手教你设计CPU——RISC-V处理器》终于出版!

    点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 ​ ​点击图片购书​ 参与文末话题讨论,每日赠送异步图书 --异步小编 在摩尔定律减缓的今天,一味比拼硬件性能的技术竞赛变得越发 ...

  9. 国内首家!平头哥宣布开源RISC-V内核MCU芯片设计平台;IBM驳斥谷歌量子霸权主张;Facebook将赔偿350亿美元……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周两次,打卡即read 更快.更全了解泛云圈精彩news g ...

  10. 阿里平头哥“生娃”!最强 RISC-V 处理器玄铁 910 诞生!

    作者 | 胡巍巍发自上海黄浦 出品 | CSDN(ID:CSDNnews) 马云喜欢金庸作品,圈内人尽皆知. 5年前,马云曾发微博称:"我做过几次婚姻红娘,由于是顺水推舟所以成功率不错,阿兴 ...

最新文章

  1. 问题 A: 第二题(划分一个集合为差值最小的两个子集合)
  2. php获得帮助类数据_PHP解析xml格式数据工具类示例
  3. 设备管理系统html,蓝色的远程监控设备系统后台管理界面html模板
  4. python安装第三方库速度慢的解决方法
  5. A*寻径算法新手入门(转载)
  6. 计算机视觉与深度学习 | 目标检测综述(RCNN、RPN、YOLOv1 v2 v3、FPN、Mask RCNN、SSD代码类)
  7. 【考研】2022温州大学计算机学硕招收调剂
  8. java lambda循环_使用Java 8 Lambda简化嵌套循环
  9. js中的trim()方法
  10. [转贴]如何成为一个优秀的jsp程序员
  11. 17. 促销,市场营销和内容页
  12. 发生内部错误。请与 microsoft 支持部门联系。_设计变更、工程签证、确认单、工程洽商、联系单、会签的区别,一文搞懂...
  13. Java实现批量图片生成PDF文件
  14. 【易语言】大漠插件使用
  15. NTC热敏电阻-阻值温度计算
  16. 全国计算机等级考试二级Python(2021年9月)备考笔记 第十五天
  17. 《数字信号处理》正弦信号的波形及频谱的求解
  18. python perl lisp_C,C++,Lisp,Java,Perl,Python
  19. Linux DRM(一)Display Server
  20. 相机标定推到与zc求解

热门文章

  1. 威纶通触摸屏做主站(客户端)与modsim虚拟从站通过MODBUS TCP/IP通讯测试
  2. 计算机f8进不到安全模式,简单几步解决win10开机按f8进不了安全模式的问题
  3. 支付宝支付服务端对接记录(小程序/APP 预支付统一下单及回调处理)
  4. 服务器安全(防止被攻击)
  5. Niushop官网出新版 由内而外 玩转简约时尚风
  6. 笔记本电脑触摸板手势教程——快捷操作
  7. UNITY接入ANDROID密匙
  8. 自主安装IPA文件到iPhone上
  9. python正则表达式与re模块
  10. 网站建设需要怎么做?个人网站建设教程