Skip to content

Asymmetric axi_to_reg_v2 (64-bit AXI, 32-bit REG) throttles burst transactions #56

@cousteaulecommandant

Description

@cousteaulecommandant

When using axi_to_reg_v2 to adapt a 64-bit AXI interface to a 32-bit Register interface, burst transactions are throttled to 67% capacity (one 64-bit AXI word / two 32-bit REG words every 3 clock cycles instead of 2). I would have expected the REG side to be busy 100% of the time and the AXI side to be busy one out of every two clock cycles.
This doesn't happen if both sides of the converter are the same width (e.g. both 32 bits) - in that case, it achieves a performance of 100% (one word per clock cycle).

                       Expected:                 Obtained:
                        ___________________       _______________________
axi_req_i.w_valid   ___|                      ___|                       
                        _   _   _   _   _         _     _     _     _    
axi_rsp_o.w_ready   ___| |_| |_| |_| |_| |_   ___| |___| |___| |___| |___
                        ___________________       ___   ___   ___   ___  
reg_req_o.valid     ___|                      ___|   |_|   |_|   |_|   |_

I suspect that the culprit is this BufDepth parameter for axi_to_detailed_mem being fixed to 1; I tried changing it to 2 and that seems to provide maximum efficiency (no throttling), although I'm not sure this is right to do or if it breaks the behavior of the module (maybe it was fixed to 1 for a reason); I didn't experiment enough or look much into the code to figure out if the behavior is correct with this change.

.BufDepth ( 32'd1 ),

Would changing this parameter solve the issue? Which value should it take? I suspect 2 is not a "one size fits all" solution and that other cases (e.g. 128-bit AXI and 32-bit REG, a 4:1 ratio) will require different values.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions