diff --git a/flows/makefile.lint b/flows/makefile.lint
index dbfe8d52d41a36c8acc7ad3960a330deb5117534..fd2f9ca65851cef5fde3f029d2af1e51454b1a68 100644
--- a/flows/makefile.lint
+++ b/flows/makefile.lint
@@ -35,7 +35,7 @@ HAL_WAIVE += -design_info $(LINT_INFO_SOCDEBUG_DIR)/socdebug_controller_ip.waive
 LINT_TOP ?= nanosoc_chip_pads
 
 # Target from Running Cadence Xcellium Lint Tool
-lint_xm: bootrom defs_gen
+lint_xm: bootrom gen_defs
 	@rm -rf $(LINT_DIR) 
 	@mkdir -p $(LINT_DIR)
 	@cd $(LINT_DIR); xrun -hal -f $(DESIGN_VC) $(DEFINES_VC) +debug "-timescale 1ns/1ps" -top $(LINT_TOP) $(HAL_BLACK_BOX) $(HAL_WAIVE) $(LINT_NOCHECK)
\ No newline at end of file
diff --git a/hal/nanosoc_ip.waive b/hal/nanosoc_ip.waive
index 9a4680b7285ec9bec6c33fe93008b8f6fb27f084..574a82fe0c5365d33977ba4ca4755e53291d2cca 100644
--- a/hal/nanosoc_ip.waive
+++ b/hal/nanosoc_ip.waive
@@ -112,13 +112,15 @@ lint_checking designunit = nanosoc_ss_cpu
 
 lint_checking designunit = nanosoc_ss_dma
 {    
+    ATLGLC off;
+    
     // Not Top-level in design_info
     TPOUNR off;
     
-    // DMAC 1 Currently tied off
-    ATLGLC off;
-    TIELOG {"DMAC_1"} off;
-    USEPRT {"DMAC_1"} off;
+    // DMAC 0 and DMAC 1 Can be unininsantiated
+    TIELOG {"DMAC_0|DMAC_1"} off;
+    USEPRT {"DMAC_0|DMAC_1"} off;
+    
 }
 
 lint_checking designunit = nanosoc_ss_interconnect
diff --git a/software/common/validation/apb_mux_tests.c b/software/common/validation/apb_mux_tests.c
index a350c60056073024d36abf0c137cbc560aa08497..3bc6266b08043d44a092d2b3d7ec88d854634cd5 100644
--- a/software/common/validation/apb_mux_tests.c
+++ b/software/common/validation/apb_mux_tests.c
@@ -107,27 +107,27 @@ int main (void)
   puts ("2: dual timer");
     if ( ID_Check(&apb_dualtimer_id[0], CMSDK_DUALTIMER_BASE) == 1 ) err_code |= 1<<2;
   puts ("3: blank - default slave (generates slave error)");
-    // if ( ID_Check(&blank_id[0],         0x40003000          ) == 1 ) err_code |= 1<<3;
+    if ( ID_Check(&blank_id[0],         0x40003000          ) == 1 ) err_code |= 1<<3;
   puts ("4: UART 0 - Not Implemented");
-    // if ( ID_Check(&apb_uart_id[0],      CMSDK_UART0_BASE    ) == 1 ) err_code |= 1<<4;
+    if ( ID_Check(&blank_id[0],         CMSDK_UART0_BASE    ) == 1 ) err_code |= 1<<4;
   puts ("5: UART 1 - Not Implemented");
-    // if ( ID_Check(&apb_uart_id[0],      CMSDK_UART1_BASE    ) == 1 ) err_code |= 1<<5;
+    if ( ID_Check(&blank_id[0],         CMSDK_UART1_BASE    ) == 1 ) err_code |= 1<<5;
   puts ("6: UART 2");
     if ( ID_Check(&apb_uart_id[0],      CMSDK_UART2_BASE    ) == 1 ) err_code |= 1<<6;
   puts ("7: blank - default slave (generates slave error)");
