diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/testcodes/hello/makefile b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/testcodes/hello/makefile
index 805ba5be59ec3707fe4eae467163f5da53f236c5..63ee0c929bf02c0ffb9fb3ff9f58c63afee43b84 100644
--- a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/testcodes/hello/makefile
+++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/testcodes/hello/makefile
@@ -103,11 +103,17 @@ COMPILE_MICROLIB = 0
 # Small Multiply (Cortex-M0/M0+ has small multiplier option)
 COMPILE_SMALLMUL = 0
 
-ARM_CC_OPTIONS   = -c -O3 -g -Otime -I $(DEVICE_DIR)/Include  -I $(CORE_DIR) \
+#ARM_CC_OPTIONS   = -c -O3 -g -Otime -I $(DEVICE_DIR)/Include  -I $(CORE_DIR) \
+#		   -I $(SOFTWARE_DIR)/common/retarget $(USER_DEFINE)
+#ARM_ASM_OPTIONS  = -g
+#ARM_LINK_OPTIONS = "--keep=$(STARTUP_FILE).o(RESET)" "--first=$(STARTUP_FILE).o(RESET)" \
+#		   --rw_base 0x20000000 --ro_base 0x00000000 --map  --info sizes
+
+ARM_CC_OPTIONS   = -c -O3 -Ospace -I $(DEVICE_DIR)/Include  -I $(CORE_DIR) \
 		   -I $(SOFTWARE_DIR)/common/retarget $(USER_DEFINE)
-ARM_ASM_OPTIONS  = -g
+ARM_ASM_OPTIONS  = 
 ARM_LINK_OPTIONS = "--keep=$(STARTUP_FILE).o(RESET)" "--first=$(STARTUP_FILE).o(RESET)" \
-		   --rw_base 0x20000000 --ro_base 0x00000000 --map
+		   --no_debug --rw_base 0x20000000 --ro_base 0x00000000 --map  --info sizes
 
 ifeq ($(COMPILE_BIGEND),1)
  # Big Endian
diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu.v
index e64768d672682e4c545db394e66324024e646ca1..2df06e50a28ff85804f49cdce634fc6320d4abd7 100644
--- a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu.v
+++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu.v
@@ -36,6 +36,8 @@
 //-----------------------------------------------------------------------------
 //
 
