VexRiscv icon indicating copy to clipboard operation
VexRiscv copied to clipboard

Murax XIP compile issue

Open lk-davidegironi opened this issue 7 months ago • 11 comments

Hello,

I'm trying the Murax soc on a Tang Nano 9k. MuraxWithRamInit works with no issues. I'm able to run the demo, and to compile custom C software. Now I want to try the XIP, to run code from an SPI Flash. First issue is that I'm not able to compile it. The first error I've found is below:

[info] [Warning] This VexRiscv configuration is set without illegal instruction catch support. Some software may rely on it (ex: Rust)
[error] Exception in thread "main" scala.NotImplementedError: an implementation is missing
[error]         at scala.Predef$.$qmark$qmark$qmark(Predef.scala:230)
[error]         at spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus.fromPipelinedMemoryBus(SpiXdrMasterCtrl.scala:406)
[error]         at vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:307)
[error]         at vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]         at vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]         at spinal.core.ifGen$.apply(Misc.scala:520)
[error]         at vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]         at vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]         at vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]         at vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]         at vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]         at spinal.core.internals.PhaseCreateComponent$$anonfun$impl$67.apply(Phase.scala:2548)
[error]         at spinal.core.fiber.Engine$$anonfun$create$1.apply$mcV$sp(AsyncCtrl.scala:147)
[error]         at spinal.core.fiber.AsyncThread$$anonfun$1.apply$mcV$sp(AsyncThread.scala:59)
[error]         at spinal.core.fiber.EngineContext$$anonfun$newJvmThread$1.apply$mcV$sp(AsyncCtrl.scala:39)
[error]         at spinal.sim.JvmThread.run(SimManager.scala:51)
[error] Nonzero exit code returned from runner: 1
[error] (Compile / runMain) Nonzero exit code returned from runner: 1
[error] Total time: 8 s, completed Nov 24, 2023, 2:34:54 PM

I've been able to solve it by updating the fromPipelinedMemoryBus function, removing the ??? operator, so, I'm having a Murax.scala file content like below

      //ctrl.io.xip.fromPipelinedMemoryBus() << accessBus
      fromPipelinedMemoryBus() << accessBus
      val bootloader = Apb3Rom("src/main/c/murax/xipBootloader/crt.bin")
      apbMapping += bootloader.io.apb     -> (0x1E000, 4 kB)
    })

    def fromPipelinedMemoryBus() = {
      val accessBus = new PipelinedMemoryBus(PipelinedMemoryBusConfig(24,32))  
      accessBus
    }

Now, the issue scala.NotImplementedError issue is gone, but I've another one

