Const related operations, e.g., phi_const
- Requires prologue to skip the non-const operand for the first time
- May or may not consume the const queue and the arrived data on the input port, which needs manually ordering the const data inside the const queue:
|
s.recv_all_val @= ((s.first & s.recv_const.val) | \ |
|
(~s.first & s.recv_in[s.in0_idx].val)) |
|
s.send_out[0].val @= s.recv_all_val |
|
s.recv_in[s.in0_idx].rdy @= s.recv_all_val & s.send_out[0].rdy |
|
s.recv_const.rdy @= s.recv_all_val & s.send_out[0].rdy |
- This becomes more complicated when prologue is more than 1 cycle and multiple const related operations mapped on that tile
Const related operations, e.g., phi_const
VectorCGRA/fu/single/PhiRTL.py
Lines 96 to 100 in 9c1d72e