diff --git a/README.md b/README.md
index ae4ea1c..eb1352d 100644
--- a/README.md
+++ b/README.md
@@ -71,6 +71,8 @@
     * 6 Channel ADC (in Progress)
     * 6 x PWM
     * 3 x Timer (16 Bit), 1us/1ms/1second resolution
+    * 2 x ws281x driver
+    * 16 Hardware Semaphore
     * Pin Compatbible to arduino uno
     * Wishbone compatible design
     * Written in System Verilog
@@ -374,180 +376,6 @@
 
 
 
-# SOC Register Map
-##### Register Map: Wishbone HOST
-
-| Offset | Name       | Description   |
-| ------ | ---------  | ------------- |
-| 0x00   | GLBL_CTRL  | [RW] Global Wishbone Access Control Register |
-| 0x04   | BANK_CTRL  | [RW] Bank Selection, MSB 8 bit Address |
-| 0x08   | CLK_SKEW_CTRL1| [RW] Clock Skew Control2 |
-| 0x0c   | CLK_SKEW_CTRL2 | [RW] Clock Skew Control2 |
-
-##### Register: GLBL_CTRL
-
-| Bits  | Name          | Description    |
-| ----  | ----          | -------------- |
-| 31:24 | Resevered     | Unsused |
-| 23:20 | RTC_CLK_CTRL  | RTC Clock Div Selection |
-| 19:16 | CPU_CLK_CTRL  | CPU Clock Div Selection |
-| 15:12 | SDARM_CLK_CTRL| SDRAM Clock Div Selection |
-| 10:8  | WB_CLK_CTRL   | Core Wishbone Clock Div Selection |
-|   7   | UART_I2C_SEL  | 0 - UART , 1 - I2C Master IO Selection |
-|   5   | I2C_RST       | I2C Reset Control |
-|   4   | UART_RST      | UART Reset Control |
-|   3   | SDRAM_RST     | SDRAM Reset Control |
-|   2   | SPI_RST       | SPI Reset Control |
-|   1   | CPU_RST       | CPU Reset Control |
-|   0   | WB_RST        | Wishbone Core Reset Control |
-
-##### Register: BANK_CTRL
-
-| Bits  | Name          | Description    |
-| ----  | ----          | -------------- |
-| 31:24 | Resevered     | Unsused |
-| 7:0   | BANK_SEL      | Holds the upper 8 bit address core Wishbone Address |
-
-##### Register: CLK_SKEW_CTRL1
-
-| Bits  | Name          | Description    |
-| ----  | ----          | -------------- |
-| 31:28 | Resevered     | Unsused |
-| 27:24 | CLK_SKEW_WB   | WishBone Core Clk Skew Control |
-| 23:20 | CLK_SKEW_GLBL | Glbal Register Clk Skew Control |
-| 19:16 | CLK_SKEW_SDRAM| SDRAM Clk Skew Control |
-| 15:12 | CLK_SKEW_SPI  | SPI Clk Skew Control |
-| 11:8  | CLK_SKEW_UART | UART/I2C Clk Skew Control |
-| 7:4   | CLK_SKEW_RISC | RISC Clk Skew Control |
-| 3:0   | CLK_SKEW_WI   | Wishbone Clk Skew Control |
-
-##### Register Map: SPI MASTER
-
-| Offset | Name       | Description   |
-| ------ | ---------  | ------------- |
-| 0x00   | GLBL_CTRL  | [RW] Global SPI Access Control Register |
-| 0x04   | DMEM_CTRL1 | [RW] Direct SPI Memory Access Control Register1 |
-| 0x08   | DMEM_CTRL2 | [RW] Direct SPI Memory Access Control Register2 |
-| 0x0c   | IMEM_CTRL1 | [RW] Indirect SPI Memory Access Control Register1 |
-| 0x10   | IMEM_CTRL2 | [RW] Indirect SPI Memory Access Control Register2 |
-| 0x14   | IMEM_ADDR  | [RW] Indirect SPI Memory Address  |
-| 0x18   | IMEM_WDATA | [W]  Indirect SPI Memory Write Data |
-| 0x1c   | IMEM_RDATA | [R]  Indirect SPI Memory Read Data |
-| 0x20   | SPI_STATUS | [R] SPI Debug Status |
-
-##### Register: GLBL_CTRL
-
-| Bits  | Name        | Description    |
-| ----  | ----        | -------------- |
-| 31:16 | Resevered   | Unsused |
-| 15:8  | SPI_CLK_DIV | SPI Clock Div Rato Selection |
-| 7:4   | Reserved    | Unused |
-| 3:2   | CS_LATE     | CS DE_ASSERTION CONTROL |
-| 1:0   | CS_EARLY    | CS ASSERTION CONTROL |
-
-##### Register: DMEM_CTRL1
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:9 | Resevered  | Unsused        |
-| 8    | FSM_RST    | Direct Mem State Machine Reset |
-| 7:6  | SPI_SWITCH | Phase at which SPI Mode need to switch |
-| 5:4  | SPI_MODE   | SPI Mode, 0 - Single, 1 - Dual, 2 - Quad, 3 - QDDR |
-| 3:0  | CS_SELECT  | CHIP SELECT |
-
-##### Register: DMEM_CTRL2
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:24 | DATA_CNT  | Total Data Byte Count        |
-| 23:22 | DUMMY_CNT | Total Dummy Byte Count |
-| 21:20 | ADDR_CNT  | Total Address Byte Count |
-| 19:16 | SPI_SEQ   | SPI Access Sequence |
-| 15:8  | MODE_REG  | Mode Register Value |
-| 7:0   | CMD_REG   | Command Register Value |
-
-##### Register: IMEM_CTRL1
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:9 | Resevered  | Unsused        |
-| 8    | FSM_RST    | InDirect Mem State Machine Reset |
-| 7:6  | SPI_SWITCH | Phase at which SPI Mode need to switch |
-| 5:4  | SPI_MODE   | SPI Mode, 0 - Single, 1 - Dual, 2 - Quad, 3 - QDDR |
-| 3:0  | CS_SELECT  | CHIP SELECT |
-
-##### Register: IMEM_CTRL2
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:24 | DATA_CNT  | Total Data Byte Count        |
-| 23:22 | DUMMY_CNT | Total Dummy Byte Count |
-| 21:20 | ADDR_CNT  | Total Address Byte Count |
-| 19:16 | SPI_SEQ   | SPI Access Sequence |
-| 15:8  | MODE_REG  | Mode Register Value |
-| 7:0   | CMD_REG   | Command Register Value |
-
-##### Register: IMEM_ADDR
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:0 | ADDR       | Indirect Memory Address  |
-
-##### Register: IMEM_WDATA
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:0 | WDATA      | Indirect Memory Write Data  |
-
-##### Register: IMEM_RDATA
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:0 | RDATA      | Indirect Memory Read Data  |
-
-##### Register: SPI_STATUS
-
-| Bits | Name       | Description    |
-| ---- | ----       | -------------- |
-| 31:0 | DEBUG      | SPI Debug Status  |
-
-
-##### Register Map: Global Register
-
-| Offset | Name        | Description   |
-| ------ | ---------   | ------------- |
-| 0x00   | SOFT_REG0   | [RW] Software Register0 |
-| 0x04   | RISC_FUSE   | [RW] Risc Fuse Value  |
-| 0x08   | SOFT_REG2   | [RW] Software Register2 |
-| 0x0c   | INTR_CTRL   | [RW] Interrupt Control |
-| 0x10   | SDRAM_CTRL1 | [RW] Indirect SPI Memory Access Control Register2 |
-| 0x14   | SDRAM_CTRL2 | [RW] Indirect SPI Memory Address  |
-| 0x18   | SOFT_REG6   | [RW] Software Register6 |
-| 0x1C   | SOFT_REG7   | [RW] Software Register7 |
-| 0x20   | SOFT_REG8   | [RW] Software Register8 |
-| 0x24   | SOFT_REG9   | [RW] Software Register9 |
-| 0x28   | SOFT_REG10  | [RW] Software Register10 |
-| 0x2C   | SOFT_REG11  | [RW] Software Register11 |
-| 0x30   | SOFT_REG12  | [RW] Software Register12 |
-| 0x34   | SOFT_REG13  | [RW] Software Register13 |
-| 0x38   | SOFT_REG14  | [RW] Software Register14 |
-| 0x3C   | SOFT_REG15  | [RW] Software Register15 |
-
-##### Register: RISC_FUSE
-
-| Bits  | Name        | Description    |
-| ----  | ----        | -------------- |
-| 31:0  | RISC_FUSE   | RISC Core Fuse Value |
-
-##### Register: INTR_CTRL
-
-| Bits  | Name        | Description    |
-| ----  | ----        | -------------- |
-| 31:20 | Reserved    | Unused         |
-| 19:17 | USER_IRQ    | User Interrupt generation toward riscv         |
-| 16    | SOFT_IRQ    | Software Interrupt generation toward riscv     |
-| 15:0  | EXT_IRQ     | External Interrupt generation toward riscv     |
-
 
 
 
