Giter Site home page Giter Site logo

firesim / firesim Goto Github PK

View Code? Open in Web Editor NEW
816.0 52.0 216.0 59.66 MB

FireSim: Fast and Effortless FPGA-accelerated Hardware Simulation with On-Prem and Cloud Flexibility

Home Page: https://fires.im

License: Other

Shell 2.97% Python 20.37% Makefile 2.78% Assembly 0.17% Scala 44.84% C++ 15.89% Verilog 3.11% C 2.63% Batchfile 0.12% SystemVerilog 0.50% HTML 0.02% Tcl 6.62%
fpga risc-v simulation datacenter hardware firesim rocket-chip boom on-prem cloud

firesim's Introduction

FireSim: Fast and Effortless FPGA-accelerated Hardware Simulation with On-Prem and Cloud Flexibility

FireSim Documentation Status Github Actions Status

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!

Contents

  1. Using FireSim
  2. What is FireSim?
  3. What can I simulate with FireSim?
  4. Need help?
  5. Contributing
  6. Publications

Using FireSim

To get started with FireSim, you can find our extensive documentation and getting-started guide 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).

Another good overview from a recent event (in video format) can be found on YouTube.

What is FireSim?

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).

Who's using and developing FireSim? FireSim users across academia and industry (at 20+ institutions) have published over 40 papers using FireSim in many areas, including computer architecture, systems, networking, security, scientific computing, circuits, design automation, and more (see the Publications page). FireSim has also been used in the development of shipping commercial 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.

You can learn more about FireSim in the following places:

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.

Head to the FireSim Website to learn more.

Need help?

Contributing

Publications

ISCA 2018: FireSim: FPGA-Accelerated Cycle-Exact Scale-Out System Simulation in the Public Cloud

You can learn more about FireSim in our ISCA 2018 paper, which covers the overall FireSim infrastructure and large distributed simulations of networked clusters. This paper was selected as one of IEEE Micro’s "Top Picks from Computer Architecture Conferences, 2018" and for "ISCA@50 25-year Retrospective 1996-2020".

Sagar Karandikar, Howard Mao, Donggyu Kim, David Biancolin, Alon Amid, Dayeol Lee, Nathan Pemberton, Emmanuel Amaro, Colin Schmidt, Aditya Chopra, Qijing Huang, Kyle Kovacs, Borivoje Nikolic, Randy Katz, Jonathan Bachrach, and Krste Asanović. FireSim: FPGA-Accelerated Cycle-Exact Scale-Out System Simulation in the Public Cloud. In proceedings of the 45th International Symposium on Computer Architecture (ISCA’18), Los Angeles, CA, June 2018.

Paper PDF | IEEE Xplore | ACM DL | BibTeX

FPGA 2019: FASED: FPGA-Accelerated Simulation and Evaluation of DRAM

Our paper from FPGA 2019 details the DRAM model used in FireSim:

David Biancolin, Sagar Karandikar, Donggyu Kim, Jack Koenig, Andrew Waterman, Jonathan Bachrach, Krste Asanović, FASED: FPGA-Accelerated Simulation and Evaluation of DRAM, In proceedings of the 27th ACM/SIGDA International Symposium on Field-Programmable Gate Arrays, Seaside, CA, February 2018.

Paper PDF | ACM DL | BibTeX

IEEE Micro Top Picks of 2018: FireSim: FPGA-Accelerated, Cycle-Accurate Scale-Out System Simulation in the Public Cloud

This article discusses several updates since the FireSim ISCA 2018 paper:

Sagar Karandikar, Howard Mao, Donggyu Kim, David Biancolin, Alon Amid, Dayeol Lee, Nathan Pemberton, Emmanuel Amaro, Colin Schmidt, Aditya Chopra, Qijing Huang, Kyle Kovacs, Borivoje Nikolic, Randy Katz, Jonathan Bachrach, and Krste Asanović. FireSim: FPGA-Accelerated Cycle-Exact Scale-Out System Simulation in the Public Cloud. IEEE Micro, vol. 39, no. 3, pp. 56-65, (Micro Top Picks 2018 Issue). May-June 2019.

Article PDF

ICCAD 2019: Golden Gate: Bridging The Resource-Efficiency Gap Between ASICs and FPGA Prototypes

Our paper describing FireSim's Compiler, Golden Gate:

Albert Magyar, David T. Biancolin, Jack Koenig, Sanjit Seshia, Jonathan Bachrach, Krste Asanović, Golden Gate: Bridging The Resource-Efficiency Gap Between ASICs and FPGA Prototypes, In proceedings of the 39th International Conference on Computer-Aided Design (ICCAD '19), Westminster, CO, November 2019.

Paper PDF

ASPLOS 2020: FirePerf: FPGA-Accelerated Full-System Hardware/Software Performance Profiling and Co-Design

Our paper that discusses system-level profiling features in FireSim:

Sagar Karandikar, Albert Ou, Alon Amid, Howard Mao, Randy Katz, Borivoje Nikolić, and Krste Asanović, FirePerf: FPGA-Accelerated Full-System Hardware/Software Performance Profiling and Co-Design, In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 2020), Lausanne, Switzerland, March 2020.

