Husky vs Husky Plus

Husky vs Husky Plus#

The same codebase supports both Husky and Husky Plus. The differences between the two are summarized here.

These differences are implemented via top-level defines which are declared in the Vivado project files. These in turn lead to different FIFO depths and configuration parameters.

Both Husky and Husky Plus have limitations that can make expanding their feature set challenging.

For Husky, utilization and routing congestion are the main potential issues. For example, supporting more USERIO clocks, or supporting more pins in scope.bitbanger, should be essentially free, but the difficulty of routing these signals leads to significant timing failures. Similarly, increasing pTRACE_MATCH_RULES should only cost a relatively small number of LUTs, and should not, from a pure logic point of view, make timing more difficult. However in practice, it increases congestion which in turn leads to timing failures.

For Husky Plus, utilization is significantly lower. We take advantage of this to add more USERIO clocks and scope.bitbanger pin options. Power consumption is what we have to watch for here. This is what keeps us, for example, from increasing the SAD depth. In theory there are enough LUTs available to double the SAD depth; in practice, if we do this, turning on the SAD module when it is clocked at 250 MHz creates a large enough power draw that the voltage rails (which are monitored by the FPGA’s XADC module) exceed their recommended operating limits. This is one of the reasons why it is important to do thorough testing.