-
Notifications
You must be signed in to change notification settings - Fork 222
Description
What's hard to do? (limit 100 words)
In DSLX, let’s imagine that my DSLX code is hardware-bounded and only allowed to create about 4x4 PEs (or called Node in the example matmul_4x4.x). If I spawn 4x4 Nodes at 3 different locations by the same or different proc() in series (no concurrency, no data hazards), after compiling it into Verilog,
(1) How many the hardware do I use? Is it 4x4 PEs (because it is allowed to the ideal Node proc()? Or it must be 3×(4x4) PEs?
(2) How can we share the subproc() across different proc()?
(Hope that you can give me some solutions or equivalent solutions for this) [Hint: This is a question is because we are not allowed to treat proc() as a parameter type, are we? Essentially different from other valid ones like array, structure, primitive data types, etc..]
(3) How to index or reference the spawned proc() from another proc()?
Current best alternative workaround (limit 100 words)
/
Your view of the "best case XLS enhancement" (limit 100 words)
Is there any way to support sharing Nodes?
Alternatively, I have seen some other languages have something like this: option of memory
...
let shared = spawn SharedHardware();
let p = spawn Process(memory=shared.memory);
...