pulp-platform/carfield

Clip minimum number of external AXI masters to 1 due to PULP cluster limitations.

yvantor opened this issue · 3 comments

There is an issue with this piece of logic. Since the PULP cluster has a separate CDC destination FIFO due to its different AXI ID widths respect to the rest of the SoC, if one wants to use a very basic Carfield configuration where Cfg.AxiExtNumMst becomes 0, that for has an iterative spanning from 0 to 0-1, and the code does not compile. To mitigate this, as a temporary solution we prevent Cfg.AxiExtNumMst from being zero with this workaround. The "final solution" would be to unify all the AXI IDs so that the PULP cluster does not need a dedicated port and the iterative of that for can freely span from 0 to Cfg.AxiExtNumMst, with a consequent increase in the area of the AXI crossbar that should be investigated.

This issue can be solved by moving the ID width converter inside PULP cluster, as done in spatz, and will prevent workarounds like the one mentioned in this issue from being used

[Update] Labelled as cleanup and assigned to @yvantor

[Update] Backport from here