5 级流水线 CPU 的实现 前言在 PA2 中,要求实现一个单周期的 CPU,也就是 NPC。这个工作做完了之后,我发现了一本好书,名字叫做《CPU 制作入门:基于 RISC-V 和 Chisel》,是一个日本作者写的。内容非常适合入门,我花了一天时间就看到了单周期,被作者的思路完全影响了,第二天就立即开始重构 NPC,重构好了之后,整个项目看起来很清晰,把能在 ID 阶段做的事情都做了,一共分了 5 个阶段:IF、ID 2024-10-10 PA2 > CPU #Chisel #riscv32
nemu 工作原理解析 前言本人在实现 npc 的仿真环境的基础设施的时候,发现要重新写很多东西,好消息是这些东西已经在 nemu 中实现了。但是把它重新部署到 npc 却不是一件简单的事情,要对文件组织、编译流程有一个深刻的认识。 编译 2024-09-26 PA2 > 模拟器 #nemu #仿真
DPI-C 传递参数的问题 前言DPI-C 是 Verilator 提供的一种机制,可以在 Verilog 代码中调用 C/C++ 中定义的 C 语言函数。这为 Verilog 与仿真环境(C/C++)的交互提供了方便。 DPI-C 的基本使用步骤 在 Verilog 中声明 C 函数 使用 import "DPI-C" 语句在 Verilog 中声明要调用的 C 函数。语法如下 2024-09-25 PA2 > 模拟器 #DPI-C #Verilog
verilator 编译多个 cpp 文件 目录结构12345678910verilator_helpers/│ └── include/│ └── helpers.h│ └── src/│ └── helpers.cpp│verilatorTest/├── Makefile├── top.v└── main.cpp 实验在这个实践中,用 verilator 编译了多个文件:helpers.cp 2024-09-25 PA2 > 模拟器 #verilator #编译
Chisel 中的 BlackBox 机制 什么是 Chisel 中的 BlackBox?在硬件设计中,BlackBox 是一种用于集成外部硬件模块的方法。在 Chisel 中,BlackBox 允许设计者将已经存在的硬件描述(如 Verilog 或 SystemVerilog 编写的模块)引入到 Chisel 项目中,而无需用 Chisel 重新实现这些模块。这种方法特别适用于以下情况: 重用现有模块:你可能已经有一些经过验证的 V 2024-09-24 PA2 > 模拟器 #Chisel #DPI-C
YPC的研究 一、前言本文尝试去分析 YSYX 中的一个实例 YPC,YPC 使用 Chisel 来实现基本的指令执行过程:定义指令结构、取指、解码(操作码、操作数)、执行、更新 PC。 二、写被执行的程序这个程序主要使用内嵌汇编的方法来执行一些汇编代码,我们可以确认它仅仅包含这些指令,应为 YPC 被设计为只能执行 I类指令的两种指令,addi 和 ebreak。 1234567891011121314s 2024-09-20 PA2 > 模拟器 #模拟器 #YPC
Chisel 测试模块 一个普通的测试模块12345678910111213141516171819202122232425import chisel3._import chiseltest._import org.scalatest.flatspec.AnyFlatSpecclass FlipFlopTest extends AnyFlatSpec with ChiselScalatestTester { 2024-09-19 Scala > Chisel > PA2 #Scala #Chisel
30 分钟速成 Chisel 这针对拥有基础 Scala 知识但对 Chisel 完全零基础的入门教程。Chisel(Constructing Hardware In a Scala Embedded Language)是一个基于 Scala 的硬件描述语言,用于设计数字电路。这个教程从环境设置开始,逐步介绍 Chisel 的基本概念和实际应用。 目录 Chisel 简介 环境设置 基本概念 模块(Module) IO 2024-09-18 Scala > Chisel > PA2 #Scala #Chisel
30 分钟速成 Scala 0. 前言要想 30 分钟速成,必须要有面向对象的经验,不然可能得花一个小时来适应。这个教程将涵盖以下内容: 变量(Variables) 函数(Functions) 类(Classes) 继承(Inheritance) 方法(Methods) 对象(Objects) 伴生对象(Companion Objects) 特质(Traits) 每个部分都会包含简要的解释和示例代码,帮助你快速掌握 S 2024-09-18 Scala > PA2 #Scala