iverilog/docs/ROADMAP.md

30 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Feature roadmap (one-by-one)
Each item should be a dedicated `feat/<name>` branch, with tests/examples and a STATUS.md update. Merge only into this forks default branch (`master`).
## Tier A — Compiler SV foundations (block Accellera UVM)
1. **Parameterized classes**`class C #(type T = int);` / `C#(byte)` — needed for `uvm_*#(T)`, `config_db`
2. **Associative arrays**`int aa[string];`
3. **Virtual interfaces** + eventing on `vif.clk`
4. **Clocking blocks** — enough for `@(vif.cb)`
5. **`mailbox` / `semaphore` builtins** (or solid class equivalents with blocking put/get)
6. **Constraints + `randomize()` / `randomize() with`** — start unconstrained `rand`, then solver
7. **`$cast` / `$typename` hardening** for factory patterns
8. **Covergroups** — functional coverage
9. **DPI-C** — optional but common in real flows
## Tier B — Library / methodology (on top of Tier A)
10. Grow [`uvm/`](../uvm/) toward Accellera-shaped APIs: reporting, phases/objections, factory, `config_db`, TLM, sequences
11. Smoke: trimmed “hello UVM”, then larger Accellera UVM 1.2 slices as features land
## Already usable baseline (do not re-do first)
Classes, packages, strings, queues/dynamic arrays, locators/reductions/ordering, chained calls — extend only when a UVM example needs a gap.
## Out of scope
- Claiming “UVM 1.2 supported” until Accelleras library compiles and runs
- Opening PRs to `steveicarus/iverilog` for this track (see [WORKFLOW.md](WORKFLOW.md))