Logo
latest

Getting Started:

  • FireSim Basics
    • Three common use cases:
      • Single-Node Simulation In Parallel Using On-Premises FPGAs
      • Single-Node Simulation In Parallel Using Cloud FPGAs
      • Datacenter/Cluster Simulation
    • Other Use Cases
    • Background/Terminology
    • Using FireSim/The FireSim Workflow

AWS EC2 F1 Tutorial:

  • 1. Initial Setup/Installation
    • 1.1. First-time AWS User Setup
      • 1.1.1. Creating an AWS Account
      • 1.1.2. AWS Credit at Berkeley
      • 1.1.3. Requesting Limit Increases
    • 1.2. Configuring Required Infrastructure in Your AWS Account
      • 1.2.1. Select a region
      • 1.2.2. Key Setup
      • 1.2.3. Check your EC2 Instance Limits
      • 1.2.4. Start a t2.nano instance to run the remaining configuration commands
      • 1.2.5. Run scripts from the t2.nano
      • 1.2.6. Terminate the t2.nano
      • 1.2.7. Subscribe to the AWS FPGA Developer AMI
    • 1.3. Setting up your Manager Instance
      • 1.3.1. Launching a “Manager Instance”
        • 1.3.1.1. Access your instance
        • 1.3.1.2. Key Setup, Part 2
      • 1.3.2. Setting up the FireSim Repo
      • 1.3.3. Completing Setup Using the Manager
  • 2. Running FireSim Simulations
    • 2.1. Running a Single Node Simulation
      • 2.1.1. Building target software
      • 2.1.2. Setting up the manager configuration
      • 2.1.3. Launching a Simulation!
        • 2.1.3.1. Starting the Run Farm
        • 2.1.3.2. Setting up the simulation infrastructure
        • 2.1.3.3. Running a simulation!
    • 2.2. Running a Cluster Simulation
      • 2.2.1. Returning to a clean configuration
      • 2.2.2. Building target software
      • 2.2.3. Setting up the manager configuration
      • 2.2.4. Launching a Simulation!
        • 2.2.4.1. Starting the Run Farm
        • 2.2.4.2. Setting up the simulation infrastructure
        • 2.2.4.3. Running a simulation!
  • 3. Building Your Own Hardware Designs (FireSim Amazon FPGA Images)
    • 3.1. Amazon S3 Setup
    • 3.2. Build Recipes
    • 3.3. Running a Build

On-Premises FPGA Tutorial:

  • 1. Initial Setup/Installation
    • 1.1. Setting up your On-Premises Machine
      • 1.1.1. Xilinx Alveo FPGA Software Installation and Validation
        • 1.1.1.1. Requirements
        • 1.1.1.2. Setup Validation
      • 1.1.2. Other Miscellaneous Setup
      • 1.1.3. Setting up the FireSim Repo
      • 1.1.4. Final Environment Check
      • 1.1.5. Completing Setup Using the Manager
  • 2. Running FireSim Simulations
    • 2.1. Running a Single Node Simulation
      • 2.1.1. Building target software
      • 2.1.2. Setting up the manager configuration
      • 2.1.3. Launching a Simulation!
        • 2.1.3.1. Starting the Run Farm
        • 2.1.3.2. Setting up the simulation infrastructure
        • 2.1.3.3. Running a simulation!
  • 3. Building Your Own Hardware Designs (FireSim Vitis FPGA Xclbins)
    • 3.1. Build Recipes
    • 3.2. Running a Build