@@ -623,25 +451,47 @@
 
 The simulation package includes the following tests:
 
-* **risc_boot**           - Complete caravel User Risc core boot 
-* **wb_port**             - Complete caravel User Wishbone validation
-* **uart_master**         - complete caravel user uart master test
-* **user_risc_boot**      - Standalone User Risc core boot
-* **user_sspi**           - Standalone SSPI test
-* **user_qspi**           - Standalone Quad SPI test
-* **user_spi**            - Standalone SPI test
-* **user_i2c**            - Standalone I2C test
-* **user_usb**            - Standalone USB Host test
-* **user_risc_boot**      - Standalone Risc Boot test
-* **user_uart**           - Standalone Risc with UART-0 Test
-* **user_uart1**          - Standalone Risc with UART-1 Test
-* **user_gpio**           - Standalone GPIO Test
-* **user_pwm**            - Standalone pwm Test
-* **user_timer**          - Standalone timer Test
-* **user_uart_master**    - Standalone uart master test
-* **riscv_regress**       - Standalone riscv compliance and regression test suite
+## Standalone Riscduino SOC Specific Test case 
+* **1.user_basic**          - Basic test case to validate strap and clocks
+* **2.user_uart**           - Standalone Risc with UART-0 Test
+* **3.user_uart1**          - Standalone Risc with UART-1 Test
+* **4.user_risc_boot**      - Standalone User Risc core boot
+* **4.risc_boot**           - Complete caravel User Risc core boot 
+* **5.user_qspi**           - Standalone Quad SPI test
+* **6.user_sspi**           - Standalone SSPI test
+* **7.user_i2c**            - Standalone I2C test
+* **8.user_usb**            - Standalone USB Host test
+* **9.user_gpio**           - Standalone GPIO Test
+* **10.user_aes**           - AES computation through Riscv core
+* **11.user_spi_isp**       - Device boot with SPI as ISP
+* **12.user_timer**         - Standalone timer Test
+* **13.user_uart_master**   - Standalone uart master test
+* **14.user_sram_exec**     - Riscv Boot with code running in SRAM
+* **15.user_cache_bypass**  - Riscv Boot without icache and dcache
+* **16.user_pwm**            -Standalone pwm Test
+* **17.user_sema**           -Standalone validation of hardware Semaphore function
+* **18.riscv_regress**       - Standalone riscv compliance and regression test suite
 
