tools/litex_sim: fix default endianness for mem_init
authorGabriel L. Somlo <gsomlo@gmail.com>
Tue, 18 Jun 2019 20:29:23 +0000 (16:29 -0400)
committerGabriel L. Somlo <gsomlo@gmail.com>
Tue, 18 Jun 2019 20:55:58 +0000 (16:55 -0400)
Initializing ROM and/or RAM content requires knowing the CPU
endianness before the SimSoC->SoCSDRAM->SoCCore constructor
sequence is invoked (before the SoC's self.cpu.endianness
could be accessed). Given that the majority of supported CPU
models use "little", set it as the new default, and override
only for the two models that use "big" endianness.

litex/tools/litex_sim.py

index 1c0769aef9afbf91995b446feaf5cf497c372c07..d97cbb4f6ff06c5ca918535de4070aa1871e59ee 100755 (executable)
@@ -214,10 +214,10 @@ def main():
     sim_config = SimConfig(default_clk="sys_clk")
     sim_config.add_module("serial2console", "serial")
 
-    cpu_endianness = "big"
+    cpu_endianness = "little"
     if "cpu_type" in soc_kwargs:
-        if soc_kwargs["cpu_type"] in ["picorv32", "vexriscv"]:
-            cpu_endianness = "little"
+        if soc_kwargs["cpu_type"] in ["mor1kx", "lm32"]:
+            cpu_endianness = "big"
 
     if args.rom_init:
         soc_kwargs["integrated_rom_init"] = get_mem_data(args.rom_init, cpu_endianness)