We held the First FireSim and Chipyard User/Developer Workshop at ASPLOS 2023 on March 26, 2023! This workshop featured a full-day of talks from users and developers in the FireSim and Chipyard community. YouTube videos of the talks are available on the 2023 Workshop Page!
FireSim is an open-source FPGA-accelerated full-system hardware simulation platform that makes it easy to validate, profile, and debug RTL hardware implementations at 10s to 100s of MHz. FireSim simplifies co-simulating ASIC RTL with cycle-accurate hardware and software models for other system components (e.g. I/Os). FireSim can productively scale from individual SoC simulations hosted on on-prem FPGAs (e.g., a single Xilinx Alveo board attached to a desktop) to massive datacenter-scale simulations harnessing hundreds of cloud FPGAs (e.g., on Amazon EC2 F1). For a quick, two-page overview of FireSim, check-out our recent retrospective paper from the ISCA@50 Retrospectives collection.
Who’s using and developing FireSim? FireSim users across academia and industry (at 20+ institutions) have written over 50 peer-reviewed publications using FireSim in many areas, including computer architecture, systems, networking, security, scientific computing/HPC, circuits, design automation, and more (see the Publications page). FireSim has also been used in the development of commercially-available silicon. FireSim was originally developed in the Electrical Engineering and Computer Sciences Department at the University of California, Berkeley, but now has industrial and academic contributors from all over the world.
Getting started: You can find our extensive documentation and getting-started guides at docs.fires.im. The FireSim codebase is open-source at github.com/firesim/firesim and we welcome pull requests and issues. You can also get help from the FireSim user community on our User Forum. Additionally, we frequently run tutorials at various conferences and events; for overview purposes, you can find the most recent slide decks at fires.im/tutorial-recent (you should still follow docs.fires.im for the most up to date getting-started guides).
This video from a recent conference dives in-depth into FireSim. You can also scroll further down to read more FAQs.
What can I simulate with FireSim?
FireSim can simulate arbitrary hardware designs written in Chisel or Verilog. With FireSim, users can write their own RTL (processors, accelerators, etc.) and run it at near-FPGA-prototype speeds on cloud or on-prem FPGAs, while obtaining performance results that match an ASIC implementation of the same design. Depending on the hardware design and the simulation scale, FireSim simulations run at 10s to 100s of MHz. Users can also integrate custom software models for components that they don’t need or want to write as RTL. To help construct a closed and deterministic simulated environment around a design, FireSim includes validated and high-performance HW/SW models for I/Os like DRAM, Ethernet, Disks, UART, and more. The User Publications page links to a selection of papers written by FireSim users.
FireSim was originally developed to simulate datacenters by combining open RTL for RISC-V processors with a custom cycle-accurate network simulation. By default, FireSim provides all the RTL and models necessary to cycle-exactly simulate from one to thousands of multi-core compute nodes, derived directly from silicon-proven and open target-RTL (RISC-V Rocket Chip, BOOM, and Chipyard), with an optional cycle-accurate network simulation tying them together. FireSim also provides a Linux distribution that is compatible with the RISC-V systems it simulates and automates the process of including new workloads into this Linux distribution. These simulations run fast enough to interact with Linux on the simulated system at the command line, like a real computer. Users can even SSH into simulated systems in FireSim and access the Internet from within them.
What are some concrete use cases and examples?
Below is a selection of FireSim use cases, with example user papers. Many more examples can be found on the User Publications page.
- Evaluating novel domain-specific accelerators
- Customization/evaluation/design-space exploration of RISC-V cores, including Rocket and BOOM. For example, FireSim can run all of SPECInt2017 with reference inputs on Rocket in parallel on 10 cloud-FPGAs in ~1 day.
- “Imprecise Store Exceptions”, ISCA ‘23 (EPFL)
- “Security and Performance in the Delegated User-level Virtualization”, OSDI ‘23 (Shanghai Jiao Tong University)
- “Managing Chip Design Complexity in the Domain-Specific SoC Era”, VLSI ‘20 (SiFive)
- “Composable Building Blocks to Open up Processor Design”, MICRO ‘18 (MIT)
- Fuzzing and Debugging Hardware and Software
- Evaluating networking acceleration for scale-out systems
- Evaluating security extensions for CPUs
- In-band and out-of-band HW/SW profiling
- Simulating thousand-node datacenter-scale systems
- See more on the User Publications page
Where can I run FireSim?
FireSim runs on both on-prem FPGAs (e.g. a Xilinx Alveo board attached to your desktop) and public cloud FPGAs (e.g. AWS EC2 F1). This flexibility makes it easy to rapidly get started with a single local FPGA, while also providing users with the option to elastically launch FPGA instances on the cloud when large-scale design space exploration is necessary. FireSim is also useful across target design scale, scaling easily from modeling novel datacenter architectures down to modeling novel, single-SoC designs at 10s to 100s of MHz. By harnessing standardized, well-defined host platforms and providing extensive automation/tooling, FireSim drastically simplifies the process of building and deploying FPGA-accelerated hardware simulations at any scale.
Below is the complete list of supported FPGA platforms, with links to their FireSim Getting Started Guides:
Where can I learn more about FireSim-related research?
Our ISCA 2018 paper discusses the FireSim framework from the perspective of simulating a 1024-node datacenter built from custom RTL and network models. A more concise version of this paper is also available in our IEEE Micro Top Picks 2018 article. The YouTube video above also talks about this use case in-detail starting at 12:34. Check out the Publications page to see follow-up papers about FireSim as well as the list of projects and papers that have used or are currently using FireSim.
Getting Started with FireSim
To get started with FireSim, you can find our extensive documentation and getting-started guides at docs.fires.im. The FireSim codebase is open-source at github.com/firesim/firesim and we welcome pull requests and issues. You can also get help from the FireSim user community on our User Forum. Additionally, we frequently run tutorials at various conferences and events; for overview purposes, you can find the most recent slide decks at fires.im/tutorial-recent (you should still follow docs.fires.im for the most up to date getting-started guide).
FireSim 1.17.0 Released with Support for Xilinx VCU118, U250, U280, and RHS Research Nitefury II On-Premises FPGAs
Posted by Sagar Karandikar
We just released FireSim 1.17.0, which adds support for several new on-premises FPGA boards, including:
- Xilinx VCU118: FireSim VCU118 XDMA-based Getting Started Guide
- RHS Research Nitefury II: FireSim Nitefury II XDMA-based Getting Started Guide
- Xilinx Alveo U250: FireSim U250 XDMA-based Getting Started Guide
- Xilinx Alveo U280: FireSim U280 XDMA-based Getting Started Guide
All of these platforms support all FireSim features, including advanced debugging features like TracerV, Printf Synthesis, and more. FireSim’s automation is also maintained, enabling the ability to build large local clusters of FPGAs and automatically deploy simulations to them. The getting started guides for each FPGA (linked above) explain how to set up host systems of various scales, including:
- A portable FireSim-host consisting of a laptop with a Thunderbolt-attached Nitefury II FPGA (e.g., FireStarter laptop on slide 32 here)
- A desktop-based FireSim-host with one or a handful of FPGAs (e.g., FireStation desktop on slide 28 here)
- A large on-premises FireSim-host cluster with many machines and many FPGAs
All of the platforms listed above are supported using XDMA-based shells. If you were previously using FireSim’s Vitis-based U250 support, we highly recommend migrating to the new XDMA-based U250 flow.
Posted by Sagar Karandikar
FireSim was selected for the “ISCA@50 25-year Retrospective 1996-2020” and the retrospectives are now published! You can find our retrospective paper here.
Posted by Sagar Karandikar
We held the First FireSim and Chipyard User/Developer Workshop at ASPLOS 2023 on March 26, 2023! This workshop featured a full-day of talks from users and developers in the FireSim and Chipyard community. YouTube videos of the talks (and slides) are now available on the 2023 Workshop Page!