Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
15563 Discussions

AXI Translator from Platform Designer (QSYS) doesn't follow AXI4-Lite protocol spec.

SKarp6
Beginner
592 Views

Hello All,

This might be a known problem. It looks like AXI Translator module has a bug. When you pick AXI4-Lite on master side AXI Translator expects that RID and BID signals will be set by a module connected to AXI4-Lite but AXI4-Lite doesn't have these signals and that is a responsibility of translator to set it. 

I use AXI translator for connecting my AXI4-Lite slave block to HPS (I have Cyclone V FPGA). Since these signals remain not connected any access by software running on HPS hangs the system.

 

ARM's AXI specification explains translation process in detail so AXI Translator block just doesn't comply it.

 

PS1: I made a quick experiment and changed a system generated by QSYS so it picks BID and RID from AWID and ARID respectively and this solves the problem.

PS2: I suspect previous versions also have this issue.

 

Thanks,

Stepan

 

0 Kudos
5 Replies
SKarp6
Beginner
526 Views

Attached waveforms of AXI LW interface captured with Signaltap for two different cases when SW reads slave. For hanging case RID signal remains zero.

RichardTanSY_Intel
526 Views

I could not find any significant difference from the waveform diagram in modelsim. Perhaps you could help to share screenshot on it? Could you share both of your projects (hang and no hang) so I could duplicate the issue?

SKarp6
Beginner
526 Views

Thanks a lot for reply.

 

Here are waveforms I captured with SignalTap.

 

Read transaction, no hang case, when translating to AXI4:

axi4_no_hang.png

Notice RID signal is set to ARID.

 

Read transaction, hang case, when translating to AXI4-Lite:

axi4_lite_hang.png

See RID remains zero. Both RID and BID are not connected inside of the translator when translating to AXI4-Lite.

 

See axi4lite_quick_fix file with a hacky fix to my top of QSYS generated block. Unfortunately I cannot share whole design.

 

To reproduce you need to run Platform Designer, instantiate HPS, then instantiate AXI translator, connect its slave side to AXI master on HPS and export master side as AXI4-Lite. You'll notice that RID and BID signals are not exported which is correct because AXI4-Lite doesn't use it, however AXI translator doesn't handle these signals correctly for HPS side. That's why it hangs when you try to access MMIO range.

 

RichardTanSY_Intel
460 Views

Sorry that the case had been idling for quite sometimes. Do you able to solve the issue?

Is there any help still needed from your side? 


RichardTanSY_Intel
429 Views

Hi, 

We do not receive any response from you to the previous question/reply/answer that I have provided. Please post a response in the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you with your follow-up questions.

Best Regards,
Shyan Yew

Reply