+## Caravel+RISCDUINO Integrated Specific Test case 
+* **1.wb_port**             - Complete caravel User Wishbone validation
+* **2.uart_master**         - complete caravel user uart master test
+* **3.risc_boot**           - Complete caravel User Risc core boot 
 
+## Arduino Based Test Case
+* **1.arduino_arrays**                - Validation of Array function
+* **2.arduino_digital_port_control**  - Validation for AD5206 digital potentiometer through SPI
+* **3.arduino_i2c_scaner**            - I2C port scanner        
+* **4.arduino_risc_boot**             - Riscv Basic Boot
+* **5.arduino_timer_intr**            - Timer Interrupt handling
+* **6.arduino_ascii_table**           - Ascii Table Display
+* **7.arduino_gpio_intr**             - GPIO Interrupt generation
+* **8.arduino_i2c_wr_rd**             - I2C Write and Read access
+* **9.arduino_string**                - Validation of String function
+* **10.arduino_ws281x**               - Validation of ws281x serial protocol 
+* **11.arduino_character_analysis**   - uart Input Character analysis
+* **12.arduino_hello_world**          - Basic hello world display
+* **13.arduino_multi_serial**         - Validation of Two Serail port
+* **14.arduino_switchCase2**          - Validation of switch case
 
 # Running Simulation
 
