rustc to check the validity of your firmware with strongly typed interfaces that are checked at compile time.
Easily package complex designs into easy-to-reuse modules that you can reuse easily. Connecting components is simple and missing or erroneous connections are caught at compile time or with the built in static analysis passes.
Need an asynchronous FIFO? Or a SDR memory controller? Or a one shot? Use the provided set of widgets to get started. Most are generic and can be used to handle arbitrary data types.