0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

芯片开发语言为什么要用Chisel和Verilog

FPGA技术江湖 来源:老石谈芯 作者:老石谈芯的老石 2021-09-26 11:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在最近召开的RISC-V中国峰会上,中科院计算所的包云岗研究员团队正式发布了名为“香山”的开源高性能处RISC-V处理器。前不久我有幸和包老师就这个事情做了一次深度的交流,我们聊了关于RISC-V、还有“香山”处理器的前世今生。包老师也分享了很多他关于开源硬件、新型开发语言、硬件敏捷设计、还有处理器基础架构等等这些问题的想法和学术思考,我深受启发。

包云岗是中科院计算技术研究所研究员、副所长,先进计算机系统研究中心主任,中国科学院大学特聘教授,中国开放指令生态(RISC-V)联盟秘书长。他的主要研究领域为云计算数据中心体系结构、开源处理器芯片敏捷设计等。

我把我们的对话进行了整理和采编,以飨读者。第一篇在这里,本文是第二篇,主要是包老师对硬件敏捷开发的新兴开发语言与工具的思考。

注:以下的“我”,指的都是包云岗研究员。

1. 为什么用Chisel

编者按:

在传统的数字芯片开发里,绝大多数设计者都会使用诸如Verilog、VHDL或者SystemVerilog的硬件描述语言(HDL)对电路的行为和功能进行建模。但是在香山处理器里,团队选择使用Chisel作为主要开发语言。这是基于怎样的考虑?

Chisel是基于Scala这个函数式语言来扩展出来的,我们可以把它看做是一个用来描述电路的领域专用语言,它和Verilog还是有很大区别的。

事实上,我们自己也做过两种语言的对比。在2016年,我们整个团队开始决定用RISC-V去实现标签化体系结构,也在那个时候开始接触Chisel。最早的时候我们重用了UC伯克利开发了的名叫Rocket的开源内核。这是个顺序执行的小核,我们在它上面加上了我们的标签机制,这期间其实就有很多的一些开发体会。

a69d2392-13d7-11ec-8fb8-12bb97331649.png

Rocket chip generator的系统架构图

前面提到我们的同学原来对Verilog很熟,但是用Chisel以后就会有一种爱不释手的感觉。有好多的通信,特别是年轻的同学,他们都愿意去尝试使用Chisel。有一个北大的研究生,他在做报告的时候讲,你用了Chisel以后就再也回不去了。

其实,我们自己还做过量化的评估。在2018年,我们团队里有两个本科生和一个工程师做过一个实验。这个实验是要开发一个L2 Cache,但是要集成到RISC-V的内核里。我们的工程师是用Verilog来开发的,他对Cache非常熟悉。他把OpenSPARC里面的Cache、还有Xilinx提供的Cache等等都研究过,代码都读得很透。所以他用Verilog开发,并且接到RISC-V里面去。当时他花了应该是6个星期开发,包括测试框架等等,一共写了5000多行代码。即便这样,后面还是有一些问题和Bug。

另外,我们当时有一位大四的本科生,现在也是香山的核心成员,他懂一些计算机体系结构,使用Chisel有9个月的时间。同样的任务,他用Chisel开发只花了三天时间就写出来了。把设计接到RISC-V核里面之后,还能够正常工作。之后又进一步就把DMA调通了,就能够支持像网卡这样的一些DMA的数据的传输。这个给我们留下了很深刻的印象。

我们觉得,本科生使用Chisel做的设计,哪怕是性能或者各方面差了一些,但他只用了三天时间。这样我们就可以快速去验证,并且实现我们的想法。

当然这个只是第一组实验。我们当时有一个群,在群里面吵的还是挺不可开交的,因为我们的工程师那个时候很不服气,他就觉得他的代码各方面都质量更高。所以我们后来又有另外一位中国科学院大学的大四本科生,他懂Verilog、但是没学过Chisel,所以他做的事情就是读我们工程师的Verilog代码,并把核心代码一行一行翻译成Chisel,最后要通过工程师写的测试。也就是说,翻译后的Chisel和Verilog实现的逻辑功能是完全一致的。

翻译完之后,再在同一个FPGA上面评估,看设计的PPA、 频率、功耗,还有使用的资源等等。这样下来的话,你就会看到其实出来的指标上面,大多数的指标实际都是Chisel还反而更好一些,代码量也会比他要小。

这还只是第一个阶段。后面我们的本科生又在博士生的指导下,把Chisel里面的高级特性给它加进去,结果一下子就完全超越Verilog的版本了,代码量大概只有Verilog的1/4~1/5,有些逻辑资源可以减少百分之六七十。所以那时候这组数据出来以后,工程师就他也觉得服气了。

2. Chisel vs 高层次综合

编者按:

在FPGA里高层综合是一个非常热、非常流行的一个研究方向。但是我知道Chisel和高层次综合可能并不是一回事。在Chisel官网上也明确的指出:我不是高层次综合。但在我看来,它们背后的思维方式、或者是大的方向是有共同之处的,也就是让硬件开发更加的快速、更加敏捷。也就是像您刚才说的,从想法到实现,周期更加缩短。

但是从高层综合的角度来看,虽然学术界一直在讲高层次综合已经很多年的时间,它实际的商业化可能还是需要特别突破性的进展。现在业界的这些设计,比如大的网络设计、还有数据中心加速器的这些设计,仍然是基于SystemVerilog/Verilog/VHDL这样的RTL语言。这主要是因为高层次综合有这么几个问题:

第一个就是HLS可能并不能覆盖掉的全部应用领域,也就是说它可能适合于某些应用领域,但是对于这种吞吐量比较大的、或者高速数据包处理这些应用,它可能就不那么适合。

另外一个就是它的验证。因为它相当于在RTL顶上加了一层额外的高层次语言,等它综合或者处理完了以后,还是生成底层的RTL语言,然后再走原来的FPGA的这些开发流程。所以在验证过程中,增加额外的这层可能会给验证工作造成很大的问题。所以关于这两点您怎么看?

我想其实它的通用性方面是没有问题的。Chisel本身是一个硬件描述语言,所以从它的这种完备性来看的话,它跟Verilog是一样的。也就是说,Verilog能干什么事,Chisel也能干什么事,这两个是没有什么区别的,它只不过是另外一种语法表达而已。

调试是很多人都担心的一个问题。因为Chisel它现在其实是一个源到源的翻译,是首先是基于Scala这套语法去写一个硬件的描述。然后通过FIRRTL进行翻译。再往后走的话,其实是用Verilog那套流程去做,最后生成GDSII版图。

所以在这个过程当中,其实是明显的分成两个阶段了。前面一个阶段Chisel到Verilog,第二阶段就是Verilog到GDSII版图。

我们用Chisel已经流过三颗芯片,有大的芯片、有的小的芯片,有单核的有8核的。在早期的时候,我们其实也遇到过这样的一些问题。比如你用Chisel写的代码生成了Verilog,Verilog里面有一些变量,你那边在Chisel里面改一行代码,那它这个变量就全部重新改变。后来其实仔细分析以后,我们发现这些问题都是可以有一些办法来解决的,或者说它不是阻碍可调试性的最根本的问题。所以后面我们在做香山的时候,我们在这些方面已经处理得比较好了。

就像我们有同学,他自己开发了一个工具,可以把电路波形直接转变成一个上层的高级的事件。这个时候他其实就用了Chisel和FIRRTL里面的特性。

因为FIRRTL它有点像LLVM,它可以放很多的这样自己设计的模块,FIRRTL也可以定义自己需要的功能。这个在LLVM里叫pass,在FIRTEL里叫transformer。

有了这些工具,就可以让Chisel源码和下面波形建立起联系,让调试的过程甚至比原来用Verilog还要方便。

除了这个工具,同学们还自定义和扩展了一些printf,让我们在调的时候很多时候根本不用去看波形。这些都得益于Chisel的强大和开放。

小结

在下篇文章中,我会继续分享包云岗研究员对芯片敏捷开发深刻理解,包括对工具链的优化和挑战等等。敬请期待。

本文提到的所有技术论文,包括“香山”处理器的介绍幻灯片,均已上传至知识星球“老石谈芯 – 进阶版”,请在文末扫码加入星球查看。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1664

    文章

    22502

    浏览量

    639239
  • vhdl
    +关注

    关注

    30

    文章

    822

    浏览量

    131863
  • dma
    dma
    +关注

    关注

    3

    文章

    582

    浏览量

    106272
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74380
  • Chisel
    +关注

    关注

    0

    文章

    7

    浏览量

    591