-    // if ( ID_Check(&blank_id[0],         0x40007000          ) == 1 ) err_code |= 1<<7;
+    if ( ID_Check(&blank_id[0],         0x40007000          ) == 1 ) err_code |= 1<<7;
   puts ("8: Watchdog");
     if ( ID_Check(&apb_watchdog_id[0],  CMSDK_WATCHDOG_BASE ) == 1 ) err_code |= 1<<8;
   puts ("9: blank - default slave (generates slave error)");
-    // if ( ID_Check(&blank_id[0],         0x40009000          ) == 1 ) err_code |= 1<<9;
+    if ( ID_Check(&blank_id[0],         0x40009000          ) == 1 ) err_code |= 1<<9;
   puts ("10: blank - default slave (generates slave error)");
-    // if ( ID_Check(&blank_id[0],         0x4000A000          ) == 1 ) err_code |= 1<<10;
+    if ( ID_Check(&blank_id[0],         0x4000A000          ) == 1 ) err_code |= 1<<10;
   puts ("11: APB test slave");
     if ( APB_test_slave_Check(          0x4000B000          ) == 1 ) err_code |= 1<<11;
   puts ("12: DMAC 1 (Not Implemented) - Slave Error");
-    // if ( ID_Check(&blank_id[0],         0x4000C000          ) == 1 ) err_code |= 1<<12;
+    if ( ID_Check(&blank_id[0],         0x4000C000          ) == 1 ) err_code |= 1<<12;
   puts ("13: blank - default slave (generates slave error)");
-    // if ( ID_Check(&blank_id[0],         0x4000D000          ) == 1 ) err_code |= 1<<13;
+    if ( ID_Check(&blank_id[0],         0x4000D000          ) == 1 ) err_code |= 1<<13;
   puts ("14: Debug USRT");
     if ( ID_Check(&apb_uart_id[0],      CMSDK_USRT2_BASE    ) == 1 ) err_code |= 1<<14;
   puts ("15: DMAC 0 (PL230)");
@@ -154,7 +154,20 @@ int ID_Check(const unsigned char id_array[], unsigned int offset)
   int           mismatch = 0;
   int           id_is_zero = 0;
   unsigned long test_addr;
-
+  
+  int volatile rdata; /* dummy variable for read data in bus fault testing */
+  
+  /* Try and Read from Device Registers */
+  hardfault_occurred = 0;
+  hardfault_expected = 1;
+  rdata = address_test_read(offset + 0xFC0);
+  hardfault_expected = 0;
+  if (hardfault_occurred > 0) {
+      hardfault_occurred = 0;
+      puts ("  APB Slave Error   : device not present\n");
+      return 3; 
+  }
+  
   /* Check the peripheral ID and component ID */
   for (i=0;i<16;i++) {
     test_addr = offset + 4*i + 0xFC0;
diff --git a/software/common/validation/dma_tests.c b/software/common/validation/dma_tests.c
index fe0dafcb069de9f0683a99a35884f498228058ea..a04bd0f7b2eb7bb1ec5e495377928c8db84bf436 100644
--- a/software/common/validation/dma_tests.c
+++ b/software/common/validation/dma_tests.c
@@ -152,13 +152,10 @@ int pl230_dma_detect(void)
   puts("Detect if DMA controller is present...");
   hardfault_occurred = 0;
   hardfault_expected = 1;
-  puts("Address Test");
   rdata = address_test_read(CMSDK_PL230_BASE+ 0xFE0);
   hardfault_expected = 0;
-  puts("Now Here");
   result = hardfault_occurred ? 1 : ID_Check(&pl230_id[0], CMSDK_PL230_BASE);
   hardfault_occurred = 0;
-  puts("Finishes check");
   if (result!=0) {
     puts("** TEST SKIPPED ** DMA controller is not present.\n");
     UartEndSimulation();