[error] Exception in thread "main" spinal.core.SpinalExit:
[error]  Error detected in phase PhaseCheck_noLatchNoOverride
[error] ********************************************************************************
[error] ********************************************************************************
[error] NO DRIVER ON (toplevel/murax/??? :  Bool), defined at
[error]     spinal.lib.Stream.<init>(Stream.scala:56)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:36)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:41)
[error]     spinal.lib.bus.simple.PipelinedMemoryBus.<init>(PipelinedMemoryBus.scala:42)
[error]     vexriscv.demo.Murax$$anon$4.fromPipelinedMemoryBus(Murax.scala:313)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:307)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]     vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     spinal.sim.JvmThread.run(SimManager.scala:51)
[error] ********************************************************************************
[error] ********************************************************************************
[error] NO DRIVER ON (toplevel/murax/??? :  Bool), defined at
[error]     spinal.lib.Flow.<init>(Flow.scala:21)
[error]     spinal.lib.FlowFactory.apply(Flow.scala:10)
[error]     spinal.lib.FlowFactory.apply(Flow.scala:15)
[error]     spinal.lib.bus.simple.PipelinedMemoryBus.<init>(PipelinedMemoryBus.scala:43)
[error]     vexriscv.demo.Murax$$anon$4.fromPipelinedMemoryBus(Murax.scala:313)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:307)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]     vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     spinal.sim.JvmThread.run(SimManager.scala:51)
[error] ********************************************************************************
[error] ********************************************************************************
[error] NO DRIVER ON (toplevel/murax/??? :  Bits[32 bits]), defined at
[error]     spinal.lib.bus.simple.PipelinedMemoryBusRsp.<init>(PipelinedMemoryBus.scala:35)
[error]     spinal.lib.bus.simple.PipelinedMemoryBus$$anonfun$7.apply(PipelinedMemoryBus.scala:43)
[error]     spinal.lib.bus.simple.PipelinedMemoryBus$$anonfun$7.apply(PipelinedMemoryBus.scala:43)
[error]     spinal.lib.Flow.<init>(Flow.scala:22)
[error]     spinal.lib.FlowFactory.apply(Flow.scala:10)
[error]     spinal.lib.FlowFactory.apply(Flow.scala:15)
[error]     spinal.lib.bus.simple.PipelinedMemoryBus.<init>(PipelinedMemoryBus.scala:43)
[error]     vexriscv.demo.Murax$$anon$4.fromPipelinedMemoryBus(Murax.scala:313)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:307)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]     vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     spinal.sim.JvmThread.run(SimManager.scala:51)
[error] ********************************************************************************
[error] ********************************************************************************
[error] NO DRIVER ON (toplevel/murax/system_xip_ctrl/io_xip_cmd_valid : in Bool), defined at
[error]     spinal.lib.Stream.<init>(Stream.scala:55)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:36)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:41)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus.<init>(SpiXdrMasterCtrl.scala:396)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1.<init>(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl.<init>(Apb3SpiXdrMasterCtrl.scala:44)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:299)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]     vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     spinal.sim.JvmThread.run(SimManager.scala:51)
[error] ********************************************************************************
[error] ********************************************************************************
[error] NO DRIVER ON (toplevel/murax/system_xip_ctrl/io_xip_cmd_payload_address : in UInt[24 bits]), defined at
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipCmd.<init>(SpiXdrMasterCtrl.scala:390)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus$$anonfun$37.apply(SpiXdrMasterCtrl.scala:396)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus$$anonfun$37.apply(SpiXdrMasterCtrl.scala:396)
[error]     spinal.lib.Stream.<init>(Stream.scala:57)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:36)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:41)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus.<init>(SpiXdrMasterCtrl.scala:396)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1.<init>(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl.<init>(Apb3SpiXdrMasterCtrl.scala:44)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:299)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]     vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     spinal.sim.JvmThread.run(SimManager.scala:51)
[error] ********************************************************************************
[error] ********************************************************************************
[error] NO DRIVER ON (toplevel/murax/system_xip_ctrl/io_xip_cmd_payload_length : in UInt[2 bits]), defined at
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipCmd.<init>(SpiXdrMasterCtrl.scala:391)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus$$anonfun$37.apply(SpiXdrMasterCtrl.scala:396)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus$$anonfun$37.apply(SpiXdrMasterCtrl.scala:396)
[error]     spinal.lib.Stream.<init>(Stream.scala:57)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:36)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:41)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus.<init>(SpiXdrMasterCtrl.scala:396)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1.<init>(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl.<init>(Apb3SpiXdrMasterCtrl.scala:44)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:299)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]     vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     spinal.sim.JvmThread.run(SimManager.scala:51)
[error] ********************************************************************************
[error] ********************************************************************************
[error] NO DRIVER ON (toplevel/murax/system_xip_ctrl/io_xip_rsp_ready : in Bool), defined at
[error]     spinal.lib.Stream.<init>(Stream.scala:56)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:36)
[error]     spinal.lib.StreamFactory.apply(Stream.scala:41)
[error]     spinal.lib.com.spi.ddr.SpiXdrMasterCtrl$XipBus.<init>(SpiXdrMasterCtrl.scala:397)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1$$anonfun$1.apply(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl$$anon$1.<init>(Apb3SpiXdrMasterCtrl.scala:46)
[error]     spinal.lib.com.spi.ddr.Apb3SpiXdrMasterCtrl.<init>(Apb3SpiXdrMasterCtrl.scala:44)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10$$anon$6.<init>(Murax.scala:299)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4$$anonfun$10.apply(Murax.scala:298)
[error]     vexriscv.demo.Murax$$anon$4.<init>(Murax.scala:298)
[error]     vexriscv.demo.Murax.<init>(Murax.scala:214)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$Murax_iCE40_hx8k_breakout_board_xip.<init>(Murax.scala:437)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$$anonfun$main$3.apply(Murax.scala:489)
[error]     spinal.sim.JvmThread.run(SimManager.scala:51)
[error] ********************************************************************************
[error] ********************************************************************************
[error] Design's errors are listed above.
[error] SpinalHDL compiler exit stack :
[error]         at spinal.core.SpinalExit$.apply(Misc.scala:446)
[error]         at spinal.core.SpinalError$.apply(Misc.scala:501)
[error]         at spinal.core.internals.PhaseContext.checkPendingErrors(Phase.scala:177)
[error]         at spinal.core.internals.PhaseContext.doPhase(Phase.scala:193)
[error]         at spinal.core.internals.SpinalVerilogBoot$$anonfun$singleShot$2$$anonfun$apply$142.apply(Phase.scala:2918)
[error]         at spinal.core.internals.SpinalVerilogBoot$$anonfun$singleShot$2$$anonfun$apply$142.apply(Phase.scala:2916)
[error]         at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
[error]         at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
[error]         at spinal.core.internals.SpinalVerilogBoot$$anonfun$singleShot$2.apply(Phase.scala:2916)
[error]         at spinal.core.internals.SpinalVerilogBoot$$anonfun$singleShot$2.apply(Phase.scala:2852)
[error]         at spinal.core.ScopeProperty$.sandbox(ScopeProperty.scala:71)
[error]         at spinal.core.internals.SpinalVerilogBoot$.singleShot(Phase.scala:2852)
[error]         at spinal.core.internals.SpinalVerilogBoot$.apply(Phase.scala:2847)
[error]         at spinal.core.Spinal$.apply(Spinal.scala:412)
[error]         at spinal.core.SpinalConfig.generate(Spinal.scala:176)
[error]         at spinal.core.SpinalVerilog$.apply(Spinal.scala:431)
[error]         at vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip$.main(Murax.scala:489)
[error]         at vexriscv.demo.Murax_iCE40_hx8k_breakout_board_xip.main(Murax.scala)
[error] Nonzero exit code returned from runner: 1
[error] (Compile / runMain) Nonzero exit code returned from runner: 1
[error] Total time: 8 s, completed Nov 24, 2023, 2:42:58 PM

built.sbt is using the following versions spinalVersion = "1.9.4" scalaVersion := "2.11.12

I've just started on SpinalHdl, so I ask you an help to solve this issue. Thanks in advice.

lk-davidegironi avatar Nov 24 '23 13:11 lk-davidegironi