Paul Rigge
Paul Rigge
Proc inlining as currently envisioned is complex, needs to re-implement some of what codegen does, and in many cases produces procs which cannot be pipelined well. With multi-proc codegen #950...
### What's hard to do? (limit 100 words) It's hard to write reusable components like an arbiter because you ideally want it to be type-generic, e.g. ``` proc Arb {...
### What's hard to do? (limit 100 words) Currently, module_builder puts functions in each module. With multi-proc codegen, this means you end up redefining a bunch of functions in many...
### What's hard to do? (limit 100 words) You might want to do any of the following: - Generate Verilog but avoid all SystemVerilog keywords b/c the file will be...
### What's hard to do? (limit 100 words) If you have a DUT proc, you might want to use a DSLX model (ex: a memory model) and attach it to...
**Describe the bug** Extern types (e.g. `#[sv_type(...)]`) don't codegen correctly for array types. **To Reproduce** Given an sv type like `typedef logic[7:0][3] u8_3_t;`: ``` #[sv_type("u8_3_t")] type u8_3_t = u8[3]; fn...
Currently, we have protos in channels that map "logical" (e.g. `VALID`) ports to "physical" (e.g. `chan_vld`) port names. Signature generation goes through the channels and populates the signature, validates that...
Currently, the packed wrapper generates loads/stores for each array element, which for large arrays can cause LLVM to fall down. Packing/unpacking arrays should use loops.
`Node::SetId()` has a TODO to drop it. Ideally, this would be private to the parser or not even exist. Node IDs are usually OK to treat as immutable, but they...
As I write this issue, I am concurrently landing a change which makes Node DFS iterative rather than recursive. The discussion in code review revealed some ways in which a...