Implementation status (TBD)¶
Most of Pyrope is implemented in LiveHD
and exercised by its test suite. This page lists the documented features that
are not implemented yet; each is also marked "TBD" where it is described.
A feature on this list may parse (lhd elaborate is permissive) but does not
lower to working hardware.
Each feature has a matching task page (with a failing example) in the LiveHD
repo under todo/pyrope/.
| Feature | Documented in | Task | Notes |
|---|---|---|---|
fluid lambdas, valid/retry/fire elastic handshakes |
Fluid Blocks | 2f-fluid |
syntax parses; no lowering |
.[defer] end-of-cycle reads |
Statements, Attributes | 2f-defer |
attribute name recognized only |
Temporal library: past[n], next[n], rose, fell, stable, changed, eventually, always, .[rising]/.[falling] |
Extended Verification | 2f-temporal |
|
Testbench extras: peek/poke, waitfor, force/release, sigref, spawn/join/cancel |
Extended Verification | 2f-testbench |
plain test/step blocks work |
Standard library (import("prp")) |
Standard Library | 2f-stdlib |
wish-list chapter |
comptime-computed / inferred-type memory init (reg mem2 = reset_value) |
Memories | 2f-mem_comptime_init |
multi-dim memories + literal/scalar init contents are implemented |
macro= memory-compiler binding |
Memories | 2f-macro |
|
lg attribute (explicit lgraph/module name) |
Attributes | 2f-lg |
|
... splice surface: mid-literal insertion ((1, ...mid, 6)) and call-argument spread (foo(a=1, ...rest)) |
Tuples, Variables, Struct types | 2f-splice |
the merge form (...a, ...b) and var-arg gather (...args) work |
covercase, in-language lec() (and requires/ensures pre/post) |
Assertions | 2f-verif_extras |
assert/cassert/cover work |
Notes:
- Runtime
wrap/satlowering and enum-typed register resets are implemented (earlier limitations, since fixed). - Glob import patterns were removed from the language: the import string is
"file"or"file.pub_name"only (see import).