diff --git a/sw/device/lib/testing/test_framework/kelvin.ld b/sw/device/lib/testing/test_framework/kelvin.ld
index 048db0d..076aa68 100644
--- a/sw/device/lib/testing/test_framework/kelvin.ld
+++ b/sw/device/lib/testing/test_framework/kelvin.ld
@@ -15,10 +15,11 @@
  */
 
 MEMORY {
-  TCM(rwx): ORIGIN = 0x00000000, LENGTH = LENGTH(ram_ml_dmem)
+  TCM(rwx): ORIGIN = 0x00000000, LENGTH = 3M
+  MODEL_DATA(rw): ORIGIN = LENGTH(TCM), LENGTH = LENGTH(ram_ml_dmem) - LENGTH(TCM)
 }
 
-_stack_size = 0x4000;
+STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x4000;
 __heap_size__ = 0x1000;
 
 ENTRY(_start)
@@ -85,7 +86,26 @@
 
   .stack : ALIGN(4) {
     __stack_start__ = .;
-    . += _stack_size;
+    . += STACK_SIZE;
     __stack_end__ = .;
   } > TCM
 }
+
+SECTIONS {
+  . = ORIGIN(MODEL_DATA);
+  .model_data (NOLOAD) : ALIGN(4) {
+    __model_data_start__ = .;
+    *(.model_data)
+    __model_data_end__ = .;
+  } > MODEL_DATA
+
+  /*
+   * Model header information (model input/output addresses) is
+   * always at the end of DMEM.
+   */
+  .model_header LENGTH(ram_ml_dmem) - 4096 (NOLOAD) : ALIGN(4) {
+    __model_header_start__ = .;
+    *(.model_header*)
+    __model_header_end__ = .;
+  } > MODEL_DATA
+}
diff --git a/sw/device/tests/kelvin/hps-c-port/BUILD b/sw/device/tests/kelvin/hps-c-port/BUILD
index fb282e6..dcccb99 100644
--- a/sw/device/tests/kelvin/hps-c-port/BUILD
+++ b/sw/device/tests/kelvin/hps-c-port/BUILD
@@ -57,4 +57,7 @@
         "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_opt_util.h",
         "//sw/device/tests/kelvin/hps-c-port/model/inc:tfc_reshape.h",
     ],
+    linkopts = [
+        "-Wl,--defsym,__stack_size__=256k",
+    ],
 )
diff --git a/sw/device/tests/kelvin/hps-c-port/main_fpga.cc b/sw/device/tests/kelvin/hps-c-port/main_fpga.cc
index 4755b93..a42fe33 100644
--- a/sw/device/tests/kelvin/hps-c-port/main_fpga.cc
+++ b/sw/device/tests/kelvin/hps-c-port/main_fpga.cc
@@ -1,24 +1,24 @@
-#include "sw/device/tests/kelvin/hps-c-port/sw/init/kelvin.h"
-#include "sw/device/tests/kelvin/hps-c-port/model/inc/model.h"
 #include "sw/device/tests/kelvin/hps-c-port/ml_input.h"
+#include "sw/device/tests/kelvin/hps-c-port/model/inc/model.h"
+#include "sw/device/tests/kelvin/hps-c-port/sw/init/kelvin.h"
 
 constexpr int kImageLen = 240 * 320;
 
-constexpr uint32_t kCommand = 0x3FF000;  // +4.0MB - 4KB
-
 struct command_t {
   uint32_t input_addr;
   uint32_t output_addr;
   uint32_t padding[1024 - 2];
 };
-static_assert(sizeof(command_t) == 4096);
 
 static int8_t input_[kImageLen] __aligned__ __noinit__;
 
+// .model_header is at the DMEM - 4KB
+command_t command __attribute__((section(".model_header")));
+static_assert(sizeof(command) == 4096);
+
 int main(void) {
-  const command_t *command = reinterpret_cast<const command_t*>(kCommand);
-  const uint8_t *image = reinterpret_cast<const uint8_t*>(command->input_addr);
-  int8_t *output = reinterpret_cast<int8_t*>(command->output_addr);
+  const uint8_t *image = reinterpret_cast<const uint8_t *>(command.input_addr);
+  int8_t *output = reinterpret_cast<int8_t *>(command.output_addr);
 
   ml_input(kImageLen, image, input_);
   model(input_, output);