Paper PDF

IEEE MICRO 2021: Accessible, FPGA Resource-Optimized Simulation of Multi-Clock Systems in FireSim

In this special issue, we describe the automated instance-multithreading optimization and support for multiple clock domains in the simulated target.

David Biancolin, Albert Magyar, Sagar Karandikar, Alon Amid, Borivoje Nikolić, Jonathan Bachrach, Krste Asanović. Accessible, FPGA Resource-Optimized Simulation of Multi-Clock Systems in FireSim. In IEEE Micro Volume: 41, Issue: 4, July-Aug. 1 2021

Article PDF

ISCA@50 Retrospective: 1996-2020: FireSim: FPGA-Accelerated Cycle-Exact Scale-Out System Simulation in the Public Cloud

This retrospective paper, included in the "ISCA@50 Retrospective: 1996-2020" collection, provides an update and retrospective on FireSim's development and evolution since the original ISCA 2018 paper.

Sagar Karandikar, Howard Mao, Donggyu Kim, David Biancolin, Alon Amid, Dayeol Lee, Nathan Pemberton, Emmanuel Amaro, Colin Schmidt, Aditya Chopra, Qijing Huang, Kyle Kovacs, Borivoje Nikolic, Randy Katz, Jonathan Bachrach, and Krste Asanović. FireSim: FPGA-Accelerated Cycle-Exact Scale-Out System Simulation in the Public Cloud. In ISCA@50 Retrospective: 1996-2020, Edited by José F. Martínez and Lizy K. John, June 2023.

Retrospective PDF

You can find other publications, including publications that use FireSim on the FireSim Website.

firesim's People

Contributors

a0u avatar abejgonzalez avatar albert-magyar avatar alonamid avatar colinschmidt avatar cookiestuf avatar davidbiancolin avatar dnshp avatar donggyukim avatar edwardcwang avatar fabianschuiki avatar farzadfch avatar hngenc avatar ingallsj avatar jackkoenig avatar jamesdunn avatar jerryz123 avatar joonho3020 avatar mergify[bot] avatar nandor avatar nathantp avatar pranith avatar russell-horvath avatar sagark avatar sequencer avatar sifive-benjamin-morse avatar t14916 avatar timsnyder avatar timsnyder-siv avatar zhemao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

firesim's Issues

Fix IP address conflict between simulations and hosts

This is only a bug for users trying to SSH into simulated nodes. Doesn't matter for anyone else.

If a user used the aws-setup.py script to setup their account (which they should be doing), host instances get IPs from 192.168.0.0/24 and in all of our scripts, we default simulated nodes to also getting 192.168.0.0/24 addresses. This is a problem when bridging together the VPC network and the simulated network (e.g. when enabling ssh into simulated nodes).

This was unnoticed because my account was not set-up with our aws-setup.py because it didn't exist when I made my account :)

I think the fix is as explained here, but we will also need to propagate the IP address changes to all of our experiment scripts. I haven't had a chance to look, but IIRC the manager does not need to change.

https://groups.google.com/d/msg/firesim/zBu-a2A3xHM/jCaHTkd9AgAJ

Fast setup requires setting LD_LIBRARY_PATH to include $RISCV/lib

This came up before but i assumed i just did something wrong. When running the assembly tests i get:

/home/centos/firesim-bump-firrtl/riscv-tools-install/bin/spike-dasm: error while loading shared libraries: libspike_main.so: cannot open shared object file: No such file or directory

Its easy to workaround this by setting LD_LIBRARY_PATH=$RISCV/lib But this isn't an issue for @sagark -- what gives?

Non-specific debug output

Output from running infrasetup when there is a chisel compile-time error does not display any information about the error itself.

Unable to build integer only binaries with firesim toolchain

I am not sure if this is the right place to report this.

I am trying to build an integer only binary using -march=rv64i -mabi=lp64 using the firesim built toolchain. I am getting an error as follows:


riscv64-unknown-linux-gnu-gcc -c qht.c -std=c11 -ggdb3 -O2 -march=rv64ima -mabi=lp64 -fPIC
In file included from /home/centos/firesim/riscv-tools-install/sysroot/usr/include/features.h:447:0,
                 from /home/centos/firesim/riscv-tools-install/sysroot/usr/include/pthread.h:21,
                 from qht.h:4,
                 from qht.c:7:
/home/centos/firesim/riscv-tools-install/sysroot/usr/include/gnu/stubs.h:17:11: fatal error: gnu/stubs-lp64.h: No such file or directory
 # include <gnu/stubs-lp64.h>
           ^~~~~~~~~~~~~~~~~~
