Chipyard 是一个开源框架,用于敏捷开发基于 Chisel 的片上系统。
RTL设计
IC设计抽象级别:
行为级模型、RTL级模型和门级模型
行为级:比较高级的模型,主要用于testbench
RTL级:比较低级的模型,主要用于ASIC和FPGA设计
门级:更加低级的模型,主要用于后端的物理实现
RTL generators ?
Register Transfer Level寄存器传输层,寄存器传输层 (RTL)是抽象层的数字电路表示。数字电路中有两个元素:顺序电路(触发器)和组合电路(门),在这两个元素的帮助下,数字设计人员可以实现任何电路,即加法器、乘法器、计数器、存储器和状态机器。RTL 有两种常用的变体——即:Verilog和VHDL,数字设计工程师可以用简单的文本输入语言来表示设计的逻辑/功能。
RTL Synthesis
RTL 合成器的主要职责是将代码转换为门级网表
RTL Timing Analysis
对于数字设计,时序分析可以在三个不同的抽象级别上执行:
- RTL 级别
- 门级
- 布局级别
在 RTL 设计级别执行时序分析比在门级、布局级或制造的时序分析期间等待发现相同的问题更快且具有成本效益。
RTL for Synchronous vs Asynchronous Logic
RTL 可用于设计任何数字电路,无论是组合电路还是顺序电路。同样,RTL 逻辑也可以实现异步(基于事件)或同步(时钟)的逻辑
RTL Simulation
一个好的设计能够满足时序要求是流程的一部分,设计的验证是第二部分。有像 Modelsim 这样的 RTL 设计模拟器,用于通过仿真和调试来验证设计。这些工具支持混合语言:VHDL、Verilog、SystemVerilog Simulator,支持最新的验证库,包括通用验证方法 (UVM),支持最新的 Xilinx、Intel、Microsemi FPGA。这些工具可以使用 UVM 工具箱、UVM 图、类查看器、事务流和数据来允许基于 OVM/UVM 类库的可视化映射和调试设计。它们具有内置调试工具,可提供代码跟踪、波形、数据流、FSM 窗口、覆盖、断言和内存可视化功能,并具有高级代码和功能覆盖能力。
RTL Usage in FPGA/ASIC Design Flow
RTL 语言 RTL 设计流程的进步也是 ASIC 设计流程的一部分。设计人员可以在 RTL 中编写这些电路的功能并生成门级网表,从而进一步用于为 ASIC 设计进行布局,而不是从头开始设计 ASIC,这也涉及编写库。图 5 显示了 ASIC 和 FPGA 设计的设计流程。从设计规范和 RTL 开始,两者都具有相同的初始设计流程。无论您想为 FPGA 和 ASIC 做 RTL,RTL 设计都将保持不变。差异在综合 FPGA 后开始,不需要设计师努力进行平面规划和布局布线,而是由工具完成。ASIC 设计人员需要进行平面规划和布线以优化设计以获得更好的性能
RTL Design Tools
RTL 工具领域的主要参与者如下
- Xilinx/AMD ─ Vivado
- Intel/Altera ─ Quartus
- Synopsys ─ RTL Architect
- Cadence ─ Genus (RTL synthesis tool)
chipyard组件
processor core
- Rocket Core
一个有序的 RISC-V 内核
- BOOM (Berkeley Out-of-Order Machine)
一个乱序的 RISC-V 内核
- CVA6 Core
用 System Verilog 编写的有序 RISC-V 内核
- Ibex Core
用 System Verilog 编写的有序 32 位 RISC-V 内核
- Sodor是 5 个简单的 RV32MI 内核的集合,专为教育目的而设计
Accelerators
- Hwacha
解耦矢量架构协处理器
- Gemmini
针对神经网络的矩阵乘法加速器
- SHA3
SHA3 哈希函数的固定函数加速器,这个简单的加速器被用作使用 RoCC 接口的一些 Chipyard 集成流程的演示,RoCC(Rocket Chip Coprocessor) 是 Rocket-core 的协处理器,可以通过RISC-V 自定义扩展指令集作为命令控制RoCC 执行
- NVDLA是由 NVIDIA 开发的开源深度学习加速器
- FFT 发生器是一个可参数化的 fft 加速器
System Components
- icenet
一种网络接口控制器 (NIC),旨在实现高达 200 Gbps 的速度
- sifive-blocks
由 SiFive 实现并由 SiFive 项目使用的系统组件,旨在与 Rocket Chip 生成器集成
- AWL (Analog Widget Library)
与高速串行链路集成所需的数字组件
- testchipip
用于测试芯片并将它们与更大的测试环境连接的实用程序集合
Scala tools
- Chisel
嵌入在 Scala 中的硬件描述库,通过在 Scala 编程语言中嵌入硬件生成原语,Chisel 用于使用元编程编写 RTL 生成器
- FIRRTL
用于数字设计的 RTL 描述的中间表示库,FIRRTL 用作 Chisel 和 Verilog 之间的形式化数字电路表示。FIRRTL 支持在 Chisel 精细化和 Verilog 生成之间进行数字电路操作
- Barstools
一组常见的 FIRRTL 转换,用于在不更改发生器源 RTL 的情况下操纵数字电路
- Dsptools
用于编写自定义信号处理硬件以及将自定义信号处理硬件集成到 SoC
- Dromajo
RV64GC 仿真器主要用于协同仿真
Toolchains
- riscv-tools
用于在 RISC-V ISA 上开发和执行软件的软件工具链集合,包括编译器和汇编器工具链、功能性 ISA 模拟器 (spike)、Berkeley Boot Loader (BBL) 和代理内核。以前需要 riscv-tools 存储库来运行任何 RISC-V 软件,但是,许多 riscv-tools 组件已经被上传到它们各自的开源项目(Linux、GNU 等)。尽管如此,为了一致的版本控制以及定制硬件的软件设计灵活性,我们在 Chipyard 框架中包含了 riscv-tools 存储库和安装
- esp-tools
一个 riscv 工具的分支,旨在与 Hwacha 非标准 RISC-V 扩展一起使用。这个 fork 也可以用作演示如何将额外的 RoCC 加速器添加到 ISA 级仿真 (Spike) 和更高级别的软件工具链(GNU binutils、riscv-opcodes 等)的示例
Software
- FireMarshal
FireMarshal 是 Chipyard 用于创建在其平台上运行的软件的默认工作负载生成工具
Sims
- Verilator
Verilator 是一个开源的 Verilog 模拟器。该
verilator目录提供了从相关生成的 RTL 构建基于 Verilator 的模拟器的包装器,允许在模拟器上执行测试 RISC-V 程序 - VCS
VCS 是专有的 Verilog 模拟器。假设用户拥有有效的 VCS 许可证和安装,该
vcs目录提供了从相关生成的 RTL 构建基于 VCS 的模拟器的包装器,允许在模拟器上执行测试 RISC-V 程序 - FireSim
FireSim 是一个开源 FPGA 加速模拟平台,在公共云上使用 Amazon Web Services (AWS) EC2 F1 实例
Prototyping
- FPGA Prototyping
使用 SiFive 的 Chipyard 支持 FPGA 原型设计
fpga-shells
VLSI
- Hammer
Hammer 是一个 VLSI 流程,旨在提供通用物理设计概念与供应商特定 EDA 工具命令之间的抽象层。HAMMER 流程提供自动化脚本,这些脚本根据物理设计约束的更高级别描述生成相关工具命令
RTL Generators
在这个存储库中,所有的 Chisel RTL 都是作为生成器编写的。生成器是参数化程序,旨在根据配置规范生成 RTL 代码。生成器可用于使用在独特生成器项目中组织的系统组件集合来生成片上系统 (SoC)。生成器允许您创建一系列 SoC 设计,而不是单个设计实例
Chisel/FIRRTL
帮助快速创建新 RTL 设计的工具之一是Chisel 硬件构造语言和FIRRTL 编译器。Chisel 是 Scala 中的一种嵌入式语言,它提供了一组库来帮助硬件设计人员创建高度可参数化的 RTL。另一方面,FIRRTL 是一个硬件编译器,它允许用户运行 FIRRTL 通道,可以进行死代码消除、电路分析、连接检查等等!这两种工具的组合允许快速设计空间探索和新 RTL 的开发
Chipyard 支持两类仿真:
- 使用商业或开源 (Verilator) RTL 仿真器进行软件 RTL 仿真
- 使用 FireSim 的 FPGA 加速全系统仿真
Software RTL Simulation
Verilator
Synopsys VCS
Choice of Simulator