FireSim 1.11.0 formally introduces the _instance multithreading_ optimization, the subject of Albert Magyar's dissertation work, which can be used to improve FPGA capacity by up to 8X (2 -> 16 large boom cores) for some designs. Other notable changes include: putting DRAM in its own clock domain, RC + Chisel + FIRRTL bumps + many QoL improvements.
### Added
* SBT 1.4 native client support; removes no SBT launch time (#668 )
* Extra queuing in the AssertBridge to improve fmax (#595)
* Platform config to enable model multi-threading resource optimization (#636)
* Support for designs with no AXI4 backing memory (#638)
* A simulation heartbeat to record throughput and detect simulation deadlock (#662)
* More informational logging during AutoCounter elaboration (#664) h/t @timsnyder-siv
* Separate parameter to specify width of backendLatency in FASED (#663) h/t @timsnyder-siv
* A 16-core LargeBOOM configuration has been added to FireChip (ucb-bar/chipyard#756)
* A switch to disable synth asserts at runtime (#619)
Adds initial support for simulating multi-clock targets in FireSim.
### Added
* Support for simulating targets with multiple fixed-frequency clock (MC) domains (PR #441)
* All clocks must be generated using the RationalClockBridge
* See docs (PR #527)
* Generalized trigger system (part of MC, PR #441) (resolves #497)
* See docs (PR #526)
* Intelligent Bridge DRAM allocation (PR #433)
* Mix in `UsesHostDRAM` into a bridge that needs FPGA-DRAM
* CircleCI integration (PR #534, PR #574)
* ScalaDoc for dev branch automatically published as part of CI (#569):
* Dev: https://fires.im/firesim/latest/api/
* Releases will reside at : https://fires.im/firesim/<version>/api
* Add `expect` to `machine-launch` script (#562)
* Add support for Dromajo co-simulation using an extended TracePort (currently only supported by BOOM) (#541,#556)
### Changed
* FIRRTL bumped to version 1.3, Chisel Bumped to version 3.3 (#549)
* Custom transforms now injected using the FIRRTL Dependency API
* TracerV multiclock changes (PR #441)
* One TracerV per tile, maximum 7 instructions per tile (resolves #484)
* One output file per tile
* FirePerf now supports cores with IPC > 1 (BOOM)
* Assert file no longer copied to manager, baked into driver via header (PR #441)
* Bridges are now diplomatic (LazyModules) (PR #433)
* Synthesized Printfs in different clocks domains are captured in different output files (#441)
* The default version of Verilator has changed to v4.034 (#550). Since this release adds enhanced support for Verilog timescales, the build detects if Verilator v4.034 or newer is visible in the build environment and sets default timescale flags appropriately.
* Elaboration output piped to stdout in `buildafi` (PR #433, resolves #440)
* Midas-Level simulation no longer simulates the Shim layer, and instead simulates the module hierarchy rooted at FPGATop #548
* Firesim target project use Chipyard's stage to generate RTL (#557)
* Build setup updates (#544)
* Users can skip building a toolchain if supplying their own
* Now requires the user provide `$RISCV` when running under `--library`.
* Generated env.sh no longer sources chipyard's env.sh when using firesim-as-a-library
* Allow `machine-launch` script to error, log, and use Git 2.2.4 (#538,#563)
### Fixed
* Manager will now report failures in AGFI creation (PR #433, resolves #327)
* Ensure that the NBD kernel module (`nbd.ko`) is built with the non-debug config to avoid symbol compatibility issues (#571).
* Use proper iuscommunity URL during machine launch (#563)
* When using Chipyard-as-Top, properly pass `RISCV/LD_LIB/PATH` variables for `buildafi/infrasetup` (#560)
* plus_arg reader exception thrown when compiling designs with FASED memory widths != 64 bits (PR #577)
### Deprecated
### Removed
* FireSim generatorUtils and subclasses; replaced with Chipyard's stage (#557)
* Users can define a FireSim version of a Chipyard config by building a TARGET_CONFIG that specifies WithFireSimDefaultBridges, WithFireSimDefaultMemModel, and WithFireSimConfigTweaks
* Black-box Verilog support via external clock-gating PR #388
* For the transform to work, the Chisel `Blackbox` that wraps the Verilog IP must have a single clock input that can safely be clock-gated.
* The compiler that produces the decoupled simulator ("FAME Transform") automatically recognizes such blackboxes inside the target design.
* The compiler automatically gates the clock to the Verilog IP to ensure that it deterministically advances in lockstep with the rest of the simulator.
* This allows any Verilog module with a single clock input to be instantiated anywhere in the target design using the standard Chisel `Blackbox` interface.
* Added chisel assertions to check for token irrevocability (non-determinism check) PR #416
* Enable by adding `HostDebugFeatures` to your `PLATFORM_CONFIG`
* Support for QCOW2 disk images in the manager. This means that FireSim simulations can now boot directly from qcow2 images---the default linux-uniform image is 40MB as a qcow2 image as opposed to 2GB as a raw .img. Firemarshal support for generating these images is upcoming. This is PR #415 and resolves #411
* AutoCounter and Trigger features from FirePerf paper (PR #437)
* Default buildfarm instances changed from c5.4xlarges to z1d.2xlarges #464
* Update to Chipyard 1.1.0
* Update FireMarshal to 1.8. This drastically reduces the default root filesystem image sizes and allows for FireMarshal workloads to be in any directory (not just the workloads/ directory).
* Fix managerinit aws configure bug introduced by tutorial modifications. managerinit now correctly runs aws configure again, there is no need to run it separately (docs are updated to reflect this)
* Supernode: Copying back results from supernode simulations now works for all rootfses, not just the zeroeth rootfs of a supernode sim. PR #415
* Manager: No longer double-copies results for a node that is responsible for triggering a teardown in the networked simulation case. PR #415
* firesim-software PR firesim/firesim-software#31 allows firesim-software to work outside of a firesim environment without the need for sudo (just riscv-tools, qemu, and a few package requirements).
* firesim-software PR firesim/firesim-software#25 updates buildroot to a more recent version in order to support a more recent version of riscv-tools to match the updated tools in this firesim release.
* Better support for custom network topologies / topology mapping. Topologies can now provide their own custom mapping function. Support for topologies with multiple paths. Randomized switching across multiple paths.
* Also early support for multiple DMA endpoints (e.g. Tracer + NIC). Currently requires hardcoding endpoint addresses, will be addressed in next release.
* Rebuild EDMA driver on Run Farm nodes. This fixes a potential kernel version mismatch issue due to AWS GUI scripts
### Added
* Auto-ILA added: Annotate Chisel code to automatically wire-up an ILA
* Enables ILA-based debugging of the FPGA simulation
* Automatic generation and wiring of FPGA ILA, based on chisel annotations in relevant source code (target source code or simulation source code). This is done using the ILATopWiring transformation. Generates several partial Verilog files which are included in the top-level cl_firesim.sv file.
* Includes refactoring of midas to allow post-midas host-transformations (in addition to the already existing target transformations)
* Documentation and integration into manager for ease of use
* Better ctags support. Script to generate ctags efficiently in `gen-tags.sh`. Also called by build-setup process. On a fresh clone, gen-tags.sh only takes ~10s. Resolves #79
* Generated across: target-design code, all shim code, driver code, workloads, etc.
* Update version of BOOM included as a target in FireSim. The included version/configurations now reliably boot Linux and run SPEC. The FireSim NIC/network is also supported.
* Update IP addressing for simulated nodes to prevent a conflict between host IP range and simulation IP range. Simulations now live in 172.16.0.0/16 instead of 192.168.0.0/24.
* Update experimental SSH into target instructions to account for different interface names across EC2 instance types. This fixes the ability to access the internet from within simulated nodes.
* **IMPORTANT**: `aws-fpga-firesim` is updated to the upstream [`aws-fpga` 1.4.0 Shell release](https://github.com/aws/aws-fpga/releases/tag/v1.4.0). This is a **REQUIRED** update for all users, as AWS will be removing support for old shells after September 1st, 2018. See this release note from AWS: https://github.com/aws/aws-fpga/blob/master/RELEASE_NOTES.md#release-140-see-errata-for-unsupported-features. In addition to pulling in the changes to the FireSim codebase for this release, you will need to launch a new manager instance using Amazon FPGA Developer AMI version 1.4.0. The documentation is updated to reflect this.
* For users that cannot update directly to FireSim 1.3.0 because they cannot switch to the version of Rocket Chip updated in FireSim 1.2.0, a backport branch that adds the AWS FPGA 1.4.0 Shell to FireSim 1.1 is provided here: https://github.com/firesim/firesim/tree/firesim-1.1-aws-1.4.0-backport. In addition to pulling in the changes to the FireSim codebase for this branch, you will need to launch a new manager instance using Amazon FPGA Developer AMI version 1.4.0. The documentation is updated to reflect this.
### Added
* A new flag now allows zeroing FPGA-attached DRAM before simulation. This is enabled by default in the manager.
* New docs that explain how to `ssh` into simulated nodes.
* FireSim now has beta support for simulating [BOOM](https://github.com/ucb-bar/riscv-boom)-based nodes. BOOM is the Berkeley Out-of-Order Machine, a superscalar out-of-order RISC-V Core. See the following page for usage instructions: https://docs.fires.im/en/1.2/Advanced-Usage/Generating-Different-Targets.html#boom-based-socs-beta
This was a closed-source, but free-to-use demo of FireSim released on
[AWS Marketplace](https://aws.amazon.com/marketplace/pp/B0758SR46G) with our
[AWS Compute Blog Post](https://aws.amazon.com/blogs/compute/bringing-datacenter-scale-hardware-software-co-design-to-the-cloud-with-firesim-and-amazon-ec2-f1-instances/)
in August 2017. This was built from a very old version of FireSim and no
longer supported, but noted here to explain why the versioning of this repo