+// `define SYNTHBOOT 1
+
 `include "cmsdk_mcu_defs.v"
 
 module cmsdk_mcu #(
@@ -743,7 +745,9 @@ module cmsdk_mcu #(
 //----------------------------------------
 cmsdk_ahb_rom
   #(.MEM_TYPE(ROM_MEM_TYPE),
-    .AW(16),  // 64K bytes flash ROM
+///    .AW(16),  // 64K bytes flash ROM
+//    .AW(13),  // 8K bytes flash ROM -Dhry
+    .AW(10),  // 1K bytes flash ROM - Hello
     .filename("image.hex"),
     .WS_N(`ARM_CMSDK_ROM_MEM_WS_N),
     .WS_S(`ARM_CMSDK_ROM_MEM_WS_S),
@@ -752,7 +756,9 @@ cmsdk_ahb_rom
     .HCLK             (HCLKSYS),
     .HRESETn          (HRESETn),
     .HSEL             (flash_hsel),  // AHB inputs
-    .HADDR            (HADDR[15:0]),
+///    .HADDR            (HADDR[15:0]),
+//    .HADDR            (HADDR[12:0]),
+    .HADDR            (HADDR[ 9:0]),
     .HTRANS           (HTRANS),
     .HSIZE            (HSIZE),
     .HWRITE           (HWRITE),
@@ -768,9 +774,31 @@ cmsdk_ahb_rom
 // Boot loader / Firmware
 //----------------------------------------
 // Only use if BOOT_MEM_TYPE is not zero
+`ifdef SYNTHBOOTROM
+//ahb_bootrom
+ahb_bootrom__mangled
+//  #(.AW(10)  ) // 1K bytes ROM
+   u_ahb_bootloader (
+    .HCLK             (HCLKSYS),
+    .HRESETn          (HRESETn),
+    .HSEL             (boot_hsel),  // AHB inputs
+    .HADDR            (HADDR[ 9:0]),
+    .HTRANS           (HTRANS),
+    .HSIZE            (HSIZE),
+    .HWRITE           (HWRITE),
+    .HWDATA           (HWDATA),
+    .HREADY           (HREADY),
+
+    .HREADYOUT        (boot_hreadyout), // Outputs
+    .HRDATA           (boot_hrdata),
+    .HRESP            (boot_hresp)
+  );
+`else
+// Only use if BOOT_MEM_TYPE is not zero
 cmsdk_ahb_rom
   #(.MEM_TYPE(BOOT_MEM_TYPE),
-    .AW(12),  // 4K bytes ROM
+//    .AW(12),  // 4K bytes ROM
+    .AW(10),  // 1K bytes ROM
     .filename("bootloader.hex"),
     .WS_N(`ARM_CMSDK_BOOT_MEM_WS_N),
     .WS_S(`ARM_CMSDK_BOOT_MEM_WS_S),
@@ -779,7 +807,8 @@ cmsdk_ahb_rom
     .HCLK             (HCLKSYS),
     .HRESETn          (HRESETn),
     .HSEL             (boot_hsel),  // AHB inputs
-    .HADDR            (HADDR[11:0]),
+//    .HADDR            (HADDR[11:0]),
+    .HADDR            (HADDR[ 9:0]),
     .HTRANS           (HTRANS),
     .HSIZE            (HSIZE),
     .HWRITE           (HWRITE),
@@ -790,20 +819,23 @@ cmsdk_ahb_rom
     .HRDATA           (boot_hrdata),
     .HRESP            (boot_hresp)
   );
+`endif
 
 //----------------------------------------
 // SRAM
 //----------------------------------------
 cmsdk_ahb_ram
   #(.MEM_TYPE(RAM_MEM_TYPE),
-    .AW(16),  // 64K bytes SRAM
+///    .AW(16),  // 64K bytes SRAM
+    .AW( 9),  // 1K bytes SRAM
     .WS_N(`ARM_CMSDK_RAM_MEM_WS_N),
     .WS_S(`ARM_CMSDK_RAM_MEM_WS_S))
    u_ahb_ram (
     .HCLK             (HCLKSYS),
     .HRESETn          (HRESETn),
     .HSEL             (sram_hsel),  // AHB inputs
-    .HADDR            (HADDR[15:0]),
+///    .HADDR            (HADDR[15:0]),
+    .HADDR            (HADDR[ 8:0]),
     .HTRANS           (HTRANS),
     .HSIZE            (HSIZE),
     .HWRITE           (HWRITE),
@@ -891,6 +923,8 @@ cmsdk_ahb_ram
     // IO pads
     .P0               (P0),
     .P1               (P1),
+    .p1_out_mux       ( ),
+    .p1_out_en_mux    ( ),
 
     .nTRST            (nTRST),  // Not needed if serial-wire debug is used
     .TDI              (TDI),    // Not needed if serial-wire debug is used
diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_defs.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_defs.v
index 9a89cebd5fceaec5f02ea7642c50e69fe3160cd0..dfb573e84482f04c08a8d1a0185de3ac889bd600 100644
--- a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_defs.v
+++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_defs.v
@@ -211,7 +211,7 @@
   // Force the system to select the 16-bit Flash when this option is enabled.
 `ifndef ARM_CMSDK_INCLUDE_F16
   // Boot loader memory type
-`define ARM_CMSDK_BOOT_MEM_TYPE `AHB_ROM_NONE
+`define ARM_CMSDK_BOOT_MEM_TYPE `AHB_ROM_BEH_MODEL
   //  Based on the definition constants in logical/models/memories/cmsdk_ahb_memory_model_defs.v
   //  0) AHB_ROM_NONE             - memory not present
   //  1) AHB_ROM_BEH_MODEL        - behavioral ROM memory
@@ -220,7 +220,7 @@
   //  4) AHB_ROM_FLASH16_MODEL    - behavioral 16-bit flash memory
 
   // ROM memory type
-`define ARM_CMSDK_ROM_MEM_TYPE  `AHB_ROM_BEH_MODEL
+`define ARM_CMSDK_ROM_MEM_TYPE  `AHB_ROM_FPGA_SRAM_MODEL
   //  Based on the definition constants in logical/models/memories/cmsdk_ahb_memory_model_defs.v
   //  0) AHB_ROM_NONE             - memory not present (Invalid for a Cortex-M0 system))
   //  1) AHB_ROM_BEH_MODEL        - behavioral ROM memory
@@ -244,7 +244,7 @@
 `endif
 
   // RAM memory type
-`define ARM_CMSDK_RAM_MEM_TYPE  `AHB_RAM_BEH_MODEL
+`define ARM_CMSDK_RAM_MEM_TYPE  `AHB_RAM_FPGA_SRAM_MODEL
   //  Based on the definition constants in logical/models/memories/cmsdk_ahb_memory_model_defs.v
   //  0) AHB_RAM_NONE             - memory not present (Invalid for a Cortex-M0 system)
   //  1) AHB_RAM_BEH_MODEL        - behavioral RAM memory
diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_pin_mux.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_pin_mux.v
index 3e13294a7d91e6aba050c5afffe13042ddff70ed..82d0ae5d32d2233ac83213d5d1c1b94ebd6dd671 100644
--- a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_pin_mux.v
+++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/cmsdk_mcu_pin_mux.v
@@ -75,8 +75,11 @@ module cmsdk_mcu_pin_mux (
     input  wire             i_swdoen,
 
     // IO pads
-    inout  wire   [15:0]    P0,
-    inout  wire   [15:0]    P1,
+    inout  wire  [15:0]     P0, // legacy
+    inout  wire  [15:0]     P1, // legacy
+
+    output wire  [15:0]     p1_out_mux,    //alt-function mux
+    output wire  [15:0]     p1_out_en_mux,  //alt-function mux
 
     input  wire             nTRST, // Not needed if serial-wire debug is used
     input  wire             TDI,   // Not needed if serial-wire debug is used
@@ -88,10 +91,9 @@ module cmsdk_mcu_pin_mux (
   // Internal wires
   //-------------------------------------------
   wire      [15:0]     p0_out_mux;
-  wire      [15:0]     p1_out_mux;
-
   wire      [15:0]     p0_out_en_mux;
-  wire      [15:0]     p1_out_en_mux;
+// wire      [15:0]     p1_out_mux;    // promoted to block output
+// wire      [15:0]     p1_out_en_mux; // promoted to block output
 
   //-------------------------------------------
   // Beginning of main code
@@ -139,6 +141,7 @@ module cmsdk_mcu_pin_mux (
   assign    p1_out_en_mux[5] = (p1_altfunc[5]) ? uart2_txen : p1_outen[5];
   assign    p1_out_en_mux[15:6] = p1_outen[15:6];
 
+
   // Output tristate
   assign    P0[ 0] = p0_out_en_mux[ 0] ? p0_out_mux[ 0] : 1'bz;
   assign    P0[ 1] = p0_out_en_mux[ 1] ? p0_out_mux[ 1] : 1'bz;
@@ -174,6 +177,7 @@ module cmsdk_mcu_pin_mux (
   assign    P1[14] = p1_out_en_mux[14] ? p1_out_mux[14] : 1'bz;
   assign    P1[15] = p1_out_en_mux[15] ? p1_out_mux[15] : 1'bz;
 
+/*
 // synopsys translate_off
 
   // Pullup
@@ -212,7 +216,7 @@ module cmsdk_mcu_pin_mux (
   pullup(P1[15]);
 
 // synopsys translate_on
-
+*/
   //-------------------------------------------
   // Debug connections
   //-------------------------------------------
diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tb_cmsdk_mcu.v b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tb_cmsdk_mcu.v
index 4cd7146d5b07063c11177e55a8f92b2b6ea23bd1..95e2aa6a67fe4b8ca04df4290ed82f66dc39edd7 100644
--- a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tb_cmsdk_mcu.v
+++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tb_cmsdk_mcu.v
@@ -168,11 +168,25 @@ module tb_cmsdk_mcu;
   parameter INCLUDE_JTAG = 0;  // Do not Include JTAG feature
 `endif
 
+`define MEM_INIT 1;
 
+SROM_Ax32
+  #(.ADDRWIDTH (8),
+    .filename ("bootloader.hex"),
+    .romgen (1)
+   )
+   u_BOOTROM (
+    .CLK(XTAL1),
+    .ADDR(8'h0),
+    .SEL(1'b0),
+    .RDATA( )
+  );
+  
  // --------------------------------------------------------------------------------
  // Cortex-M0/Cortex-M0+ Microcontroller
  // --------------------------------------------------------------------------------
 
+//  cmsdk_mcu_chip
   cmsdk_mcu
    #(.CLKGATE_PRESENT  (CLKGATE_PRESENT),
      .BE               (BE),
@@ -204,6 +218,12 @@ module tb_cmsdk_mcu;
      .INCLUDE_JTAG     (INCLUDE_JTAG)   // Include JTAG feature
    )
    u_cmsdk_mcu (
+`ifdef POWER_PINS
+  .VDDIO      (VDDIO),
+  .VSSIO      (VSSIO),
+  .VDD        (VDD),
+  .VSS        (VSS),
+`endif
   .XTAL1      (XTAL1),  // input
   .XTAL2      (XTAL2),  // output
   .NRST       (NRST),   // active low reset
@@ -226,6 +246,41 @@ module tb_cmsdk_mcu;
   .NRST (NRST)
   );
 
+  // Pullup to suppress X-inputs
+  pullup(P0[ 0]);
+  pullup(P0[ 1]);
+  pullup(P0[ 2]);
+  pullup(P0[ 3]);
+  pullup(P0[ 4]);
+  pullup(P0[ 5]);
+  pullup(P0[ 6]);
+  pullup(P0[ 7]);
+  pullup(P0[ 8]);
+  pullup(P0[ 9]);
+  pullup(P0[10]);
+  pullup(P0[11]);
+  pullup(P0[12]);
+  pullup(P0[13]);
+  pullup(P0[14]);
+  pullup(P0[15]);
+
+  pullup(P1[ 0]);
+  pullup(P1[ 1]);
+  pullup(P1[ 2]);
+  pullup(P1[ 3]);
+  pullup(P1[ 4]);
+  pullup(P1[ 5]);
+  pullup(P1[ 6]);
+  pullup(P1[ 7]);
+  pullup(P1[ 8]);
+  pullup(P1[ 9]);
+  pullup(P1[10]);
+  pullup(P1[11]);
+  pullup(P1[12]);
+  pullup(P1[13]);
+  pullup(P1[14]);
+  pullup(P1[15]);
+
  // --------------------------------------------------------------------------------
  // UART output capture
  // --------------------------------------------------------------------------------
diff --git a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tbench_M0.vc b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tbench_M0.vc
index 5b3ebb122ed685b2fc0461d3c8f5dda8d7dabb22..364812d3e78b56c5340ae57b375f02d1bd3975e9 100644
--- a/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tbench_M0.vc
+++ b/Cortex-M0/soclabs_demo/systems/cortex_m0_mcu/verilog/tbench_M0.vc
@@ -49,6 +49,8 @@
 ../verilog/tb_cmsdk_mcu.v
 +incdir+../verilog
 
+../../../../../GLIB/pads/verilog/GLIB_PADLIB.v
+../../../../../GLIB/mem/verilog/SROM_Ax32.v
 
 // ================= Testbench path ===================
 -y ../../../../../../arm-AAA-ip/Corstone-101_Foundation_IP/BP210-BU-00000-r1p1-00rel0/logical/cmsdk_debug_tester/verilog