compilation terminated.

Support for non-tethered systems

This will require re-thinking how we handle program load -- if we want to use loadmem, we should keep the target under reset, or write to DRAM at simulation time 0 -- and how we detect simulation termination.

FireBoom config throws SIGILL for mcf from Spec2017

Were the spec17 benchmarks tested for FireBoom? I am getting a SIGILL error while running mcf.

Starting speed 605.mcf_s run with 1 threads
[    0.336000] mcf_s_base.risc[96]: unhandled signal 4 code 0x1 at 0x00000000000101cc in mcf_s_base.riscv-64[10000+84000]
[    0.336000] CPU: 0 PID: 96 Comm: mcf_s_base.risc Not tainted 4.15.0-rc6-31580-g9c3074b5c2cd #1
[    0.336000] sepc: 00000000000101cc ra : 000000000001479c sp : 0000003fffe60c20
[    0.336000]  gp : 0000000000097100 tp : 0000000000099700 t0 : 0000000000000000
[    0.336000]  t1 : 2f2f2f2f2f2f2f2f t2 : 000000000000000c s0 : 0000000000014c04
[    0.336000]  s1 : 0000000000014cdc a0 : 0000000000000002 a1 : 0000003fffe60d68
[    0.336000]  a2 : 0000003fffe60d80 a3 : 0000000000000000 a4 : 0000003fffe60c48
[    0.336000]  a5 : 00000000000101cc a6 : 0000000000097320 a7 : 7efefefefefefeff
[    0.336000]  s2 : 0000000000000000 s3 : 00000000000d6008 s4 : 00000000000d6a88
[    0.336000]  s5 : 00000000000d4b88 s6 : 00000000000d4d68 s7 : 0000000000000000
[    0.336000]  s8 : 00000000000d6a48 s9 : 0000000000000000 s10: 000000000009c000
[    0.336000]  s11: 0000000000000000 t3 : 8101010101010100 t4 : 00000000000966b8
[    0.336000]  t5 : 00000000000956b8 t6 : 0000000000000000
[    0.336000] sstatus: 8000000200006020 sbadaddr: 00000000d5634785 scause: 0000000000000002
[    0.364000] reboot: Power down

[Workloads] gen-benchmark-rootfs.py improvements.

  • Unmount the temporary fs if the script fails
  • Resolve race condition between mounting and unmounting temporary fs
  • Don't poweroff the instance -- let the user specify that in their command if necessary

Update riscv-gcc to fix SPEC2017 regressions

Recent riscv-tools bumps to track upstream gnu-toolchain causes regressions in SPEC2017 gcc and perlbench. Previously, we were tracking a version of riscv-gcc which resolved these issues. (see riscv-collab/riscv-gcc#100)

On the next riscv-tools bump, check to make sure the lra-contraints bugfix is present (riscv-collab/riscv-gcc@36e932c) in the version of riscv-gcc we are using, or revert to using our own submodule pointer for gcc (in a fork of the gnu-toolchain). Any version greater than 7.2.0 should suffice.

@donggyukim @cookiestuf @zhemao

[BOOM] Add support for BOOM

BOOM Support has been added to FireSim in the 1.2 release. However, there are still target-level bugs that need to be resolved in BOOM before it can be used fully for Linux-based software (Linux currently boots most of the way, but then hangs, which can be reproduced in both regular VCS (no sim components) and on the FPGA). See the log in the next post.

Documentation regarding custom AFI/AGFI is unclear

I tried following the documentation to create an agfi image for my modified BOOM core, but the instructions are not clear on what to do after successful building of the AGFI.

Section 4.3 ends by mentioning how to create a new fpga build, but stops short of mentioning how to deploy/run that custom built fpga and defers to the Advanced Docs section.

In the Advanced Docs section, we have instructions using make but no mention on how to customize and deploy the modified RTL.

Can you please add instructions on modifying and running the custom FPGA AGFI?

Running spec2017 does not work

I tried the commands as listed in the guide. I trimmed the benchmark list to just run mcf. When I run the benchmark I get the following error in the output:

[email protected]:~/firesim/deploy/results-workload$ cat 2018-08-31--23-56-42-spec17-intspeed/605.mcf_s/output/605.mcf_s_.err 
./run.sh: line 4: ./: Is a directory
[email protected]:~/firesim/deploy/results-workload$ cat 2018-08-31--23-56-42-spec17-intspeed/605.mcf_s/output/605.mcf_s_.out 
Running: ./ inp.in 

Looks like the run.sh script is not picking up the benchmark name properly?

Fix deploy/workloads/bw-test.sh

Howie divided the bw-tests into one and two instance versions breaking this script. Im not sure what the desired behavior is so i'm punting to you @zhemao.

This also breaks run-all.sh.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.