enjoy-digital / litex

Build your hardware, easily!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PR #1817 may have broken AXI-lite peripheral interconnect

Dolu1990 opened this issue · comments

Hi,

I update Litex and tested NaxRiscv, but it seems that #1817 did break something related to the peripheral interconnect.

UART work enough for the bootloader, but both spi and mmc are broken (can't run the sdcard bootloader).
I tracked it down to #1817.
The previous main branch commit works, while it seems that everything since #1817 isn't.

To visualize the issue, i did run :

  • litex_sim --cpu-type=naxriscv --with-sdram --sdram-data-width=64 --bus-standard axi-lite --with-coherent-dma --xlen=32 --with-sdcard --trace --trace-fst

But the issue is that i do not know which signals represent the memory bus which goes to the sdcard controller.

Any idea ^^ ?
Thanks

Thanks for the feedback @Dolu1990, I'll look at it.

@Dolu1990: I started looking at it and can see the issue by directly comparing the generated verilog with/without the changes. I have to stop for now, will continue later or tomorrow.

Great, thanks :)

This should be fixed with upstream (tested it on hardware on a Genesys2).

Thanks, will try :)

Hi,

I forgot about closing that issue, but it seems it doesn't fix it all.
MMC work fine with linux, but ethernet is broken.
SpinalHDL/NaxRiscv#69 (comment)
Likely some byte access done to the peripheral area by the driver or something like it ?

What were the fixes which were pushed to #1817 ?

Hi @Dolu1990,

thanks for the feedback, I'll look at it. Would you mind sharing your build command for the test on hardware? I should be able to identify the issue by directly looking at the verilog before and after the PR as I did for the MMC.

Thanks ^^
I'm currently using :
python3 -m litex_boards.targets.digilent_nexys_video --cpu-type=naxriscv --bus-standard axi-lite --with-video-framebuffer --with-coherent-dma --with-sdcard --with-ethernet --xlen=64 --scala-args='rvc=true,rvf=true,rvd=true,alu-count=2,decode-count=2' --with-jtag-tap --sys-clk-freq 100000000 --cpu-count 2 --build

@Dolu1990: Sorry for the delay, I'm looking at it now. I've been able to have a simple repro, just noting it here if I need it later:

Netboot working:
python3 -m litex_boards.targets.digilent_arty --bus-standard=wishbone --with-ethernet --build --load

Netboot failing:
python3 -m litex_boards.targets.digilent_arty --bus-standard=axi-lite --with-ethernet --build --load

So Ethernet currently seems to be broken when used with axi-lite interface. I'll try to fix this now.

No worries :)
Thanks

Netboot on Arty with AXI-Lite bus is now working with acd66f1. The address shift was the opposite of what it should be in this case. (Copy paste from m2s case just before).

This should also fix the NaxRiscv build/design.

I just tested, it works all good now :D
I may also have fixed some weird boot freeze that i had by the past, didn't seems to happen anymore so far

Thanks

Great, thanks for the feedback and test!