v3.0.0 Release
This release makes a number of breaking syntax changes to make FIRRTL
syntax simpler, easier to parse, or changed to clawback some syntax that
will be used for something else in the future.
Connect and invalidation are changed to make them easier to parse as they
now start with a keyword as opposed to an identifier or keyword:
- `a <= b` is now `connect a, b`
- `a is invalid` is now `invalidate a`
A register with a reset is simplified to be less verbose:
- `reg a: UInt<1>, clock with: (reset => (b, c))` is now
`regreset, a:UInt<1>, b, c`
String-encoded integer literals are changed to radix-encoded integer
literals. This enables repurposing quoted strings to be actual strings as
opposed to integer literals.
- `UInt("h42")` is now `UInt(0h42)`
Identifiers which include a leading number must now be escaped with
backticks. This simplifies parsing as most parsers treat integers and
identifiers differently.
- `{ 0: UInt<1> }` is now `` { `0`: UInt<1> } ``
- `` circuit `42` : `` is now legal syntax
A number of features are added to the spec in this version:
- Enumerations and matches on enumerations
- Type alias