diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2822c3a1830acd40bfedc4320470cda42706be7e..ccde9db10731a8be48df5bc9c2e9ab2e184f27d4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,6 +17,7 @@
 # https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml
 
 stages:          # List of stages for jobs, and their order of execution
+  - compile
   - simulate
   - build
   - deploy
@@ -25,6 +26,20 @@ variables:
   GIT_SUBMODULE_STRATEGY: recursive
   GIT_SUBMODULE_FORCE_HTTPS: "true"
 
+compile-software:
+  stage: compile
+  script:
+    - echo "Compilation phase started"
+    - git submodule foreach --recursive git submodule init
+    - git fetch --recurse-submodules
+    - source set_env.sh
+    - cd $SOCLABS_NANOSOC_TECH_DIR
+    - make compile_all_code
+  artifacts:
+    paths:
+      - $SOCLABS_PROJECT_DIR/simulate/sim/*/*.hex
+  tags:
+    - ds5
 
 simulate-nanosoc:
   stage: simulate