1.8.1
1. Chipyard Basics
1.1. Chipyard Components
1.1.1. Generators
1.1.1.1. Processor Cores
1.1.1.2. Accelerators
1.1.1.3. System Components:
1.1.2. Tools
1.1.3. Toolchains
1.1.4. Software
1.1.5. Sims
1.1.6. Prototyping
1.1.7. VLSI
1.2. Development Ecosystem
1.2.1. Chipyard Approach
1.2.2. Chisel/FIRRTL
1.2.3. RTL Generators
1.3. Configs, Parameters, Mixins, and Everything In Between
1.3.1. Parameters
1.3.2. Configs
1.3.3. Cake Pattern / Mixin
1.3.4. Additional References
1.4. Initial Repository Setup
1.4.1. Prerequisites
1.4.1.1. Running on AWS EC2 with FireSim
1.4.1.2. Default Requirements Installation
1.4.2. Setting up the Chipyard Repo
1.4.3. Sourcing
env.sh
1.4.4. Pre-built Docker Image
1.4.5. What’s Next?
1.4.6. Upgrading Chipyard Release Versions
2. Simulation
2.1. Software RTL Simulation
2.1.1. Verilator (Open-Source)
2.1.2. Synopsys VCS (License Required)
2.1.3. Choice of Simulator
2.1.4. Simulating The Default Example
2.1.5. Makefile Variables and Commands
2.1.6. Simulating A Custom Project
2.1.7. Fast Memory Loading
2.1.8. Generating Waveforms
2.1.9. Additional Verilator Options
2.2. FPGA-Accelerated Simulation
2.2.1. FireSim
2.2.2. Running your Design in FireSim
3. Included RTL Generators
3.1. Rocket Chip
3.1.1. Tiles
3.1.2. Memory System
3.1.3. MMIO
3.1.4. DMA
3.2. Rocket Core
3.3. Berkeley Out-of-Order Machine (BOOM)
3.4. Constellation
3.5. Hwacha
3.6. Gemmini
3.7. IceNet
3.7.1. Controller
3.7.2. Send Path
3.7.3. Receive Path
3.7.4. Pause Handler
3.7.5. Linux Driver
3.7.6. Configuration
3.8. Test Chip IP
3.8.1. Serial Adapter
3.8.2. Block Device Controller
3.8.3. TileLink SERDES
3.8.4. TileLink Switcher
3.8.5. TileLink Ring Network
3.8.6. UART Adapter
3.8.7. SPI Flash Model
3.9. SiFive Generators
3.9.1. Last-Level Cache Generator
3.9.2. Peripheral Devices
3.10. SHA3 RoCC Accelerator
3.10.1. Introduction
3.10.2. Technical Details
3.10.3. Using a SHA3 Accelerator
3.11. CVA6 Core
3.12. Ibex Core
3.13. FFT Generator
3.13.1. Configuration
3.13.2. Usage and Testing
3.13.3. Acknowledgements
3.14. NVDLA
3.14.1. NVDLA Software with FireMarshal
3.15. Sodor Core
3.16. Mempress
4. Development Tools
4.1. Chisel
4.2. FIRRTL
4.3. Treadle and FIRRTL Interpreter
4.4. Chisel Testers
4.5. Dsptools
4.6. Barstools
4.6.1. Mapping technology SRAMs (MacroCompiler)
4.6.1.1. MacroCompiler Options
4.6.1.2. SRAM MDF Fields
4.6.2. Separating the Top module from the TestHarness module
4.6.3. Macro Description Format
4.6.4. Mapping technology IO cells
4.7. Dromajo
5. VLSI Flow
5.1. Building A Chip
5.1.1. Transforming the RTL
5.1.1.1. Modifying the logical hierarchy
5.1.2. Creating a floorplan
5.1.3. Running the VLSI tool flow
5.2. Core Hammer
5.2.1. Actions
5.2.2. Steps
5.2.3. Hooks
5.2.4. VLSI Flow Control
5.3. Configuration (Hammer IR)
5.4. Tool Plugins
5.5. Technology Plugins
5.6. Using Hammer To Place and Route a Custom Block
5.6.1. Initialize the Hammer Plug-ins
5.6.2. Setting up the Hammer Configuration Files
5.6.3. Building the Design
5.6.4. Running the VLSI Flow
5.6.4.1. Synthesis
5.6.4.2. Place-and-Route
5.6.4.3. Power Estimation
5.6.4.4. Signoff
5.6.5. Customizing Your VLSI Flow in Hammer
5.6.5.1. Advanced Environment Setup
5.6.5.2. Composing a Hierarchical Design
5.6.5.3. Customizing Generated Tcl Scripts
5.7. ASAP7 Tutorial
5.7.1. Project Structure
5.7.2. Prerequisites
5.7.3. Initial Setup
5.7.4. Building the Design
5.7.5. Running the VLSI Flow
5.7.5.1. example-vlsi
5.7.5.2. example-asap7.yml
5.7.5.3. Synthesis
5.7.5.4. Place-and-Route
5.7.5.5. DRC & LVS
5.7.5.6. Simulation
5.7.5.7. Power/Rail Analysis
5.8. Sky130 Tutorial
5.8.1. Project Structure
5.8.2. Prerequisites
5.8.3. Initial Setup
5.8.4. Building the Design
5.8.5. Running the VLSI Flow
5.8.5.1. example-vlsi-sky130
5.8.5.2. example-sky130.yml
5.8.5.3. example-tools.yml
5.8.5.4. Synthesis
5.8.5.5. Place-and-Route
5.8.5.6. DRC & LVS
5.8.5.7. Simulation
5.8.5.8. Power/Rail Analysis
5.9. Sky130 + OpenROAD Tutorial
5.9.1. Project Structure
5.9.2. Prerequisites
5.9.3. Initial Setup
5.9.4. Building the Design
5.9.5. Running the VLSI Flow
5.9.5.1. example-vlsi-sky130
5.9.5.2. example-sky130.yml
5.9.5.3. example-openroad.yml
5.9.5.4. Synthesis
5.9.5.5. Place-and-Route
5.9.5.6. DRC & LVS
5.9.5.7. VLSI Flow Control
5.9.6. Documentation
5.10. Advanced Usage
5.10.1. Alternative RTL Flows
5.10.2. Under the Hood
5.10.3. Manual Step Execution & Dependency Tracking
5.10.4. Hierarchical RTL/Gate-level Simulation, Power Estimation
6. Customization
6.1. Heterogeneous SoCs
6.1.1. Creating a Rocket and BOOM System
6.1.2. Adding Hwachas
6.1.3. Assigning Accelerators to Specific Tiles with MultiRoCC
6.2. SoCs with NoC-based Interconnects
6.2.1. Private Interconnects
6.2.2. Shared Global Interconnect
6.3. Integrating Custom Chisel Projects into the Generator Build System
6.4. Adding a custom core
6.4.1. Wrap Verilog Module with Blackbox (Optional)
6.4.2. Create Parameter Case Classes
6.4.3. Create Tile Class
6.4.4. Connect TileLink Buses
6.4.5. Create Implementation Class
6.4.6. Connect Interrupt
6.4.7. Create Config Fragments to Integrate the Core
6.5. RoCC vs MMIO
6.6. Adding a RoCC Accelerator
6.6.1. Adding RoCC accelerator to Config
6.7. MMIO Peripherals
6.7.1. Advanced Features of RegField Entries
6.7.2. Connecting by TileLink
6.7.3. Top-level Traits
6.7.4. Constructing the DigitalTop and Config
6.7.5. Testing
6.8. Dsptools Blocks
6.8.1. Creating a DspBlock
6.8.2. Connecting DspBlock by TileLink
6.8.3. Top Level Traits
6.8.4. Constructing the Top and Config
6.8.5. FIR Testing
6.9. Keys, Traits, and Configs
6.9.1. Keys
6.9.2. Traits
6.9.3. Config Fragments
6.10. Adding a DMA Device
6.11. Incorporating Verilog Blocks
6.11.1. Adding a Verilog Blackbox Resource File
6.11.2. Defining a Chisel BlackBox
6.11.3. Instantiating the BlackBox and Defining MMIO
6.11.4. Defining a Chip with a BlackBox
6.11.5. Software Testing
6.11.6. Support for Verilog Within Chipyard Tool Flows
6.12. Memory Hierarchy
6.12.1. The L1 Caches
6.12.2. The System Bus
6.12.3. The SiFive L2 Cache
6.12.4. The Broadcast Hub
6.12.5. The Outer Memory System
6.13. Chipyard Boot Process
6.13.1. BootROM and RISC-V Frontend Server
6.13.2. The Berkeley Boot Loader and RISC-V Linux
6.14. Adding a Firrtl Transform
6.14.1. Where to add transforms
6.14.2. Examples of transforms
6.15. IOBinders and HarnessBinders
6.15.1. IOBinders
6.15.2. HarnessBinders
7. Target Software
7.1. FireMarshal
7.2. The RISC-V ISA Simulator (Spike)
7.3. Baremetal RISC-V Programs
8. Advanced Concepts
8.1. Tops, Test-Harnesses, and the Test-Driver
8.1.1. ChipTop/DUT
8.1.2. System/DigitalTop
8.1.2.1. BaseSubsystem
8.1.2.2. Subsystem
8.1.2.3. System
8.1.2.4. Tops
8.1.3. TestHarness
8.1.4. TestDriver
8.2. Communicating with the DUT
8.2.1. Using the Tethered Serial Interface (TSI) or the Debug Module Interface (DMI)
8.2.1.1. Primer on the Front-End Server (FESVR)
8.2.1.2. Using the Tethered Serial Interface (TSI)
8.2.1.3. Using the Debug Module Interface (DMI)
8.2.1.4. Starting the TSI or DMI Simulation
8.2.2. Using the JTAG Interface
8.2.2.1. Debugging with JTAG
8.2.3. Example Test Chip Bringup Communication
8.2.3.1. Intro to Typical Chipyard Test Chip
8.2.3.2. Simulation Setup of the Example Test Chip
8.2.3.3. Bringup Setup of the Example Test Chip after Tapeout
8.3. Debugging RTL
8.3.1. Waveforms
8.3.2. Print Output
8.3.3. Basic tests
8.3.4. Torture tests
8.3.5. Firesim Debugging
8.4. Debugging BOOM
8.4.1. Setting up Dromajo Co-simulation
8.5. Accessing Scala Resources
8.6. Context-Dependent-Environments
8.6.1. Site
8.6.2. Here
8.6.3. Up
8.7. Creating Clocks in the Test Harness
8.8. Managing Published Scala Dependencies
8.8.1. Publishing Local Changes
9. TileLink and Diplomacy Reference
9.1. TileLink Node Types
9.1.1. Client Node
9.1.2. Manager Node
9.1.3. Register Node
9.1.4. Identity Node
9.1.5. Adapter Node
9.1.6. Nexus Node
9.2. Diplomacy Connectors
9.2.1. :=
9.2.2. :=*
9.2.3. :*=
9.2.4. :*=*
9.3. TileLink Edge Object Methods
9.3.1. Get
9.3.2. Put
9.3.3. Arithmetic
9.3.4. Logical
9.3.5. Hint
9.3.6. AccessAck
9.3.7. HintAck
9.3.8. first
9.3.9. last
9.3.10. done
9.3.11. count
9.3.12. numBeats
9.3.13. numBeats1
9.3.14. hasData
9.4. Register Router
9.4.1. Basic Usage
9.4.2. Decoupled Interfaces
9.4.3. Using Functions
9.4.4. Register Routers for Other Protocols
9.5. Diplomatic Widgets
9.5.1. TLBuffer
9.5.2. AXI4Buffer
9.5.3. AXI4UserYanker
9.5.4. AXI4Deinterleaver
9.5.5. TLFragmenter
9.5.6. AXI4Fragmenter
9.5.7. TLSourceShrinker
9.5.8. AXI4IdIndexer
9.5.9. TLWidthWidget
9.5.10. TLFIFOFixer
9.5.11. TLXbar and AXI4Xbar
9.5.12. TLToAXI4 and AXI4ToTL
9.5.13. TLROM
9.5.14. TLRAM and AXI4RAM
10. Prototyping Flow
10.1. General Setup and Usage
10.1.1. Sources and Submodule Setup
10.1.2. Generating a Bitstream
10.1.3. Debugging with ILAs on Supported FPGAs
10.2. Running a Design on VCU118
10.2.1. Basic VCU118 Design
10.2.2. Brief Implementation Description + More Complicated Designs
10.2.3. Introduction to the Bringup Design
10.2.4. Running Linux on VCU118 Designs
10.2.4.1. Building Linux with FireMarshal
10.2.4.2. Setting up the SDCard
10.2.4.3. Transfer and Run Linux from the SDCard
10.3. Running a Design on Arty
10.3.1. Basic Arty Design
10.3.2. Brief Implementation Description and Guidance for Adding/Changing Xilinx Collateral
Chipyard
»
Search
Please activate JavaScript to enable the search functionality.
Read the Docs
v: 1.8.1
Versions
latest
stable
1.8.1
1.8.0
1.7.1
1.7.0
1.6.2
1.6.1
1.6.0
1.5.0
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
run-ci
main
dev
conda
Downloads
pdf
html
epub
On Read the Docs
Project Home
Builds