nexus: Duplicate shodan platform to nexus

Change-Id: I9b8c31ced314c01e49839c0d32bca2a085087e51
diff --git a/platforms/nexus-debug.repl b/platforms/nexus-debug.repl
new file mode 100644
index 0000000..ae7578c
--- /dev/null
+++ b/platforms/nexus-debug.repl
@@ -0,0 +1,13 @@
+// A renode platform file used by debug config
+using "sim/config/platforms/nexus.repl"
+
+
+// Override the memory size for debug workloads
+
+// RAM_SEC           [‘h1000_0000 - ‘h1001_FFFF)  16M RAM for Security Core (debugging size)
+ram_sec:
+    size: 0x01000000
+
+// eFLASH            [‘h2000_0000 - ‘h20FF_FFFF)  16MB eFlash for Security Core (debugging size)
+eflash:
+    size: 0x01000000
diff --git a/platforms/nexus.repl b/platforms/nexus.repl
new file mode 100644
index 0000000..243d75f
--- /dev/null
+++ b/platforms/nexus.repl
@@ -0,0 +1,43 @@
+using "sim/config/platforms/smc.repl"
+using "sim/config/platforms/secure.repl"
+using "sim/config/platforms/ml_core.repl"
+
+// To model the TLUL mailbox spec, we need a Renode peripheral that listens
+// to address ranges for both endpoints of the mailbox. This is the current
+// best way to do that, per Renode dev's recommendations.
+
+mailbox : Mailbox @ {
+        sysbus new Bus.BusMultiRegistration {
+            address: 0x40800000;  // TOP_MATCHA_MAILBOX_SEC_BASE_ADDR
+            size: 0x28;
+            region: "endpoint_a"
+        };
+        sysbus new Bus.BusMultiRegistration {
+            address: 0x540F1000;  // TOP_MATCHA_MAILBOX_SMC_BASE_ADDR
+            size: 0x28;
+            region: "endpoint_b"
+        }
+    }
+    endpoint_a_name: "SEC"
+    endpoint_b_name: "SMC"
+    wtirq_A -> plic@187    // kTopMatchaPlicIrqIdMailboxSecWtirq
+    rtirq_A -> plic@188    // kTopMatchaPlicIrqIdMailboxSecRtirq
+    eirq_A  -> plic@189    // kTopMatchaPlicIrqIdMailboxSecEirq
+    wtirq_B -> smc_plic@10 // kTopMatchaPlicIrqIdMailboxSmcWtirq
+    rtirq_B -> smc_plic@11 // kTopMatchaPlicIrqIdMailboxSmcRtirq
+    eirq_B  -> smc_plic@12 // kTopMatchaPlicIrqIdMailboxSmcEirq
+
+vec_controlblock : CPU.SpringbokRiscV32_ControlBlock @ sysbus 0x47000000
+    core: cpu2
+    mmuNumWindows: 6 // See: go/shodan-vc-memory
+    mmuVirtualWindowSize: 0x1000000
+    mmuMemorySize: 0x1000000
+    mmuRangeStart: 0x80000000
+    HostReqIRQ -> smc_plic@13           // kTopMatchaPlicIrqIdVcTopHostReq @ top_matcha.h
+    FinishIRQ -> smc_plic@14            // kTopMatchaPlicIrqIdVcTopFinish @ top_matcha.h
+    InstructionFaultIRQ -> smc_plic@15  // kTopMatchaPlicIrqIdVcTopInstructionFault @ top_matcha.h
+    DataFaultIRQ -> smc_plic@16         // kTopMatchaPlicIrqIdVcTopDataFault @ top_matcha.h
+
+// ISP               [‘h4200_0000 - ‘h4200_FFFF)  64KB ISP registers
+// DMA Ctrl          [‘h4201_0000 - ‘h4201_FFFF)  64KB DMA control interface
+// DSP Ctrl          [‘h4202_0000 - ‘h4202_FFFF)  64KB Audio DSP control interface
diff --git a/shodan.resc b/shodan.resc
index 810768a..998f3fa 100644
--- a/shodan.resc
+++ b/shodan.resc
@@ -9,6 +9,9 @@
 include @sim/config/shodan_infrastructure/SpringbokRiscV32.cs
 EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.SpringbokRiscV32"
 EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.SpringbokRiscV32_ControlBlock"
+include @sim/config/shodan_infrastructure/KelvinRiscV32.cs
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.KelvinRiscV32"
+EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.CPU.KelvinRiscV32_ControlBlock"
 include @sim/config/shodan_infrastructure/SmcRiscV32.cs
 include @sim/config/shodan_infrastructure/Mailbox.cs
 include @sim/renode/tools/sel4_extensions/seL4Extensions.cs