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
static、inline 关键字在C语言中的作用分析 static、inline1. static 关键字 作用:限制函数的作用域仅限于定义它的源文件(即内部链接)。这意味着每个包含该头文件的源文件都会生成该函数的一个独立实例,避免了多个定义导致的链接错误。 在头文件中使用:适用于小型、频繁调用的函数,允许每个源文件拥有自己的函数副本,避免链接器的重复定义错误。 2. inline 关键字 作用:建议编译器将函数调用替换为函数体本身,以减少函数 2024-09-17 C/C++ > PA2 #C/C++
调用 glibc 的技巧 一、一个问题1234native的IOE是基于SDL库实现的, 这些库很有可能会调用glibc的库函数, 例如malloc()和free(). 但我们自己实现的klib通常不能完美地符合glibc的标准, 因此直觉上看, 如果定义了__NATIVE_USE_KLIB__, 很可能会导致SDL库产生不正确的行为.不过你会发现, 即使定义了__NATIVE_USE_KLIB__, 也可以正确地在n 2024-09-12 ysyx > PA2 #PA2 #glibc #编译技巧
nemu框架细节研究(二) 一、前言前文细致地研究了命令 make ARCH=native ALL=add run 的运行过程,对于Makefile中的行为有了很准确地把握(几乎没有疑点,可以随意修改 Makefile 且保证不会出错)。这篇文章继续研究命令make ARCH=riscv32-nemu ALL=add run的行为。 二、riscv32-nemu 开始的地方由于 ARCH=riscv32-nemu,因此 2024-09-12 RISCV > PA > 虚拟机 #NEMU #PA2