This pull request adds two functions (parse_tile_exact and exact_table_cover) to fuse_h4x.py. The parse_tile_exact reports an exact cover over the rows in a table, computed using the exact_table_cover function that are 'active' in a bitstream.
These functions come from the realization that the problem of determining what rows in a table were actually used can be conceptualized as an exact cover problem, assuming that no two active rows ever share fuses. So far, this assumption seems to hold up.
These functions are quite effective at cutting out 'noise'. Consider the following comparison between the output of parse_tile and parse_tile_exact for the same tile.
The xcover package (github.com/john/xcover) makes all this possible. However, as it depends on numba and numpy, the import to xcover is 'hidden' within the exact_table_cover function. The reasoning here is that since these functions are really only useful to developers, the developer can bear the responsibility of making the xcover package available. If the xcover package is not installed, a call to exact_table_cover raises a ModuleNotFoundError exception, with a message on how the xcover package may be installed.
This pull request adds two functions (
parse_tile_exact
andexact_table_cover
) tofuse_h4x.py
. Theparse_tile_exact
reports an exact cover over the rows in a table, computed using theexact_table_cover
function that are 'active' in a bitstream.These functions come from the realization that the problem of determining what rows in a table were actually used can be conceptualized as an exact cover problem, assuming that no two active rows ever share fuses. So far, this assumption seems to hold up.
These functions are quite effective at cutting out 'noise'. Consider the following comparison between the output of parse_tile and parse_tile_exact for the same tile.
parse_tile
parse_tile_exact
The
xcover
package (github.com/john/xcover) makes all this possible. However, as it depends on numba and numpy, the import to xcover is 'hidden' within theexact_table_cover
function. The reasoning here is that since these functions are really only useful to developers, the developer can bear the responsibility of making the xcover package available. If the xcover package is not installed, a call toexact_table_cover
raises a ModuleNotFoundError exception, with a message on how the xcover package may be installed.