You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When ConfigBitMode is set to FRAME_BASED, FABulous will:
Unconditionally generate FrameStrobe signals for all columns ✅
Generate FrameData signals for all rows except for the first and last ❌
Point 2 may look like a feature at first, if none of the tiles in the first and last row use configuration bits (as is the case in the example fabric), then there is no need to generate FrameData signals, right?
What if you want to use different tiles in the first and last row, e.g. N_IO and S_IO?
There is no way to configure this behavior.
There is no way to disable this behavior.
Your first reaction might be to make this behavior optional, but the better approach is to remove this feature now and reimplement it correctly1 at a later time.
My PR in #161 fixes the FrameData generation for the first and last row by removing the hardcoded exception. Additionally, if the first tile in a row is NULL, than Tile_Y{y}_FrameData is correctly connected to the second tile.
This works fine if you are using e.g. only N_IO and S_IO tiles in the first and last row (as in my case). But if these tiles are termination tiles without any configuration bits (as in the example fabric) or any mix of them, then some tiles have no FrameData inputs and FrameData_O outputs, resulting in a broken fabric.
This means my PR depends on every tile, no matter if it has config bits or not, having FrameData/FrameData_o inputs/outputs, which is a sensible assumption. Remember: for FrameStrobe signals this is already the case, why should FrameData be any different? See #296 for tracking this dependent issue.
I would like to hear your feedback before I bring PR #161 up to date and integrate the fixes for #296 into it. Thanks!
Footnotes
A correct reimplementation would be one that handles FrameData as well as FrameStrobe signals: If all tiles of a row or column don't use any configuration bits, only then FABulous should disable the FrameData/FrameStrobe signals for that row/column. The problem is that tiles will always need to be generated with FrameData/FrameStrobe signals (independent of whether they use any config bits at all), since there is no way of knowing in advance how the tiles will get stitched (and that's a good thing, because it keeps FABulous flexible). So it's probably best to forget about this “feature” altogether, as it really makes no real difference whether the first and last row have FrameData signals or not ;) ↩
The text was updated successfully, but these errors were encountered:
When
ConfigBitMode
is set toFRAME_BASED
, FABulous will:FrameStrobe
signals for all columns ✅FrameData
signals for all rows except for the first and last ❌Point 2 may look like a feature at first, if none of the tiles in the first and last row use configuration bits (as is the case in the example fabric), then there is no need to generate
FrameData
signals, right?N_IO
andS_IO
?Your first reaction might be to make this behavior optional, but the better approach is to remove this feature now and reimplement it correctly1 at a later time.
My PR in #161 fixes the
FrameData
generation for the first and last row by removing the hardcoded exception. Additionally, if the first tile in a row isNULL
, thanTile_Y{y}_FrameData
is correctly connected to the second tile.This works fine if you are using e.g. only
N_IO
andS_IO
tiles in the first and last row (as in my case). But if these tiles are termination tiles without any configuration bits (as in the example fabric) or any mix of them, then some tiles have noFrameData
inputs andFrameData_O
outputs, resulting in a broken fabric.This means my PR depends on every tile, no matter if it has config bits or not, having
FrameData
/FrameData_o
inputs/outputs, which is a sensible assumption. Remember: forFrameStrobe
signals this is already the case, why shouldFrameData
be any different? See #296 for tracking this dependent issue.I would like to hear your feedback before I bring PR #161 up to date and integrate the fixes for #296 into it. Thanks!
Footnotes
A correct reimplementation would be one that handles
FrameData
as well asFrameStrobe
signals: If all tiles of a row or column don't use any configuration bits, only then FABulous should disable theFrameData
/FrameStrobe
signals for that row/column. The problem is that tiles will always need to be generated withFrameData
/FrameStrobe
signals (independent of whether they use any config bits at all), since there is no way of knowing in advance how the tiles will get stitched (and that's a good thing, because it keeps FABulous flexible). So it's probably best to forget about this “feature” altogether, as it really makes no real difference whether the first and last row haveFrameData
signals or not ;) ↩The text was updated successfully, but these errors were encountered: