diff --git a/.gitmodules b/.gitmodules
index b21f95ef765d36c3782b63b8f169ddba78c5dc8d..21aa4e7d57437acffa8a84786621f5640a68077d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -13,3 +13,6 @@
 [submodule "nanosoc/sl_ams_tech"]
 	path = nanosoc/sl_ams_tech
 	url = https://git.soton.ac.uk/soclabs/sl_ams_tech.git
+[submodule "nanosoc/synopsys_28nm_slm_integration"]
+	path = nanosoc/synopsys_28nm_slm_integration
+	url = https://git.soton.ac.uk/soclabs/synopsys_28nm_slm_integration.git
diff --git a/ASIC/TSMC28nm/no_pins/Synopsys_FC/design_setup.tcl b/ASIC/TSMC28nm/no_pins/Synopsys_FC/design_setup.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..98a8de3e444b4f4870b95409f0263956d3f8cec3
--- /dev/null
+++ b/ASIC/TSMC28nm/no_pins/Synopsys_FC/design_setup.tcl
@@ -0,0 +1,12 @@
+set sc9mcpp240z_base_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0
+set cln28ht_tech_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
+
+create_lib nanosoc_chip_pads.dlib \
+    -technology $cln28ht_tech_path/milkyway/1p9m_5x1y2z_utalrdl/sc9mcpp140z_tech.tf \
+    -ref_libs {./cln28ht_sc9mcpp140z/}
+
+source $env(SOCLABS_PROJECT_DIR)/imp/ASIC/nanosoc/flist/dc_flist.tcl
+analyze -format verilog $env(SOCLABS_PROJECT_DIR)/nanosoc_tech/nanosoc/nanosoc_chip/pads/glib/verilog/nanosoc_chip_pads.v
+
+elaborate nanosoc_chip_pads
+set_top_module nanosoc_chip_pads
\ No newline at end of file
diff --git a/ASIC/TSMC28nm/no_pins/Synopsys_FC/fc_output.txt b/ASIC/TSMC28nm/no_pins/Synopsys_FC/fc_output.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c39e50efd01f01cd080ee68ef10fd5b93667c5dc
--- /dev/null
+++ b/ASIC/TSMC28nm/no_pins/Synopsys_FC/fc_output.txt
@@ -0,0 +1,32 @@
+ 
+                              Fusion Compiler (TM)
+
+                  Version U-2022.12 for linux64 - Dec 11, 2022
+  This release has significant feature enhancements. Please review the Release
+                       Notes associated with this release.
+
+                    Copyright (c) 1988 - 2022 Synopsys, Inc.
+   This software and the associated documentation are proprietary to Synopsys,
+ Inc. This software may only be used in accordance with the terms and conditions
+ of a written license agreement with Synopsys, Inc. All other use, reproduction,
+   or distribution of this software is strictly prohibited.  Licensed Products
+     communicate with Synopsys servers for the purpose of providing software
+    updates, detecting software piracy and verifying that customers are using
+    Licensed Products in conformity with the applicable License Key for such
+  Licensed Products. Synopsys will use information gathered in connection with
+    this process to deliver software updates and pursue software pirates and
+                                   infringers.
+
+ Inclusivity & Diversity - Visit SolvNetPlus to read the "Synopsys Statement on
+            Inclusivity and Diversity" (Refer to article 000036315 at
+                        https://solvnetplus.synopsys.com)
+
+Loading user preference file /home/dwn1c21/.synopsys_fc_gui/preferences.tcl
+Error: Message for 'CLE-10' not found
+fc_shell> exit
+Maximum memory usage for this session: 315.86 MB
+Maximum memory usage for this session including child processes: 315.86 MB
+CPU usage for this session:     11 seconds (  0.00 hours)
+Elapsed time for this session:     39 seconds (  0.01 hours)
+Thank you for using Fusion Compiler.
+
diff --git a/ASIC/TSMC28nm/no_pins/Synopsys_FC/lm_output.txt b/ASIC/TSMC28nm/no_pins/Synopsys_FC/lm_output.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7e293f8af8c1cd4a2ffe5da1d138ba5f1022734e
--- /dev/null
+++ b/ASIC/TSMC28nm/no_pins/Synopsys_FC/lm_output.txt
@@ -0,0 +1,48 @@
+ 
+                              Library Manager (TM)
+
+                  Version U-2022.12 for linux64 - Dec 11, 2022
+  This release has significant feature enhancements. Please review the Release
+                       Notes associated with this release.
+
+                    Copyright (c) 1988 - 2022 Synopsys, Inc.
+   This software and the associated documentation are proprietary to Synopsys,
+ Inc. This software may only be used in accordance with the terms and conditions
+ of a written license agreement with Synopsys, Inc. All other use, reproduction,
+   or distribution of this software is strictly prohibited.  Licensed Products
+     communicate with Synopsys servers for the purpose of providing software
+    updates, detecting software piracy and verifying that customers are using
+    Licensed Products in conformity with the applicable License Key for such
+  Licensed Products. Synopsys will use information gathered in connection with
+    this process to deliver software updates and pursue software pirates and
+                                   infringers.
+
+ Inclusivity & Diversity - Visit SolvNetPlus to read the "Synopsys Statement on
+            Inclusivity and Diversity" (Refer to article 000036315 at
+                        https://solvnetplus.synopsys.com)
+
+Error: Message for 'CLE-10' not found
+lm_shell> set sc9mcpp140z_base_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0
+lm_shell> set cln28ht_tech_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
+lm_shell> 
+lm_shell> set cln28ht_tech_file   $cln28ht_tech_path/milkyway/1p9m_5x1y2z_utalrdl/sc9mcpp140z_tech.tf
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0/milkyway/1p9m_5x1y2z_utalrdl/sc9mcpp140z_tech.tf
+lm_shell> set cln28ht_lef_file    $cln28ht_tech_path/lef/1p9m_5x1y2z_utalrdl/sc9mcpp140z_tech.lef
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0/lef/1p9m_5x1y2z_utalrdl/sc9mcpp140z_tech.lef
+lm_shell> 
+lm_shell> set sc9mcpp140z_lef_file    $sc9mcpp140z_base_path/lef/sc9mcpp140z_cln28ht_base_svt_c35.lef
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0/lef/sc9mcpp140z_cln28ht_base_svt_c35.lef
+lm_shell> set sc9mcpp140z_gds_file    $sc9mcpp140z_base_path/gds2/sc9mcpp140z_cln28ht_base_svt_c35.gds2
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0/gds2/sc9mcpp140z_cln28ht_base_svt_c35.gds2
+lm_shell> set sc9mcpp140z_db_file     $sc9mcpp140z_base_path/db/sc9mcpp140z_cln28ht_base_svt_c35_ssg_cworstt_max_0p81v_125c.db
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0/db/sc9mcpp140z_cln28ht_base_svt_c35_ssg_cworstt_max_0p81v_125c.db
+lm_shell> set sc9mcpp140z_antenna_file   $sc9mcpp140z_base_path/milkyway/1p9m_5x1y2z_utalrdl/sc9mcpp140z_cln28ht_base_svt_c35_antenna.clf
+/home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0/milkyway/1p9m_5x1y2z_utalrdl/sc9mcpp140z_cln28ht_base_svt_c35_antenna.clf
+lm_shell> exit
+Maximum memory usage for this session: 82.41 MB
+CPU usage for this session:      2 seconds (  0.00 hours)
+Elapsed time for this session:     14 seconds (  0.00 hours)
+Thank you for using Library Manager.
+
diff --git a/ASIC/TSMC28nm/no_pins/Synopsys_FC/synopsys_lib_conversion.tcl b/ASIC/TSMC28nm/no_pins/Synopsys_FC/synopsys_lib_conversion.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..464cd56d59fbcd9aee90fcb3943e5791b9a1bd38
--- /dev/null
+++ b/ASIC/TSMC28nm/no_pins/Synopsys_FC/synopsys_lib_conversion.tcl
@@ -0,0 +1,27 @@
+set sc9mcpp140z_base_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/sc9mcpp140z_base_svt_c35/r0p0
+set cln28ht_tech_path /home/dwn1c21/SoC-Labs/phys_ip/arm/tsmc/cln28ht/arm_tech/r1p0
+
+set cln28ht_tech_file   $cln28ht_tech_path/milkyway/1p9m_5x1y2z_utalrdl/sc9mcpp140z_tech.tf
+set cln28ht_lef_file    $cln28ht_tech_path/lef/1p9m_5x1y2z_utalrdl/sc9mcpp140z_tech.lef
+
+set sc9mcpp140z_lef_file    $sc9mcpp140z_base_path/lef/sc9mcpp140z_cln28ht_base_svt_c35.lef
+set sc9mcpp140z_gds_file    $sc9mcpp140z_base_path/gds2/sc9mcpp140z_cln28ht_base_svt_c35.gds2
+set sc9mcpp140z_db_file     $sc9mcpp140z_base_path/db/sc9mcpp140z_cln28ht_base_svt_c35_ssg_cworstt_max_0p81v_125c.db
+set sc9mcpp140z_antenna_file   $sc9mcpp140z_base_path/milkyway/1p9m_5x1y2z_utalrdl/sc9mcpp140z_cln28ht_base_svt_c35_antenna.clf
+
+create_physical_lib -technology $cln28ht_tech_file cln28ht
+read_lef -library cln28ht $sc9mcpp140z_lef_file
+read_gds -library cln28ht $sc9mcpp140z_gds_file
+set_cell_site -site_def unit
+update_physical_properties -library cln28ht -format clf -file $sc9mcpp140z_antenna_file
+
+update_physical_properties -library cln28ht -format db -file $sc9mcpp140z_db_file
+create_frame
+
+set_app_options -name
+
+write_physical_lib -output cln28ht.ndm
+report_lib -all cln28ht 
+
+set_check_library_options -logic_vs_physical -physical 
+check_library -physical_library_name cln28ht -logic_library_name $sc9mcpp140z_db_file
\ No newline at end of file
diff --git a/ASIC/TSMC28nm/rom_via.spec b/ASIC/TSMC28nm/rom_via.spec
new file mode 100644
index 0000000000000000000000000000000000000000..6f8313572adc79a0718352b4f72965aadf996c29
--- /dev/null
+++ b/ASIC/TSMC28nm/rom_via.spec
@@ -0,0 +1,31 @@
+# user spec file, compiler rom_via_hdd_2_svt_mvt, version r0p0
+
+activity_factor = 5
+back_biasing = off
+bits = 32
+bmux = on
+bus_notation = on
+check_instname = off
+code_file = $SOCLABS_NANOSOC_TECH_DIR/testcodes/bootloader/bootloader.bin
+corners = ffg_cbestt_0p77v_0p77v_0c,ffg_cbestt_0p77v_0p77v_125c,ffg_cbestt_0p77v_0p77v_m40c,ffg_cbestt_0p88v_0p88v_0c,ffg_cbestt_0p88v_0p88v_125c,ffg_cbestt_0p88v_0p88v_m40c,ffg_cbestt_0p99v_0p99v_0c,ffg_cbestt_0p99v_0p99v_125c,ffg_cbestt_0p99v_0p99v_m40c,ffg_cbestt_1p05v_1p05v_0c,ffg_cbestt_1p05v_1p05v_125c,ffg_cbestt_1p05v_1p05v_m40c,ffg_ctypical_0p70v_0p70v_85c,ffg_ctypical_0p90v_0p90v_85c,ffg_ctypical_0p99v_0p99v_125c,ffg_ctypical_1p00v_1p00v_85c,ffg_ctypical_1p05v_1p05v_125c,ssg_cworstt_0p63v_0p63v_0c,ssg_cworstt_0p63v_0p63v_125c,ssg_cworstt_0p63v_0p63v_m40c,ssg_cworstt_0p72v_0p72v_0c,ssg_cworstt_0p72v_0p72v_125c,ssg_cworstt_0p72v_0p72v_m40c,ssg_cworstt_0p81v_0p81v_0c,ssg_cworstt_0p81v_0p81v_125c,ssg_cworstt_0p81v_0p81v_m40c,ssg_cworstt_0p90v_0p90v_0c,ssg_cworstt_0p90v_0p90v_125c,ssg_cworstt_0p90v_0p90v_m40c,tt_ctypical_0p63v_0p63v_0c,tt_ctypical_0p70v_0p70v_85c,tt_ctypical_0p72v_0p72v_0c,tt_ctypical_0p80v_0p80v_85c,tt_ctypical_0p81v_0p81v_0c,tt_ctypical_0p90v_0p90v_0c,tt_ctypical_0p90v_0p90v_125c,tt_ctypical_0p90v_0p90v_25c,tt_ctypical_0p90v_0p90v_85c,tt_ctypical_1p00v_1p00v_125c,tt_ctypical_1p00v_1p00v_85c,tt_ctypical_1p05v_1p05v_85c
+cust_comment = This\ is\ a\ memory\ instance
+diodes = on
+drive = 6
+ema = on
+frequency = 400
+instname = rom_via
+left_bus_delim = [
+libertyviewstyle = nldm
+libname = rom_via
+mode = ones
+mux = 8
+mvt = LL
+name_case = upper
+pipeline = off
+power_type = otc
+pwr_gnd_rename = vdde:VDDE,vsse:VSSE
+right_bus_delim = ]
+ser = none
+site_def = off
+top_layer = m5-m10
+words = 256
diff --git a/ASIC/TSMC28nm/sram_16k.spec b/ASIC/TSMC28nm/sram_16k.spec
new file mode 100644
index 0000000000000000000000000000000000000000..2480f23b63d90c0b1548a1f5da5bd66fb1945328
--- /dev/null
+++ b/ASIC/TSMC28nm/sram_16k.spec
@@ -0,0 +1,46 @@
+# user spec file, compiler sram_sp_hde_hvt_mvt, version r0p0
+
+EOL_guardband = 0
+activity_factor = 10
+atf = off
+back_biasing = off
+bits = 32
+bmux = off
+bus_notation = on
+check_instname = on
+compiler_type = sp
+corners = ffg_cbestt_0p99v_0p99v_125c,ffg_cbestt_0p99v_0p99v_m40c,ssg_cworstt_0p81v_0p81v_125c,ssg_cworstt_0p81v_0p81v_m40c,tt_ctypical_0p90v_0p90v_85c
+cust_comment = 
+diodes = on
+drive = 6
+ema = on
+fci_type = not_fci
+flexible_banking = 4
+frequency = 400
+instname = sram_16k
+left_bus_delim = [
+libertyviewstyle = nldm
+libname = SRAM_16K
+lren_bankmask = off
+mux = 8
+mvt = LL
+name_case = upper
+pipeline = off
+power_gating = off
+power_type = otc
+prefix = 
+pwr_gnd_rename = vddpe:VDD,vddce:VDD,vsse:VSS
+rcols = 2
+redundancy = off
+retention = on
+right_bus_delim = ]
+rows_p_bl = 256
+rrows = 0
+scan = off
+ser = none
+site_def = off
+wa = on
+words = 4096
+wp_size = 1
+write_mask = on
+write_thru = off
diff --git a/ASIC/28pin/Cadence/cpf/nanosoc.cpf b/ASIC/TSMC65nm/28pin/Cadence/cpf/nanosoc.cpf
similarity index 100%
rename from ASIC/28pin/Cadence/cpf/nanosoc.cpf
rename to ASIC/TSMC65nm/28pin/Cadence/cpf/nanosoc.cpf
diff --git a/ASIC/28pin/Cadence/cpf/nanosoc_imp.cpf b/ASIC/TSMC65nm/28pin/Cadence/cpf/nanosoc_imp.cpf
similarity index 100%
rename from ASIC/28pin/Cadence/cpf/nanosoc_imp.cpf
rename to ASIC/TSMC65nm/28pin/Cadence/cpf/nanosoc_imp.cpf
diff --git a/ASIC/28pin/Cadence/scripts/clock_tree_synthesis.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/clock_tree_synthesis.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/clock_tree_synthesis.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/clock_tree_synthesis.tcl
diff --git a/ASIC/28pin/Cadence/scripts/design_import.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/design_import.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/design_import.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/design_import.tcl
diff --git a/ASIC/28pin/Cadence/scripts/genus.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/genus.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/genus.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/genus.tcl
diff --git a/ASIC/28pin/Cadence/scripts/io_plan.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/io_plan.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/io_plan.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/io_plan.tcl
diff --git a/ASIC/28pin/Cadence/scripts/lec.dofile b/ASIC/TSMC65nm/28pin/Cadence/scripts/lec.dofile
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/lec.dofile
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/lec.dofile
diff --git a/ASIC/28pin/Cadence/scripts/nanosoc.mmmc b/ASIC/TSMC65nm/28pin/Cadence/scripts/nanosoc.mmmc
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/nanosoc.mmmc
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/nanosoc.mmmc
diff --git a/ASIC/28pin/Cadence/scripts/nanosoc_io_plan.io b/ASIC/TSMC65nm/28pin/Cadence/scripts/nanosoc_io_plan.io
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/nanosoc_io_plan.io
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/nanosoc_io_plan.io
diff --git a/ASIC/28pin/Cadence/scripts/place.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/place.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/place.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/place.tcl
diff --git a/ASIC/28pin/Cadence/scripts/place_macros.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/place_macros.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/place_macros.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/place_macros.tcl
diff --git a/ASIC/28pin/Cadence/scripts/pnr_flow.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/pnr_flow.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/pnr_flow.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/pnr_flow.tcl
diff --git a/ASIC/28pin/Cadence/scripts/power_plan.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/power_plan.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/power_plan.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/power_plan.tcl
diff --git a/ASIC/28pin/Cadence/scripts/power_route.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/power_route.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/power_route.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/power_route.tcl
diff --git a/ASIC/28pin/Cadence/scripts/route.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/route.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/route.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/route.tcl
diff --git a/ASIC/28pin/Cadence/scripts/voltus_pg.tcl b/ASIC/TSMC65nm/28pin/Cadence/scripts/voltus_pg.tcl
similarity index 100%
rename from ASIC/28pin/Cadence/scripts/voltus_pg.tcl
rename to ASIC/TSMC65nm/28pin/Cadence/scripts/voltus_pg.tcl
diff --git a/ASIC/28pin/Synopsys/scripts/fm_shell.tcl b/ASIC/TSMC65nm/28pin/Synopsys/scripts/fm_shell.tcl
similarity index 100%
rename from ASIC/28pin/Synopsys/scripts/fm_shell.tcl
rename to ASIC/TSMC65nm/28pin/Synopsys/scripts/fm_shell.tcl
diff --git a/ASIC/28pin/Synopsys/scripts/place_memories.tcl b/ASIC/TSMC65nm/28pin/Synopsys/scripts/place_memories.tcl
similarity index 100%
rename from ASIC/28pin/Synopsys/scripts/place_memories.tcl
rename to ASIC/TSMC65nm/28pin/Synopsys/scripts/place_memories.tcl
diff --git a/ASIC/28pin/Synopsys/scripts/place_pins.tcl b/ASIC/TSMC65nm/28pin/Synopsys/scripts/place_pins.tcl
similarity index 100%
rename from ASIC/28pin/Synopsys/scripts/place_pins.tcl
rename to ASIC/TSMC65nm/28pin/Synopsys/scripts/place_pins.tcl
diff --git a/ASIC/28pin/Synopsys/scripts/pnr.tcl b/ASIC/TSMC65nm/28pin/Synopsys/scripts/pnr.tcl
similarity index 100%
rename from ASIC/28pin/Synopsys/scripts/pnr.tcl
rename to ASIC/TSMC65nm/28pin/Synopsys/scripts/pnr.tcl
diff --git a/ASIC/28pin/Synopsys/scripts/power_plan.tcl b/ASIC/TSMC65nm/28pin/Synopsys/scripts/power_plan.tcl
similarity index 100%
rename from ASIC/28pin/Synopsys/scripts/power_plan.tcl
rename to ASIC/TSMC65nm/28pin/Synopsys/scripts/power_plan.tcl
diff --git a/ASIC/28pin/Synopsys/scripts/synopsys_lib_conversion.tcl b/ASIC/TSMC65nm/28pin/Synopsys/scripts/synopsys_lib_conversion.tcl
similarity index 100%
rename from ASIC/28pin/Synopsys/scripts/synopsys_lib_conversion.tcl
rename to ASIC/TSMC65nm/28pin/Synopsys/scripts/synopsys_lib_conversion.tcl
diff --git a/ASIC/28pin/Synopsys/scripts/synthesis.tcl b/ASIC/TSMC65nm/28pin/Synopsys/scripts/synthesis.tcl
similarity index 100%
rename from ASIC/28pin/Synopsys/scripts/synthesis.tcl
rename to ASIC/TSMC65nm/28pin/Synopsys/scripts/synthesis.tcl
diff --git a/ASIC/28pin/Synopsys/upf/nanosoc_chip_pads.upf b/ASIC/TSMC65nm/28pin/Synopsys/upf/nanosoc_chip_pads.upf
similarity index 100%
rename from ASIC/28pin/Synopsys/upf/nanosoc_chip_pads.upf
rename to ASIC/TSMC65nm/28pin/Synopsys/upf/nanosoc_chip_pads.upf
diff --git a/ASIC/44pin/Cadence/cpf/nanosoc.cpf b/ASIC/TSMC65nm/44pin/Cadence/cpf/nanosoc.cpf
similarity index 100%
rename from ASIC/44pin/Cadence/cpf/nanosoc.cpf
rename to ASIC/TSMC65nm/44pin/Cadence/cpf/nanosoc.cpf
diff --git a/ASIC/44pin/Cadence/cpf/nanosoc_imp.cpf b/ASIC/TSMC65nm/44pin/Cadence/cpf/nanosoc_imp.cpf
similarity index 100%
rename from ASIC/44pin/Cadence/cpf/nanosoc_imp.cpf
rename to ASIC/TSMC65nm/44pin/Cadence/cpf/nanosoc_imp.cpf
diff --git a/ASIC/44pin/Cadence/scripts/clock_tree_synthesis.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/clock_tree_synthesis.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/clock_tree_synthesis.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/clock_tree_synthesis.tcl
diff --git a/ASIC/44pin/Cadence/scripts/design_import.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/design_import.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/design_import.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/design_import.tcl
diff --git a/ASIC/44pin/Cadence/scripts/design_import_noDFT.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/design_import_noDFT.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/design_import_noDFT.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/design_import_noDFT.tcl
diff --git a/ASIC/44pin/Cadence/scripts/filler.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/filler.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/filler.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/filler.tcl
diff --git a/ASIC/44pin/Cadence/scripts/genus.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/genus.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/genus.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/genus.tcl
diff --git a/ASIC/44pin/Cadence/scripts/genus_nodft.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/genus_nodft.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/genus_nodft.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/genus_nodft.tcl
diff --git a/ASIC/44pin/Cadence/scripts/io_plan.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/io_plan.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/io_plan.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/io_plan.tcl
diff --git a/ASIC/44pin/Cadence/scripts/nanosoc.mmmc b/ASIC/TSMC65nm/44pin/Cadence/scripts/nanosoc.mmmc
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/nanosoc.mmmc
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/nanosoc.mmmc
diff --git a/ASIC/44pin/Cadence/scripts/nanosoc_io_plan.io b/ASIC/TSMC65nm/44pin/Cadence/scripts/nanosoc_io_plan.io
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/nanosoc_io_plan.io
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/nanosoc_io_plan.io
diff --git a/ASIC/44pin/Cadence/scripts/place.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/place.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/place.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/place.tcl
diff --git a/ASIC/44pin/Cadence/scripts/place_bondpads.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/place_bondpads.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/place_bondpads.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/place_bondpads.tcl
diff --git a/ASIC/44pin/Cadence/scripts/place_macros.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/place_macros.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/place_macros.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/place_macros.tcl
diff --git a/ASIC/44pin/Cadence/scripts/pnr_flow.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/pnr_flow.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/pnr_flow.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/pnr_flow.tcl
diff --git a/ASIC/44pin/Cadence/scripts/power_plan.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/power_plan.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/power_plan.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/power_plan.tcl
diff --git a/ASIC/44pin/Cadence/scripts/power_route.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/power_route.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/power_route.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/power_route.tcl
diff --git a/ASIC/44pin/Cadence/scripts/route.tcl b/ASIC/TSMC65nm/44pin/Cadence/scripts/route.tcl
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/route.tcl
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/route.tcl
diff --git a/ASIC/44pin/Cadence/scripts/tieoff_exclude b/ASIC/TSMC65nm/44pin/Cadence/scripts/tieoff_exclude
similarity index 100%
rename from ASIC/44pin/Cadence/scripts/tieoff_exclude
rename to ASIC/TSMC65nm/44pin/Cadence/scripts/tieoff_exclude
diff --git a/ASIC/44pin/Mentor/DRC b/ASIC/TSMC65nm/44pin/Mentor/DRC
similarity index 100%
rename from ASIC/44pin/Mentor/DRC
rename to ASIC/TSMC65nm/44pin/Mentor/DRC
diff --git a/ASIC/44pin/Mentor/ERC b/ASIC/TSMC65nm/44pin/Mentor/ERC
similarity index 100%
rename from ASIC/44pin/Mentor/ERC
rename to ASIC/TSMC65nm/44pin/Mentor/ERC
diff --git a/ASIC/44pin/Mentor/LVS b/ASIC/TSMC65nm/44pin/Mentor/LVS
similarity index 100%
rename from ASIC/44pin/Mentor/LVS
rename to ASIC/TSMC65nm/44pin/Mentor/LVS
diff --git a/ASIC/44pin/Synopsys/scripts/fm_shell.tcl b/ASIC/TSMC65nm/44pin/Synopsys/scripts/fm_shell.tcl
similarity index 100%
rename from ASIC/44pin/Synopsys/scripts/fm_shell.tcl
rename to ASIC/TSMC65nm/44pin/Synopsys/scripts/fm_shell.tcl
diff --git a/ASIC/44pin/Synopsys/scripts/place_memories.tcl b/ASIC/TSMC65nm/44pin/Synopsys/scripts/place_memories.tcl
similarity index 100%
rename from ASIC/44pin/Synopsys/scripts/place_memories.tcl
rename to ASIC/TSMC65nm/44pin/Synopsys/scripts/place_memories.tcl
diff --git a/ASIC/44pin/Synopsys/scripts/place_pins.tcl b/ASIC/TSMC65nm/44pin/Synopsys/scripts/place_pins.tcl
similarity index 100%
rename from ASIC/44pin/Synopsys/scripts/place_pins.tcl
rename to ASIC/TSMC65nm/44pin/Synopsys/scripts/place_pins.tcl
diff --git a/ASIC/44pin/Synopsys/scripts/pnr.tcl b/ASIC/TSMC65nm/44pin/Synopsys/scripts/pnr.tcl
similarity index 100%
rename from ASIC/44pin/Synopsys/scripts/pnr.tcl
rename to ASIC/TSMC65nm/44pin/Synopsys/scripts/pnr.tcl
diff --git a/ASIC/44pin/Synopsys/scripts/power_plan.tcl b/ASIC/TSMC65nm/44pin/Synopsys/scripts/power_plan.tcl
similarity index 100%
rename from ASIC/44pin/Synopsys/scripts/power_plan.tcl
rename to ASIC/TSMC65nm/44pin/Synopsys/scripts/power_plan.tcl
diff --git a/ASIC/44pin/Synopsys/scripts/synthesis.tcl b/ASIC/TSMC65nm/44pin/Synopsys/scripts/synthesis.tcl
similarity index 100%
rename from ASIC/44pin/Synopsys/scripts/synthesis.tcl
rename to ASIC/TSMC65nm/44pin/Synopsys/scripts/synthesis.tcl
diff --git a/ASIC/44pin/Synopsys/upf/nanosoc_chip_pads.upf b/ASIC/TSMC65nm/44pin/Synopsys/upf/nanosoc_chip_pads.upf
similarity index 100%
rename from ASIC/44pin/Synopsys/upf/nanosoc_chip_pads.upf
rename to ASIC/TSMC65nm/44pin/Synopsys/upf/nanosoc_chip_pads.upf
diff --git a/ASIC/60pin/Cadence/cpf/nanosoc.cpf b/ASIC/TSMC65nm/60pin/Cadence/cpf/nanosoc.cpf
similarity index 100%
rename from ASIC/60pin/Cadence/cpf/nanosoc.cpf
rename to ASIC/TSMC65nm/60pin/Cadence/cpf/nanosoc.cpf
diff --git a/ASIC/60pin/Cadence/cpf/nanosoc_imp.cpf b/ASIC/TSMC65nm/60pin/Cadence/cpf/nanosoc_imp.cpf
similarity index 100%
rename from ASIC/60pin/Cadence/cpf/nanosoc_imp.cpf
rename to ASIC/TSMC65nm/60pin/Cadence/cpf/nanosoc_imp.cpf
diff --git a/ASIC/60pin/Cadence/scripts/clock_tree_synthesis.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/clock_tree_synthesis.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/clock_tree_synthesis.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/clock_tree_synthesis.tcl
diff --git a/ASIC/60pin/Cadence/scripts/design_import.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/design_import.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/design_import.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/design_import.tcl
diff --git a/ASIC/60pin/Cadence/scripts/genus.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/genus.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/genus.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/genus.tcl
diff --git a/ASIC/60pin/Cadence/scripts/io_plan.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/io_plan.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/io_plan.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/io_plan.tcl
diff --git a/ASIC/60pin/Cadence/scripts/nanosoc.mmmc b/ASIC/TSMC65nm/60pin/Cadence/scripts/nanosoc.mmmc
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/nanosoc.mmmc
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/nanosoc.mmmc
diff --git a/ASIC/60pin/Cadence/scripts/nanosoc_io_plan.io b/ASIC/TSMC65nm/60pin/Cadence/scripts/nanosoc_io_plan.io
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/nanosoc_io_plan.io
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/nanosoc_io_plan.io
diff --git a/ASIC/60pin/Cadence/scripts/place.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/place.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/place.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/place.tcl
diff --git a/ASIC/60pin/Cadence/scripts/place_macros.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/place_macros.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/place_macros.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/place_macros.tcl
diff --git a/ASIC/60pin/Cadence/scripts/pnr_flow.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/pnr_flow.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/pnr_flow.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/pnr_flow.tcl
diff --git a/ASIC/60pin/Cadence/scripts/power_plan.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/power_plan.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/power_plan.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/power_plan.tcl
diff --git a/ASIC/60pin/Cadence/scripts/power_route.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/power_route.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/power_route.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/power_route.tcl
diff --git a/ASIC/60pin/Cadence/scripts/route.tcl b/ASIC/TSMC65nm/60pin/Cadence/scripts/route.tcl
similarity index 100%
rename from ASIC/60pin/Cadence/scripts/route.tcl
rename to ASIC/TSMC65nm/60pin/Cadence/scripts/route.tcl
diff --git a/ASIC/60pin/Synopsys/scripts/fm_shell.tcl b/ASIC/TSMC65nm/60pin/Synopsys/scripts/fm_shell.tcl
similarity index 100%
rename from ASIC/60pin/Synopsys/scripts/fm_shell.tcl
rename to ASIC/TSMC65nm/60pin/Synopsys/scripts/fm_shell.tcl
diff --git a/ASIC/60pin/Synopsys/scripts/place_memories.tcl b/ASIC/TSMC65nm/60pin/Synopsys/scripts/place_memories.tcl
similarity index 100%
rename from ASIC/60pin/Synopsys/scripts/place_memories.tcl
rename to ASIC/TSMC65nm/60pin/Synopsys/scripts/place_memories.tcl
diff --git a/ASIC/60pin/Synopsys/scripts/place_pins.tcl b/ASIC/TSMC65nm/60pin/Synopsys/scripts/place_pins.tcl
similarity index 100%
rename from ASIC/60pin/Synopsys/scripts/place_pins.tcl
rename to ASIC/TSMC65nm/60pin/Synopsys/scripts/place_pins.tcl
diff --git a/ASIC/60pin/Synopsys/scripts/pnr.tcl b/ASIC/TSMC65nm/60pin/Synopsys/scripts/pnr.tcl
similarity index 100%
rename from ASIC/60pin/Synopsys/scripts/pnr.tcl
rename to ASIC/TSMC65nm/60pin/Synopsys/scripts/pnr.tcl
diff --git a/ASIC/60pin/Synopsys/scripts/power_plan.tcl b/ASIC/TSMC65nm/60pin/Synopsys/scripts/power_plan.tcl
similarity index 100%
rename from ASIC/60pin/Synopsys/scripts/power_plan.tcl
rename to ASIC/TSMC65nm/60pin/Synopsys/scripts/power_plan.tcl
diff --git a/ASIC/44pin/Synopsys/scripts/synopsys_lib_conversion.tcl b/ASIC/TSMC65nm/60pin/Synopsys/scripts/synopsys_lib_conversion.tcl
similarity index 100%
rename from ASIC/44pin/Synopsys/scripts/synopsys_lib_conversion.tcl
rename to ASIC/TSMC65nm/60pin/Synopsys/scripts/synopsys_lib_conversion.tcl
diff --git a/ASIC/60pin/Synopsys/scripts/synthesis.tcl b/ASIC/TSMC65nm/60pin/Synopsys/scripts/synthesis.tcl
similarity index 100%
rename from ASIC/60pin/Synopsys/scripts/synthesis.tcl
rename to ASIC/TSMC65nm/60pin/Synopsys/scripts/synthesis.tcl
diff --git a/ASIC/60pin/Synopsys/upf/nanosoc_chip_pads.upf b/ASIC/TSMC65nm/60pin/Synopsys/upf/nanosoc_chip_pads.upf
similarity index 100%
rename from ASIC/60pin/Synopsys/upf/nanosoc_chip_pads.upf
rename to ASIC/TSMC65nm/60pin/Synopsys/upf/nanosoc_chip_pads.upf
diff --git a/ASIC/accelerator_only/Cadence/scripts/genus.tcl b/ASIC/TSMC65nm/accelerator_only/Cadence/scripts/genus.tcl
similarity index 100%
rename from ASIC/accelerator_only/Cadence/scripts/genus.tcl
rename to ASIC/TSMC65nm/accelerator_only/Cadence/scripts/genus.tcl
diff --git a/ASIC/accelerator_only/accel_constraints.sdc b/ASIC/TSMC65nm/accelerator_only/accel_constraints.sdc
similarity index 100%
rename from ASIC/accelerator_only/accel_constraints.sdc
rename to ASIC/TSMC65nm/accelerator_only/accel_constraints.sdc
diff --git a/ASIC/constraints.sdc b/ASIC/TSMC65nm/constraints.sdc
similarity index 100%
rename from ASIC/constraints.sdc
rename to ASIC/TSMC65nm/constraints.sdc
diff --git a/ASIC/rf_08k.spec b/ASIC/TSMC65nm/rf_08k.spec
similarity index 100%
rename from ASIC/rf_08k.spec
rename to ASIC/TSMC65nm/rf_08k.spec
diff --git a/ASIC/rf_16k.spec b/ASIC/TSMC65nm/rf_16k.spec
similarity index 100%
rename from ASIC/rf_16k.spec
rename to ASIC/TSMC65nm/rf_16k.spec
diff --git a/ASIC/rom_via.spec b/ASIC/TSMC65nm/rom_via.spec
similarity index 100%
rename from ASIC/rom_via.spec
rename to ASIC/TSMC65nm/rom_via.spec
diff --git a/ASIC/60pin/Synopsys/scripts/synopsys_lib_conversion.tcl b/ASIC/TSMC65nm/synopsys_lib_conversion.tcl
similarity index 96%
rename from ASIC/60pin/Synopsys/scripts/synopsys_lib_conversion.tcl
rename to ASIC/TSMC65nm/synopsys_lib_conversion.tcl
index 6cc53b16baabb3dfbe14e567433cad2985c23c81..d70807562e641bcaee13fc690433b4a44da0416f 100644
--- a/ASIC/60pin/Synopsys/scripts/synopsys_lib_conversion.tcl
+++ b/ASIC/TSMC65nm/synopsys_lib_conversion.tcl
@@ -1,4 +1,4 @@
-set RF_PATH $env(SOCLABS_PROJECT_DIR)/memories/rf
+set RF_PATH $env(SOCLABS_PROJECT_DIR)/memories/rf_16k
 
 read_lib $RF_PATH/rf_sp_hdf_ss_1p08v_1p08v_125c.lib
 write_lib RF_LIB_ss_1p08v_1p08v_125c -output $RF_PATH/rf_sp_hdf_ss_1p08v_1p08v_125c.db
diff --git a/ASIC/nanosoc_chip_pads/tsmc28hpcp/nanosoc_chip_pads_38pin.v b/ASIC/nanosoc_chip_pads/tsmc28hpcp/nanosoc_chip_pads_38pin.v
new file mode 100644
index 0000000000000000000000000000000000000000..08ae5f440d81397c18295589b473482e446885ac
--- /dev/null
+++ b/ASIC/nanosoc_chip_pads/tsmc28hpcp/nanosoc_chip_pads_38pin.v
@@ -0,0 +1,533 @@
+//-----------------------------------------------------------------------------
+// Top-Level Pad implementation for TSMC65nm
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Flynn (d.w.flynn@soton.ac.uk)
+//
+// Copyright � 2021-3, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// The confidential and proprietary information contained in this file may
+// only be used by a person authorised under and to the extent permitted
+// by a subsisting licensing agreement from Arm Limited or its affiliates.
+//
+//            (C) COPYRIGHT 2010-2013 Arm Limited or its affiliates.
+//                ALL RIGHTS RESERVED
+//
+// This entire notice must be reproduced on all copies of this file
+// and copies of this file may only be made by a person if such person is
+// permitted to do so under the terms of a subsisting license agreement
+// from Arm Limited or its affiliates.
+//
+//      SVN Information
+//
+//      Checked In          : $Date: 2017-10-10 15:55:38 +0100 (Tue, 10 Oct 2017) $
+//
+//      Revision            : $Revision: 371321 $
+//
+//      Release Information : Cortex-M System Design Kit-r1p1-00rel0
+//
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// Abstract : Top level for example Cortex-M0/Cortex-M0+ microcontroller
+//-----------------------------------------------------------------------------
+//
+`include "gen_defines.v"
+
+module nanosoc_chip_pads (
+  inout  wire          VDDIO,
+  inout  wire          VSSIO,
+  inout  wire          VDD,
+  inout  wire          VSS,
+  inout  wire          VDDACC,
+
+  input  wire          SE,
+  input  wire          CLK, // input
+  input  wire          TEST, // input
+  input  wire          NRST,  // active low reset
+  inout  wire  [7:0]  P0,
+  inout  wire  [7:0]  P1,
+  inout  wire          SWDIO,
+  input  wire          SWDCK);
+
+
+//------------------------------------
+// internal wires
+
+localparam GPIO_TIO = 4;
+
+
+wire        pad_clk_i;
+wire        pad_nrst_i;
+wire        pad_test_i;
+wire        pad_swdclk_i;
+wire        pad_swdio_i;
+wire        pad_swdio_o;
+wire        pad_swdio_e;
+wire        pad_swdio_z;
+wire [15:0] pad_gpio_port0_i ; 
+wire [15:0] pad_gpio_port0_o ;
+wire [15:0] pad_gpio_port0_e ;
+wire [15:0] pad_gpio_port0_z ;
+wire [15:0] pad_gpio_port1_i ;
+wire [15:0] pad_gpio_port1_o ;
+wire [15:0] pad_gpio_port1_e ;
+wire [15:0] pad_gpio_port1_z ;
+wire        soc_nreset;
+wire        soc_diag_mode;
+wire        soc_diag_ctrl;
+wire        soc_scan_mode;
+wire        soc_scan_enable;
+wire [GPIO_TIO-1:0] soc_scan_in; //soc test status outputs
+wire [GPIO_TIO-1:0] soc_scan_out; //soc test status outputs
+wire        soc_bist_mode;
+wire        soc_bist_enable;
+wire [GPIO_TIO-1:0] soc_bist_in; //soc test status outputs
+wire [GPIO_TIO-1:0] soc_bist_out; //soc test status outputs
+wire        soc_alt_mode; // ALT MODE = UART
+wire        soc_uart_rxd_i; // UART RXD
+wire        soc_uart_txd_o = 1'b1; // UART TXD
+wire        soc_swd_mode; // SWD mode
+wire        soc_swd_clk_i; // SWDCLK
+wire        soc_swd_dio_i; // SWDIO tristate input
+wire        soc_swd_dio_o; // SWDIO trstate output
+wire        soc_swd_dio_e; // SWDIO tristate output enable
+wire        soc_swd_dio_z; // SWDIO tristate output hiz
+wire [15:0] soc_gpio_port0_i; // GPIO SOC tristate input
+wire [15:0] soc_gpio_port0_o; // GPIO SOC trstate output
+wire [15:0] soc_gpio_port0_e; // GPIO SOC tristate output enable
+wire [15:0] soc_gpio_port0_z; // GPIO SOC tristate output hiz
+wire [15:0] soc_gpio_port1_i; // GPIO SOC tristate input
+wire [15:0] soc_gpio_port1_o; // GPIO SOC trstate output
+wire [15:0] soc_gpio_port1_e; // GPIO SOC tristate output enable
+wire [15:0] soc_gpio_port1_z; // GPIO SOC tristate output hiz
+
+wire pad_se_i;
+
+// connect up high order GPIOs
+assign soc_gpio_port0_i[15:GPIO_TIO] = pad_gpio_port0_i[15:GPIO_TIO];
+assign pad_gpio_port0_o[15:GPIO_TIO] = soc_gpio_port0_o[15:GPIO_TIO];
+assign pad_gpio_port0_e[15:GPIO_TIO] = soc_gpio_port0_e[15:GPIO_TIO];
+assign pad_gpio_port0_z[15:GPIO_TIO] = soc_gpio_port0_z[15:GPIO_TIO];
+assign soc_gpio_port1_i[15:GPIO_TIO] = pad_gpio_port1_i[15:GPIO_TIO];
+assign pad_gpio_port1_o[15:GPIO_TIO] = soc_gpio_port1_o[15:GPIO_TIO];
+assign pad_gpio_port1_e[15:GPIO_TIO] = soc_gpio_port1_e[15:GPIO_TIO];
+assign pad_gpio_port1_z[15:GPIO_TIO] = soc_gpio_port1_z[15:GPIO_TIO];
+
+wire tiehi = 1'b1;
+wire tielo = 1'b0;
+
+
+nanosoc_chip_cfg #(
+    .GPIO_TIO (GPIO_TIO)
+  )
+  u_nanosoc_chip_cfg
+  (
+  // Primary Inputs
+   .pad_clk_i        (pad_clk_i         )
+  ,.pad_nrst_i       (pad_nrst_i        )
+  ,.pad_test_i       (pad_test_i        )
+  // Alternate/reconfigurable IP and associated bidirectional I/O
+  ,.pad_altin_i      (pad_se_i      )  // SWCLK/UARTRXD/SCAN-ENABLE
+  ,.pad_altio_i      (pad_swdio_i       )  // SWDIO/UARTTXD tristate input
+  ,.pad_altio_o      (pad_swdio_o       )  // SWDIO/UARTTXD trstate output
+  ,.pad_altio_e      (pad_swdio_e       )  // SWDIO/UARTTXD tristate output enable
+  ,.pad_altio_z      (pad_swdio_z       )  // SWDIO/UARTTXD tristate output hiz
+  // Reconfigurable General Purpose bidirectional I/Os Port-0 (user)
+  ,.pad_gpio_port0_i (pad_gpio_port0_i[GPIO_TIO-1:0]) // GPIO PAD tristate input
+  ,.pad_gpio_port0_o (pad_gpio_port0_o[GPIO_TIO-1:0]) // GPIO PAD trstate output
+  ,.pad_gpio_port0_e (pad_gpio_port0_e[GPIO_TIO-1:0]) // GPIO PAD tristate output enable
+  ,.pad_gpio_port0_z (pad_gpio_port0_z[GPIO_TIO-1:0]) // GPIO PAD tristate output hiz
+  // Reconfigurable General Purpose bidirectional I/Os Port-1 (system)
+  ,.pad_gpio_port1_i (pad_gpio_port1_i[GPIO_TIO-1:0]) // GPIO PAD tristate input
+  ,.pad_gpio_port1_o (pad_gpio_port1_o[GPIO_TIO-1:0]) // GPIO PAD trstate output
+  ,.pad_gpio_port1_e (pad_gpio_port1_e[GPIO_TIO-1:0]) // GPIO PAD tristate output enable
+  ,.pad_gpio_port1_z (pad_gpio_port1_z[GPIO_TIO-1:0]) // GPIO PAD tristate output hiz
+  //SOC
+  ,.soc_nreset       (soc_nreset        )
+  ,.soc_diag_mode    (soc_diag_mode     )
+  ,.soc_diag_ctrl    (soc_diag_ctrl     )
+  ,.soc_scan_mode    (soc_scan_mode     )
+  ,.soc_scan_enable  (soc_scan_enable   )
+  ,.soc_scan_in      (soc_scan_in       ) // soc test scan chain inputs
+  ,.soc_scan_out     (soc_scan_out      ) // soc test scan chain outputs
+  ,.soc_bist_mode    (soc_bist_mode     )
+  ,.soc_bist_enable  (soc_bist_enable   )
+  ,.soc_bist_in      (soc_bist_in       ) // soc bist control inputs
+  ,.soc_bist_out     (soc_bist_out      ) // soc test status outputs
+  ,.soc_alt_mode     (soc_alt_mode      )// ALT MODE = UART
+  ,.soc_uart_rxd_i   (soc_uart_rxd_i    ) // UART RXD
+  ,.soc_uart_txd_o   (soc_uart_txd_o    ) // UART TXD
+  ,.soc_swd_mode     (soc_swd_mode      ) // SWD mode
+  ,.soc_swd_clk_i    (soc_swd_clk_i     ) // SWDCLK
+  ,.soc_swd_dio_i    (soc_swd_dio_i     ) // SWDIO tristate input
+  ,.soc_swd_dio_o    (soc_swd_dio_o     ) // SWDIO trstate output
+  ,.soc_swd_dio_e    (soc_swd_dio_e     ) // SWDIO tristate output enable
+  ,.soc_swd_dio_z    (soc_swd_dio_z     ) // SWDIO tristate output hiz
+  ,.soc_gpio_port0_i (soc_gpio_port0_i[GPIO_TIO-1:0]) // GPIO SOC tristate input
+  ,.soc_gpio_port0_o (soc_gpio_port0_o[GPIO_TIO-1:0]) // GPIO SOC trstate output
+  ,.soc_gpio_port0_e (soc_gpio_port0_e[GPIO_TIO-1:0]) // GPIO SOC tristate output enable
+  ,.soc_gpio_port0_z (soc_gpio_port0_z[GPIO_TIO-1:0]) // GPIO SOC tristate output hiz
+  ,.soc_gpio_port1_i (soc_gpio_port1_i[GPIO_TIO-1:0]) // GPIO SOC tristate input
+  ,.soc_gpio_port1_o (soc_gpio_port1_o[GPIO_TIO-1:0]) // GPIO SOC trstate output
+  ,.soc_gpio_port1_e (soc_gpio_port1_e[GPIO_TIO-1:0]) // GPIO SOC tristate output enable
+  ,.soc_gpio_port1_z (soc_gpio_port1_z[GPIO_TIO-1:0]) // GPIO SOC tristate output hiz
+);
+
+  nanosoc_chip u_nanosoc_chip (
+`ifdef POWER_PINS
+  .VDD        (VDD),
+  .VSS        (VSS),
+  .VDDACC     (VDDACC),
+`endif
+//`ifdef ASIC_TEST_PORTS
+  .diag_mode   (soc_diag_mode     ),
+  .diag_ctrl   (soc_diag_ctrl     ),
+  .scan_mode   (soc_scan_mode     ),
+  .scan_enable (soc_scan_enable   ),
+  .scan_in     (soc_scan_in       ), // soc test scan chain inputs
+  .scan_out    (soc_scan_out      ),       // soc test scan chain outputs
+  .bist_mode   (soc_bist_mode     ),
+  .bist_enable (soc_bist_enable   ),
+  .bist_in     (soc_bist_in       ), // soc bist control inputs
+  .bist_out    (soc_bist_out      ),       // soc test status outputs
+  .alt_mode    (soc_alt_mode      ),// ALT MODE = UART
+  .uart_rxd_i  (soc_uart_rxd_i    ), // UART RXD
+  .uart_txd_o  (soc_uart_txd_o    ), // UART TXD
+  .swd_mode    (soc_swd_mode      ),    // SWD mode
+//`endif
+  .clk_i(pad_clk_i),
+  .test_i(soc_scan_mode),
+  .nrst_i(soc_nreset),
+  .p0_i(soc_gpio_port0_i), // level-shifted input from pad
+  .p0_o(soc_gpio_port0_o), // output port drive
+  .p0_e(soc_gpio_port0_e), // active high output drive enable (pad tech dependent)
+  .p0_z(soc_gpio_port0_z), // active low output drive enable (pad tech dependent)
+  .p1_i(soc_gpio_port1_i), // level-shifted input from pad
+  .p1_o(soc_gpio_port1_o), // output port drive
+  .p1_e(soc_gpio_port1_e), // active high output drive enable (pad tech dependent)
+  .p1_z(soc_gpio_port1_z), // active low output drive enable (pad tech dependent)
+  .swdio_i(soc_swd_dio_i),
+  .swdio_o(soc_swd_dio_o),
+  .swdio_e(soc_swd_dio_e),
+  .swdio_z(soc_swd_dio_z),
+  .swdclk_i(pad_swdclk_i)
+  );
+
+
+ // --------------------------------------------------------------------------------
+ // IO pad (TSMC 65nm specific Library napping)
+ // --------------------------------------------------------------------------------
+
+// Pad IO power supplies
+
+PVDD2CDG uPAD_VDDIO_0(
+   .VDDPST(VDDIO)
+   );
+//PVDD2CDG uPAD_VDDIO_1(
+//   .VDDPST(VDDIO)
+//   );
+PVDD2CDG uPAD_VDDIO_2(
+   .VDDPST(VDDIO)
+   );
+PVDD2POC uPAD_VDDIO_3(
+   .VDDPST(VDDIO)
+   );
+
+PVSS2CDG uPAD_VSSIO_0(
+   .VSSPST(VSSIO)
+   );
+PVSS2CDG uPAD_VSSIO_1(
+   .VSSPST(VSSIO)
+   );
+
+// Core power supplies
+
+PVDD1CDG uPAD_VDD_0(
+   .VDD(VDD)
+   );
+PVDD1CDG uPAD_VDD_1(
+   .VDD(VDD)
+   );
+PVDD1CDG uPAD_VDD_2(
+   .VDD(VDD)
+   );
+PVDD1CDG uPAD_VDD_3(
+   .VDD(VDD)
+   );
+
+PVSS1CDG uPAD_VSS_0(
+   .VSS(VSS)
+   );
+PVSS1CDG uPAD_VSS_1(
+   .VSS(VSS)
+   );
+PVSS1CDG uPAD_VSS_2(
+   .VSS(VSS)
+   );
+PVSS1CDG uPAD_VSS_3(
+   .VSS(VSS)
+   );
+// Accelerator Power supplies
+PVDD1CDG uPAD_VDDACC_0(
+   .VDD(VDDACC)
+   );
+PVDD1CDG uPAD_VDDACC_1(
+   .VDD(VDDACC)
+   );
+PVDD1CDG uPAD_VDDACC_2(
+   .VDD(VDDACC)
+   );
+
+// Clock, Reset and Serial Wire Debug ports
+
+PRDW0408SCDG uPAD_SE_I (
+    .IE(tiehi),
+    .C(pad_se_i),
+    .PE(tielo),
+    .DS(tielo),
+    .I(tielo),
+    .OEN(tiehi),
+    .PAD(SE)
+   );
+
+
+PRDW0408SCDG uPAD_CLK_I (
+    .IE(tiehi),
+    .C(pad_clk_i),
+    .PE(tielo),
+    .DS(tielo),
+    .I(tielo),
+    .OEN(tiehi),
+    .PAD(CLK)
+   );
+
+PRDW0408SCDG uPAD_TEST_I (
+    .IE(tiehi),
+    .C(pad_test_i),
+    .PE(tielo),
+    .DS(tielo),
+    .I(tielo),
+    .OEN(tiehi),
+    .PAD(TEST)
+   );
+
+PRDW0408SCDG uPAD_NRST_I (
+    .IE(tiehi),
+    .C(pad_nrst_i),
+    .PE(tielo),
+    .DS(tielo),
+    .I(tielo),
+    .OEN(tiehi),
+    .PAD(NRST)
+   );
+
+PRDW0408SCDG uPAD_SWDIO_IO (
+    .IE(pad_swdio_z),
+    .C(pad_swdio_i),
+    .PE(tielo),
+    .DS(tielo),
+    .I(pad_swdio_o),
+    .OEN(pad_swdio_z),
+    .PAD(SWDIO)
+   );
+
+PRDW0408SCDG uPAD_SWDCK_I (
+    .IE(tiehi),
+    .C(pad_swdclk_i),
+    .PE(tielo),
+    .DS(tielo),
+    .I(tielo),
+    .OEN(tiehi),
+    .PAD(SWDCK)
+   );
+
+// GPI.I Port 0 x 16
+
+PRDW0408SCDG uPAD_P0_00 (
+    .IE(pad_gpio_port0_z[00]),
+    .C(pad_gpio_port0_i[00]),
+    .PE(pad_gpio_port0_z[00]&pad_gpio_port0_o[00]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[00]),
+    .OEN(pad_gpio_port0_z[00]),
+    .PAD(P0[00])
+   );
+
+PRDW0408SCDG uPAD_P0_01 (
+    .IE(pad_gpio_port0_z[01]),
+    .C(pad_gpio_port0_i[01]),
+    .PE(pad_gpio_port0_z[01]&pad_gpio_port0_o[01]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[01]),
+    .OEN(pad_gpio_port0_z[01]),
+    .PAD(P0[01])
+   );
+  
+PRDW0408SCDG uPAD_P0_02 (
+    .IE(pad_gpio_port0_z[02]),
+    .C(pad_gpio_port0_i[02]),
+    .PE(pad_gpio_port0_z[02]&pad_gpio_port0_o[02]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[02]),
+    .OEN(pad_gpio_port0_z[02]),
+    .PAD(P0[02])
+   );
+
+PRDW0408SCDG uPAD_P0_03 (
+    .IE(pad_gpio_port0_z[03]),
+    .C(pad_gpio_port0_i[03]),
+    .PE(pad_gpio_port0_z[03]&pad_gpio_port0_o[03]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[03]),
+    .OEN(pad_gpio_port0_z[03]),
+    .PAD(P0[03])
+   );
+
+PRDW0408SCDG uPAD_P0_04 (
+    .IE(pad_gpio_port0_z[04]),
+    .C(pad_gpio_port0_i[04]),
+    .PE(pad_gpio_port0_z[04]&pad_gpio_port0_o[04]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[04]),
+    .OEN(pad_gpio_port0_z[04]),
+    .PAD(P0[04])
+   );
+
+PRDW0408SCDG uPAD_P0_05 (
+    .IE(pad_gpio_port0_z[05]),
+    .C(pad_gpio_port0_i[05]),
+    .PE(pad_gpio_port0_z[05]&pad_gpio_port0_o[05]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[05]),
+    .OEN(pad_gpio_port0_z[05]),
+    .PAD(P0[05])
+   );
+  
+PRDW0408SCDG uPAD_P0_06 (
+    .IE(pad_gpio_port0_z[06]),
+    .C(pad_gpio_port0_i[06]),
+    .PE(pad_gpio_port0_z[06]&pad_gpio_port0_o[06]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[06]),
+    .OEN(pad_gpio_port0_z[06]),
+    .PAD(P0[06])
+   );
+
+PRDW0408SCDG uPAD_P0_07 (
+    .IE(pad_gpio_port0_z[07]),
+    .C(pad_gpio_port0_i[07]),
+    .PE(pad_gpio_port0_z[07]&pad_gpio_port0_o[07]),
+    .DS(tielo),
+    .I(pad_gpio_port0_o[07]),
+    .OEN(pad_gpio_port0_z[07]),
+    .PAD(P0[07])
+   );
+// GPI.I Port 1 x 16
+
+PRDW0408SCDG uPAD_P1_00 (
+    .IE(pad_gpio_port1_z[00]),
+    .C(pad_gpio_port1_i[00]),
+    .PE(pad_gpio_port1_z[00]&pad_gpio_port1_o[00]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[00]),
+    .OEN(pad_gpio_port1_z[00]),
+    .PAD(P1[00])
+   );
+
+PRDW0408SCDG uPAD_P1_01 (
+    .IE(pad_gpio_port1_z[01]),
+    .C(pad_gpio_port1_i[01]),
+    .PE(pad_gpio_port1_z[01]&pad_gpio_port1_o[01]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[01]),
+    .OEN(pad_gpio_port1_z[01]),
+    .PAD(P1[01])
+   );
+  
+PRDW0408SCDG uPAD_P1_02 (
+    .IE(pad_gpio_port1_z[02]),
+    .C(pad_gpio_port1_i[02]),
+    .PE(pad_gpio_port1_z[02]&pad_gpio_port1_o[02]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[02]),
+    .OEN(pad_gpio_port1_z[02]),
+    .PAD(P1[02])
+   );
+
+PRDW0408SCDG uPAD_P1_03 (
+    .IE(pad_gpio_port1_z[03]),
+    .C(pad_gpio_port1_i[03]),
+    .PE(pad_gpio_port1_z[03]&pad_gpio_port1_o[03]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[03]),
+    .OEN(pad_gpio_port1_z[03]),
+    .PAD(P1[03])
+   );
+
+PRDW0408SCDG uPAD_P1_04 (
+    .IE(pad_gpio_port1_z[04]),
+    .C(pad_gpio_port1_i[04]),
+    .PE(pad_gpio_port1_z[04]&pad_gpio_port1_o[04]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[04]),
+    .OEN(pad_gpio_port1_z[04]),
+    .PAD(P1[04])
+   );
+
+PRDW0408SCDG uPAD_P1_05 (
+    .IE(pad_gpio_port1_z[05]),
+    .C(pad_gpio_port1_i[05]),
+    .PE(pad_gpio_port1_z[05]&pad_gpio_port1_o[05]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[05]),
+    .OEN(pad_gpio_port1_z[05]),
+    .PAD(P1[05])
+   );
+  
+PRDW0408SCDG uPAD_P1_06 (
+    .IE(pad_gpio_port1_z[06]),
+    .C(pad_gpio_port1_i[06]),
+    .PE(pad_gpio_port1_z[06]&pad_gpio_port1_o[06]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[06]),
+    .OEN(pad_gpio_port1_z[06]),
+    .PAD(P1[06])
+   );
+
+PRDW0408SCDG uPAD_P1_07 (
+    .IE(pad_gpio_port1_z[07]),
+    .C(pad_gpio_port1_i[07]),
+    .PE(pad_gpio_port1_z[07]&pad_gpio_port1_o[07]),
+    .DS(tielo),
+    .I(pad_gpio_port1_o[07]),
+    .OEN(pad_gpio_port1_z[07]),
+    .PAD(P1[07])
+   );
+
+
+assign pad_gpio_port0_i[8] = pad_gpio_port0_o[8] & pad_gpio_port0_e[8];
+assign pad_gpio_port0_i[9] = pad_gpio_port0_o[9] & pad_gpio_port0_e[9];
+assign pad_gpio_port0_i[10] = pad_gpio_port0_o[10] & pad_gpio_port0_e[10];
+assign pad_gpio_port0_i[11] = pad_gpio_port0_o[11] & pad_gpio_port0_e[11];
+assign pad_gpio_port0_i[12] = pad_gpio_port0_o[12] & pad_gpio_port0_e[12];
+assign pad_gpio_port0_i[13] = pad_gpio_port0_o[13] & pad_gpio_port0_e[13];
+assign pad_gpio_port0_i[14] = pad_gpio_port0_o[14] & pad_gpio_port0_e[14];
+assign pad_gpio_port0_i[15] = pad_gpio_port0_o[15] & pad_gpio_port0_e[15];
+
+assign pad_gpio_port1_i[8] = pad_gpio_port1_o[8] & pad_gpio_port1_e[8];
+assign pad_gpio_port1_i[9] = pad_gpio_port1_o[9] & pad_gpio_port1_e[9];
+assign pad_gpio_port1_i[10] = pad_gpio_port1_o[10] & pad_gpio_port1_e[10];
+assign pad_gpio_port1_i[11] = pad_gpio_port1_o[11] & pad_gpio_port1_e[11];
+assign pad_gpio_port1_i[12] = pad_gpio_port1_o[12] & pad_gpio_port1_e[12];
+assign pad_gpio_port1_i[13] = pad_gpio_port1_o[13] & pad_gpio_port1_e[13];
+assign pad_gpio_port1_i[14] = pad_gpio_port1_o[14] & pad_gpio_port1_e[14];
+assign pad_gpio_port1_i[15] = pad_gpio_port1_o[15] & pad_gpio_port1_e[15];
+
+endmodule
+
+
+
diff --git a/flows/makefile.asic b/flows/makefile.asic
index 34d8c16dbf583640ba95e52c8c09fa1a332063d9..021806438d15c85c2c7323bfdf72f907da18f565 100644
--- a/flows/makefile.asic
+++ b/flows/makefile.asic
@@ -34,19 +34,30 @@ FORMALITY_OUTPUT_FILELIST := $(TCL_ASIC_FLIST_DIR)/formality_flist.tcl
 DC_OUTPUT_FILELIST := $(TCL_ASIC_FLIST_DIR)/dc_flist.tcl
 
 # Location of outputs from synthesis
-MEMORIES_DIR		:= $(SOCLABS_PROJECT_DIR)/memories
-RF_16K_SPEC_FILE	:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/rf_16k.spec
-RF_08K_SPEC_FILE		:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/rf_08k.spec
-ROM_SPEC_FILE		:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/rom_via.spec
-BOOTROM_BIN_FILE_IN := $(SOCLABS_PROJECT_DIR)/system/src/bootrom/bintxt/bootrom.bintxt
-BOOTROM_BIN_FILE	:= $(SOCLABS_PROJECT_DIR)/system/src/bootrom/bintxt/bootrom.rcf
-RF_16K_DIR			:= $(MEMORIES_DIR)/rf_16k
-RF_08K_DIR			:= $(MEMORIES_DIR)/rf_08k
-ROM_DIR 			:= $(MEMORIES_DIR)/bootrom
-REPORTS_FOLDER		:= $(IMP_NANOSOC_ASIC_DIR)/reports
-SYN_LOGS			:= $(IMP_NANOSOC_ASIC_DIR)/logs
-NETLIST_FOLDER		:= $(IMP_NANOSOC_ASIC_DIR)/netlist/
-NANOSOC_SYNTH_DIR	:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/
+MEMORIES_DIR			:= $(SOCLABS_PROJECT_DIR)/memories
+RF_16K_65nm_SPEC_FILE	:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/TSMC65nm/rf_16k.spec
+RF_08K_65nm_SPEC_FILE	:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/TSMC65nm/rf_08k.spec
+ROM_65nm_SPEC_FILE		:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/TSMC65nm/rom_via.spec
+SRAM_16K_28nm_SPEC_FILE	:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/TSMC28nm/sram_16k.spec
+ROM_28nm_SPEC_FILE		:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/TSMC28nm/rom_via.spec
+BOOTROM_BIN_FILE_IN 	:= $(SOCLABS_PROJECT_DIR)/system/src/bootrom/bintxt/bootrom.bintxt
+BOOTROM_BIN_FILE		:= $(SOCLABS_PROJECT_DIR)/system/src/bootrom/bintxt/bootrom.rcf
+RF_16K_DIR				:= $(MEMORIES_DIR)/rf_16k
+RF_08K_DIR				:= $(MEMORIES_DIR)/rf_08k
+ROM_DIR 				:= $(MEMORIES_DIR)/bootrom
+SRAM_16K_DIR			:= $(MEMORIES_DIR)/sram_16k 
+
+REPORTS_FOLDER			:= $(IMP_NANOSOC_ASIC_DIR)/reports
+SYN_LOGS				:= $(IMP_NANOSOC_ASIC_DIR)/logs
+NETLIST_FOLDER			:= $(IMP_NANOSOC_ASIC_DIR)/netlist/
+
+NODE ?= 65
+
+ifeq ($(NODE),65)
+	NANOSOC_SYNTH_DIR	:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/TSMC65nm
+else
+	NANOSOC_SYNTH_DIR 	:= $(SOCLABS_NANOSOC_TECH_DIR)/ASIC/TSMC28nm
+endif
 
 # NanoSoC Tech Flow Dependencies
 NANOSOC_FPGA_FLOW_DIR := $(SOCLABS_NANOSOC_TECH_DIR)/fpga
@@ -81,17 +92,48 @@ gen_memories: bootrom
 	cp $(BOOTROM_BIN_FILE_IN) $(BOOTROM_BIN_FILE)
 	echo "Generating register file memory libraries"
 	echo "16K RF"
-	cd $(RF_16K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt all -spec $(RF_16K_SPEC_FILE);
-	cd $(RF_16K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt liberty -spec $(RF_16K_SPEC_FILE);
+	cd $(RF_16K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt all -spec $(RF_16K_65nm_SPEC_FILE);
+	cd $(RF_16K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt liberty -spec $(RF_16K_65nm_SPEC_FILE);
 	echo "8K RF"
-	cd $(RF_08K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt all -spec $(RF_08K_SPEC_FILE);
-	cd $(RF_08K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt liberty -spec $(RF_08K_SPEC_FILE);
+	cd $(RF_08K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt all -spec $(RF_08K_65nm_SPEC_FILE);
+	cd $(RF_08K_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rf_sp_hdf_hvt_rvt/r0p0/bin/rf_sp_hdf_hvt_rvt liberty -spec $(RF_08K_65nm_SPEC_FILE);
 	cd $(ROM_DIR)
 	echo "Generating ROM Libraries"
-	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rom_via_hdd_rvt_rvt/r0p0/bin/rom_via_hdd_rvt_rvt liberty -spec $(ROM_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
-	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rom_via_hdd_rvt_rvt/r0p0/bin/rom_via_hdd_rvt_rvt all -spec $(ROM_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rom_via_hdd_rvt_rvt/r0p0/bin/rom_via_hdd_rvt_rvt liberty -spec $(ROM_65nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln65lp/rom_via_hdd_rvt_rvt/r0p0/bin/rom_via_hdd_rvt_rvt all -spec $(ROM_65nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
 	echo "Finished generating memory libraries"
 
+gen_memories_frontend_28nm: bootrom
+	@mkdir -p $(MEMORIES_DIR)
+	@mkdir -p $(SRAM_16K_DIR)
+	@mkdir -p $(ROM_DIR)
+	cp $(BOOTROM_BIN_FILE_IN) $(BOOTROM_BIN_FILE)
+	echo "Generating 16K SRAM Memory"
+	cd $(SRAM_16K_DIR); $(PHYS_IP)/arm/tsmc/cln28ht/sram_sp_hde_hvt_mvt/r0p0/bin/sram_sp_hde_hvt_mvt ascii -spec $(SRAM_16K_28nm_SPEC_FILE)
+	cd $(SRAM_16K_DIR); $(PHYS_IP)/arm/tsmc/cln28ht/sram_sp_hde_hvt_mvt/r0p0/bin/sram_sp_hde_hvt_mvt emulation -spec $(SRAM_16K_28nm_SPEC_FILE)
+	cd $(SRAM_16K_DIR); $(PHYS_IP)/arm/tsmc/cln28ht/sram_sp_hde_hvt_mvt/r0p0/bin/sram_sp_hde_hvt_mvt verilog -spec $(SRAM_16K_28nm_SPEC_FILE)
+	cd $(SRAM_16K_DIR); $(PHYS_IP)/arm/tsmc/cln28ht/sram_sp_hde_hvt_mvt/r0p0/bin/sram_sp_hde_hvt_mvt liberty -spec $(SRAM_16K_28nm_SPEC_FILE)
+	echo "Generating ROM Libraries"
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln28ht//rom_via_hdd_2_svt_mvt/r0p0/bin/rom_via_hdd_2_svt_mvt ascii -spec $(ROM_28nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln28ht//rom_via_hdd_2_svt_mvt/r0p0/bin/rom_via_hdd_2_svt_mvt emulation -spec $(ROM_28nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln28ht//rom_via_hdd_2_svt_mvt/r0p0/bin/rom_via_hdd_2_svt_mvt verilog -spec $(ROM_28nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln28ht//rom_via_hdd_2_svt_mvt/r0p0/bin/rom_via_hdd_2_svt_mvt liberty -spec $(ROM_28nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+
+gen_memories_backend_28nm: bootrom
+	@mkdir -p $(MEMORIES_DIR)
+	@mkdir -p $(SRAM_16K_DIR)
+	@mkdir -p $(ROM_DIR)
+	cp $(BOOTROM_BIN_FILE_IN) $(BOOTROM_BIN_FILE)
+	echo "Generating 16K RF Memory"
+	cd $(SRAM_16K_DIR); $(PHYS_IP)/arm/tsmc/cln28ht/sram_sp_hde_2_svt_mvt/r0p0/bin/sram_sp_hde_2_svt_mvt lef-fp -spec $(SRAM_16K_28nm_SPEC_FILE)
+	cd $(SRAM_16K_DIR); $(PHYS_IP)/arm/tsmc/cln28ht/sram_sp_hde_2_svt_mvt/r0p0/bin/sram_sp_hde_2_svt_mvt gds2 -spec $(SRAM_16K_28nm_SPEC_FILE)
+	echo "Generating ROM Libraries"
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln28ht//rom_via_hdd_2_svt_mvt/r0p0/bin/rom_via_hdd_2_svt_mvt lef-fp -spec $(ROM_28nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+	cd $(ROM_DIR); $(PHYS_IP)/arm/tsmc/cln28ht//rom_via_hdd_2_svt_mvt/r0p0/bin/rom_via_hdd_2_svt_mvt gds2 -spec $(ROM_28nm_SPEC_FILE) -code_file $(BOOTROM_BIN_FILE);
+
+gen_memories_28nm: gen_memories_frontend_28nm gen_memories_backend_28nm
+
+
 convert_mem_to_db: 
 	lc_shell -no_log -f  $(NANOSOC_SYNTH_DIR)/synopsys_lib_conversion.tcl
 
diff --git a/makefile b/makefile
index 54c381488b048652c16890c42c2c96bb1d5e5e36..5d35c1248258fac15017f8d2e0fc2b134c989902 100644
--- a/makefile
+++ b/makefile
@@ -124,6 +124,45 @@ ifdef ADC_3_INCLUDE
 	FLIST_INCLUDES += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/sl_ams_tech/SL_ADC_8bits/flist/sl_adc_8bits_ip.flist
 endif
 
+ifdef SNPS_PVT_TS_0_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_TS_0_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
+
+ifdef SNPS_PVT_TS_1_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_TS_1_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
+
+ifdef SNPS_PVT_TS_2_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_TS_2_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
+
+ifdef SNPS_PVT_TS_3_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_TS_3_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
+
+ifdef SNPS_PVT_TS_4_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_TS_4_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
+
+ifdef SNPS_PVT_TS_5_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_TS_5_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
+
+ifdef SNPS_PVT_PD_0_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_PD_0_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
+
+ifdef SNPS_PVT_VM_0_INCLUDE
+	NANOSOC_DEFINES += SNPS_PVT_MONITORING SNPS_PVT_VM_0_INCLUDE
+	FLIST_INCLUDES  += $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/synopsys_28nm_slm_integration/flist/synopsys_pvt_ip.flist
+endif
 
 
 # System Design Filelist
diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
index cf3ac0d42c8bca6d512b48d82d69c59c3314bb26..3d3526cf055449e2f023571e9cdddd2b490d6ebe 100644
--- a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
@@ -147,6 +147,10 @@ module nanosoc_region_sysio #(
   wire     [SYS_DATA_W-1:0]   adcsys_hrdata;
   wire                        adcsys_hresp;
 
+  wire                        pvtsys_hsel;  // ADC subsystem AHB interface signals
+  wire                        pvtsys_hreadyout;
+  wire     [SYS_DATA_W-1:0]   pvtsys_hrdata;
+  wire                        pvtsys_hresp;
 
 
   // AHB address decode
@@ -166,6 +170,9 @@ module nanosoc_region_sysio #(
     .sysctrl_hsel (sysctrl_hsel),
   `ifdef AMS_PERIPHERALS
     .adcsys_hsel  (adcsys_hsel),
+  `endif
+  `ifdef SNPS_PVT_MONITORING
+    .pvtsys_hsel  (pvtsys_hsel),
   `endif
     .defslv_hsel  (defslv_hsel)
   );
@@ -174,6 +181,11 @@ module nanosoc_region_sysio #(
 `else 
   parameter AMS_PERIPHERAL_PORT = 0;
 `endif
+`ifdef SNPS_PVT_MONITORING
+  parameter SNPS_PERIPHERAL_PORT = 1;
+`else
+  parameter SNPS_PERIPHERAL_PORT = 0;
+`endif 
   // AHB slave multiplexer
   cmsdk_ahb_slave_mux #(
     .PORT0_ENABLE  (1), // APB subsystem bridge
@@ -182,7 +194,7 @@ module nanosoc_region_sysio #(
     .PORT3_ENABLE  (1), // SYS control
     .PORT4_ENABLE  (1), // Default
     .PORT5_ENABLE  (AMS_PERIPHERAL_PORT), // ADC Region
-    .PORT6_ENABLE  (0),
+    .PORT6_ENABLE  (SNPS_PERIPHERAL_PORT), // Synopsys PVT monitoring region
     .PORT7_ENABLE  (0),
     .PORT8_ENABLE  (0),
     .PORT9_ENABLE  (0),
@@ -215,10 +227,10 @@ module nanosoc_region_sysio #(
     .HREADYOUT5   (adcsys_hreadyout),
     .HRESP5       (adcsys_hresp),
     .HRDATA5      (adcsys_hrdata),
-    .HSEL6        (1'b0),     // Input Port 6
-    .HREADYOUT6   (defslv_hreadyout),
-    .HRESP6       (defslv_hresp),
-    .HRDATA6      (defslv_hrdata),
+    .HSEL6        (pvtsys_hsel),     // Input Port 6
+    .HREADYOUT6   (pvtsys_hreadyout),
+    .HRESP6       (pvtsys_hresp),
+    .HRDATA6      (pvtsys_hrdata),
     .HSEL7        (1'b0),     // Input Port 7
     .HREADYOUT7   (defslv_hreadyout),
     .HRESP7       (defslv_hresp),
@@ -504,4 +516,57 @@ module nanosoc_region_sysio #(
   );
 `endif
 
+`ifdef SNPS_PVT_MONITORING
+  nanosoc_sysio_snps_pvt_ss #(
+  `ifdef SNPS_PVT_TS_0_INCLUDE
+      .SNPS_PVT_TS_0_ENABLE  (1),
+  `endif 
+  `ifdef SNPS_PVT_TS_1_INCLUDE
+      .SNPS_PVT_TS_1_ENABLE  (1),
+  `endif 
+  `ifdef SNPS_PVT_TS_2_INCLUDE
+      .SNPS_PVT_TS_2_ENABLE  (1),
+  `endif 
+  `ifdef SNPS_PVT_TS_3_INCLUDE
+      .SNPS_PVT_TS_3_ENABLE  (1),
+  `endif 
+  `ifdef SNPS_PVT_TS_4_INCLUDE
+      .SNPS_PVT_TS_4_ENABLE  (1),
+  `endif 
+  `ifdef SNPS_PVT_TS_5_INCLUDE
+      .SNPS_PVT_TS_5_ENABLE  (1),
+  `endif 
+  `ifdef SNPS_PVT_VM_0_INCLUDE
+      .SNPS_PVT_VM_0_ENABLE  (1),
+  `endif 
+  `ifdef SNPS_PVT_PD_0_INCLUDE
+      .SNPS_PVT_PD_0_ENABLE  (1),
+  `endif 
+    .INCLUDE_IRQ_SYNCHRONIZER(0),  // require IRQs to be HCLK synchronous
+    .INCLUDE_APB_TEST_SLAVE  (1),  // Include example test slave
+    .BE                      (BE)
+
+  ) u_nanosoc_sysio_snps_pvt_ss(
+      .HCLK(HCLK),
+      .HRESETn(HRESETn),
+
+      .HSEL(pvtsys_hsel),
+      .HADDR(HADDR[15:0]),
+      .HTRANS(HTRANS[1:0]),
+      .HWRITE(HWRITE),
+      .HSIZE(HSIZE),
+      .HPROT(HPROT),
+      .HREADY(HREADY),
+      .HWDATA(HWDATA[31:0]),
+
+      .HREADYOUT(pvtsys_hreadyout),
+      .HRDATA(pvtsys_hrdata),
+      .HRESP(pvtsys_hresp),
+
+      .PCLK(PCLK),    // Peripheral clock
+      .PCLKG(PCLKG),   // Gate PCLK for bus interface only
+      .PCLKEN(PCLKEN),  // Clock divider for AHB to APB bridge
+      .PRESETn(PRESETn) // APB reset
+  );
+`endif
 endmodule
diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
index 5cb63f01ad43dda6766228a50265b89ffa72511a..d338ff81e4745e105303d9abf6d022aae1010386 100644
--- a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
@@ -49,7 +49,8 @@ module nanosoc_sysio_decode #(
   parameter BASEADDR_GPIO1       = 32'h4001_1000,
   // Sysctrl base address
   parameter BASEADDR_SYSCTRL     = 32'h4001_f000,
-  parameter BASEADDR_ADC         = 32'h4002_0000
+  parameter BASEADDR_ADC         = 32'h4002_0000,
+  parameter BASEADDR_PVT         = 32'h4002_1000
 )(
     // System Address
     input wire                  hsel,
@@ -62,6 +63,9 @@ module nanosoc_sysio_decode #(
     output wire                 sysctrl_hsel,
   `ifdef AMS_PERIPHERALS
     output wire                 adcsys_hsel,
+  `endif
+  `ifdef SNPS_PVT_MONITORING
+    output wire                 pvtsys_hsel,
   `endif
     // Default slave
     output wire                 defslv_hsel
@@ -88,21 +92,38 @@ module nanosoc_sysio_decode #(
 `ifdef AMS_PERIPHERALS
   assign adcsys_hsel  = hsel & (haddr[31:12]==
                         BASEADDR_ADC[31:12]);     // 0x40020000
+`endif
+`ifdef SNPS_PVT_MONITORING
+  assign pvtsys_hsel  = hsel & (haddr[31:12]==
+                        BASEADDR_PVT[31:12]);     // 0x40021000
 `endif
   // ----------------------------------------------------------
   // Default slave decode logic
   // ----------------------------------------------------------
 `ifdef AMS_PERIPHERALS
-  assign defslv_hsel  = ~(apbsys_hsel |
-                          gpio0_hsel   | gpio1_hsel  |
-                          sysctrl_hsel | adcsys_hsel
-                         );
+  `ifdef SNPS_PVT_MONITORING
+    assign defslv_hsel  = ~(apbsys_hsel |
+                            gpio0_hsel   | gpio1_hsel  |
+                            sysctrl_hsel | adcsys_hsel | pvtsys_hsel
+                          );
+  `else 
+    assign defslv_hsel  = ~(apbsys_hsel |
+                            gpio0_hsel   | gpio1_hsel  |
+                            sysctrl_hsel | adcsys_hsel
+                          );
+  `endif
 `else
-  assign defslv_hsel  = ~(apbsys_hsel |
-                          gpio0_hsel   | gpio1_hsel  |
-                          sysctrl_hsel
-                         );
-
+  `ifdef SNPS_PVT_MONITORING
+    assign defslv_hsel  = ~(apbsys_hsel |
+                            gpio0_hsel   | gpio1_hsel  |
+                            sysctrl_hsel | pvtsys_hsel
+                          );
+  `else 
+    assign defslv_hsel  = ~(apbsys_hsel |
+                            gpio0_hsel   | gpio1_hsel  |
+                            sysctrl_hsel
+                          );
+  `endif
 `endif
 
 endmodule
diff --git a/nanosoc/synopsys_28nm_slm_integration b/nanosoc/synopsys_28nm_slm_integration
new file mode 160000
index 0000000000000000000000000000000000000000..5ece300bcb4e7dd8cd0c4cc141e7faa8f42e3e23
--- /dev/null
+++ b/nanosoc/synopsys_28nm_slm_integration
@@ -0,0 +1 @@
+Subproject commit 5ece300bcb4e7dd8cd0c4cc141e7faa8f42e3e23
diff --git a/projbranch b/projbranch
index e48885b7170673032e64a2f52c2f0ab9013d39f7..b0d91a8156b3db1cbbb503e7f1fb38ceba1e66b2 100644
--- a/projbranch
+++ b/projbranch
@@ -13,4 +13,5 @@
 nanosoc/slcorem0_tech: main
 nanosoc/sldma230_tech: main
 nanosoc/socdebug_tech: main
-nanosoc/sldma350_tech: main
\ No newline at end of file
+nanosoc/sldma350_tech: main
+nanosoc/sl_ams_tech: main
\ No newline at end of file
diff --git a/software/common/validation/snps_pvt_tests.c b/software/common/validation/snps_pvt_tests.c
new file mode 100644
index 0000000000000000000000000000000000000000..c477da419e2e2726ca99c55c5709ba9f390f440c
--- /dev/null
+++ b/software/common/validation/snps_pvt_tests.c
@@ -0,0 +1,380 @@
+/*
+ *-----------------------------------------------------------------------------
+ * The confidential and proprietary information contained in this file may
+ * only be used by a person authorised under and to the extent permitted
+ * by a subsisting licensing agreement from Arm Limited or its affiliates.
+ *
+ *            (C) COPYRIGHT 2010-2013 Arm Limited or its affiliates.
+ *                ALL RIGHTS RESERVED
+ *
+ * This entire notice must be reproduced on all copies of this file
+ * and copies of this file may only be made by a person if such person is
+ * permitted to do so under the terms of a subsisting license agreement
+ * from Arm Limited or its affiliates.
+ *
+ *      SVN Information
+ *
+ *      Checked In          : $Date: 2017-10-10 15:55:38 +0100 (Tue, 10 Oct 2017) $
+ *
+ *      Revision            : $Revision: 371321 $
+ *
+ *      Release Information : Cortex-M System Design Kit-r1p1-00rel0
+ *-----------------------------------------------------------------------------
+ */
+
+/*
+  A simple test to check the operation of APB slave multiplexer
+*/
+
+
+#ifdef CORTEX_M0
+#include "CMSDK_CM0.h"
+#endif
+
+#ifdef CORTEX_M0PLUS
+#include "CMSDK_CM0plus.h"
+#endif
+
+#ifdef CORTEX_M3
+#include "CMSDK_CM3.h"
+#endif
+
+#ifdef CORTEX_M4
+#include "CMSDK_CM4.h"
+#endif
+
+#include <stdio.h>
+#include "uart_stdout.h"
+
+#define HW32_REG(ADDRESS)  (*((volatile unsigned long  *)(ADDRESS)))
+#define HW16_REG(ADDRESS)  (*((volatile unsigned short *)(ADDRESS)))
+#define HW8_REG(ADDRESS)   (*((volatile unsigned char  *)(ADDRESS)))
+
+int snps_pvt_ts_detect(void);
+int snps_pvt_pd_detect(void);
+int ts0_check_registers(void);
+int pd0_check_registers(void);
+
+#if defined ( __CC_ARM   )
+__asm void          address_test_write(unsigned int addr, unsigned int wdata);
+__asm unsigned int  address_test_read(unsigned int addr);
+#else
+      void          address_test_write(unsigned int addr, unsigned int wdata);
+      unsigned int  address_test_read(unsigned int addr);
+#endif
+void                HardFault_Handler_c(unsigned int * hardfault_args, unsigned lr_value);
+int                 APB_test_slave_Check(unsigned int offset);
+
+/* Global variables */
+volatile int hardfault_occurred;
+volatile int hardfault_expected;
+volatile int temp_data;
+         int hardfault_verbose=0; // 0:Not displaying anything in hardfault handler
+
+#define SNPS_PVT_BASE          (0x40021000UL)
+#define SNPS_TS_0_BASE        (SNPS_PVT_BASE + 0x0000UL)
+#define SNPS_TS_1_BASE        (SNPS_PVT_BASE + 0x0010UL)
+#define SNPS_TS_2_BASE        (SNPS_PVT_BASE + 0x0020UL)
+#define SNPS_TS_3_BASE        (SNPS_PVT_BASE + 0x0030UL)
+#define SNPS_TS_4_BASE        (SNPS_PVT_BASE + 0x0040UL)
+#define SNPS_TS_5_BASE        (SNPS_PVT_BASE + 0x0050UL)
+#define SNPS_PD_0_BASE        (SNPS_PVT_BASE + 0x0060UL)
+#define SNPS_VM_0_BASE        (SNPS_PVT_BASE + 0x0060UL)
+
+int main (void)
+{
+
+  int err_code = 0;
+  int data[64];
+  int i;
+  // UART init
+  UartStdOutInit();
+
+  // Test banner message and revision number
+  puts("\nCortex Microcontroller System Design Kit");
+  puts(" - Synopsys PVT test - revision $Revision: 371321 $\n");
+
+  if(snps_pvt_pd_detect()==0) {
+    err_code += pd0_check_registers();
+  }
+
+  printf("\n\n ************************************ \n\n");
+
+  if((snps_pvt_ts_detect()==0)) {
+    err_code += ts0_check_registers();
+  }
+
+
+  if (err_code==0) {
+    printf ("\n** TEST PASSED **\n");
+  } else {
+    printf ("\n** TEST FAILED **, Error code = (0x%x)\n", err_code);
+  }
+  UartEndSimulation();
+  return 0;
+}
+
+int ts0_check_registers(void)
+{
+  uint32_t ts0_reg;
+  float temperature;
+  float K=81.1;
+  float Y=237.5;
+  puts("Testing status read/write access \n");
+  ts0_reg = address_test_read(SNPS_TS_0_BASE + 0x000);
+  printf("Status after reset: 0x%08X \n", ts0_reg);
+  ts0_reg = ts0_reg ^ 1;
+  address_test_write(SNPS_TS_0_BASE, ts0_reg);
+  ts0_reg = address_test_read(SNPS_TS_0_BASE);
+  printf("Status register after enable: 0x%08X \n", ts0_reg);
+  while(!(address_test_read(SNPS_TS_0_BASE)&0x10)){;}
+  printf("TS reset released \n");
+  ts0_reg = address_test_read(SNPS_TS_0_BASE);
+  ts0_reg = ts0_reg ^ 2;
+  address_test_write(SNPS_TS_0_BASE, ts0_reg);
+  printf("TS Run enabled \n");
+  while(!(address_test_read(SNPS_TS_0_BASE)&0x1000000)){;}
+  ts0_reg = address_test_read(SNPS_TS_0_BASE + 0x04);
+  temperature = (ts0_reg*Y/4094) - K;
+
+  printf("Temperature read data: 0x%08X = %f\n", ts0_reg,temperature);
+
+  // Clear ready reg
+  ts0_reg = address_test_read(SNPS_TS_0_BASE);
+  ts0_reg = ts0_reg ^ 0x8;
+  address_test_write(SNPS_TS_0_BASE, ts0_reg);
+  ts0_reg = address_test_read(SNPS_TS_0_BASE);
+  printf("Status register after clear ready: 0x%08X \n", ts0_reg);
+
+  // Enable continuous running
+  ts0_reg = ts0_reg ^ 0x4;
+  address_test_write(SNPS_TS_0_BASE, ts0_reg);
+  printf("TS Run continuous enabled \n");
+
+  while(!(address_test_read(SNPS_TS_0_BASE)&0x1000000)){;}
+  ts0_reg = address_test_read(SNPS_TS_0_BASE + 0x04);
+  temperature = (ts0_reg*Y/4094) - K;
+
+  printf("Temperature 1 read data: 0x%08X = %f\n", ts0_reg,temperature);
+  // Clear ready reg
+  ts0_reg = address_test_read(SNPS_TS_0_BASE);
+  ts0_reg = ts0_reg ^ 0x8;
+  address_test_write(SNPS_TS_0_BASE, ts0_reg);
+  
+  while(!(address_test_read(SNPS_TS_0_BASE)&0x1000000)){;}
+  ts0_reg = address_test_read(SNPS_TS_0_BASE + 0x04);
+  temperature = (ts0_reg*Y/4094) - K;
+
+  printf("Temperature 2 read data: 0x%08X = %f\n", ts0_reg,temperature);
+
+  // Clear ready and continuous read
+  ts0_reg = address_test_read(SNPS_TS_0_BASE);
+  ts0_reg = ts0_reg ^ 0xC;
+  address_test_write(SNPS_TS_0_BASE, ts0_reg);
+  ts0_reg = address_test_read(SNPS_TS_0_BASE);
+
+
+  return 0;
+}
+
+int pd0_check_registers(void){
+  uint32_t pd0_reg;
+  uint32_t pd2_reg;
+  float frequency;
+  int prescaler = 32;
+  int window_size = 63;
+  float f_clk = 6;
+  puts("Testing PD0 status read/write access \n");
+  pd2_reg = address_test_read(SNPS_PD_0_BASE + 0x008);
+  printf("Config regs after reset: 0x%08X \n", pd2_reg);
+
+  // Enable PD
+  pd0_reg = address_test_read(SNPS_PD_0_BASE);
+  pd0_reg = pd0_reg ^ 1;
+  address_test_write(SNPS_PD_0_BASE, pd0_reg);
+  pd0_reg = address_test_read(SNPS_PD_0_BASE);
+  printf("Status register after enable: 0x%08X \n", pd0_reg);
+  while(!(address_test_read(SNPS_PD_0_BASE)&0x10)){;}
+  printf("PD reset released \n");
+
+  pd2_reg = pd2_reg ^ 0x1000000;
+  address_test_write(SNPS_PD_0_BASE + 0x008, pd2_reg);
+  pd2_reg = address_test_read(SNPS_PD_0_BASE + 0x008);
+  printf("Config regs after config load: 0x%08X \n", pd2_reg);
+  pd2_reg = pd2_reg ^ 0x1000000;
+  address_test_write(SNPS_PD_0_BASE + 0x008, pd2_reg);
+
+  pd0_reg = address_test_read(SNPS_PD_0_BASE);
+  pd0_reg = pd0_reg ^ 2;
+  address_test_write(SNPS_PD_0_BASE, pd0_reg);
+  printf("PD Run enabled \n");
+  while(!(address_test_read(SNPS_PD_0_BASE)&0x1000000)){;}
+  pd0_reg = address_test_read(SNPS_PD_0_BASE + 0x04); // Read Data register
+  frequency = pd0_reg * prescaler * f_clk / window_size;
+
+  printf("PD read data: 0x%08X = %f \n", pd0_reg, frequency);
+  // Clear ready reg
+  pd0_reg = address_test_read(SNPS_PD_0_BASE);
+  pd0_reg = pd0_reg ^ 0x8;
+  address_test_write(SNPS_PD_0_BASE, pd0_reg);
+
+
+  // Disable PD0
+  pd0_reg = address_test_read(SNPS_PD_0_BASE);
+  pd0_reg = pd0_reg ^ 1;
+  address_test_write(SNPS_PD_0_BASE,pd0_reg);
+  printf("Disabled PD0 \n");
+  return 0;
+}
+
+int snps_pvt_ts_detect(void)
+{
+  int result;
+  int volatile rdata;
+  unsigned const int ts0_id     = 0x736E7473;
+  puts("Detect if TS0 is present...");
+  hardfault_occurred = 0;
+  hardfault_expected = 1;
+  rdata = address_test_read(SNPS_TS_0_BASE+ 0xC);
+  printf("TS0 ID: 0x%08X\n", rdata);
+  hardfault_expected = 0;
+  result = hardfault_occurred? 1 : 0;
+  hardfault_occurred = 0;
+  result = rdata == ts0_id? 0: 1;
+  if (result!=0) {
+    puts("** TEST SKIPPED ** TS0 is not present.\n");
+    UartEndSimulation();
+  }
+  return(result);
+}
+
+int snps_pvt_pd_detect(void)
+{
+  int result;
+  int volatile rdata;
+  unsigned const int pd0_id     = 0x736E7064;
+  puts("Detect if PD0 is present...");
+  hardfault_occurred = 0;
+  hardfault_expected = 1;
+  rdata = address_test_read(SNPS_PD_0_BASE+ 0xC);
+  printf("PD0 ID: 0x%08X\n", rdata);
+  hardfault_expected = 0;
+  result = hardfault_occurred? 1 : 0;
+  hardfault_occurred = 0;
+  result = rdata == pd0_id? 0: 1;
+  if (result!=0) {
+    puts("** TEST SKIPPED ** PD0 is not present.\n");
+    UartEndSimulation();
+  }
+  return(result);
+}
+
+
+
+#if defined ( __CC_ARM   )
+/* Test function for write - for ARM / Keil */
+__asm void address_test_write(unsigned int addr, unsigned int wdata)
+{
+  STR    R1,[R0]
+  DSB    ; Ensure bus fault occurred before leaving this subroutine
+  BX     LR
+}
+
+#else
+/* Test function for write - for gcc */
+void address_test_write(unsigned int addr, unsigned int wdata) __attribute__((naked));
+void address_test_write(unsigned int addr, unsigned int wdata)
+{
+  __asm("  str   r1,[r0]\n"
+        "  dsb          \n"
+        "  bx    lr     \n"
+  );
+}
+#endif
+
+/* Test function for read */
+#if defined ( __CC_ARM   )
+/* Test function for read - for ARM / Keil */
+__asm unsigned int address_test_read(unsigned int addr)
+{
+  LDR    R1,[R0]
+  DSB    ; Ensure bus fault occurred before leaving this subroutine
+  MOVS   R0, R1
+  BX     LR
+}
+#else
+/* Test function for read - for gcc */
+unsigned int  address_test_read(unsigned int addr) __attribute__((naked));
+unsigned int  address_test_read(unsigned int addr)
+{
+  __asm("  ldr   r1,[r0]\n"
+        "  dsb          \n"
+        "  movs  r0, r1 \n"
+        "  bx    lr     \n"
+  );
+}
+#endif
+
+
+#if defined ( __CC_ARM   )
+/* ARM or Keil toolchain */
+__asm void HardFault_Handler(void)
+{
+  MOVS   r0, #4
+  MOV    r1, LR
+  TST    r0, r1
+  BEQ    stacking_used_MSP
+  MRS    R0, PSP ; // first parameter - stacking was using PSP
+  B      get_LR_and_branch
+stacking_used_MSP
+  MRS    R0, MSP ; // first parameter - stacking was using MSP
+get_LR_and_branch
+  MOV    R1, LR  ; // second parameter is LR current value
+  LDR    R2,=__cpp(HardFault_Handler_c)
+  BX     R2
+  ALIGN
+}
+#else
+/* gcc toolchain */
+void HardFault_Handler(void) __attribute__((naked));
+void HardFault_Handler(void)
+{
+  __asm("  movs   r0,#4\n"
+        "  mov    r1,lr\n"
+        "  tst    r0,r1\n"
+        "  beq    stacking_used_MSP\n"
+        "  mrs    r0,psp\n" /*  first parameter - stacking was using PSP */
+        "  ldr    r1,=HardFault_Handler_c  \n"
+        "  bx     r1\n"
+        "stacking_used_MSP:\n"
+        "  mrs    r0,msp\n" /*  first parameter - stacking was using PSP */
+        "  ldr    r1,=HardFault_Handler_c  \n"
+        "  bx     r1\n"
+        ".pool\n" );
+}
+
+#endif
+/* C part of the fault handler - common between ARM / Keil /gcc */
+void HardFault_Handler_c(unsigned int * hardfault_args, unsigned lr_value)
+{
+  unsigned int stacked_pc;
+  unsigned int stacked_r0;
+  hardfault_occurred++;
+  if (hardfault_verbose) puts ("[Hard Fault Handler]");
+  if (hardfault_expected==0) {
+    puts ("ERROR : Unexpected HardFault interrupt occurred.\n");
+    UartEndSimulation();
+    while (1);
+    }
+  stacked_r0  = ((unsigned long) hardfault_args[0]);
+  stacked_pc  = ((unsigned long) hardfault_args[6]);
+  if (hardfault_verbose)  printf(" - Stacked R0 : 0x%x\n", stacked_r0);
+  if (hardfault_verbose)  printf(" - Stacked PC : 0x%x\n", stacked_pc);
+  /* Modify R0 to a valid address */
+  hardfault_args[0] = (unsigned long) &temp_data;
+
+  return;
+}
+
+
+
diff --git a/testcodes/snps_pvt_tests/makefile b/testcodes/snps_pvt_tests/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..54ba74fe2f7a04fea2b28c2b98863584df511100
--- /dev/null
+++ b/testcodes/snps_pvt_tests/makefile
@@ -0,0 +1,275 @@
+#-----------------------------------------------------------------------------
+# The confidential and proprietary information contained in this file may
+# only be used by a person authorised under and to the extent permitted
+# by a subsisting licensing agreement from Arm Limited or its affiliates.
+#
+#            (C) COPYRIGHT 2010-2013 Arm Limited or its affiliates.
+#                ALL RIGHTS RESERVED
+#
+# This entire notice must be reproduced on all copies of this file
+# and copies of this file may only be made by a person if such person is
+# permitted to do so under the terms of a subsisting license agreement
+# from Arm Limited or its affiliates.
+#
+#      SVN Information
+#
+#      Checked In          : $Date: 2017-10-10 15:55:38 +0100 (Tue, 10 Oct 2017) $
+#
+#      Revision            : $Revision: 371321 $
+#
+#      Release Information : Cortex-M System Design Kit-r1p1-00rel0
+#-----------------------------------------------------------------------------
+#
+# Cortex-M System Design Kit software compilation make file
+#
+#-----------------------------------------------------------------------------
+#
+#  Configurations
+#
+# Choose the core instantiated, can be
+#  - CORTEX_M0
+#  - CORTEX_M0PLUS
+CPU_PRODUCT = CORTEX_M0PLUS
+
+TARGET = arm-none-eabi
+# Shared software directory
+SOFTWARE_DIR = $(SOCLABS_NANOSOC_TECH_DIR)/software
+CMSIS_DIR    = $(SOFTWARE_DIR)/cmsis
+CORE_DIR     = $(CMSIS_DIR)/CMSIS/Include
+
+ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+  DEVICE_DIR = $(CMSIS_DIR)/Device/ARM/CMSDK_CM0plus
+else
+  DEVICE_DIR = $(CMSIS_DIR)/Device/ARM/CMSDK_CM0
+endif
+
+# Program file
+TESTNAME     = snps_pvt_tests
+
+# Endian Option
+COMPILE_BIGEND  = 0
+
+
+# Configuration
+ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+  USER_DEFINE    = -DCORTEX_M0PLUS
+else
+  USER_DEFINE    = -DCORTEX_M0
+endif
+
+DEPS_LIST        = makefile
+
+# Tool chain : ds5 / gcc / keil
+TOOL_CHAIN      = ds5
+
+ifeq ($(TOOL_CHAIN),ds5)
+  ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+    CPU_TYPE        = --cpu Cortex-M0plus
+  else
+    CPU_TYPE        = --cpu Cortex-M0
+  endif
+endif
+
+ifeq ($(TOOL_CHAIN),ds6)
+  ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+    CPU_TYPE        = -mcpu=Cortex-M0plus
+  else
+    CPU_TYPE        = -mcpu=Cortex-M0
+  endif
+endif
+
+ifeq ($(TOOL_CHAIN),gcc)
+  ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+    CPU_TYPE        = -mcpu=cortex-m0plus
+  else
+    CPU_TYPE        = -mcpu=cortex-m0
+  endif
+endif
+
+# Startup code directory for DS-5
+ifeq ($(TOOL_CHAIN),ds5)
+ STARTUP_DIR  = $(DEVICE_DIR)/Source/ARM
+endif
+
+ifeq ($(TOOL_CHAIN),ds6)
+ STARTUP_DIR  = $(DEVICE_DIR)/Source/ARM
+endif
+
+# Startup code directory for gcc
+ifeq ($(TOOL_CHAIN),gcc)
+ STARTUP_DIR  = $(DEVICE_DIR)/Source/GCC
+endif
+
+ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
+  STARTUP_FILE = startup_CMSDK_CM0plus
+  SYSTEM_FILE  = system_CMSDK_CM0plus
+else
+  STARTUP_FILE = startup_CMSDK_CM0
+  SYSTEM_FILE  = system_CMSDK_CM0
+endif
+
+# ---------------------------------------------------------------------------------------
+# D5-5 options
+
+# MicroLIB option
+COMPILE_MICROLIB = 0
+
+# Small Multiply (Cortex-M0/M0+ has small multiplier option)
+COMPILE_SMALLMUL = 0
+
+ifeq ($(TOOL_CHAIN),ds6)
+  ARM_TARGET = --target=arm-$(TARGET)
+  CC_TOOL   = armclang -O1
+  ASM_TOOL = armclang -masm=armasm $(ARM_TARGET) -c
+else
+  CC_TOOL   = armcc -O3
+  ASM_TOOL = armasm
+  ARM_TARGET = -Otime
+endif
+
+ARM_CC_OPTIONS   = $(ARM_TARGET) -c -g -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 0x30000000 --ro_base 0x00000000 --map
+
+ifeq ($(COMPILE_BIGEND),1)
+ # Big Endian
+ ARM_CC_OPTIONS   += --bigend
+ ARM_ASM_OPTIONS  += --bigend
+ ARM_LINK_OPTIONS += --be8
+endif
+
+ifeq ($(COMPILE_MICROLIB),1)
+ # MicroLIB
+ ARM_CC_OPTIONS   += --library_type=microlib
+ ARM_ASM_OPTIONS  += --library_type=microlib --pd "__MICROLIB SETA 1"
+ ARM_LINK_OPTIONS += --library_type=microlib
+endif
+
+ifeq ($(COMPILE_SMALLMUL),1)
+ # In Cortex-M0, small multiply takes 32 cycles
+ ARM_CC_OPTIONS   += --multiply_latency=32
+endif
+
+# ---------------------------------------------------------------------------------------
+# gcc options
+
+GNG_CC      = $(TARGET)-gcc
+GNU_OBJDUMP = $(TARGET)-objdump
+GNU_OBJCOPY = $(TARGET)-objcopy
+
+LINKER_SCRIPT_PATH = $(SOFTWARE_DIR)/common/scripts
+LINKER_SCRIPT = $(LINKER_SCRIPT_PATH)/cmsdk_cm0.ld
+
+GNU_CC_FLAGS = -g -O3 -mthumb $(CPU_TYPE)
+
+ifeq ($(COMPILE_BIGEND),1)
+ # Big Endian
+ GNU_CC_FLAGS   += -mbig-endian
+endif
+
+# ---------------------------------------------------------------------------------------
+all: all_$(TOOL_CHAIN)
+
+# ---------------------------------------------------------------------------------------
+# DS-5
+
+all_ds5 : $(TESTNAME).hex $(TESTNAME).lst
+all_ds6 : $(TESTNAME).hex $(TESTNAME).lst
+
+$(TESTNAME).o :  $(SOFTWARE_DIR)/common/validation/$(TESTNAME).c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+$(SYSTEM_FILE).o : $(DEVICE_DIR)/Source/$(SYSTEM_FILE).c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+retarget.o : $(SOFTWARE_DIR)/common/retarget/retarget.c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+uart_stdout.o : $(SOFTWARE_DIR)/common/retarget/uart_stdout.c $(DEPS_LIST)
+	$(CC_TOOL) $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+$(STARTUP_FILE).o : $(STARTUP_DIR)/$(STARTUP_FILE).s $(DEPS_LIST)
+	$(ASM_TOOL) $(ARM_ASM_OPTIONS) $(CPU_TYPE) $< -o  $@
+
+$(TESTNAME).ELF : $(TESTNAME).o $(SYSTEM_FILE).o $(STARTUP_FILE).o retarget.o uart_stdout.o
+	armlink $(ARM_LINK_OPTIONS) -o $@  $(TESTNAME).o $(SYSTEM_FILE).o $(STARTUP_FILE).o retarget.o uart_stdout.o
+
+$(TESTNAME).hex : $(TESTNAME).ELF
+	fromelf --vhx --8x1 $< --output  $@
+
+$(TESTNAME).lst : $(TESTNAME).ELF makefile
+	fromelf -c -d -e -s $< --output  $@
+
+# ---------------------------------------------------------------------------------------
+# gcc
+all_gcc:
+	$(GNG_CC) $(GNU_CC_FLAGS) $(STARTUP_DIR)/$(STARTUP_FILE).s \
+		$(SOFTWARE_DIR)/common/validation/$(TESTNAME).c \
+		$(SOFTWARE_DIR)/common/retarget/retarget.c \
+		$(SOFTWARE_DIR)/common/retarget/uart_stdout.c \
+		$(DEVICE_DIR)/Source/$(SYSTEM_FILE).c \
+		-I $(DEVICE_DIR)/Include -I $(CORE_DIR) \
+                -I $(SOFTWARE_DIR)/common/retarget  \
+		-L $(LINKER_SCRIPT_PATH) \
+		-D__STACK_SIZE=0x200 \
+		-D__HEAP_SIZE=0x1000 \
+		$(USER_DEFINE) -T $(LINKER_SCRIPT) -o $(TESTNAME).o
+	# Generate disassembly code
+	$(GNU_OBJDUMP) -S $(TESTNAME).o > $(TESTNAME).lst
+	# Generate binary file
+	$(GNU_OBJCOPY) -S $(TESTNAME).o -O binary $(TESTNAME).bin
+	# Generate hex file
+	$(GNU_OBJCOPY) -S $(TESTNAME).o -O verilog $(TESTNAME).hex
+
+# Note:
+# If the version of object copy you are using does not support verilog hex file output,
+# you can generate the hex file from binary file using the following command
+#       od -v -A n -t x1 --width=1  $(TESTNAME).bin > $(TESTNAME).hex
+
+# ---------------------------------------------------------------------------------------
+# Keil MDK
+
+all_keil:
+	@echo "Please compile your project code and press ENTER when ready"
+	@read dummy
+
+# ---------------------------------------------------------------------------------------
+# Binary
+
+all_bin: $(TESTNAME).bin
+	# Generate hex file from binary
+	od -v -A n -t x1 --width=1  $(TESTNAME).bin > $(TESTNAME).hex
+
+# ---------------------------------------------------------------------------------------
+# Clean
+
+clean :
+	@rm -rf *.o
+	@if [ -e $(TESTNAME).hex ] ; then \
+	  rm -rf $(TESTNAME).hex ; \
+	fi
+	@if [ -e $(TESTNAME).lst ] ; then \
+	  rm -rf $(TESTNAME).lst ; \
+	fi
+	@if [ -e $(TESTNAME).ELF ] ; then \
+	  rm -rf $(TESTNAME).ELF ; \
+	fi
+	@if [ -e $(TESTNAME).bin ] ; then \
+	  rm -rf $(TESTNAME).bin ; \
+	fi
+	@rm -rf *.crf
+	@rm -rf *.plg
+	@rm -rf *.tra
+	@rm -rf *.htm
+	@rm -rf *.map
+	@rm -rf *.dep
+	@rm -rf *.d
+	@rm -rf *.lnp
+	@rm -rf *.bak
+	@rm -rf *.lst
+	@rm -rf *.axf
+	@rm -rf *.sct
+	@rm -rf *.__i
+	@rm -rf *._ia
diff --git a/testcodes/snps_pvt_tests/snps_pvt_tests.hex b/testcodes/snps_pvt_tests/snps_pvt_tests.hex
new file mode 100644
index 0000000000000000000000000000000000000000..03129965c55107fc90647784f45138a134de2016
--- /dev/null
+++ b/testcodes/snps_pvt_tests/snps_pvt_tests.hex
@@ -0,0 +1,9080 @@
+78
+04
+00
+30
+39
+0A
+00
+00
+41
+0A
+00
+00
+BB
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+45
+0A
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+47
+0A
+00
+00
+49
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+4B
+0A
+00
+00
+00
+F0
+02
+F8
+00
+F0
+61
+F8
+12
+A0
+30
+C8
+08
+38
+24
+18
+2D
+18
+AC
+42
+01
+D1
+00
+F0
+58
+F8
+0F
+CC
+A2
+46
+AB
+46
+0C
+A7
+30
+CF
+2D
+1B
+08
+3F
+3F
+19
+7C
+42
+7F
+1E
+54
+44
+2D
+09
+04
+26
+F4
+41
+64
+1E
+AC
+42
+01
+D3
+00
+F0
+45
+F8
+01
+26
+33
+42
+00
+D0
+FB
+1A
+33
+43
+98
+47
+54
+46
+5D
+46
+DF
+E7
+00
+00
+10
+22
+00
+00
+30
+22
+00
+00
+10
+3A
+02
+D3
+78
+C8
+78
+C1
+FA
+D8
+52
+07
+01
+D3
+30
+C8
+30
+C1
+01
+D5
+04
+68
+0C
+60
+70
+47
+00
+00
+70
+47
+00
+00
+00
+23
+00
+24
+00
+25
+00
+26
+10
+3A
+01
+D3
+78
+C1
+FB
+D8
+52
+07
+00
+D3
+30
+C1
+00
+D5
+0B
+60
+70
+47
+10
+B5
+66
+29
+02
+D1
+02
+F0
+51
+F8
+10
+BD
+78
+29
+02
+D1
+00
+F0
+3A
+FD
+10
+BD
+00
+20
+10
+BD
+1F
+B5
+01
+F0
+96
+F9
+04
+00
+00
+20
+00
+21
+01
+F0
+25
+FF
+E0
+60
+1F
+BD
+10
+B5
+10
+BD
+01
+F0
+6D
+FD
+11
+46
+FF
+F7
+EF
+FF
+00
+F0
+9C
+F9
+01
+F0
+85
+FD
+03
+B4
+FF
+F7
+F2
+FF
+03
+BC
+00
+F0
+77
+FC
+01
+60
+BF
+F3
+4F
+8F
+70
+47
+01
+68
+BF
+F3
+4F
+8F
+08
+00
+70
+47
+04
+20
+71
+46
+08
+42
+02
+D0
+EF
+F3
+09
+80
+01
+E0
+EF
+F3
+08
+80
+71
+46
+01
+4A
+10
+47
+00
+00
+0F
+09
+00
+00
+F0
+B5
+85
+B0
+E4
+48
+02
+90
+E4
+48
+01
+90
+E4
+A0
+00
+F0
+C3
+FD
+EC
+4D
+28
+46
+FF
+F7
+DF
+FF
+04
+46
+01
+46
+EA
+A0
+00
+F0
+BC
+FC
+01
+21
+61
+40
+28
+46
+FF
+F7
+D1
+FF
+28
+46
+FF
+F7
+D2
+FF
+01
+46
+EC
+A0
+00
+F0
+B0
+FC
+2C
+46
+20
+46
+FF
+F7
+CA
+FF
+C0
+06
+FA
+D5
+F1
+A0
+00
+F0
+A7
+FC
+20
+46
+FF
+F7
+C2
+FF
+02
+21
+41
+40
+20
+46
+FF
+F7
+B9
+FF
+F1
+A0
+00
+F0
+9C
+FC
+20
+46
+FF
+F7
+B7
+FF
+C0
+01
+FA
+D5
+F2
+4E
+30
+46
+FF
+F7
+B1
+FF
+05
+46
+00
+F0
+AE
+FE
+01
+99
+01
+F0
+15
+FF
+EE
+4F
+39
+46
+00
+F0
+CB
+FD
+02
+99
+01
+F0
+66
+FF
+00
+F0
+9C
+FD
+02
+46
+0B
+46
+29
+46
+E9
+A0
+00
+F0
+7E
+FC
+20
+46
+FF
+F7
+99
+FF
+08
+25
+68
+40
+01
+46
+20
+46
+FF
+F7
+8F
+FF
+20
+46
+FF
+F7
+90
+FF
+01
+46
+00
+90
+E9
+A0
+00
+F0
+6D
+FC
+00
+98
+04
+21
+41
+40
+20
+46
+FF
+F7
+81
+FF
+F0
+A0
+00
+F0
+64
+FC
+20
+46
+FF
+F7
+7F
+FF
+C0
+01
+FA
+D5
+30
+46
+FF
+F7
+7A
+FF
+00
+90
+00
+F0
+77
+FE
+01
+99
+01
+F0
+DE
+FE
+39
+46
+00
+F0
+95
+FD
+02
+99
+01
+F0
+30
+FF
+00
+F0
+66
+FD
+02
+46
+0B
+46
+E9
+A0
+00
+99
+00
+F0
+48
+FC
+20
+46
+FF
+F7
+63
+FF
+68
+40
+01
+46
+20
+46
+FF
+F7
+5A
+FF
+20
+46
+FF
+F7
+5B
+FF
+C0
+01
+FA
+D5
+30
+46
+FF
+F7
+56
+FF
+05
+46
+00
+F0
+53
+FE
+01
+99
+01
+F0
+BA
+FE
+39
+46
+00
+F0
+71
+FD
+02
+99
+01
+F0
+0C
+FF
+00
+F0
+42
+FD
+02
+46
+0B
+46
+29
+46
+E1
+A0
+00
+F0
+24
+FC
+20
+46
+FF
+F7
+3F
+FF
+0C
+21
+41
+40
+20
+46
+FF
+F7
+36
+FF
+20
+46
+FF
+F7
+37
+FF
+00
+20
+05
+B0
+F0
+BD
+F8
+B5
+E2
+4E
+E2
+A0
+00
+F0
+0F
+FD
+E8
+4C
+00
+25
+65
+60
+01
+20
+A0
+60
+E6
+48
+FF
+F7
+27
+FF
+01
+46
+00
+90
+E5
+A0
+00
+F0
+04
+FC
+A5
+60
+60
+68
+65
+60
+00
+98
+B0
+42
+06
+D0
+01
+24
+E4
+A0
+00
+F0
+F8
+FC
+00
+F0
+D7
+FB
+00
+E0
+00
+24
+20
+46
+F8
+BD
+F0
+B5
+83
+B0
+3F
+20
+02
+90
+E7
+48
+01
+90
+20
+26
+E7
+A0
+00
+F0
+E8
+FC
+EF
+48
+FF
+F7
+05
+FF
+05
+46
+01
+46
+EE
+A0
+00
+F0
+E2
+FB
+F5
+4C
+20
+46
+FF
+F7
+FC
+FE
+01
+27
+78
+40
+01
+46
+20
+46
+FF
+F7
+F2
+FE
+20
+46
+FF
+F7
+F3
+FE
+01
+46
+7C
+A0
+00
+F0
+D1
+FB
+20
+46
+FF
+F7
+EC
+FE
+C0
+06
+FA
+D5
+EB
+A0
+00
+F0
+C9
+FB
+29
+46
+01
+25
+2D
+06
+69
+40
+DD
+48
+FF
+F7
+DC
+FE
+DB
+48
+FF
+F7
+DD
+FE
+01
+46
+00
+90
+E9
+A0
+00
+F0
+BA
+FB
+00
+98
+68
+40
+01
+46
+D6
+48
+FF
+F7
+CE
+FE
+20
+46
+FF
+F7
+CF
+FE
+02
+21
+41
+40
+20
+46
+FF
+F7
+C6
+FE
+EA
+A0
+00
+F0
+A9
+FB
+20
+46
+FF
+F7
+C4
+FE
+C0
+01
+FA
+D5
+EB
+48
+FF
+F7
+BF
+FE
+05
+46
+02
+98
+00
+F0
+B3
+FD
+00
+90
+28
+46
+70
+43
+00
+F0
+B6
+FD
+01
+99
+01
+F0
+1D
+FE
+00
+99
+00
+F0
+D4
+FC
+00
+F0
+A8
+FC
+02
+46
+0B
+46
+29
+46
+E1
+A0
+00
+F0
+8A
+FB
+20
+46
+FF
+F7
+A5
+FE
+08
+21
+41
+40
+20
+46
+FF
+F7
+9C
+FE
+20
+46
+FF
+F7
+9D
+FE
+78
+40
+01
+46
+20
+46
+FF
+F7
+94
+FE
+DE
+A0
+00
+F0
+77
+FB
+00
+20
+03
+B0
+F0
+BD
+F8
+B5
+DF
+4E
+DF
+A0
+00
+F0
+6D
+FC
+97
+4C
+00
+25
+65
+60
+01
+20
+A0
+60
+E2
+48
+FF
+F7
+85
+FE
+01
+46
+00
+90
+E1
+A0
+00
+F0
+62
+FB
+A5
+60
+60
+68
+65
+60
+00
+98
+B0
+42
+06
+D0
+01
+24
+E0
+A0
+00
+F0
+56
+FC
+00
+F0
+35
+FB
+00
+E0
+00
+24
+20
+46
+F8
+BD
+F8
+B5
+00
+26
+00
+F0
+E0
+FA
+E3
+A0
+00
+F0
+49
+FC
+ED
+A0
+00
+F0
+46
+FC
+CA
+A0
+00
+F0
+43
+FC
+82
+4D
+00
+24
+6C
+60
+01
+27
+AF
+60
+CD
+48
+FF
+F7
+5B
+FE
+01
+46
+00
+90
+CC
+A0
+00
+F0
+38
+FB
+AC
+60
+68
+68
+6C
+60
+C0
+48
+00
+99
+81
+42
+05
+D0
+CB
+A0
+00
+F0
+2C
+FC
+00
+F0
+0B
+FB
+02
+E0
+FF
+F7
+35
+FF
+06
+46
+E9
+A0
+00
+F0
+25
+FB
+6B
+A0
+00
+F0
+20
+FC
+6C
+60
+AF
+60
+70
+48
+FF
+F7
+3B
+FE
+01
+46
+00
+90
+6F
+A0
+00
+F0
+18
+FB
+AC
+60
+68
+68
+6C
+60
+62
+48
+00
+99
+81
+42
+05
+D0
+6E
+A0
+00
+F0
+0C
+FC
+00
+F0
+EB
+FA
+02
+E0
+FF
+F7
+3B
+FE
+86
+19
+00
+2E
+01
+D0
+31
+46
+C5
+E1
+CB
+E1
+00
+00
+33
+33
+A2
+42
+00
+80
+6D
+43
+54
+65
+73
+74
+69
+6E
+67
+20
+73
+74
+61
+74
+75
+73
+20
+72
+65
+61
+64
+2F
+77
+72
+69
+74
+65
+20
+61
+63
+63
+65
+73
+73
+20
+0A
+00
+00
+00
+10
+02
+40
+53
+74
+61
+74
+75
+73
+20
+61
+66
+74
+65
+72
+20
+72
+65
+73
+65
+74
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+0A
+00
+00
+00
+00
+53
+74
+61
+74
+75
+73
+20
+72
+65
+67
+69
+73
+74
+65
+72
+20
+61
+66
+74
+65
+72
+20
+65
+6E
+61
+62
+6C
+65
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+0A
+00
+00
+54
+53
+20
+72
+65
+73
+65
+74
+20
+72
+65
+6C
+65
+61
+73
+65
+64
+20
+0A
+00
+54
+53
+20
+52
+75
+6E
+20
+65
+6E
+61
+62
+6C
+65
+64
+20
+0A
+00
+00
+00
+00
+04
+10
+02
+40
+00
+E0
+7F
+45
+54
+65
+6D
+70
+65
+72
+61
+74
+75
+72
+65
+20
+72
+65
+61
+64
+20
+64
+61
+74
+61
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+3D
+20
+25
+66
+0A
+00
+53
+74
+61
+74
+75
+73
+20
+72
+65
+67
+69
+73
+74
+65
+72
+20
+61
+66
+74
+65
+72
+20
+63
+6C
+65
+61
+72
+20
+72
+65
+61
+64
+79
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+0A
+00
+54
+53
+20
+52
+75
+6E
+20
+63
+6F
+6E
+74
+69
+6E
+75
+6F
+75
+73
+20
+65
+6E
+61
+62
+6C
+65
+64
+20
+0A
+00
+54
+65
+6D
+70
+65
+72
+61
+74
+75
+72
+65
+20
+31
+20
+72
+65
+61
+64
+20
+64
+61
+74
+61
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+3D
+20
+25
+66
+0A
+00
+00
+00
+54
+65
+6D
+70
+65
+72
+61
+74
+75
+72
+65
+20
+32
+20
+72
+65
+61
+64
+20
+64
+61
+74
+61
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+3D
+20
+25
+66
+0A
+00
+00
+00
+73
+74
+6E
+73
+44
+65
+74
+65
+63
+74
+20
+69
+66
+20
+54
+53
+30
+20
+69
+73
+20
+70
+72
+65
+73
+65
+6E
+74
+2E
+2E
+2E
+00
+00
+00
+00
+30
+0C
+10
+02
+40
+54
+53
+30
+20
+49
+44
+3A
+20
+30
+78
+25
+30
+38
+58
+0A
+00
+2A
+2A
+20
+54
+45
+53
+54
+20
+53
+4B
+49
+50
+50
+45
+44
+20
+2A
+2A
+20
+54
+53
+30
+20
+69
+73
+20
+6E
+6F
+74
+20
+70
+72
+65
+73
+65
+6E
+74
+2E
+0A
+00
+00
+00
+C0
+40
+54
+65
+73
+74
+69
+6E
+67
+20
+50
+44
+30
+20
+73
+74
+61
+74
+75
+73
+20
+72
+65
+61
+64
+2F
+77
+72
+69
+74
+65
+20
+61
+63
+63
+65
+73
+73
+20
+0A
+00
+00
+68
+10
+02
+40
+43
+6F
+6E
+66
+69
+67
+20
+72
+65
+67
+73
+20
+61
+66
+74
+65
+72
+20
+72
+65
+73
+65
+74
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+0A
+00
+00
+00
+60
+10
+02
+40
+50
+44
+20
+72
+65
+73
+65
+74
+20
+72
+65
+6C
+65
+61
+73
+65
+64
+20
+0A
+00
+43
+6F
+6E
+66
+69
+67
+20
+72
+65
+67
+73
+20
+61
+66
+74
+65
+72
+20
+63
+6F
+6E
+66
+69
+67
+20
+6C
+6F
+61
+64
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+0A
+00
+50
+44
+20
+52
+75
+6E
+20
+65
+6E
+61
+62
+6C
+65
+64
+20
+0A
+00
+00
+00
+00
+64
+10
+02
+40
+50
+44
+20
+72
+65
+61
+64
+20
+64
+61
+74
+61
+3A
+20
+30
+78
+25
+30
+38
+58
+20
+3D
+20
+25
+66
+20
+0A
+00
+44
+69
+73
+61
+62
+6C
+65
+64
+20
+50
+44
+30
+20
+0A
+00
+00
+64
+70
+6E
+73
+44
+65
+74
+65
+63
+74
+20
+69
+66
+20
+50
+44
+30
+20
+69
+73
+20
+70
+72
+65
+73
+65
+6E
+74
+2E
+2E
+2E
+00
+6C
+10
+02
+40
+50
+44
+30
+20
+49
+44
+3A
+20
+30
+78
+25
+30
+38
+58
+0A
+00
+2A
+2A
+20
+54
+45
+53
+54
+20
+53
+4B
+49
+50
+50
+45
+44
+20
+2A
+2A
+20
+50
+44
+30
+20
+69
+73
+20
+6E
+6F
+74
+20
+70
+72
+65
+73
+65
+6E
+74
+2E
+0A
+00
+0A
+43
+6F
+72
+74
+65
+78
+20
+4D
+69
+63
+72
+6F
+63
+6F
+6E
+74
+72
+6F
+6C
+6C
+65
+72
+20
+53
+79
+73
+74
+65
+6D
+20
+44
+65
+73
+69
+67
+6E
+20
+4B
+69
+74
+00
+00
+00
+20
+2D
+20
+53
+79
+6E
+6F
+70
+73
+79
+73
+20
+50
+56
+54
+20
+74
+65
+73
+74
+20
+2D
+20
+72
+65
+76
+69
+73
+69
+6F
+6E
+20
+24
+52
+65
+76
+69
+73
+69
+6F
+6E
+3A
+20
+33
+37
+31
+33
+32
+31
+20
+24
+0A
+00
+00
+00
+00
+0A
+0A
+20
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+2A
+20
+0A
+0A
+00
+00
+18
+A0
+00
+F0
+3B
+F9
+00
+F0
+18
+F9
+00
+20
+F8
+BD
+20
+A0
+00
+F0
+34
+F9
+F7
+E7
+70
+B5
+22
+4C
+05
+46
+60
+68
+40
+1C
+60
+60
+20
+68
+00
+28
+02
+D0
+1F
+A0
+00
+F0
+25
+FA
+A0
+68
+00
+28
+11
+D0
+20
+68
+AE
+69
+29
+68
+00
+28
+09
+D0
+20
+A0
+00
+F0
+1C
+F9
+20
+68
+00
+28
+03
+D0
+31
+46
+22
+A0
+00
+F0
+15
+F9
+27
+48
+28
+60
+70
+BD
+26
+A0
+00
+F0
+0D
+FA
+00
+F0
+EC
+F8
+FE
+E7
+0A
+2A
+2A
+20
+54
+45
+53
+54
+20
+46
+41
+49
+4C
+45
+44
+20
+2A
+2A
+2C
+20
+45
+72
+72
+6F
+72
+20
+63
+6F
+64
+65
+20
+3D
+20
+28
+30
+78
+25
+78
+29
+0A
+00
+00
+00
+00
+0A
+2A
+2A
+20
+54
+45
+53
+54
+20
+50
+41
+53
+53
+45
+44
+20
+2A
+2A
+0A
+00
+00
+00
+00
+30
+5B
+48
+61
+72
+64
+20
+46
+61
+75
+6C
+74
+20
+48
+61
+6E
+64
+6C
+65
+72
+5D
+00
+00
+00
+00
+20
+2D
+20
+53
+74
+61
+63
+6B
+65
+64
+20
+52
+30
+20
+3A
+20
+30
+78
+25
+78
+0A
+00
+00
+00
+20
+2D
+20
+53
+74
+61
+63
+6B
+65
+64
+20
+50
+43
+20
+3A
+20
+30
+78
+25
+78
+0A
+00
+00
+00
+0C
+00
+00
+30
+45
+52
+52
+4F
+52
+20
+3A
+20
+55
+6E
+65
+78
+70
+65
+63
+74
+65
+64
+20
+48
+61
+72
+64
+46
+61
+75
+6C
+74
+20
+69
+6E
+74
+65
+72
+72
+75
+70
+74
+20
+6F
+63
+63
+75
+72
+72
+65
+64
+2E
+0A
+00
+00
+00
+04
+49
+03
+48
+08
+60
+70
+47
+02
+49
+01
+48
+08
+60
+70
+47
+00
+1C
+4E
+0E
+10
+00
+00
+30
+07
+48
+80
+47
+07
+48
+00
+47
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+04
+48
+05
+49
+05
+4A
+06
+4B
+70
+47
+00
+00
+29
+0A
+00
+00
+C1
+00
+00
+00
+78
+00
+00
+30
+78
+04
+00
+30
+78
+02
+00
+30
+78
+02
+00
+30
+10
+B5
+C0
+B2
+00
+F0
+36
+F8
+10
+BD
+10
+B5
+00
+F0
+42
+F8
+00
+F0
+30
+F8
+10
+BD
+00
+20
+C0
+43
+70
+47
+10
+B5
+C0
+B2
+00
+F0
+28
+F8
+10
+BD
+FE
+E7
+2E
+48
+00
+21
+81
+60
+2E
+49
+01
+61
+01
+21
+81
+60
+2D
+48
+03
+21
+01
+61
+81
+60
+2C
+49
+20
+20
+88
+61
+70
+47
+2C
+48
+2A
+49
+01
+60
+2B
+49
+81
+61
+01
+21
+C1
+60
+C3
+21
+81
+60
+01
+69
+C9
+07
+FC
+D0
+24
+49
+20
+20
+88
+61
+21
+48
+00
+21
+81
+60
+30
+21
+01
+61
+03
+21
+81
+60
+70
+47
+1D
+49
+8A
+68
+D2
+07
+04
+D0
+4A
+68
+D2
+07
+FC
+D1
+08
+60
+70
+47
+17
+4A
+53
+68
+DB
+07
+FC
+D1
+10
+60
+08
+60
+70
+47
+13
+4B
+15
+48
+59
+68
+42
+68
+89
+07
+C9
+17
+92
+07
+D2
+17
+49
+1C
+52
+1C
+11
+42
+F5
+D1
+59
+68
+89
+07
+01
+D5
+18
+68
+03
+E0
+41
+68
+89
+07
+01
+D5
+00
+68
+C0
+B2
+70
+47
+0A
+48
+04
+21
+82
+68
+D2
+07
+04
+D0
+42
+68
+D2
+07
+FC
+D1
+01
+60
+FE
+E7
+03
+4A
+53
+68
+DB
+07
+FC
+D1
+11
+60
+01
+60
+F7
+E7
+00
+60
+00
+40
+6A
+18
+00
+00
+00
+E0
+00
+40
+00
+10
+01
+40
+8E
+0C
+01
+00
+00
+20
+00
+40
+24
+F4
+00
+00
+70
+47
+00
+00
+0F
+B4
+05
+49
+10
+B5
+03
+AA
+02
+98
+00
+F0
+7D
+FC
+10
+BC
+08
+BC
+04
+B0
+18
+47
+00
+00
+14
+00
+00
+30
+70
+B5
+04
+46
+85
+69
+00
+68
+C1
+06
+01
+D5
+30
+26
+00
+E0
+20
+26
+C0
+07
+07
+D0
+70
+BD
+62
+68
+30
+46
+A1
+68
+90
+47
+20
+6A
+40
+1C
+20
+62
+6D
+1E
+F6
+D5
+70
+BD
+70
+B5
+04
+46
+85
+69
+00
+78
+C0
+07
+07
+D1
+70
+BD
+62
+68
+A1
+68
+20
+20
+90
+47
+20
+6A
+40
+1C
+20
+62
+6D
+1E
+F6
+D5
+70
+BD
+00
+00
+70
+B5
+04
+46
+0D
+46
+21
+46
+10
+68
+C0
+46
+C0
+46
+21
+88
+09
+05
+02
+D5
+0F
+4A
+7A
+44
+02
+E0
+0E
+4A
+7A
+44
+0E
+32
+23
+46
+00
+21
+24
+33
+05
+E0
+06
+07
+00
+09
+36
+0F
+96
+5D
+5E
+54
+49
+1C
+00
+28
+F7
+D1
+20
+78
+00
+23
+00
+07
+05
+D5
+70
+2D
+03
+D0
+00
+29
+01
+D0
+02
+23
+11
+32
+20
+46
+00
+F0
+C2
+F9
+70
+BD
+1A
+16
+00
+00
+F3
+B5
+04
+46
+00
+20
+81
+B0
+20
+62
+20
+46
+E1
+68
+88
+47
+00
+28
+7D
+D0
+25
+28
+02
+D0
+62
+68
+A1
+68
+83
+E0
+45
+4F
+00
+25
+7F
+44
+20
+46
+E1
+68
+88
+47
+20
+28
+06
+46
+08
+DB
+31
+2E
+06
+D2
+B8
+19
+20
+38
+00
+78
+00
+28
+01
+D0
+05
+43
+F0
+E7
+A8
+07
+01
+D5
+04
+20
+85
+43
+00
+20
+E0
+61
+07
+46
+A0
+61
+2A
+2E
+0A
+D0
+30
+46
+01
+F0
+94
+F9
+00
+28
+27
+D0
+B8
+00
+00
+19
+30
+3E
+00
+90
+86
+61
+19
+E0
+02
+98
+BA
+00
+12
+19
+02
+C8
+91
+61
+02
+90
+20
+46
+E1
+68
+88
+47
+01
+2F
+06
+46
+17
+D1
+E0
+69
+00
+28
+1F
+DA
+20
+20
+85
+43
+1C
+E0
+00
+98
+0A
+21
+80
+69
+48
+43
+00
+99
+80
+19
+30
+38
+88
+61
+20
+46
+E1
+68
+88
+47
+06
+46
+01
+F0
+6C
+F9
+00
+28
+EF
+D1
+01
+2F
+0A
+D0
+2E
+2E
+08
+D1
+20
+46
+E1
+68
+88
+47
+06
+46
+20
+20
+05
+43
+7F
+1C
+02
+2F
+C3
+DB
+A0
+69
+00
+28
+03
+DA
+40
+42
+A0
+61
+01
+20
+05
+43
+E8
+07
+01
+D0
+10
+20
+85
+43
+00
+2E
+24
+D0
+30
+46
+41
+38
+19
+28
+03
+D8
+01
+20
+C0
+02
+05
+43
+20
+36
+20
+46
+25
+60
+31
+46
+02
+9A
+15
+46
+FF
+F7
+0F
+FA
+00
+28
+0C
+D0
+01
+28
+07
+D0
+ED
+1D
+E8
+08
+00
+E0
+0D
+E0
+C0
+00
+08
+30
+02
+90
+77
+E7
+2D
+1D
+02
+95
+74
+E7
+62
+68
+30
+46
+A1
+68
+90
+47
+20
+6A
+40
+1C
+6C
+E7
+20
+6A
+FE
+BD
+00
+00
+DE
+15
+00
+00
+10
+B5
+04
+46
+03
+E0
+FF
+F7
+7B
+FE
+40
+1C
+08
+D0
+20
+78
+05
+49
+64
+1C
+00
+28
+F6
+D1
+0A
+20
+FF
+F7
+71
+FE
+10
+BD
+00
+20
+C0
+43
+10
+BD
+00
+00
+14
+00
+00
+30
+70
+47
+70
+47
+70
+47
+00
+00
+01
+21
+C9
+05
+01
+23
+41
+18
+42
+00
+1B
+06
+D3
+18
+5B
+0E
+0A
+D0
+C1
+10
+07
+22
+D2
+06
+89
+18
+40
+07
+52
+42
+D1
+42
+01
+D5
+52
+00
+89
+18
+70
+47
+09
+02
+08
+D5
+01
+46
+00
+2A
+03
+D0
+C1
+0F
+C9
+07
+00
+20
+70
+47
+10
+46
+70
+47
+42
+02
+02
+D0
+00
+20
+02
+49
+70
+47
+07
+21
+09
+05
+01
+43
+F4
+E7
+00
+00
+F8
+7F
+F0
+B5
+FF
+25
+2D
+04
+C6
+09
+C2
+09
+FF
+27
+04
+46
+2E
+40
+01
+37
+CB
+09
+3E
+43
+48
+40
+2A
+40
+2B
+40
+07
+46
+00
+2A
+6B
+D0
+00
+2B
+69
+D0
+AA
+42
+67
+D0
+AB
+42
+65
+D0
+00
+28
+00
+DA
+32
+46
+01
+25
+ED
+05
+29
+43
+2C
+43
+09
+02
+20
+02
+09
+0A
+D2
+1A
+4B
+0C
+7F
+24
+E3
+1A
+43
+4C
+00
+0A
+7C
+44
+E3
+5C
+7D
+24
+24
+04
+12
+19
+14
+14
+5B
+00
+A2
+18
+88
+42
+01
+D3
+52
+1C
+00
+E0
+40
+00
+49
+42
+0C
+46
+5C
+43
+24
+11
+5C
+43
+DB
+01
+64
+15
+E3
+18
+04
+0A
+5C
+43
+C5
+02
+20
+0D
+0C
+46
+44
+43
+64
+19
+25
+0A
+5D
+43
+23
+03
+EC
+0C
+0D
+46
+65
+43
+00
+03
+00
+19
+EB
+18
+4C
+42
+A3
+42
+01
+D3
+5B
+18
+40
+1C
+D4
+05
+20
+18
+00
+2B
+07
+D0
+5B
+00
+C9
+18
+04
+D3
+40
+1C
+00
+29
+01
+D1
+40
+08
+40
+00
+3F
+21
+89
+04
+8A
+42
+09
+D3
+00
+2A
+08
+DC
+11
+06
+09
+0F
+04
+D0
+03
+21
+49
+07
+40
+18
+C0
+0F
+C0
+07
+F0
+BD
+01
+22
+41
+00
+12
+06
+89
+18
+7F
+22
+52
+06
+91
+42
+F6
+D2
+05
+21
+49
+07
+C8
+42
+01
+D5
+90
+10
+F0
+BD
+FF
+20
+C0
+05
+F0
+BD
+00
+2F
+00
+DA
+32
+46
+16
+48
+AA
+42
+07
+D2
+AB
+42
+05
+D2
+19
+02
+09
+0E
+17
+D0
+F8
+0F
+C0
+07
+F0
+BD
+FF
+25
+63
+00
+2D
+06
+AB
+42
+F9
+D8
+49
+00
+A9
+42
+F6
+D8
+AB
+42
+01
+D1
+A9
+42
+F2
+D0
+A9
+42
+01
+D1
+00
+21
+01
+E0
+61
+00
+49
+08
+D0
+05
+08
+43
+F0
+BD
+11
+02
+09
+0E
+FB
+D0
+FF
+20
+02
+43
+D0
+05
+F0
+BD
+0A
+46
+01
+46
+10
+46
+54
+E7
+00
+00
+03
+14
+00
+00
+00
+00
+C0
+7F
+1F
+22
+03
+0C
+02
+D1
+0F
+22
+00
+04
+1C
+D0
+03
+0E
+01
+D1
+00
+02
+08
+3A
+03
+0F
+01
+D1
+00
+01
+12
+1F
+83
+0F
+01
+D1
+80
+00
+92
+1E
+00
+28
+01
+DB
+40
+00
+52
+1E
+D2
+05
+51
+18
+02
+12
+51
+18
+19
+22
+90
+40
+04
+D3
+49
+1C
+00
+28
+01
+D1
+49
+08
+49
+00
+08
+46
+70
+47
+C1
+0F
+C9
+07
+00
+D0
+40
+42
+01
+22
+92
+07
+11
+43
+D3
+E7
+01
+21
+89
+07
+D0
+E7
+FF
+B5
+04
+46
+0D
+46
+81
+B0
+24
+30
+00
+90
+21
+68
+88
+06
+04
+D5
+10
+22
+E0
+69
+91
+43
+21
+60
+00
+E0
+01
+20
+A8
+42
+01
+DD
+47
+1B
+00
+E0
+00
+27
+04
+98
+A1
+69
+7A
+19
+10
+18
+08
+1A
+A0
+61
+20
+78
+C0
+06
+02
+D4
+20
+46
+FF
+F7
+CD
+FD
+00
+26
+08
+E0
+03
+98
+62
+68
+A1
+68
+80
+5D
+90
+47
+20
+6A
+40
+1C
+76
+1C
+20
+62
+04
+98
+86
+42
+F3
+DB
+20
+78
+C0
+06
+0A
+D5
+20
+46
+FF
+F7
+B9
+FD
+06
+E0
+62
+68
+A1
+68
+30
+20
+90
+47
+20
+6A
+40
+1C
+20
+62
+38
+46
+7F
+1E
+00
+28
+F4
+DC
+07
+E0
+00
+98
+62
+68
+A1
+68
+40
+5D
+90
+47
+20
+6A
+40
+1C
+20
+62
+28
+46
+6D
+1E
+00
+28
+F3
+DC
+20
+46
+FF
+F7
+B3
+FD
+20
+78
+00
+06
+02
+D5
+02
+20
+05
+B0
+F0
+BD
+01
+20
+FB
+E7
+00
+00
+FF
+B5
+0C
+46
+1E
+46
+8F
+B0
+03
+CA
+08
+90
+09
+91
+4F
+00
+7D
+0D
+00
+D1
+6D
+1E
+00
+21
+08
+46
+00
+20
+C0
+46
+03
+21
+09
+9A
+89
+05
+08
+40
+00
+2A
+03
+DA
+82
+00
+80
+18
+40
+08
+08
+40
+80
+0D
+01
+28
+0A
+90
+02
+DD
+00
+20
+C0
+43
+0A
+90
+08
+98
+07
+43
+0D
+D0
+F0
+48
+F0
+49
+28
+18
+48
+43
+07
+14
+18
+98
+00
+28
+1D
+D0
+75
+42
+29
+1E
+1D
+DD
+0A
+98
+42
+42
+1B
+E0
+18
+98
+01
+28
+02
+D0
+00
+20
+30
+21
+04
+E0
+00
+20
+F2
+43
+05
+E0
+21
+54
+40
+1C
+B0
+42
+FB
+DB
+30
+46
+00
+22
+18
+9B
+00
+21
+21
+54
+0F
+99
+8B
+60
+0A
+60
+48
+60
+13
+B0
+F0
+BD
+BD
+1B
+6D
+1C
+DF
+E7
+0A
+9A
+00
+29
+00
+DA
+69
+42
+0B
+A8
+00
+F0
+69
+FA
+0B
+AB
+07
+CB
+03
+AB
+07
+C3
+08
+99
+09
+98
+00
+F0
+CD
+FA
+6B
+46
+07
+C3
+01
+46
+D4
+48
+09
+18
+00
+2D
+00
+91
+0B
+DD
+D2
+49
+03
+98
+0A
+9A
+49
+42
+40
+18
+00
+23
+03
+A9
+03
+90
+68
+46
+00
+F0
+2A
+FD
+08
+E0
+03
+99
+0A
+9A
+00
+23
+08
+18
+03
+A9
+03
+90
+68
+46
+00
+F0
+CA
+FC
+6B
+46
+07
+C3
+00
+04
+00
+0C
+03
+D0
+00
+20
+C0
+43
+41
+08
+00
+E0
+10
+46
+18
+9A
+00
+2A
+03
+D0
+00
+22
+00
+92
+15
+46
+1E
+E0
+75
+1E
+05
+D4
+00
+F0
+95
+F9
+30
+32
+62
+55
+6D
+1E
+F9
+D5
+01
+22
+08
+43
+07
+96
+02
+D0
+00
+22
+7F
+1C
+04
+E0
+20
+78
+30
+28
+01
+D1
+00
+22
+7F
+1E
+00
+2A
+06
+97
+87
+D0
+1E
+E0
+11
+2D
+07
+DA
+00
+F0
+7D
+F9
+30
+32
+62
+55
+6D
+1C
+02
+46
+0A
+43
+F5
+D1
+08
+43
+03
+D0
+00
+98
+00
+28
+19
+D0
+0E
+E0
+00
+21
+68
+1E
+05
+E0
+23
+5C
+62
+5C
+63
+54
+22
+54
+40
+1E
+49
+1C
+81
+42
+F7
+DB
+A8
+1B
+40
+1E
+07
+95
+06
+90
+07
+9A
+18
+99
+00
+20
+A0
+54
+0F
+98
+07
+9B
+06
+9A
+81
+60
+0C
+C0
+7C
+E7
+11
+26
+00
+20
+18
+90
+59
+E7
+D2
+1D
+F0
+B5
+0D
+46
+04
+46
+D1
+08
+93
+B0
+C9
+00
+03
+C9
+0C
+90
+0D
+91
+00
+F0
+BA
+FE
+02
+46
+0D
+98
+C0
+0F
+01
+D0
+2D
+20
+07
+E0
+20
+68
+81
+07
+01
+D5
+2B
+20
+02
+E0
+40
+07
+C0
+0F
+40
+01
+03
+2A
+0F
+90
+01
+D0
+07
+2A
+05
+DB
+03
+46
+29
+46
+20
+46
+00
+F0
+86
+F9
+0E
+E1
+20
+78
+80
+06
+01
+D5
+E7
+69
+00
+E0
+06
+27
+28
+46
+65
+2D
+04
+D0
+66
+28
+14
+D0
+67
+2D
+69
+D1
+2D
+E0
+00
+20
+11
+2F
+00
+90
+01
+DB
+11
+23
+00
+E0
+7B
+1C
+0C
+AA
+03
+A9
+10
+A8
+FF
+F7
+F3
+FE
+11
+99
+00
+26
+10
+98
+7D
+1C
+0E
+91
+42
+E0
+01
+20
+3B
+46
+0C
+AA
+C0
+07
+0B
+90
+01
+20
+00
+90
+03
+A9
+10
+A8
+FF
+F7
+E2
+FE
+11
+9D
+12
+98
+10
+99
+00
+26
+00
+28
+0E
+95
+01
+D1
+78
+1C
+0D
+18
+78
+1B
+02
+D4
+46
+42
+7D
+1C
+76
+1E
+E8
+1B
+00
+90
+3A
+E0
+01
+2F
+00
+DA
+01
+27
+00
+20
+11
+2F
+00
+90
+01
+DD
+11
+23
+00
+E0
+3B
+46
+0C
+AA
+03
+A9
+10
+A8
+FF
+F7
+C2
+FE
+11
+99
+3D
+46
+10
+98
+00
+26
+0E
+91
+21
+78
+09
+07
+0B
+D4
+0E
+99
+A9
+42
+00
+DA
+0D
+46
+03
+A9
+01
+2D
+04
+DD
+4A
+19
+20
+3A
+D2
+7F
+30
+2A
+06
+D0
+B8
+42
+01
+DA
+01
+1D
+04
+DA
+01
+21
+00
+91
+0F
+E0
+6D
+1E
+EF
+E7
+00
+28
+02
+DC
+86
+19
+2D
+1A
+03
+E0
+41
+1C
+A9
+42
+00
+DD
+0D
+46
+80
+1B
+40
+1C
+00
+90
+01
+20
+C0
+07
+0B
+90
+20
+78
+00
+07
+05
+D4
+00
+98
+A8
+42
+02
+DB
+00
+20
+C0
+43
+00
+90
+69
+46
+00
+20
+C8
+72
+0B
+98
+01
+21
+02
+AF
+03
+37
+C9
+07
+88
+42
+25
+D0
+02
+20
+10
+90
+2B
+20
+11
+90
+0B
+98
+00
+28
+0B
+DA
+40
+42
+0B
+90
+2D
+20
+11
+90
+06
+E0
+0B
+98
+00
+F0
+5C
+FC
+30
+31
+7F
+1E
+0B
+90
+39
+70
+10
+99
+48
+1E
+00
+29
+10
+90
+F3
+DC
+0B
+98
+00
+28
+F0
+D1
+11
+98
+7F
+1E
+38
+70
+20
+88
+00
+05
+01
+D5
+45
+20
+00
+E0
+65
+20
+7F
+1E
+38
+70
+01
+A8
+C0
+1B
+C0
+1D
+0B
+90
+0F
+98
+00
+28
+00
+D0
+01
+20
+41
+19
+00
+98
+C0
+17
+09
+18
+0B
+98
+08
+18
+A1
+69
+08
+1A
+40
+1E
+A0
+61
+20
+78
+C0
+06
+02
+D4
+20
+46
+FF
+F7
+D9
+FB
+0F
+98
+00
+28
+05
+D0
+62
+68
+A1
+68
+90
+47
+20
+6A
+40
+1C
+20
+62
+20
+78
+C0
+06
+25
+D5
+20
+46
+FF
+F7
+CA
+FB
+21
+E0
+00
+2E
+07
+DB
+0E
+98
+B0
+42
+04
+DD
+03
+A8
+62
+68
+80
+5D
+A1
+68
+02
+E0
+62
+68
+A1
+68
+30
+20
+90
+47
+20
+6A
+76
+1C
+40
+1C
+20
+62
+00
+98
+40
+1E
+00
+28
+00
+90
+0A
+D1
+00
+F0
+3A
+F8
+C0
+68
+62
+68
+01
+68
+40
+5C
+A1
+68
+90
+47
+20
+6A
+40
+1C
+20
+62
+28
+46
+6D
+1E
+00
+28
+D9
+DC
+07
+E0
+62
+68
+38
+78
+A1
+68
+7F
+1C
+90
+47
+20
+6A
+40
+1C
+20
+62
+0B
+99
+48
+1E
+00
+29
+0B
+90
+F2
+DC
+20
+46
+FF
+F7
+A8
+FB
+03
+20
+42
+E6
+01
+FC
+FF
+FF
+10
+4D
+00
+00
+E1
+DF
+FF
+FF
+08
+4B
+70
+B5
+0D
+46
+7B
+44
+00
+F0
+55
+F8
+04
+46
+28
+46
+FF
+F7
+FB
+FA
+00
+28
+02
+D0
+00
+20
+C0
+43
+70
+BD
+20
+46
+70
+BD
+00
+00
+EB
+F5
+FF
+FF
+00
+48
+70
+47
+38
+00
+00
+30
+0B
+46
+70
+B5
+02
+46
+89
+07
+80
+08
+08
+43
+19
+46
+9D
+08
+14
+1A
+A9
+41
+25
+09
+08
+07
+05
+43
+08
+09
+2C
+19
+48
+41
+25
+0A
+01
+06
+0D
+43
+01
+0A
+2C
+19
+41
+41
+20
+0C
+0D
+04
+28
+43
+0D
+0C
+00
+19
+4D
+41
+00
+21
+40
+19
+4D
+41
+C0
+08
+69
+07
+08
+43
+E9
+08
+84
+0F
+8D
+00
+25
+43
+84
+00
+24
+18
+4D
+41
+24
+19
+6D
+41
+12
+1B
+AB
+41
+07
+E0
+09
+25
+ED
+43
+2C
+11
+52
+19
+63
+41
+00
+24
+40
+1C
+61
+41
+1C
+46
+0A
+25
+00
+26
+55
+1B
+B4
+41
+F1
+D2
+70
+BD
+00
+00
+01
+69
+4A
+1C
+02
+61
+08
+78
+70
+47
+00
+B5
+8F
+B0
+02
+91
+00
+21
+05
+91
+05
+49
+01
+93
+79
+44
+03
+91
+11
+46
+04
+90
+68
+46
+FF
+F7
+75
+FB
+0F
+B0
+00
+BD
+00
+00
+E5
+FF
+FF
+FF
+F8
+B5
+1F
+46
+04
+46
+01
+23
+00
+68
+DB
+02
+03
+26
+01
+46
+18
+40
+07
+2A
+05
+DB
+00
+28
+01
+D0
+17
+A5
+06
+E0
+17
+A5
+04
+E0
+00
+28
+01
+D0
+16
+A5
+00
+E0
+16
+A5
+10
+20
+81
+43
+21
+60
+A0
+69
+C0
+1E
+00
+2F
+A0
+61
+01
+D0
+40
+1E
+A0
+61
+20
+46
+FF
+F7
+F9
+FA
+00
+2F
+09
+D0
+38
+46
+62
+68
+A1
+68
+90
+47
+20
+6A
+40
+1C
+20
+62
+C0
+1C
+20
+62
+06
+E0
+20
+6A
+FA
+E7
+62
+68
+28
+78
+A1
+68
+6D
+1C
+90
+47
+76
+1E
+F8
+D2
+20
+46
+FF
+F7
+F7
+FA
+F8
+BD
+4E
+41
+4E
+00
+6E
+61
+6E
+00
+49
+4E
+46
+00
+69
+6E
+66
+00
+F7
+B5
+16
+46
+8A
+B0
+33
+48
+78
+44
+6C
+46
+03
+46
+7C
+33
+C0
+6F
+5A
+68
+9B
+68
+0D
+C4
+2E
+48
+78
+44
+76
+30
+03
+AC
+0D
+C8
+0D
+C4
+37
+20
+C0
+01
+08
+18
+37
+21
+1B
+30
+00
+F0
+B9
+FB
+05
+46
+0C
+46
+80
+3D
+1B
+3C
+02
+D5
+64
+42
+01
+20
+00
+E0
+00
+20
+00
+27
+09
+90
+10
+E0
+E0
+07
+0C
+D0
+0C
+20
+20
+49
+78
+43
+79
+44
+32
+46
+4C
+39
+41
+18
+68
+46
+01
+23
+00
+F0
+54
+FA
+6B
+46
+07
+C3
+64
+10
+7F
+1C
+00
+2C
+EC
+D1
+18
+4F
+7F
+44
+2E
+3F
+16
+E0
+E8
+07
+12
+D0
+20
+01
+C0
+19
+0E
+C8
+06
+91
+08
+93
+07
+92
+00
+68
+F0
+42
+01
+D1
+98
+19
+08
+90
+32
+46
+01
+23
+06
+A9
+03
+A8
+00
+F0
+37
+FA
+03
+AB
+07
+C3
+6D
+10
+64
+1C
+00
+2D
+E6
+D1
+09
+98
+00
+28
+06
+D0
+32
+46
+69
+46
+01
+23
+03
+A8
+00
+F0
+7E
+FA
+05
+E0
+01
+23
+32
+46
+69
+46
+03
+A8
+00
+F0
+21
+FA
+0A
+9B
+07
+C3
+0D
+B0
+F0
+BD
+00
+00
+A4
+0C
+00
+00
+03
+46
+40
+00
+0A
+46
+10
+B5
+40
+0D
+0B
+D0
+01
+21
+C9
+07
+0F
+24
+A4
+02
+00
+19
+1C
+03
+64
+08
+21
+43
+54
+0D
+21
+43
+D2
+02
+07
+E0
+00
+21
+01
+20
+F2
+E7
+D4
+0F
+49
+00
+21
+43
+52
+00
+40
+1E
+00
+29
+F8
+DA
+DB
+0F
+DB
+07
+18
+43
+10
+BD
+FF
+B5
+0D
+46
+14
+46
+85
+B0
+48
+68
+51
+68
+00
+F0
+2C
+FC
+00
+91
+01
+90
+A8
+68
+A1
+68
+00
+F0
+26
+FC
+02
+91
+03
+90
+A8
+68
+61
+68
+00
+F0
+20
+FC
+02
+9A
+12
+18
+82
+42
+02
+92
+01
+D2
+01
+20
+00
+E0
+00
+20
+01
+9A
+0B
+18
+D2
+18
+00
+28
+01
+92
+02
+D0
+8A
+42
+02
+D9
+03
+E0
+8A
+42
+01
+D2
+01
+20
+00
+E0
+00
+20
+00
+99
+08
+18
+00
+90
+68
+68
+A1
+68
+00
+F0
+03
+FC
+02
+9A
+12
+18
+82
+42
+02
+92
+01
+D2
+01
+20
+00
+E0
+00
+20
+01
+9A
+0B
+18
+D2
+18
+00
+28
+01
+92
+02
+D0
+8A
+42
+02
+D9
+03
+E0
+8A
+42
+01
+D2
+01
+20
+00
+E0
+00
+20
+00
+99
+08
+18
+00
+90
+28
+68
+21
+68
+40
+00
+49
+00
+40
+08
+49
+08
+40
+18
+FA
+49
+47
+18
+14
+E0
+01
+99
+40
+00
+C9
+0F
+08
+43
+00
+90
+01
+98
+02
+99
+40
+00
+C9
+0F
+08
+43
+01
+90
+02
+98
+03
+99
+40
+00
+C9
+0F
+08
+43
+02
+90
+03
+98
+40
+00
+7F
+1E
+03
+90
+00
+98
+00
+28
+E7
+DA
+08
+98
+00
+28
+01
+D0
+EC
+4E
+00
+E0
+00
+26
+B7
+42
+01
+DA
+01
+20
+00
+E0
+00
+20
+00
+28
+04
+90
+2A
+D0
+F7
+1B
+F8
+06
+C0
+0E
+15
+D0
+02
+9B
+20
+21
+09
+1A
+03
+9A
+8B
+40
+1A
+43
+03
+92
+02
+9A
+01
+9B
+C2
+40
+8B
+40
+1A
+43
+02
+92
+01
+9A
+00
+9B
+C2
+40
+8B
+40
+00
+99
+1A
+43
+01
+92
+C1
+40
+00
+91
+7B
+11
+0D
+D0
+6F
+46
+03
+20
+C1
+1A
+03
+D5
+00
+21
+82
+00
+B9
+50
+03
+E0
+8A
+00
+81
+00
+BA
+58
+7A
+50
+40
+1E
+F3
+D5
+37
+46
+03
+98
+02
+99
+00
+28
+00
+D0
+01
+20
+01
+43
+08
+98
+02
+91
+00
+28
+08
+46
+0C
+D0
+00
+28
+00
+D0
+01
+20
+01
+99
+01
+9A
+49
+05
+08
+43
+01
+21
+D2
+0A
+C9
+02
+D2
+02
+01
+92
+00
+E0
+01
+21
+0E
+9B
+01
+22
+D2
+07
+01
+2B
+02
+D0
+00
+2B
+03
+D0
+13
+E0
+00
+28
+07
+D1
+20
+E0
+90
+42
+04
+D8
+90
+42
+0C
+D1
+01
+9B
+0B
+42
+09
+D0
+01
+9B
+59
+18
+01
+91
+05
+D1
+00
+99
+49
+1C
+00
+91
+01
+D1
+7F
+1C
+00
+92
+00
+28
+0D
+D0
+10
+21
+08
+46
+00
+20
+C0
+46
+04
+98
+00
+28
+06
+D0
+0F
+98
+00
+28
+03
+D0
+08
+21
+08
+46
+00
+20
+C0
+46
+28
+68
+21
+68
+01
+9B
+00
+9A
+48
+40
+C1
+0F
+05
+98
+C9
+07
+39
+43
+0E
+C0
+09
+B0
+F0
+BD
+FF
+B5
+87
+B0
+09
+9A
+08
+98
+08
+99
+53
+68
+92
+68
+40
+68
+89
+68
+96
+46
+00
+22
+03
+93
+17
+46
+94
+46
+08
+9A
+12
+68
+53
+00
+09
+9A
+5B
+08
+12
+68
+52
+00
+52
+08
+9A
+1A
+9E
+4B
+D4
+18
+0A
+9A
+00
+2A
+01
+D0
+35
+22
+00
+E0
+40
+22
+06
+92
+00
+22
+01
+23
+15
+46
+04
+92
+DB
+07
+05
+93
+24
+E0
+00
+2D
+05
+D1
+75
+46
+03
+46
+03
+9E
+4D
+1B
+B3
+41
+09
+D3
+75
+46
+66
+46
+03
+9B
+49
+1B
+04
+9D
+98
+41
+05
+9B
+75
+19
+AC
+46
+5F
+41
+63
+46
+3B
+43
+08
+D0
+05
+9B
+04
+9E
+DD
+07
+76
+08
+2E
+43
+5B
+08
+04
+96
+05
+93
+01
+E0
+52
+1E
+64
+1E
+C5
+0F
+ED
+07
+49
+18
+40
+41
+52
+1C
+06
+9B
+9A
+42
+D7
+DB
+00
+2D
+04
+D1
+75
+46
+03
+9A
+6B
+1A
+82
+41
+01
+D2
+03
+20
+0C
+E0
+03
+9A
+0B
+46
+6B
+40
+42
+40
+13
+43
+03
+D0
+01
+43
+03
+D0
+01
+20
+02
+E0
+02
+20
+00
+E0
+00
+20
+61
+46
+01
+91
+00
+21
+00
+97
+02
+91
+0A
+99
+00
+29
+05
+D0
+61
+46
+40
+02
+01
+43
+70
+4B
+01
+91
+02
+E0
+80
+07
+00
+23
+02
+90
+9C
+42
+01
+DA
+01
+20
+00
+E0
+00
+20
+07
+00
+3A
+D0
+1A
+1B
+D0
+06
+C0
+0E
+15
+D0
+02
+9D
+20
+21
+01
+9C
+09
+1A
+C5
+40
+8C
+40
+25
+43
+02
+9C
+8C
+40
+00
+D0
+01
+24
+25
+43
+01
+9C
+02
+95
+00
+9D
+C4
+40
+8D
+40
+00
+99
+2C
+43
+01
+94
+C1
+40
+00
+91
+54
+11
+1D
+D0
+6D
+46
+02
+21
+00
+22
+02
+29
+0C
+D1
+03
+20
+00
+1B
+07
+E0
+00
+28
+04
+DB
+86
+00
+AE
+59
+00
+2E
+00
+D0
+01
+22
+40
+1C
+03
+28
+F5
+DB
+08
+1B
+02
+D5
+88
+00
+2A
+50
+04
+E0
+80
+00
+28
+58
+10
+43
+8A
+00
+A8
+50
+49
+1E
+E3
+D5
+1C
+46
+0A
+98
+00
+28
+02
+98
+0C
+D0
+00
+28
+00
+D0
+01
+20
+01
+99
+01
+9A
+49
+05
+08
+43
+01
+21
+D2
+0A
+C9
+02
+D2
+02
+01
+92
+00
+E0
+01
+21
+10
+9B
+01
+22
+D2
+07
+01
+2B
+02
+D0
+00
+2B
+03
+D0
+13
+E0
+00
+28
+07
+D1
+1F
+E0
+90
+42
+04
+D8
+90
+42
+0C
+D1
+01
+9B
+0B
+42
+09
+D0
+01
+9B
+59
+18
+01
+91
+05
+D1
+00
+99
+49
+1C
+00
+91
+01
+D1
+64
+1C
+00
+92
+00
+28
+0C
+D0
+10
+21
+08
+46
+00
+20
+C0
+46
+00
+2F
+06
+D0
+11
+98
+00
+28
+03
+D0
+08
+21
+08
+46
+00
+20
+C0
+46
+08
+98
+09
+99
+01
+9A
+00
+9B
+00
+68
+09
+68
+48
+40
+C1
+0F
+07
+98
+C9
+07
+21
+43
+82
+60
+0A
+C0
+0B
+B0
+F0
+BD
+00
+B5
+85
+B0
+01
+93
+00
+92
+0A
+46
+01
+46
+00
+23
+02
+A8
+FF
+F7
+FC
+FD
+02
+A8
+07
+C8
+05
+B0
+00
+BD
+FF
+B5
+0A
+46
+1F
+46
+85
+B0
+07
+99
+01
+93
+01
+23
+00
+91
+01
+46
+02
+A8
+FF
+F7
+EC
+FD
+02
+99
+03
+98
+04
+9E
+CA
+0F
+49
+00
+D2
+07
+00
+92
+0F
+22
+49
+08
+92
+02
+8C
+1A
+00
+21
+00
+28
+00
+DB
+0C
+46
+45
+00
+13
+48
+6D
+08
+84
+42
+14
+D3
+07
+9A
+00
+2A
+04
+DA
+44
+1E
+00
+26
+10
+4D
+F6
+43
+02
+E0
+04
+46
+0D
+46
+0E
+46
+10
+21
+08
+46
+00
+20
+C0
+46
+00
+2F
+03
+D0
+04
+21
+08
+46
+00
+20
+C0
+46
+20
+05
+E9
+0A
+08
+43
+00
+99
+08
+43
+69
+05
+F2
+0A
+11
+43
+AD
+E6
+02
+C0
+FF
+FF
+01
+3C
+00
+00
+FF
+3F
+00
+00
+FF
+07
+00
+00
+FF
+FF
+FF
+7F
+00
+B5
+85
+B0
+01
+93
+00
+92
+0A
+46
+01
+46
+00
+23
+02
+A8
+FF
+F7
+9C
+FE
+02
+A8
+07
+C8
+A8
+E7
+FF
+B5
+0A
+46
+1F
+46
+85
+B0
+07
+99
+01
+93
+01
+23
+00
+91
+01
+46
+02
+A8
+FF
+F7
+8D
+FE
+02
+99
+03
+98
+04
+9E
+CA
+0F
+49
+00
+D2
+07
+00
+92
+0F
+22
+49
+08
+92
+02
+8C
+1A
+00
+21
+00
+28
+00
+DB
+0C
+46
+45
+00
+11
+48
+6D
+08
+84
+42
+14
+D3
+07
+9A
+00
+2A
+04
+DA
+44
+1E
+00
+26
+0D
+4D
+F6
+43
+02
+E0
+04
+46
+0D
+46
+0E
+46
+10
+21
+08
+46
+00
+20
+C0
+46
+00
+2F
+03
+D0
+04
+21
+08
+46
+00
+20
+C0
+46
+20
+05
+E9
+0A
+08
+43
+00
+99
+08
+43
+69
+05
+F2
+0A
+11
+43
+58
+E6
+00
+00
+FF
+07
+00
+00
+FF
+FF
+FF
+7F
+01
+46
+80
+08
+08
+1A
+02
+09
+10
+18
+02
+0A
+10
+18
+02
+0C
+10
+18
+C0
+08
+82
+00
+12
+18
+52
+00
+89
+1A
+01
+E0
+40
+1C
+0A
+39
+0A
+29
+FB
+D2
+70
+47
+00
+48
+70
+47
+18
+00
+00
+30
+75
+46
+FF
+F7
+F9
+FF
+AE
+46
+05
+00
+69
+46
+53
+46
+C0
+08
+C0
+00
+85
+46
+18
+B0
+20
+B5
+FE
+F7
+E4
+FE
+60
+BC
+B6
+46
+00
+26
+00
+27
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+40
+3D
+49
+08
+49
+00
+8D
+46
+70
+47
+10
+B5
+04
+46
+C0
+46
+C0
+46
+20
+46
+FE
+F7
+74
+FA
+10
+BD
+00
+00
+82
+07
+8B
+07
+9A
+42
+3F
+D1
+70
+B5
+92
+0F
+0A
+D0
+03
+24
+02
+78
+0B
+78
+40
+1C
+49
+1C
+00
+2A
+33
+D0
+9A
+42
+31
+D1
+20
+42
+F5
+D1
+21
+4E
+F4
+01
+04
+C8
+08
+C9
+95
+1B
+95
+43
+25
+40
+18
+D1
+9A
+42
+0F
+D1
+04
+C8
+08
+C9
+95
+1B
+95
+43
+25
+40
+10
+D1
+9A
+42
+07
+D1
+04
+C8
+08
+C9
+95
+1B
+95
+43
+25
+40
+08
+D1
+9A
+42
+E7
+D0
+12
+BA
+1B
+BA
+01
+20
+9A
+42
+00
+D2
+40
+42
+70
+BD
+12
+BA
+1B
+BA
+2D
+BA
+18
+24
+10
+00
+E0
+40
+19
+00
+E1
+40
+40
+1A
+05
+D1
+2E
+00
+E6
+40
+02
+D1
+08
+3C
+F4
+D1
+D0
+1A
+70
+BD
+02
+78
+0B
+78
+40
+1C
+49
+1C
+00
+2A
+09
+D0
+9A
+42
+07
+D1
+02
+78
+0B
+78
+40
+1C
+49
+1C
+00
+2A
+01
+D0
+9A
+42
+EF
+D0
+D0
+1A
+70
+47
+01
+01
+01
+01
+00
+22
+03
+09
+8B
+42
+73
+D3
+03
+0A
+8B
+42
+58
+D3
+03
+0B
+8B
+42
+3C
+D3
+03
+0C
+8B
+42
+21
+D3
+12
+E0
+03
+46
+0B
+43
+7F
+D4
+00
+22
+43
+08
+8B
+42
+74
+D3
+03
+09
+8B
+42
+5F
+D3
+03
+0A
+8B
+42
+44
+D3
+03
+0B
+8B
+42
+28
+D3
+03
+0C
+8B
+42
+0D
+D3
+09
+02
+FF
+22
+12
+BA
+03
+0C
+8B
+42
+02
+D3
+12
+12
+09
+02
+65
+D0
+03
+0B
+8B
+42
+19
+D3
+00
+E0
+09
+0A
+C3
+0B
+8B
+42
+01
+D3
+CB
+03
+C0
+1A
+52
+41
+83
+0B
+8B
+42
+01
+D3
+8B
+03
+C0
+1A
+52
+41
+43
+0B
+8B
+42
+01
+D3
+4B
+03
+C0
+1A
+52
+41
+03
+0B
+8B
+42
+01
+D3
+0B
+03
+C0
+1A
+52
+41
+C3
+0A
+8B
+42
+01
+D3
+CB
+02
+C0
+1A
+52
+41
+83
+0A
+8B
+42
+01
+D3
+8B
+02
+C0
+1A
+52
+41
+43
+0A
+8B
+42
+01
+D3
+4B
+02
+C0
+1A
+52
+41
+03
+0A
+8B
+42
+01
+D3
+0B
+02
+C0
+1A
+52
+41
+CD
+D2
+C3
+09
+8B
+42
+01
+D3
+CB
+01
+C0
+1A
+52
+41
+83
+09
+8B
+42
+01
+D3
+8B
+01
+C0
+1A
+52
+41
+43
+09
+8B
+42
+01
+D3
+4B
+01
+C0
+1A
+52
+41
+03
+09
+8B
+42
+01
+D3
+0B
+01
+C0
+1A
+52
+41
+C3
+08
+8B
+42
+01
+D3
+CB
+00
+C0
+1A
+52
+41
+83
+08
+8B
+42
+01
+D3
+8B
+00
+C0
+1A
+52
+41
+43
+08
+8B
+42
+01
+D3
+4B
+00
+C0
+1A
+52
+41
+41
+1A
+00
+D2
+01
+46
+52
+41
+10
+46
+70
+47
+5D
+E0
+CA
+0F
+00
+D0
+49
+42
+03
+10
+00
+D3
+40
+42
+53
+40
+9C
+46
+00
+22
+03
+09
+8B
+42
+2D
+D3
+03
+0A
+8B
+42
+12
+D3
+89
+01
+FC
+22
+12
+BA
+03
+0A
+8B
+42
+0C
+D3
+89
+01
+92
+11
+8B
+42
+08
+D3
+89
+01
+92
+11
+8B
+42
+04
+D3
+89
+01
+3A
+D0
+92
+11
+00
+E0
+89
+09
+C3
+09
+8B
+42
+01
+D3
+CB
+01
+C0
+1A
+52
+41
+83
+09
+8B
+42
+01
+D3
+8B
+01
+C0
+1A
+52
+41
+43
+09
+8B
+42
+01
+D3
+4B
+01
+C0
+1A
+52
+41
+03
+09
+8B
+42
+01
+D3
+0B
+01
+C0
+1A
+52
+41
+C3
+08
+8B
+42
+01
+D3
+CB
+00
+C0
+1A
+52
+41
+83
+08
+8B
+42
+01
+D3
+8B
+00
+C0
+1A
+52
+41
+D9
+D2
+43
+08
+8B
+42
+01
+D3
+4B
+00
+C0
+1A
+52
+41
+41
+1A
+00
+D2
+01
+46
+52
+41
+10
+46
+63
+46
+5B
+10
+01
+D3
+40
+42
+00
+2B
+00
+D5
+49
+42
+70
+47
+63
+46
+5B
+10
+00
+D3
+40
+42
+01
+B5
+04
+49
+00
+28
+02
+DC
+49
+1C
+08
+40
+00
+E0
+08
+46
+C0
+46
+C0
+46
+02
+BD
+FF
+FF
+FF
+7F
+F8
+B5
+04
+0C
+8B
+B2
+26
+46
+82
+B2
+5E
+43
+10
+46
+58
+43
+0D
+0C
+37
+0C
+36
+04
+00
+21
+80
+19
+16
+46
+79
+41
+6E
+43
+37
+0C
+36
+04
+80
+19
+26
+46
+79
+41
+6E
+43
+89
+19
+F8
+BD
+49
+00
+CA
+02
+02
+43
+10
+00
+00
+D0
+04
+20
+4A
+0D
+01
+D0
+01
+22
+10
+43
+04
+4A
+49
+0D
+91
+42
+01
+D1
+02
+21
+08
+43
+01
+28
+00
+D1
+05
+20
+70
+47
+FF
+07
+00
+00
+30
+38
+0A
+28
+01
+D2
+01
+20
+70
+47
+00
+20
+70
+47
+00
+00
+10
+B5
+00
+29
+0A
+D0
+08
+78
+00
+28
+07
+D0
+05
+48
+78
+44
+FF
+F7
+6C
+FE
+00
+28
+01
+D0
+00
+20
+10
+BD
+02
+48
+78
+44
+10
+BD
+00
+00
+6A
+03
+00
+00
+62
+03
+00
+00
+70
+B5
+01
+25
+ED
+07
+04
+00
+4C
+40
+20
+D4
+44
+1A
+01
+D2
+00
+1B
+09
+19
+C6
+0D
+4B
+00
+F2
+B2
+FF
+2A
+29
+D0
+1B
+0E
+2C
+D0
+00
+02
+0C
+02
+28
+43
+2C
+43
+D3
+1A
+DC
+40
+05
+19
+10
+D2
+28
+0A
+02
+D3
+40
+1C
+6D
+06
+11
+D0
+76
+1E
+F6
+05
+80
+19
+FF
+2A
+00
+DA
+70
+BD
+C0
+0D
+C0
+05
+70
+BD
+69
+40
+00
+F0
+7A
+F8
+01
+20
+05
+43
+C5
+41
+52
+1C
+76
+1C
+E8
+E7
+64
+08
+9C
+40
+C9
+01
+61
+40
+89
+00
+E7
+D1
+01
+24
+A0
+43
+E4
+E7
+1B
+0E
+44
+02
+00
+D0
+03
+48
+70
+BD
+00
+2A
+FC
+D1
+C0
+0F
+C0
+07
+70
+BD
+00
+BF
+00
+00
+C0
+7F
+70
+B5
+42
+00
+64
+41
+4B
+00
+5C
+41
+12
+0E
+39
+D0
+1B
+0E
+38
+D0
+FF
+2A
+3C
+D0
+FF
+2B
+3A
+D0
+D2
+18
+7F
+3A
+40
+02
+49
+02
+40
+0A
+49
+0A
+45
+18
+ED
+01
+06
+00
+4E
+43
+00
+0A
+09
+0A
+48
+43
+01
+04
+73
+1A
+40
+19
+19
+0C
+43
+18
+99
+0F
+04
+D0
+5B
+08
+01
+21
+49
+07
+5B
+1A
+52
+1C
+D8
+09
+04
+D3
+40
+1C
+F5
+03
+01
+D1
+9D
+06
+07
+D0
+FF
+2A
+08
+D2
+D5
+05
+06
+D0
+E4
+07
+20
+43
+40
+19
+70
+BD
+01
+25
+A8
+43
+F4
+E7
+00
+2A
+01
+DC
+E0
+07
+70
+BD
+24
+02
+FF
+20
+20
+43
+C0
+05
+70
+BD
+1B
+0E
+FF
+2A
+03
+D0
+FF
+2B
+01
+D0
+E0
+07
+70
+BD
+FF
+26
+36
+06
+45
+00
+B5
+42
+06
+D8
+4D
+00
+B5
+42
+03
+D8
+D2
+18
+FF
+2A
+00
+D0
+E7
+E7
+00
+48
+70
+BD
+00
+00
+C0
+7F
+70
+B5
+01
+25
+ED
+07
+04
+00
+4C
+40
+22
+D4
+44
+1A
+02
+D2
+6C
+40
+00
+1B
+09
+19
+C6
+0D
+4B
+00
+F2
+B2
+FF
+2A
+4B
+D0
+1B
+0E
+50
+D0
+00
+02
+0C
+02
+A8
+43
+2C
+43
+D3
+1A
+DC
+40
+05
+1B
+05
+D5
+AD
+00
+19
+D3
+6D
+08
+76
+1E
+52
+1E
+37
+D0
+F6
+05
+28
+0A
+01
+D2
+80
+19
+70
+BD
+70
+41
+6D
+06
+03
+D0
+70
+BD
+69
+40
+FF
+F7
+3C
+FF
+9C
+40
+09
+02
+61
+40
+49
+00
+01
+D0
+40
+1E
+70
+BD
+01
+24
+A0
+43
+70
+BD
+6D
+08
+1D
+D0
+01
+20
+2B
+0C
+01
+D1
+2D
+04
+10
+30
+2B
+0E
+01
+D1
+2D
+02
+08
+30
+2B
+0F
+01
+D1
+2D
+01
+00
+1D
+AB
+0F
+01
+D1
+AD
+00
+80
+1C
+EB
+0F
+01
+D1
+6D
+00
+40
+1C
+36
+1A
+12
+1A
+6D
+00
+68
+0A
+F5
+05
+40
+19
+01
+2A
+02
+DB
+70
+BD
+00
+20
+70
+BD
+C0
+36
+30
+0A
+C0
+07
+70
+BD
+1B
+0E
+44
+02
+01
+D1
+FF
+2B
+00
+D1
+02
+48
+70
+BD
+00
+2A
+F0
+D0
+70
+BD
+00
+00
+C0
+7F
+03
+B4
+02
+48
+78
+44
+84
+46
+03
+BC
+60
+47
+F9
+EF
+FF
+FF
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+41
+42
+43
+44
+45
+46
+40
+30
+58
+00
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+61
+62
+63
+64
+65
+66
+40
+30
+78
+00
+04
+00
+00
+08
+00
+00
+00
+00
+00
+00
+00
+02
+00
+01
+00
+00
+10
+81
+82
+83
+84
+85
+86
+87
+88
+89
+8B
+8C
+8D
+8E
+8F
+91
+92
+93
+95
+96
+97
+99
+9A
+9C
+9D
+9F
+A0
+A2
+A3
+A5
+A7
+A8
+AA
+AC
+AE
+B0
+B2
+B3
+B5
+B7
+B9
+BC
+BE
+C0
+C2
+C5
+C7
+C9
+CC
+CE
+D1
+D4
+D7
+D9
+DC
+DF
+E2
+E6
+E9
+EC
+F0
+F3
+F7
+FA
+FE
+00
+00
+00
+02
+40
+00
+00
+00
+00
+00
+A0
+00
+00
+00
+00
+05
+40
+00
+00
+00
+00
+00
+C8
+00
+00
+00
+00
+0C
+40
+00
+00
+00
+00
+40
+9C
+00
+00
+00
+00
+19
+40
+00
+00
+00
+20
+BC
+BE
+00
+00
+00
+00
+34
+40
+00
+00
+BF
+C9
+1B
+8E
+00
+00
+00
+04
+B5
+40
+00
+00
+50
+4B
+CF
+D0
+66
+07
+E2
+CF
+01
+00
+00
+00
+6C
+41
+00
+00
+3E
+82
+51
+AA
+DF
+EE
+A7
+34
+01
+00
+00
+00
+D9
+42
+00
+00
+DC
+B5
+A0
+E2
+3A
+30
+1F
+97
+FF
+FF
+FF
+FF
+B4
+45
+00
+00
+FD
+25
+A0
+C8
+E9
+A3
+C1
+4F
+FF
+FF
+FF
+FF
+FF
+3F
+00
+00
+00
+00
+00
+80
+00
+00
+00
+00
+FF
+3F
+00
+00
+00
+00
+00
+80
+00
+00
+00
+00
+60
+23
+00
+00
+00
+00
+00
+30
+18
+00
+00
+00
+1C
+01
+00
+00
+78
+23
+00
+00
+18
+00
+00
+30
+60
+04
+00
+00
+3C
+01
+00
+00
+1C
+00
+00
+00
+43
+00
+00
+00
+F8
+FF
+FF
+FF
+0C
+00
+00
+00
+0E
+00
+00
+00
+0F
+00
+00
+00
+2E
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+1C
+4E
+0E
+00
+00
+00
+00