diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index 016c76dc06632e5b10a3021c0628a844eed4e50f..b0511f63ccd2bacdecd9dfffa19dcb19bb42f85a 100644
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -1330,7 +1330,8 @@
                                     (Test3: 30kHz SCS, 273 PRBs, Prach format A2),
 				    (Test4: 30kHz SCS, 106 PRBs, Prach format 0),
                                     (Test5: 120kHz SCS, 32 PRBs, Prach format A2),
-                                    (Test6: 120kHz SCS, 66 PRBs, Prach format A2)</desc>
+                                    (Test6: 120kHz SCS, 66 PRBs, Prach format A2),
+                                    (Test7: 120kHz SCS, 66 PRBs, High Speed Enabled)</desc>
       <pre_compile_prog></pre_compile_prog>
       <compile_prog>$OPENAIR_DIR/cmake_targets/build_oai</compile_prog>
       <compile_prog_args> --phy_simulators -c </compile_prog_args>
@@ -1342,8 +1343,9 @@
                       -a -s -30 -n 100 -p 63 -R 273
 		      -a -s -30 -n 100 -p 63 -R 106 -c 4
 		      -a -s -30 -n 100 -p 32 -R 32 -m 3 -c52 
-		      -a -s -30 -n 100 -p 32 -R 66 -m 3 -c52</main_exec_args>
-      <tags>nr_prachsim.test1 nr_prachsim.test2 nr_prachsim.test3 nr_prachsim.test4 nr_prachsim.test5 nr_prachsim.test6</tags>
+		      -a -s -30 -n 100 -p 32 -R 66 -m 3 -c52
+          -a -s -30 -n 100 -R 66 -m 3 -c52 -H</main_exec_args>
+      <tags>nr_prachsim.test1 nr_prachsim.test2 nr_prachsim.test3 nr_prachsim.test4 nr_prachsim.test5 nr_prachsim.test6 nr_prachsim.test7</tags>
       <search_expr_true>PRACH test OK</search_expr_true>
       <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
       <nruns>3</nruns>
diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach.c b/openair1/PHY/NR_TRANSPORT/nr_prach.c
index 64b14091d6298c6e70e9de4d7862d652391050cd..8248de74167b8eba18789f2f8808852fb96715f0 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_prach.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_prach.c
@@ -780,7 +780,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
       }
     } else { // This is the high-speed case
       new_dft = 0;
-
+      nr_fill_du(N_ZC,prach_root_sequence_map);
       // set preamble_offset to initial rootSequenceIndex and look if we need more root sequences for this
       // preamble index and find the corresponding cyclic shift
       // Check if all shifts for that root have been processed
@@ -788,7 +788,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
         not_found = 1;
         new_dft   = 1;
         preamble_index0 -= numshift;
-        (preamble_offset==0 && numshift==0) ? (preamble_offset) : (preamble_offset++);
+        //(preamble_offset==0 && numshift==0) ? (preamble_offset) : (preamble_offset++);
 
         while (not_found == 1) {
           // current root depending on rootSequenceIndex
diff --git a/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h b/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h
index be3ba0098928ffab053e0206fa92fbe32a2a272c..02e594e76a3509ab2488f9639434d2c760d71791 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h
+++ b/openair1/PHY/NR_TRANSPORT/nr_transport_common_proto.h
@@ -73,6 +73,8 @@ void compute_nr_prach_seq(uint8_t short_sequence,
                           uint8_t rootSequenceIndex,
                           uint32_t X_u[64][839]);
 
+void nr_fill_du(uint16_t N_ZC,uint16_t *prach_root_sequence_map);
+
 void init_nr_prach_tables(int N_ZC);
 
 /**@}*/
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c
index 0ba02c6bac8564182d02483343d3b6ae3d1aabac..2c4c0b9e14874a0436580400a32010da21934449 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c
@@ -130,6 +130,7 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, uint8_t slot){
     #endif
 
     not_found = 1;
+    nr_fill_du(N_ZC,prach_root_sequence_map);
     preamble_index0 = preamble_index;
     // set preamble_offset to initial rootSequenceIndex and look if we need more root sequences for this
     // preamble index and find the corresponding cyclic shift
diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c
index 74ca8d9184691881684e42ebaffda07b7f459915..efbc40cd55be658b9df4fcfbbb6dc2aa3344ec5b 100644
--- a/openair1/SIMULATION/NR_PHY/prachsim.c
+++ b/openair1/SIMULATION/NR_PHY/prachsim.c
@@ -205,7 +205,7 @@ int main(int argc, char **argv){
 
   randominit(0);
 
-  while ((c = getopt (argc, argv, "hHaA:Cc:r:p:g:m:n:s:S:t:x:y:v:V:z:N:F:d:Z:L:R:E")) != -1) {
+  while ((c = getopt (argc, argv, "hHaA:Cc:l:r:p:g:m:n:s:S:t:x:y:v:V:z:N:F:d:Z:L:R:E")) != -1) {
     switch (c) {
     case 'a':
       printf("Running AWGN simulation\n");
@@ -218,6 +218,10 @@ int main(int argc, char **argv){
       config_index = atoi(optarg);
       break;
 
+    case 'l':
+      loglvl = atoi(optarg);
+      break;
+
     case 'r':
       msg1_frequencystart = atoi(optarg);
       break;