Diagonal Processing Element (pe_diag.sv)
Back to Systolic Gauss-Jordan.
Source file: rtl/systolic_gauss_jordan/pe_diag.sv
Elementary Processing element used across the systolic mesh Trapezoidal mesh (trapeziod_mesh.sv)
which processes diagonal elements of incoming columns (pivots of each row). The opcode (op_o/op_i) enums are defined in Shared package (gj_pkg.sv)
Ports
Inputs
clk: clock signalrst: reseten_i: enabledata_i: data bit inreduce_sig_i: reduce signal activating reduction for the pivot column.
Outputs
data_o: data bit outop_o: opcode outreduce_sig_o: reduce signal activating reduction for the pivot column.
Behaviour
During the forward pass: drives the rightward movement of opcode which signals weather a pivot element has been found
Drives the downward data output seen by the next row
During the reduce pass: forwards a delayed diagonal
reducesignal
Transition table
Notes:
ris the current stored bit.r_nextis the next stored bit.data_out_nextis the combinational value later registered intodata_o.op_out_nextis the combinational value later registered intoop_o.state_ois always the registered state bitr.
Reduce signal forwarding
|
|
|
Meaning |
|---|---|---|---|
|
|
|
Mask reduce during reset |
|
|
|
Forward reduce unchanged |
Enabled data path (rst = 0, en_i = 1)
|
|
|
|
|
|
Meaning |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
Active reduce branch |
|
|
|
|
|
|
Zero input keeps state and drives zero downward |
|
|
|
|
|
|
First |
|
|
|
|
|
|
Forward-mode add branch after the pivot is already locked |
Notes:
op_o after clockis the registered copy ofop_out_next.data_out_nextdefaults to1'b0before the branch logic and is only overridden in the active reduce branch.
Test
make -C test/systolic_gauss_jordan TEST=pe_diag