
Chisel芯片开发入门系列
文章平均质量分 84
Chisel芯片开发入门系列,贴近【上手】和【实战】,力求【简洁】和【准确】,以官方网站的资料为优先参考确保准确,增加对要点和容易踩坑的地方进行针对性的解读说明确保简洁。
ChipCamp
芯营地ChipCamp。
---【1】与芯片相关的技术、方法、工具、经验探讨。
---【2】Verilog和SystemVerilog编程(设计),测试(仿真),相关工具的使用。
---【3】Chisel编程(设计)、测试(仿真),相关工具的使用:***当前重点***。
---【4】EDA软件前端(词法语法语义)、中端(中间表示IR)、后端(Verilog等)。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Chisel芯片开发入门系列 -- 19. CPU芯片开发和解释9(1x子系列总结和备忘)
本文是Chisel芯片开发Level-1系列的总结,重点介绍了基于RISC-V指令集的CPU开发过程。主要内容包括:1)通过单周期和5级流水线架构实现RV32I指令集,分析了数据冒险问题;2)指出项目可扩展方向,如Vector扩展指令和自定义指令;3)提出后续可进行的工程验证和硬件综合工作;4)推荐对比学习法,通过git版本对比理解代码演进。文章强调Chisel不是替代Verilog,而是为软件开发人员提供更友好的硬件开发入门路径。原创 2025-08-07 06:00:00 · 1640 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 18. CPU芯片开发和解释8(流水线架构的代码级理解)
本文结合CPU的多级流水线的架构图、深入介绍了CPU的多级流水线的代码原理,并通过对比多级流水线处理器(5-Stage Pipeline Processor)和单周期处理器(Single Cycle Processor),理解它们在代码原理上的差异和原则。原创 2025-08-05 20:00:00 · 1458 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 17. CPU芯片开发和解释7(5级流水线指令原理)
本文介绍了Chisel实现CPU的多级流水线的原理,并通过实际的指令序列的执行来理解CPU多级流水线的流水线冒险,指令空泡等现象。原创 2025-08-02 15:13:43 · 1081 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 16. CPU芯片开发和解释5(指令序列的构造和测试)
本文针对这一套RISC-V CPU指令集的Chisel代码实现,构造指令序列(也就是CPU上的用户程序!!!)进行测试。这需要对指令集格式有细致的了解才能构造出来,所参考的是RISC-V的32位基础指令集RV32I。构造出来的代码,还需要在代表CPU芯片的Chisel代码上进行运行及调试,才能最终完成测试,从而加深对CPU芯片的理解。原创 2025-08-01 06:00:00 · 732 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 15. CPU芯片开发和解释5(一整套RISC-V指令集)
本文介绍的是一整套RISC-V的指令集的CPU芯片开发Demo代码,这一整套RISC-V指令集有38条指令,包括Load/Store、运算指令(算术-逻辑-移位)、条件跳转(BRanch)等常见的,还包括一个CSR的概念及配套的CSR系列指令。原创 2025-07-31 06:30:00 · 1275 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 14. CPU芯片开发和解释4(Load/Store指令再探)
本文继续介绍CPU的指令译码后的执行并特定针对Load/Store执行,看看CPU如何执行一个Store Word(SW)的指令,指令中包括有src的寄存器组偏移量、dst寄存器组偏移量,以及立即数(对dst寄存器值进行偏移),实现SW就是从src读取数据后写到dst所代表的内存地址上。原创 2025-07-30 10:49:24 · 680 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 13. CPU芯片开发和解释3(Load/Store指令初探)
本文介绍CPU的指令译码后的执行并特定针对Load/Store指令的执行。Load指令就是从内存中将数据加载(读取)到CPU的寄存器中,Store指令则是将CPU寄存器中的值储存(写入)到内存中,这两个指令(简称Load/Store或者L/S)是RISC-V等指令集中“唯一”的内存读写指令,区别于X86中的指令结构(在各个指令中都支持内存地址作为操作数,比如加法操作,可以是2个寄存器的值相加,也可以是一个寄存器数和一个内存地址代表的数相加,还可以是内存地址代表的数和一个在指令代码中的立即数相加等)。原创 2025-07-29 18:56:44 · 467 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 12. CPU芯片开发和解释2(指令译码)
本篇解释位于gitcode 的 ChipCamp/riscv-chisel-book 项目中的(指令译码)的代码。从32bit的指令字中解析出各个字段,包括rs1_addr和rs2_addr,再将rs1_addr和rs2_addr作为偏移量去读取模块中的寄存器组regfile获得寄存器字。原创 2025-07-29 10:38:39 · 728 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 11. CPU芯片开发和解释1(取指令)
本文对CPU的取指令模块的运行过程进行解释说明和备忘。取指模块的Top代表了电路的“顶层模块”,里面包含Core和Memory两个模块。Core模块和Memory模块各自有随着TestBench启动而“一次性预先做的工作”,Core模块是将pc_reg寄存器初始化为0,Memory模块是将fetch.hex文件中的指令加载到模块的内存中。初始化之后的工作都是在时钟信号的驱动下的“响应式”工作--Core模块读取pc_reg所指向的指令并打印、然后将pc_reg加1个Word以便在下个时钟周期读取下一指令。原创 2025-07-29 07:00:00 · 655 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 10. CPU芯片开发和解释0
本篇文章介绍使用Chisel开发一个“CPU芯片”!通过实现一个“CPU芯片”来理解芯片“编程”,因为CPU就是咱软件工程师心中的“殿堂”和“明珠”。原创 2025-07-28 16:56:24 · 815 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 9. 波形文件生成及时序分析
本文介绍如何在Chisel测试框架中生成和查看波形文件。通过分析chisel-examples中的Fifo示例,详细说明了VCD波形文件的生成过程和使用gtkwave工具进行时序分析的方法。重点展示了如何利用gtkwave观察Buffer模块的输入输出信号、内部寄存器状态随时间的变化,以及通过步进功能分析时序特征。文章还强调Chisel语言的生成式特征,即通过参数化实现不同位宽和深度的电路生成。.原创 2025-07-03 16:36:17 · 1129 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 8. 测试验证框架Chiseltest
本文介绍了Chisel芯片开发中的验证测试环节。主要内容包括:1)Chisel代码结构由多个Module和测试Main函数组成;2)验证测试流程分为生成Verilog代码的基础测试和功能验证;3)项目目录结构将设计代码(src/main/scala)与测试代码(src/test/scala)分开;4)采用chiseltest框架编写测试用例,通过expect方法验证电路功能;5)使用Makefile简化编译测试流程。文章强调芯片开发与验证是紧密结合的前端工作,并推荐在Linux环境下进行开发。原创 2025-07-02 19:55:35 · 1250 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 7. Linux上完整构建Chisel环境
本系列前面的1~6在Windows上做了一遍,一只脚已经踏进了Chisel编程和开发的大门,但有后面要深入作Chisel的代码验证时必须使用Linux,比如Verilog的开源验证工具Verilator就只能在Linux下运行。如果没有成功,也是很正常的,因为在这么长的工作流程、特别是第4步骤中包括源代码的编写、构建文件build.sbt的编写,是有可能出错的。3、安装Sbt,如前面的文章所述,使用tgz包解压缩即可,绿色安装,然后在PATH变量中增加sbt的bin目录。原创 2025-06-22 18:08:10 · 180 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 6. 从1到10的芯片编程
这次看到的Verilog代码的生成不再是通过scala语言的println语句打印出来的,而是Chisel库中的单例对象的emitSystemVerilogFile()方法输出到了一个.sv的文件中了(sv是SystemVerilog文件的后缀)。还是在刚才的目录下,还是那个同样的./build.sbt,但对./src/main/scala/目录下的Chisel代码进行扩充,一扩十是目标,但这篇文章就以一扩四作为例子。此时运行sbt run以后,sbt会让用户选择对哪一个main函数进行编译运行!原创 2025-06-22 13:01:54 · 468 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 5. Chisel的HelloWorld到SystemVerilog
本文瞄准Chisel的【上手】目标:Chisel代码 + Sbt构建文件(类似Makefile文件) + Sbt上手运行生成出Verilog代码!讲解其中需要的关键配置build.sbt文件并给出示范。原创 2025-06-22 09:17:43 · 884 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 4. JDK Installation
要点来了:设置JAVA_HOME和PATH两个环境变量,前者设置为jdk的目录(比如D:\jdk\jdk-24),后者设置为JAVA_HOME目录下的bin子目录(比如D:\jdk\jdk-24\bin),然后就可以随时调用javac和java了。如本系列的上一篇文章《Chisel的依赖 -- Scala Installation》所说,Chisel依赖于Scala,而Scala依赖于Java,这两者构成了Chisel的一个2曾的依赖链条,本篇来看看JDK的安装。原创 2025-06-20 11:28:32 · 152 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 3. Scala Installation
按:Chisel依赖于Scala语言(编译器、语言库),而Scala语言又依赖于Java语言(编译器、语言库、JVM虚拟机),因此Chisel的依赖有【两层】----Scala和Java。本篇介绍Scala的安装,其目标是要能在机器上跑通Hello.scala。原创 2025-06-20 10:37:29 · 859 阅读 · 0 评论 -
Chisel芯片开发入门系列 -- 1. Chisel Introduction
1、Chipsel和Scala的关系。2、Scala-CLI是一个灵活的工具,但要稳定地基于Scala开发则不建议使用Scala-CLI。3、《Digital Design with Chisel》是一本好书、活书,至今已经更新到了第6版,是欧洲的一个作者,很不错,纯电子版。原创 2025-06-20 09:27:41 · 690 阅读 · 1 评论 -
Chisel芯片开发入门系列 -- 2. Chisel Installation
这篇文章没有介绍Scala的安装,也没有介绍Chisel的安装。实际上这两个也是使用Chisel语言进行数字设计和仿真的必要工具。对于想基于Chisel跑通Chisel-Hello来“打底”的初学者来说,最重要的安装应该是:JDK的安装,Scala的安装(及运行Hello.scala)这篇官方Installation文档可以说相当全面,包括了以下几个层次的软件依赖安装:1是JDK。2是构建工具(Build Tools)包括Mill和SBT。4是作为Verilog仿真器的Verilator。原创 2025-06-20 09:48:32 · 848 阅读 · 0 评论