StanfordAHA / CGRAMapper

CoreIR based mapping tool for CGRA
BSD 3-Clause "New" or "Revised" License
6 stars 4 forks source link

Orphaned registers #88

Open Kuree opened 5 years ago

Kuree commented 5 years ago

I'm trying to PnR fast-corner that Jeff had, which has passed CoreIR test. In the mapped netlist, there are some orphaned registers that take input but don't drive any nets. For instance, you can search for lb_p4_hw_in_stencil_update_stream$lb_recurse$lb1d_6$reg_6. We only have this connection:

["lb_p4_hw_in_stencil_update_stream$lb_recurse$lb1d_6$reg_6.in","lb_p4_hw_in_stencil_update_stream$lb_recurse$lb1d_6$reg_5.out"]

I can run a pass on my end to remove any orphaned node other than IOs, but I'd prefer this get's fixed in the mapper. Maybe there is a pass in CoreIR already but not enabled by default in the mapper.

Using the build from master branch. Input and output attached.

fast_corner_mapped.txt design_top.txt

jeffsetter commented 5 years ago

After looking at the design, this is happening, because the output stencil of the linebuffer is non-rectangular. Because I only emit rectangular stencils, some of the output registers that are not needed are created but never used. In this case, our stencil is octangonal, meaning that the first couple (lb1d_0 and lb1d_1) and last couple (lb1d_5, lb1d_6) output stencil rows have registers at the end that are unnecessary.

Going forward, I would hope that the mapper would be able to identify and remove the hardware that is not used, as is the case in this example.