Advanced Docs:

  • Manager Usage (the firesim command)
    • 1. Overview
      • 1.1. “Inputs” to the Manager
      • 1.2. Logging
    • 2. Manager Command Line Arguments
      • 2.1. --runtimeconfigfile FILENAME
      • 2.2. --buildconfigfile FILENAME
      • 2.3. --buildrecipesconfigfile FILENAME
      • 2.4. --hwdbconfigfile FILENAME
      • 2.5. --overrideconfigdata SECTION PARAMETER VALUE
      • 2.6. --launchtime TIMESTAMP
      • 2.7. TASK
    • 3. Manager Tasks
      • 3.1. firesim managerinit --platform {f1,vitis}
      • 3.2. firesim buildbitstream
      • 3.3. firesim builddriver
      • 3.4. firesim tar2afi
      • 3.5. firesim shareagfi
      • 3.6. firesim launchrunfarm
      • 3.7. firesim terminaterunfarm
      • 3.8. firesim infrasetup
      • 3.9. firesim boot
      • 3.10. firesim kill
      • 3.11. firesim runworkload
      • 3.12. firesim runcheck
    • 4. Manager URI Paths
      • 4.1. URI Support
    • 5. Manager Configuration Files
      • 5.1. config_runtime.yaml
        • 5.1.1. run_farm
        • 5.1.2. metasimulation
        • 5.1.3. target_config
        • 5.1.4. tracing
        • 5.1.5. autocounter
        • 5.1.6. workload
        • 5.1.7. host_debug
      • 5.2. config_build.yaml
        • 5.2.1. build_farm
        • 5.2.2. builds_to_run
        • 5.2.3. agfis_to_share
        • 5.2.4. share_with_accounts
      • 5.3. config_build_recipes.yaml
        • 5.3.1. Build definition sections, e.g. awesome_firesim_config
      • 5.4. config_hwdb.yaml
        • 5.4.1. NAME_GOES_HERE
        • 5.4.2. Add more hardware config sections, like NAME_GOES_HERE_2
      • 5.5. Run Farm Recipes (run-farm-recipes/*)
        • 5.5.1. run_farm_type
        • 5.5.2. args
        • 5.5.3. aws_ec2.yaml run farm recipe
        • 5.5.4. externally_provisioned.yaml run farm recipe
      • 5.6. Build Farm Recipes (build-farm-recipes/*)
        • 5.6.1. build_farm_type
        • 5.6.2. args
        • 5.6.3. aws_ec2.yaml build farm recipe
        • 5.6.4. externally_provisioned.yaml build farm recipe
      • 5.7. Bit Builder Recipes (bit-builder-recipes/*)
        • 5.7.1. bit_builder_type
        • 5.7.2. args
        • 5.7.3. f1.yaml bit builder recipe
        • 5.7.4. vitis.yaml bit builder recipe
    • 6. Manager Environment Variables
      • 6.1. FIRESIM_RUNFARM_PREFIX
      • 6.2. FIRESIM_BUILDFARM_PREFIX
    • 7. Manager Network Topology Definitions (user_topology.py)
      • 7.1. user_topology.py contents:
    • 8. AGFI Metadata/Tagging
  • Workloads
    • Defining Custom Workloads
      • Uniform Workload JSON
      • Non-uniform Workload JSON (explicit job per simulated node)
    • FireMarshal
    • SPEC 2017
    • Running Fedora on FireSim
    • ISCA 2018 Experiments
      • Prerequisites
      • Building Benchmark Binaries/Rootfses
      • Figure 5: Ping Latency vs. Configured Link Latency
      • Figure 6: Network Bandwidth Saturation
      • Figure 7: Memcached QoS / Thread Imbalance
      • Figure 8: Simulation Rate vs. Scale
      • Figure 9: Simulation Rate vs. Link Latency
      • Running all experiments at once
    • GAP Benchmark Suite
    • [DEPRECATED] Defining Custom Workloads
      • Uniform Workload JSON
      • Non-uniform Workload JSON (explicit job per simulated node)
  • Targets
    • Restrictions on Target RTL
      • Including Verilog IP
      • Multiple Clock Domains
        • The Base Clock
        • Limitations:
    • Target-Side FPGA Constraints
      • RAM Inference Hints
    • Provided Target Designs
      • Target Generator Organization
      • Specifying A Target Instance
    • Rocket Chip Generator-based SoCs (firesim project)
      • Rocket-based SoCs
      • BOOM-based SoCs
      • Generating A Different FASED Memory-Timing Model Instance
    • Midas Examples (midasexamples project)
      • Examples
    • FASED Tests (fasedtests project)
      • Examples
  • Debugging in Software
    • Debugging & Testing with Metasimulation
      • Supported Host Simulators
      • Running Metasimulations using the FireSim Manager
      • Understanding a Metasimulation Waveform
        • Module Hierarchy
        • Clock Edges and Event Timing
        • Finding The Source Of Simulation Stalls
      • Scala Tests
      • Running Metasimulations through Make
        • Examples
      • Metasimulation vs. Target simulation performance
  • Debugging and Profiling on the FPGA
    • Capturing RISC-V Instruction Traces with TracerV
      • Building a Design with TracerV
      • Enabling Tracing at Runtime
      • Selecting a Trace Output Format
      • Setting a TracerV Trigger
        • No trigger
        • Target cycle trigger
        • Program Counter (PC) value trigger
        • Instruction value trigger
      • Interpreting the Trace Result
        • Human readable output
        • Binary output
        • Flame Graph output
      • Caveats
    • Assertion Synthesis: Catching RTL Assertions on the FPGA
      • Enabling Assertion Synthesis
      • Runtime Behavior
      • Related Publications
    • Printf Synthesis: Capturing RTL printf Calls when Running on the FPGA
      • Enabling Printf Synthesis
      • Runtime Arguments
      • Related Publications
    • AutoILA: Simple Integrated Logic Analyzer (ILA) Insertion
      • Enabling AutoILA
      • Annotating Signals
      • Setting a ILA Depth
      • Using the ILA at Runtime
    • AutoCounter: Profiling with Out-of-Band Performance Counter Collection
      • Chisel Interface
      • Enabling AutoCounter in Golden Gate
      • Rocket Chip Cover Functions
      • AutoCounter Runtime Parameters
      • AutoCounter CSV Output Format
      • Using TracerV Trigger with AutoCounter
      • AutoCounter using Synthesizable Printfs
      • Reset & Timing Considerations
    • TracerV + Flame Graphs: Profiling Software with Out-of-Band Flame Graph Generation
      • What are Flame Graphs?
      • Prerequisites
      • Enabling Flame Graph generation in config_runtime.yaml
      • Producing DWARF information to supply to the TracerV driver
      • Modifying your workload description
      • Running a simulation
      • Caveats
    • Dromajo Co-simulation with BOOM designs
      • Building a Design with Dromajo
      • Running a FireSim Simulation
      • Troubleshooting Dromajo Simulations with Meta-Simulations
    • Debugging a Hanging Simulator
      • Case 1: Target hang.
      • Case 2: Simulator hang due to FPGA-side token starvation.
      • Case 3: Simulator hang due to driver-side deadlock.
      • Simulator Heartbeat PlusArgs
  • Non-Source Dependency Management
    • Updating a Package Version
    • Multiple Environments
    • Adding a New Dependency
    • Building From Source
    • Running conda with sudo
    • Running things from your conda environment with sudo
    • Additional Resources
  • Supernode - Multiple Simulated SoCs Per FPGA
    • Introduction
    • Building Supernode Designs
    • Running Supernode Simulations
    • Work in Progress!
  • Miscellaneous Tips
    • Add the fsimcluster column to your AWS management console
    • FPGA Dev AMI Remote Desktop Setup
    • Experimental Support for SSHing into simulated nodes and accessing the internet from within simulations
    • Navigating the FireSim Codebase
    • Using FireSim CI
  • FireSim Asked Questions
    • I just bumped the FireSim repository to a newer commit and simulations aren’t running. What is going on?
    • Is there a good way to keep track of what AGFI corresponds to what FireSim commit?
    • Help, My Simulation Hangs!
    • Should My Simulator Produce Different Results Across Runs?
    • Is there a way to compress workload results when copying back to the manager instance?

Compiler (Golden Gate) Docs:

  • Overview & Philosophy
    • Golden Gate vs FPGA Prototyping
    • Why Use Golden Gate & FireSim
    • Why Not Golden Gate
    • How is Host-Decoupling Implemented?
  • Target Abstraction & Host Decoupling
    • The Target as a Dataflow Graph
    • Model Implementations
    • Expressing the Target Graph
    • Latency-Insensitive Bounded Dataflow Networks
  • Target-to-Host Bridges
    • Terminology
    • Target Side
      • Type Parameters:
      • Abstract Members:
    • What Happens Next?
    • Host Side
    • Compile-Time (Parameterization) vs Runtime Configuration
    • Target-Side vs Host-Side Parameterization
  • Bridge Walkthrough
    • UART Bridge (Host-MMIO)
      • Target Side
      • Host-Side BridgeModule
      • Host-Side Driver
      • Build-System Modifications
  • Simulation Triggers
    • Quick-Start Guide
      • Level-Sensitive Trigger Source
      • Distributed, Edge-Sensitive Trigger Source
    • Chisel API
      • Trigger Sources
      • Trigger Sinks
    • Trigger Timing
    • Limitations & Pitfalls
  • Optimizing FPGA Resource Utilization
    • Multi-Ported Memory Optimization
    • Multi-Threading of Repeated Instances
  • Output Files
    • Core Files
    • FPGA Build Files
    • Metasimulation Files

Developer Docs:

  • Compiler & Driver Development
    • Integration Tests
      • Key Files & Locations
      • Defining a New Test
    • Synthesizable Unit Tests
      • Key Files & Locations
      • Defining a New Test
    • Scala Unit Testing
      • Key Files & Locations
      • Defining A New Test
    • C/C++ guidelines
    • Scala guidelines
  • Complete FPGA Metasimulation
    • Usage
  • Visual Studio Code Integration
    • General Setup
    • Workspace Locations
    • Scala Development
      • How To Use (Remote Manager)
      • Limitations
      • Other Notes
  • Managing the Conda Lock File
    • Updating Conda Requirements
    • Caveats of the Conda Lock File and CI
  • Manager Development
    • Writing PyTests
    • Running PyTests Locally
    • Adding PyTests To CI

Miscellaneous:

  • External Tutorial Setup
FireSim
  • »
  • Workloads
  • Edit on GitHub

Workloads

This section describes workload definitions in FireSim.

Workloads:

  • Defining Custom Workloads
    • Uniform Workload JSON
    • Non-uniform Workload JSON (explicit job per simulated node)
  • FireMarshal
  • SPEC 2017
  • Running Fedora on FireSim
  • ISCA 2018 Experiments
    • Prerequisites
    • Building Benchmark Binaries/Rootfses
    • Figure 5: Ping Latency vs. Configured Link Latency
    • Figure 6: Network Bandwidth Saturation
    • Figure 7: Memcached QoS / Thread Imbalance
    • Figure 8: Simulation Rate vs. Scale
    • Figure 9: Simulation Rate vs. Link Latency
    • Running all experiments at once
  • GAP Benchmark Suite
  • [DEPRECATED] Defining Custom Workloads
    • Uniform Workload JSON
    • Non-uniform Workload JSON (explicit job per simulated node)
Previous Next

© Copyright 2018, Sagar Karandikar, Howard Mao, Donggyu Kim, David Biancolin, Alon Amid, and Berkeley Architecture Research. Revision df095fb4.

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions
latest
stable
1.16.0
1.15.1
1.15.0
1.14.2
1.14.1
1.14.0
1.13.6
1.13.5
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2
1.1
main
Downloads
pdf
html
epub
On Read the Docs
Project Home
Builds