Error booting Linux using default LargeBoomConfig on VCU118

273 views
Skip to first unread message

Reese Kuper

unread,
Aug 23, 2023, 9:40:56 PM8/23/23
to Chipyard
Hi everyone,

I am trying to use chipyard (v1.10.0) to boot Linux on the large BOOM core using the VCU118 FPGA. I have used chipyard last year (v1.5) and was able to generate a bitstream using the large BOOM core that was able to boot into Linux successfully. 

With the default configurations of chipyard v1.10.0, I see an error saying that I am using a non-homogeneous clock (BOOM core at 50MHz, FPGA clocks and harness binder set to 100MHz). If I set the BoomVCU118Config frequency to 100MHz, synthesis results in design timing not being met (< -0.7 in WNS). If I switch all frequencies to 50MHz, timing is met, but cannot successfully boot into Linux (stuck at "CMD0; sd_cmd: timeout; ERROR").

How can I boot into Linux using the LargeBoomConfig?

Thanks in advance,
Reese

Elkim Roa

unread,
Sep 1, 2023, 10:16:43 AM9/1/23
to Chipyard
It looks like the SPI freq. for the SDCard interface is too low. Line 33 of chipyard/fpga/src/main/scala/vcu118/Configs.scala is normalizing the frequency to MHz  
val freqMHz = (site(SystemBusKey).dtsFrequency.get / (1000 * 1000)).toLong
but the sd.c at chipyard/fpga/src/main/resources/vcu118/sdboot is using Hz:
REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 300000UL);
Solution, divide in MHz instead (300000) --> 0.3 (0.3MHz). Use 0.4 instead since that is the expected freq by the MCU within the SDcard. Chnage line 179 too in sd.c accordingly! (20MHz works ok).
Reply all
Reply to author
Forward
0 new messages