hdl
hdl copied to clipboard
Nice to have features
hdllang
- [x] #192
- [ ]
all(...),any(...)builtins equivalent tofold_and(join(...))andfold_or(join(...))respectively but all arguments must bewire. This will be helpful when writing long conditions - [ ] Internal improvment: represent registers and module instances the same way internally
- [ ] Ban mixed
wire/buslogic & arithmetic. Addto_wire()builtin forbus -> wireconversion andto_bus()forwire -> ubus<1>conversion. This should eliminate strange signedness deductions tounsignedwhenwireis used in an expression along with buses. (see test case037_propagate_signedness.hirl) - [ ]
msb(bus<N>),msb(bus<N>, int)builtins which select a certain number of most significant bits from an expression (analogous totrunc()). Perhapslsb()could be an alias fortrunc().
SV Codegen
- [ ]
generateblock names - [ ]
always_combfor assignments - [ ]
always_fffor registers
global
- [ ]
unusedkeyword- [x] #303
- [x] #225
- [x]
sbusandubuswould be really helpful and nicer than having to typeunsigned/signed - [x]
reginstead ofregister(also covers 1 SV keyword)
- [x]
- [x] referencing register output via it's name (equivalent of
register_name.data) - [ ] #419
- [ ] assertions (two types: as statements and expressions)
// statement form: assert(x == 0); // embedded in expression (must have conditionals to make sense): wire x = (y == 0) ? z : (y ==1) ? w : unreachable("message"); // should result in following SV assertion being generated assert(!(y == 1) && !(y == 0)); - [ ] ban
clockoperations - [ ] signal matrix operations (a big one)