countzero: Reorganize to have fewer levels of logic and fewer LUTs
authorPaul Mackerras <paulus@ozlabs.org>
Fri, 11 Oct 2019 05:06:01 +0000 (16:06 +1100)
committerPaul Mackerras <paulus@ozlabs.org>
Sun, 13 Oct 2019 21:43:38 +0000 (08:43 +1100)
commite527e3a9b72dbfa88d854d3b40fde6e7184614bc
tree71f9ebeb9b604ad39e98a8d78f731c0ff3c53ad5
parent0a0fe037672d9aca82b26a86ae5d988156b6ef2f
countzero: Reorganize to have fewer levels of logic and fewer LUTs

By using 4:1 multiplexers rather than 2:1, this cuts the number of
levels of multiplexing from 4 to 2 and also reduces the total number
of slice LUTs required.  Because we are now handling 4 bits at each
level, including the bottom level, the logic to do the priority
encoding can be factored out into a function that is used at each
level.

This rearranges the logic so that the encoding and selection of bits
is done whether or not the input operand is zero, and the if statement
testing whether the input is zero only affects what is assigned to
result.  With this we don't get the inferred latches and we can go
back to using signals rather than variables.

Also add some comments about what is being done.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
countzero.vhdl