[Libre-soc-bugs] [Bug 901] Formal proof for PriorityPicker and MultiPriorityPicker and BetterMultiPriorityPicker
    bugzilla-daemon at libre-soc.org 
    bugzilla-daemon at libre-soc.org
       
    Thu Aug  4 06:53:20 BST 2022
    
    
  
https://bugs.libre-soc.org/show_bug.cgi?id=901
Jacob Lifshay <programmerjake at gmail.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Formal proof for            |Formal proof for
                   |PriorityPicker and          |PriorityPicker and
                   |MultiPriorityPicker         |MultiPriorityPicker and
                   |                            |BetterMultiPriorityPicker
             Status|IN_PROGRESS                 |RESOLVED
         Resolution|---                         |FIXED
--- Comment #2 from Jacob Lifshay <programmerjake at gmail.com> ---
I added the formal proof for MultiPriorityPicker.
While I was reading the implementation, I thought of a more efficient
implementation with O(log N) latency instead of the > O(N) latency that
MultiPriorityPicker has, so I wrote BetterMultiPriorityPicker:
it uses a parallel prefix sum of the input bits to compute which level each
input bit should be sent to, rather than needing a O(N) stack of
PriorityPickers.
Testing with width=16, levels=16:
The new algorithm uses a bit less gates and has about 1/4 the latency:
> yosys <<<$'read_rtlil sim_test_out/nmutil.formal.test_picker.TestBetterMultiPriorityPicker.test_16_levels_16_idxs_f_mi_f/0.il\nflatten\nsynth\nltp -noff'
Number of cells:               1171
Longest topological path in top (length=21):
> yosys <<<$'read_rtlil sim_test_out/nmutil.formal.test_picker.TestMultiPriorityPicker.test_16_levels_16_idxs_f_mi_f/0.il\nflatten\nsynth\nltp -noff'
Number of cells:               1469
Longest topological path in top (length=85):
-- 
You are receiving this mail because:
You are on the CC list for the bug.
    
    
More information about the libre-soc-bugs
mailing list