原文标题:芯片开发语言:Verilog在左,Chisel在右

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于Vivado的AD9680 FPGA芯片测试

    在FPGA开发领域,与高速ADC芯片如AD9680协同工作是一项充满挑战但又极具乐趣的任务。今天咱们就聊聊基于Vivado平台,针对AD9680芯片,实现1G采样率且4通道(lane4)的FPGA测试程序,并且是用
    的头像 发表于 03-18 11:26 2637次阅读

    Verilog HDL语法学习笔记

    Verilog HDL 语 言 最 初 是 作为 Gateway Design Automation 公 司 ( Gateway DesignAutomation 公司后来被著名的 Cadence Design Systems 公司收购)模拟器产品开发的硬件建模
    的头像 发表于 03-04 15:04 5781次阅读
    <b class='flag-5'>Verilog</b> HDL语法学习笔记

    FPGA 入门必看:Verilog 与 VHDL 编程基础解析!

    很多开发者第一次接触FPGA,都会有同样的疑问:FPGA是硬件,不是软件,怎么写程序?答案就是用硬件描述语言(HDL),最常用的就是Verilog和VHDL。今天,我们就带你入门,搞清楚FPGA编程
    的头像 发表于 01-19 09:05 716次阅读
    FPGA 入门必看:<b class='flag-5'>Verilog</b> 与 VHDL 编程基础解析!

    【「龙芯之光 自主可控处理器设计解析」阅读体验】--LoongArch的SOC逻辑设计

    和验证。 1在EDA软件工程完成设计文件和开发编译。 BX2004设计工程目录如下: 使用Verilog硬件编程语言设计工程文件。编译使用到了交叉编译工具,也包括了Makefile脚本文件的编写配置
    发表于 01-18 13:45

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    一、C语言在嵌入式开发中的现状与重要性 C语言在嵌入式开发领域仍然占据主导地位,根据Barr集团的研究,目前95%的嵌入式系统代码采用C或C++编写。ARM Cortex-M系列
    发表于 12-18 11:46

    C语言特性

    1、高效性:直接操作硬件 C 语言代码的执行效率极高,这是其最为显著的优势之一。它能够直接访问硬件资源,与底层硬件进行紧密交互,充分发挥硬件的性能潜力。在嵌入式开发中,硬件资源往往十分有限,对程序
    发表于 11-24 07:01

    C语言在嵌入式开发中的应用

    1、控制系统开发 在工业控制领域,C 语言是当之无愧的中流砥柱。无论是工业自动化生产线中的运动控制、温度控制、压力控制等系统,还是汽车电子中的发动机控制单元(ECU)、防抱死制动系统(ABS)、车辆
    发表于 11-21 08:09

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打开仿真顶层文件tb_top.v,存放在ITCM模块里面的指令是通过readmemh函数读入.verilog文件实现的: 下面通过对NucleiStudio IDE进行设置,实现将c
    发表于 11-05 07:07

    RISC-V工具链搭建

    /riscv_install_tools/bin中产生riscv工具链和pk和spike 至此,工具链生成完成。 2.为Rocket-chip创建可以产生RTL的环境。 1)克隆和测试chisel和firrtl
    发表于 10-29 08:02

    CICC2033:关于C语言仿真的一些说明

    C语言运行说明 操作说明(以helloworld为例) 1、在SDK环境下写好C语言相关代码。 最简单的写法为根据已有demo进行更改。如果说需要重新创建新的SDK项目,具体写法可以参考官
    发表于 10-21 14:18

    基于FPGA开发板TSP的串口通信设计

    本文详细介绍基于Terasic FPGA开发板TSP(又名C5P和OSK)和其板载CP2102N USB-UART桥接芯片的串口通信系统设计与实现。系统采用Verilog HDL编写UART收发控制器,通过CP2102N实现FP
    的头像 发表于 10-15 11:05 4816次阅读
    基于FPGA<b class='flag-5'>开发</b>板TSP的串口通信设计

    用药提醒新升级:WT588E02B-8S语音提示芯片实现语言播报

    开发,以实现精准用药提醒与跨区域语言适配。 唯创知音的 WT588E02B-8S 语音芯片,凭借其独特的性能和灵活的通讯方式,为智能药盒的语音功能升级与国际化拓展提供了理想的解决方案。
    的头像 发表于 08-13 16:32 906次阅读

    芯片清洗要用多少水洗

    芯片清洗过程中用水量并非固定值,而是根据工艺步骤、设备类型、污染物种类及生产规模等因素动态调整。以下是关键影响因素和典型范围:✅1.主要影响因素(1)清洗阶段不同预冲洗/粗洗:快速去除大块颗粒或松散
    的头像 发表于 08-05 11:55 1165次阅读
    <b class='flag-5'>芯片</b>清洗<b class='flag-5'>要用</b>多少水洗

    为什么我选择VHDL入门

    在群里交流提问的时候,大家总是惊讶并疑惑:为什么我要选择 VHDL入门?因为好像 99% 搞 FPGA 开发的人都在用 Verilog。 我的选择,是通过网上搜索的讨论而做出的,为了留存,我这里水一
    的头像 发表于 06-25 11:18 1399次阅读
    为什么我选择VHDL入门

    verilog模块的调用、任务和函数

    在做模块划分时,通常会出现这种情形,某个大的模块中包含了一个或多个功能子模块,verilog是通过模块调用或称为模块实例化的方式来实现这些子模块与高层模块的连接的.
    的头像 发表于 05-03 10:29 1737次阅读
    <b class='flag-5'>verilog</b>模块的调用、任务和函数