diff --git a/checks/erase_box_user_project_wrapper.gds.log b/checks/erase_box_user_project_wrapper.gds.log
new file mode 100644
index 0000000..f1b10a8
--- /dev/null
+++ b/checks/erase_box_user_project_wrapper.gds.log
@@ -0,0 +1,3298 @@
+/home/dinesha/workarea/opencore/git/yifive_r0/gds//user_project_wrapper.gds /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_erased.gds user_project_wrapper
+
+Magic 8.3 revision 182 - Compiled on Fri Jun 25 23:58:13 UTC 2021.
+Starting magic under Tcl interpreter
+Using the terminal as the console.
+Using NULL graphics device.
+Processing system .magicrc file
+Sourcing design .magicrc for technology sky130A ...
+2 Magic internal units = 1 Lambda
+Input style sky130(): scaleFactor=2, multiplier=2
+Scaled tech values by 2 / 1 to match internal grid scaling
+Loading sky130A Device Generator Menu ...
+Using technology "sky130A", version 1.0.116-4-g522a373
+Input style sky130(vendor): scaleFactor=2, multiplier=2
+CIF input style is now "sky130(vendor)"
+Warning: Calma reading is not undoable!  I hope that's OK.
+Library written using GDS-II Release 3.0
+Library name: user_project_wrapper
+Reading "sky130_fd_sc_hd__decap_3".
+Reading "sky130_fd_sc_hd__decap_8".
+Reading "sky130_fd_sc_hd__decap_6".
+Reading "sky130_fd_sc_hd__decap_12".
+Reading "sky130_fd_sc_hd__tapvpwrvgnd_1".
+Reading "sky130_fd_sc_hd__decap_4".
+Reading "sky130_fd_sc_hd__o22a_4".
+Reading "sky130_fd_sc_hd__fill_1".
+Reading "sky130_fd_sc_hd__clkbuf_1".
+Reading "sky130_fd_sc_hd__buf_2".
+Reading "sky130_fd_sc_hd__and2_4".
+Reading "sky130_fd_sc_hd__o21a_4".
+Reading "sky130_fd_sc_hd__or2_4".
+Reading "sky130_fd_sc_hd__fill_2".
+Reading "sky130_fd_sc_hd__and3_4".
+Reading "sky130_fd_sc_hd__dfxtp_4".
+Reading "sky130_fd_sc_hd__conb_1".
+Reading "sky130_fd_sc_hd__inv_2".
+Reading "sky130_fd_sc_hd__a32o_4".
+Reading "sky130_fd_sc_hd__a2bb2o_4".
+Reading "sky130_fd_sc_hd__diode_2".
+Reading "sky130_fd_sc_hd__dfrtp_4".
+Reading "sky130_fd_sc_hd__a211o_4".
+Reading "sky130_fd_sc_hd__a21o_4".
+Reading "sky130_fd_sc_hd__a21boi_4".
+Reading "sky130_fd_sc_hd__or4_4".
+Reading "sky130_fd_sc_hd__or3_4".
+Reading "sky130_fd_sc_hd__buf_4".
+Reading "sky130_fd_sc_hd__a21oi_4".
+Reading "sky130_fd_sc_hd__and4_4".
+Reading "sky130_fd_sc_hd__dfstp_4".
+Reading "sky130_fd_sc_hd__nor2_4".
+Reading "sky130_fd_sc_hd__nand2_4".
+Reading "sky130_fd_sc_hd__a22oi_4".
+Reading "sky130_fd_sc_hd__a2111o_4".
+Reading "sky130_fd_sc_hd__buf_8".
+Reading "sky130_fd_sc_hd__o32a_4".
+Reading "sky130_fd_sc_hd__clkbuf_16".
+Reading "sky130_fd_sc_hd__a21bo_4".
+Reading "sky130_fd_sc_hd__o21ai_4".
+Reading "scr1_top_wb".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+    24900 uses
+    25000 uses
+    25100 uses
+    25200 uses
+    25300 uses
+    25400 uses
+    25500 uses
+    25600 uses
+    25700 uses
+    25800 uses
+    25900 uses
+    26000 uses
+    26100 uses
+    26200 uses
+    26300 uses
+    26400 uses
+    26500 uses
+    26600 uses
+    26700 uses
+    26800 uses
+    26900 uses
+    27000 uses
+    27100 uses
+    27200 uses
+    27300 uses
+    27400 uses
+    27500 uses
+    27600 uses
+    27700 uses
+    27800 uses
+    27900 uses
+    28000 uses
+    28100 uses
+    28200 uses
+    28300 uses
+    28400 uses
+    28500 uses
+    28600 uses
+    28700 uses
+    28800 uses
+    28900 uses
+    29000 uses
+    29100 uses
+    29200 uses
+    29300 uses
+    29400 uses
+    29500 uses
+    29600 uses
+    29700 uses
+    29800 uses
+    29900 uses
+    30000 uses
+    30100 uses
+    30200 uses
+    30300 uses
+    30400 uses
+    30500 uses
+    30600 uses
+    30700 uses
+    30800 uses
+    30900 uses
+    31000 uses
+    31100 uses
+    31200 uses
+    31300 uses
+    31400 uses
+    31500 uses
+    31600 uses
+    31700 uses
+    31800 uses
+    31900 uses
+    32000 uses
+    32100 uses
+    32200 uses
+    32300 uses
+    32400 uses
+    32500 uses
+    32600 uses
+    32700 uses
+    32800 uses
+    32900 uses
+    33000 uses
+    33100 uses
+    33200 uses
+    33300 uses
+    33400 uses
+    33500 uses
+    33600 uses
+    33700 uses
+    33800 uses
+    33900 uses
+    34000 uses
+    34100 uses
+    34200 uses
+    34300 uses
+    34400 uses
+    34500 uses
+    34600 uses
+    34700 uses
+    34800 uses
+    34900 uses
+    35000 uses
+    35100 uses
+    35200 uses
+    35300 uses
+    35400 uses
+    35500 uses
+    35600 uses
+    35700 uses
+    35800 uses
+    35900 uses
+    36000 uses
+    36100 uses
+    36200 uses
+    36300 uses
+    36400 uses
+    36500 uses
+    36600 uses
+    36700 uses
+    36800 uses
+    36900 uses
+    37000 uses
+    37100 uses
+    37200 uses
+    37300 uses
+    37400 uses
+    37500 uses
+    37600 uses
+    37700 uses
+    37800 uses
+    37900 uses
+    38000 uses
+    38100 uses
+    38200 uses
+    38300 uses
+    38400 uses
+    38500 uses
+    38600 uses
+    38700 uses
+    38800 uses
+    38900 uses
+    39000 uses
+    39100 uses
+    39200 uses
+    39300 uses
+    39400 uses
+    39500 uses
+    39600 uses
+    39700 uses
+    39800 uses
+    39900 uses
+    40000 uses
+    40100 uses
+    40200 uses
+    40300 uses
+    40400 uses
+    40500 uses
+    40600 uses
+    40700 uses
+    40800 uses
+    40900 uses
+    41000 uses
+    41100 uses
+    41200 uses
+    41300 uses
+    41400 uses
+    41500 uses
+    41600 uses
+    41700 uses
+    41800 uses
+    41900 uses
+    42000 uses
+    42100 uses
+    42200 uses
+    42300 uses
+    42400 uses
+    42500 uses
+    42600 uses
+    42700 uses
+    42800 uses
+    42900 uses
+    43000 uses
+    43100 uses
+    43200 uses
+    43300 uses
+    43400 uses
+    43500 uses
+    43600 uses
+    43700 uses
+    43800 uses
+    43900 uses
+    44000 uses
+    44100 uses
+    44200 uses
+    44300 uses
+    44400 uses
+    44500 uses
+    44600 uses
+    44700 uses
+    44800 uses
+    44900 uses
+    45000 uses
+    45100 uses
+    45200 uses
+    45300 uses
+    45400 uses
+    45500 uses
+    45600 uses
+    45700 uses
+    45800 uses
+    45900 uses
+    46000 uses
+    46100 uses
+    46200 uses
+    46300 uses
+    46400 uses
+    46500 uses
+    46600 uses
+    46700 uses
+    46800 uses
+    46900 uses
+    47000 uses
+    47100 uses
+    47200 uses
+    47300 uses
+    47400 uses
+    47500 uses
+    47600 uses
+    47700 uses
+    47800 uses
+    47900 uses
+    48000 uses
+    48100 uses
+    48200 uses
+    48300 uses
+    48400 uses
+    48500 uses
+    48600 uses
+    48700 uses
+    48800 uses
+    48900 uses
+    49000 uses
+    49100 uses
+    49200 uses
+    49300 uses
+    49400 uses
+    49500 uses
+    49600 uses
+    49700 uses
+    49800 uses
+    49900 uses
+    50000 uses
+    50100 uses
+    50200 uses
+    50300 uses
+    50400 uses
+    50500 uses
+    50600 uses
+    50700 uses
+    50800 uses
+    50900 uses
+    51000 uses
+    51100 uses
+    51200 uses
+    51300 uses
+    51400 uses
+    51500 uses
+    51600 uses
+    51700 uses
+    51800 uses
+    51900 uses
+    52000 uses
+    52100 uses
+    52200 uses
+    52300 uses
+    52400 uses
+    52500 uses
+    52600 uses
+    52700 uses
+    52800 uses
+    52900 uses
+    53000 uses
+    53100 uses
+    53200 uses
+    53300 uses
+    53400 uses
+    53500 uses
+    53600 uses
+    53700 uses
+    53800 uses
+    53900 uses
+    54000 uses
+    54100 uses
+    54200 uses
+    54300 uses
+    54400 uses
+    54500 uses
+    54600 uses
+    54700 uses
+    54800 uses
+    54900 uses
+    55000 uses
+    55100 uses
+    55200 uses
+    55300 uses
+    55400 uses
+    55500 uses
+    55600 uses
+    55700 uses
+    55800 uses
+    55900 uses
+    56000 uses
+    56100 uses
+    56200 uses
+    56300 uses
+    56400 uses
+    56500 uses
+    56600 uses
+    56700 uses
+    56800 uses
+    56900 uses
+    57000 uses
+    57100 uses
+    57200 uses
+    57300 uses
+    57400 uses
+    57500 uses
+    57600 uses
+    57700 uses
+    57800 uses
+    57900 uses
+    58000 uses
+    58100 uses
+    58200 uses
+    58300 uses
+    58400 uses
+    58500 uses
+    58600 uses
+    58700 uses
+    58800 uses
+    58900 uses
+    59000 uses
+    59100 uses
+    59200 uses
+    59300 uses
+    59400 uses
+    59500 uses
+    59600 uses
+    59700 uses
+    59800 uses
+    59900 uses
+    60000 uses
+    60100 uses
+    60200 uses
+    60300 uses
+    60400 uses
+    60500 uses
+    60600 uses
+    60700 uses
+    60800 uses
+    60900 uses
+    61000 uses
+    61100 uses
+    61200 uses
+    61300 uses
+    61400 uses
+    61500 uses
+    61600 uses
+    61700 uses
+    61800 uses
+    61900 uses
+    62000 uses
+    62100 uses
+    62200 uses
+    62300 uses
+    62400 uses
+    62500 uses
+    62600 uses
+    62700 uses
+    62800 uses
+    62900 uses
+    63000 uses
+    63100 uses
+    63200 uses
+    63300 uses
+    63400 uses
+    63500 uses
+    63600 uses
+    63700 uses
+    63800 uses
+    63900 uses
+    64000 uses
+    64100 uses
+    64200 uses
+    64300 uses
+    64400 uses
+    64500 uses
+    64600 uses
+    64700 uses
+    64800 uses
+    64900 uses
+    65000 uses
+    65100 uses
+    65200 uses
+    65300 uses
+    65400 uses
+    65500 uses
+    65600 uses
+    65700 uses
+    65800 uses
+    65900 uses
+    66000 uses
+    66100 uses
+    66200 uses
+    66300 uses
+    66400 uses
+    66500 uses
+    66600 uses
+    66700 uses
+    66800 uses
+    66900 uses
+    67000 uses
+    67100 uses
+    67200 uses
+    67300 uses
+    67400 uses
+    67500 uses
+    67600 uses
+    67700 uses
+    67800 uses
+    67900 uses
+    68000 uses
+    68100 uses
+    68200 uses
+    68300 uses
+    68400 uses
+    68500 uses
+    68600 uses
+    68700 uses
+    68800 uses
+    68900 uses
+    69000 uses
+    69100 uses
+    69200 uses
+    69300 uses
+    69400 uses
+    69500 uses
+    69600 uses
+    69700 uses
+    69800 uses
+    69900 uses
+    70000 uses
+    70100 uses
+    70200 uses
+    70300 uses
+    70400 uses
+    70500 uses
+    70600 uses
+    70700 uses
+    70800 uses
+    70900 uses
+    71000 uses
+    71100 uses
+    71200 uses
+    71300 uses
+    71400 uses
+    71500 uses
+    71600 uses
+    71700 uses
+    71800 uses
+    71900 uses
+    72000 uses
+    72100 uses
+    72200 uses
+    72300 uses
+    72400 uses
+    72500 uses
+    72600 uses
+    72700 uses
+    72800 uses
+    72900 uses
+    73000 uses
+    73100 uses
+    73200 uses
+    73300 uses
+    73400 uses
+    73500 uses
+    73600 uses
+    73700 uses
+    73800 uses
+    73900 uses
+    74000 uses
+    74100 uses
+    74200 uses
+    74300 uses
+    74400 uses
+    74500 uses
+    74600 uses
+    74700 uses
+    74800 uses
+    74900 uses
+    75000 uses
+    75100 uses
+    75200 uses
+    75300 uses
+    75400 uses
+    75500 uses
+    75600 uses
+    75700 uses
+    75800 uses
+    75900 uses
+    76000 uses
+    76100 uses
+    76200 uses
+    76300 uses
+    76400 uses
+    76500 uses
+    76600 uses
+    76700 uses
+    76800 uses
+    76900 uses
+    77000 uses
+    77100 uses
+    77200 uses
+    77300 uses
+    77400 uses
+    77500 uses
+    77600 uses
+    77700 uses
+    77800 uses
+    77900 uses
+    78000 uses
+    78100 uses
+    78200 uses
+    78300 uses
+    78400 uses
+    78500 uses
+    78600 uses
+    78700 uses
+    78800 uses
+    78900 uses
+    79000 uses
+    79100 uses
+    79200 uses
+    79300 uses
+    79400 uses
+    79500 uses
+    79600 uses
+    79700 uses
+    79800 uses
+    79900 uses
+    80000 uses
+    80100 uses
+    80200 uses
+    80300 uses
+    80400 uses
+    80500 uses
+    80600 uses
+    80700 uses
+    80800 uses
+    80900 uses
+    81000 uses
+    81100 uses
+    81200 uses
+    81300 uses
+    81400 uses
+    81500 uses
+    81600 uses
+    81700 uses
+    81800 uses
+    81900 uses
+    82000 uses
+    82100 uses
+    82200 uses
+    82300 uses
+    82400 uses
+    82500 uses
+    82600 uses
+    82700 uses
+    82800 uses
+    82900 uses
+    83000 uses
+    83100 uses
+    83200 uses
+    83300 uses
+    83400 uses
+    83500 uses
+    83600 uses
+    83700 uses
+    83800 uses
+    83900 uses
+    84000 uses
+    84100 uses
+    84200 uses
+    84300 uses
+    84400 uses
+    84500 uses
+    84600 uses
+    84700 uses
+    84800 uses
+    84900 uses
+    85000 uses
+    85100 uses
+    85200 uses
+    85300 uses
+    85400 uses
+    85500 uses
+    85600 uses
+    85700 uses
+    85800 uses
+    85900 uses
+    86000 uses
+    86100 uses
+    86200 uses
+    86300 uses
+    86400 uses
+    86500 uses
+    86600 uses
+    86700 uses
+    86800 uses
+    86900 uses
+    87000 uses
+    87100 uses
+    87200 uses
+    87300 uses
+    87400 uses
+    87500 uses
+    87600 uses
+    87700 uses
+    87800 uses
+    87900 uses
+    88000 uses
+    88100 uses
+    88200 uses
+    88300 uses
+    88400 uses
+    88500 uses
+    88600 uses
+    88700 uses
+    88800 uses
+    88900 uses
+    89000 uses
+    89100 uses
+    89200 uses
+    89300 uses
+    89400 uses
+    89500 uses
+    89600 uses
+    89700 uses
+    89800 uses
+    89900 uses
+    90000 uses
+    90100 uses
+    90200 uses
+    90300 uses
+    90400 uses
+    90500 uses
+    90600 uses
+    90700 uses
+    90800 uses
+    90900 uses
+    91000 uses
+    91100 uses
+    91200 uses
+    91300 uses
+    91400 uses
+    91500 uses
+    91600 uses
+    91700 uses
+    91800 uses
+    91900 uses
+    92000 uses
+    92100 uses
+    92200 uses
+    92300 uses
+    92400 uses
+    92500 uses
+    92600 uses
+    92700 uses
+    92800 uses
+    92900 uses
+    93000 uses
+    93100 uses
+    93200 uses
+    93300 uses
+    93400 uses
+    93500 uses
+    93600 uses
+    93700 uses
+    93800 uses
+    93900 uses
+    94000 uses
+    94100 uses
+    94200 uses
+    94300 uses
+    94400 uses
+    94500 uses
+    94600 uses
+    94700 uses
+    94800 uses
+    94900 uses
+    95000 uses
+    95100 uses
+    95200 uses
+    95300 uses
+    95400 uses
+    95500 uses
+    95600 uses
+    95700 uses
+    95800 uses
+    95900 uses
+    96000 uses
+    96100 uses
+    96200 uses
+    96300 uses
+    96400 uses
+    96500 uses
+    96600 uses
+    96700 uses
+    96800 uses
+    96900 uses
+    97000 uses
+    97100 uses
+    97200 uses
+    97300 uses
+    97400 uses
+    97500 uses
+    97600 uses
+    97700 uses
+    97800 uses
+    97900 uses
+    98000 uses
+    98100 uses
+    98200 uses
+    98300 uses
+    98400 uses
+    98500 uses
+    98600 uses
+    98700 uses
+    98800 uses
+    98900 uses
+    99000 uses
+    99100 uses
+    99200 uses
+    99300 uses
+    99400 uses
+    99500 uses
+    99600 uses
+    99700 uses
+    99800 uses
+    99900 uses
+    100000 uses
+    100100 uses
+    100200 uses
+    100300 uses
+    100400 uses
+    100500 uses
+    100600 uses
+    100700 uses
+    100800 uses
+    100900 uses
+    101000 uses
+    101100 uses
+    101200 uses
+    101300 uses
+    101400 uses
+    101500 uses
+    101600 uses
+    101700 uses
+    101800 uses
+    101900 uses
+    102000 uses
+    102100 uses
+    102200 uses
+    102300 uses
+    102400 uses
+    102500 uses
+    102600 uses
+    102700 uses
+    102800 uses
+    102900 uses
+    103000 uses
+    103100 uses
+    103200 uses
+    103300 uses
+    103400 uses
+    103500 uses
+    103600 uses
+    103700 uses
+    103800 uses
+    103900 uses
+    104000 uses
+    104100 uses
+    104200 uses
+    104300 uses
+    104400 uses
+    104500 uses
+    104600 uses
+    104700 uses
+    104800 uses
+    104900 uses
+    105000 uses
+    105100 uses
+    105200 uses
+    105300 uses
+    105400 uses
+    105500 uses
+    105600 uses
+    105700 uses
+    105800 uses
+    105900 uses
+    106000 uses
+    106100 uses
+    106200 uses
+    106300 uses
+    106400 uses
+    106500 uses
+    106600 uses
+    106700 uses
+    106800 uses
+    106900 uses
+    107000 uses
+    107100 uses
+    107200 uses
+    107300 uses
+    107400 uses
+    107500 uses
+    107600 uses
+    107700 uses
+    107800 uses
+    107900 uses
+    108000 uses
+    108100 uses
+    108200 uses
+    108300 uses
+    108400 uses
+    108500 uses
+    108600 uses
+    108700 uses
+    108800 uses
+    108900 uses
+    109000 uses
+    109100 uses
+    109200 uses
+    109300 uses
+    109400 uses
+    109500 uses
+    109600 uses
+    109700 uses
+    109800 uses
+    109900 uses
+    110000 uses
+    110100 uses
+    110200 uses
+    110300 uses
+    110400 uses
+    110500 uses
+    110600 uses
+    110700 uses
+    110800 uses
+    110900 uses
+    111000 uses
+    111100 uses
+    111200 uses
+    111300 uses
+    111400 uses
+    111500 uses
+    111600 uses
+    111700 uses
+    111800 uses
+    111900 uses
+    112000 uses
+    112100 uses
+    112200 uses
+    112300 uses
+    112400 uses
+    112500 uses
+    112600 uses
+    112700 uses
+    112800 uses
+    112900 uses
+    113000 uses
+    113100 uses
+    113200 uses
+    113300 uses
+    113400 uses
+    113500 uses
+    113600 uses
+    113700 uses
+    113800 uses
+    113900 uses
+    114000 uses
+    114100 uses
+    114200 uses
+    114300 uses
+    114400 uses
+    114500 uses
+    114600 uses
+    114700 uses
+    114800 uses
+    114900 uses
+    115000 uses
+    115100 uses
+    115200 uses
+    115300 uses
+    115400 uses
+    115500 uses
+    115600 uses
+    115700 uses
+    115800 uses
+    115900 uses
+    116000 uses
+    116100 uses
+    116200 uses
+    116300 uses
+    116400 uses
+    116500 uses
+    116600 uses
+    116700 uses
+    116800 uses
+    116900 uses
+    117000 uses
+    117100 uses
+    117200 uses
+    117300 uses
+    117400 uses
+    117500 uses
+    117600 uses
+    117700 uses
+    117800 uses
+    117900 uses
+    118000 uses
+    118100 uses
+    118200 uses
+    118300 uses
+    118400 uses
+    118500 uses
+    118600 uses
+    118700 uses
+    118800 uses
+    118900 uses
+    119000 uses
+    119100 uses
+    119200 uses
+    119300 uses
+    119400 uses
+    119500 uses
+    119600 uses
+    119700 uses
+    119800 uses
+    119900 uses
+    120000 uses
+    120100 uses
+    120200 uses
+    120300 uses
+    120400 uses
+    120500 uses
+    120600 uses
+    120700 uses
+    120800 uses
+    120900 uses
+    121000 uses
+    121100 uses
+    121200 uses
+    121300 uses
+    121400 uses
+    121500 uses
+    121600 uses
+    121700 uses
+    121800 uses
+    121900 uses
+    122000 uses
+    122100 uses
+    122200 uses
+    122300 uses
+    122400 uses
+    122500 uses
+    122600 uses
+    122700 uses
+    122800 uses
+    122900 uses
+    123000 uses
+    123100 uses
+    123200 uses
+    123300 uses
+    123400 uses
+    123500 uses
+    123600 uses
+    123700 uses
+    123800 uses
+    123900 uses
+    124000 uses
+    124100 uses
+    124200 uses
+    124300 uses
+    124400 uses
+    124500 uses
+    124600 uses
+    124700 uses
+    124800 uses
+    124900 uses
+    125000 uses
+    125100 uses
+    125200 uses
+    125300 uses
+    125400 uses
+    125500 uses
+    125600 uses
+    125700 uses
+    125800 uses
+    125900 uses
+    126000 uses
+    126100 uses
+    126200 uses
+    126300 uses
+    126400 uses
+    126500 uses
+    126600 uses
+    126700 uses
+    126800 uses
+    126900 uses
+    127000 uses
+    127100 uses
+    127200 uses
+    127300 uses
+    127400 uses
+    127500 uses
+    127600 uses
+    127700 uses
+    127800 uses
+    127900 uses
+    128000 uses
+    128100 uses
+    128200 uses
+    128300 uses
+    128400 uses
+    128500 uses
+    128600 uses
+    128700 uses
+    128800 uses
+    128900 uses
+    129000 uses
+    129100 uses
+    129200 uses
+    129300 uses
+    129400 uses
+    129500 uses
+    129600 uses
+    129700 uses
+    129800 uses
+    129900 uses
+    130000 uses
+    130100 uses
+    130200 uses
+    130300 uses
+    130400 uses
+    130500 uses
+    130600 uses
+    130700 uses
+    130800 uses
+    130900 uses
+    131000 uses
+    131100 uses
+    131200 uses
+    131300 uses
+    131400 uses
+    131500 uses
+    131600 uses
+    131700 uses
+    131800 uses
+    131900 uses
+    132000 uses
+    132100 uses
+    132200 uses
+    132300 uses
+    132400 uses
+    132500 uses
+    132600 uses
+    132700 uses
+    132800 uses
+    132900 uses
+    133000 uses
+    133100 uses
+    133200 uses
+    133300 uses
+    133400 uses
+    133500 uses
+    133600 uses
+    133700 uses
+    133800 uses
+    133900 uses
+    134000 uses
+    134100 uses
+    134200 uses
+    134300 uses
+    134400 uses
+    134500 uses
+    134600 uses
+    134700 uses
+    134800 uses
+    134900 uses
+    135000 uses
+    135100 uses
+    135200 uses
+    135300 uses
+    135400 uses
+    135500 uses
+    135600 uses
+    135700 uses
+    135800 uses
+    135900 uses
+    136000 uses
+    136100 uses
+    136200 uses
+    136300 uses
+    136400 uses
+    136500 uses
+    136600 uses
+    136700 uses
+    136800 uses
+    136900 uses
+    137000 uses
+    137100 uses
+    137200 uses
+    137300 uses
+    137400 uses
+    137500 uses
+    137600 uses
+    137700 uses
+    137800 uses
+    137900 uses
+    138000 uses
+    138100 uses
+    138200 uses
+    138300 uses
+    138400 uses
+    138500 uses
+    138600 uses
+    138700 uses
+    138800 uses
+    138900 uses
+    139000 uses
+    139100 uses
+    139200 uses
+    139300 uses
+    139400 uses
+    139500 uses
+    139600 uses
+    139700 uses
+    139800 uses
+    139900 uses
+    140000 uses
+    140100 uses
+    140200 uses
+    140300 uses
+    140400 uses
+    140500 uses
+    140600 uses
+    140700 uses
+    140800 uses
+    140900 uses
+    141000 uses
+    141100 uses
+    141200 uses
+    141300 uses
+    141400 uses
+    141500 uses
+    141600 uses
+    141700 uses
+    141800 uses
+    141900 uses
+    142000 uses
+    142100 uses
+    142200 uses
+    142300 uses
+    142400 uses
+    142500 uses
+    142600 uses
+    142700 uses
+    142800 uses
+    142900 uses
+    143000 uses
+    143100 uses
+    143200 uses
+    143300 uses
+    143400 uses
+    143500 uses
+    143600 uses
+    143700 uses
+    143800 uses
+    143900 uses
+    144000 uses
+    144100 uses
+    144200 uses
+    144300 uses
+    144400 uses
+    144500 uses
+    144600 uses
+    144700 uses
+    144800 uses
+    144900 uses
+    145000 uses
+    145100 uses
+    145200 uses
+    145300 uses
+    145400 uses
+    145500 uses
+    145600 uses
+    145700 uses
+    145800 uses
+    145900 uses
+    146000 uses
+    146100 uses
+    146200 uses
+    146300 uses
+    146400 uses
+    146500 uses
+    146600 uses
+    146700 uses
+    146800 uses
+    146900 uses
+    147000 uses
+    147100 uses
+    147200 uses
+    147300 uses
+    147400 uses
+    147500 uses
+    147600 uses
+    147700 uses
+    147800 uses
+    147900 uses
+    148000 uses
+    148100 uses
+    148200 uses
+    148300 uses
+    148400 uses
+    148500 uses
+    148600 uses
+    148700 uses
+    148800 uses
+    148900 uses
+    149000 uses
+    149100 uses
+    149200 uses
+    149300 uses
+    149400 uses
+    149500 uses
+    149600 uses
+    149700 uses
+    149800 uses
+    149900 uses
+    150000 uses
+    150100 uses
+    150200 uses
+    150300 uses
+    150400 uses
+    150500 uses
+    150600 uses
+    150700 uses
+    150800 uses
+    150900 uses
+    151000 uses
+    151100 uses
+    151200 uses
+    151300 uses
+    151400 uses
+    151500 uses
+    151600 uses
+    151700 uses
+    151800 uses
+    151900 uses
+    152000 uses
+    152100 uses
+    152200 uses
+    152300 uses
+    152400 uses
+    152500 uses
+    152600 uses
+    152700 uses
+    152800 uses
+    152900 uses
+    153000 uses
+    153100 uses
+    153200 uses
+    153300 uses
+    153400 uses
+    153500 uses
+    153600 uses
+    153700 uses
+    153800 uses
+    153900 uses
+    154000 uses
+    154100 uses
+    154200 uses
+    154300 uses
+    154400 uses
+    154500 uses
+    154600 uses
+    154700 uses
+    154800 uses
+    154900 uses
+    155000 uses
+    155100 uses
+    155200 uses
+    155300 uses
+    155400 uses
+    155500 uses
+    155600 uses
+    155700 uses
+    155800 uses
+    155900 uses
+    156000 uses
+    156100 uses
+    156200 uses
+    156300 uses
+    156400 uses
+    156500 uses
+    156600 uses
+    156700 uses
+    156800 uses
+    156900 uses
+    157000 uses
+    157100 uses
+    157200 uses
+    157300 uses
+    157400 uses
+    157500 uses
+    157600 uses
+    157700 uses
+    157800 uses
+    157900 uses
+    158000 uses
+    158100 uses
+    158200 uses
+    158300 uses
+    158400 uses
+    158500 uses
+    158600 uses
+    158700 uses
+    158800 uses
+    158900 uses
+    159000 uses
+    159100 uses
+    159200 uses
+    159300 uses
+    159400 uses
+    159500 uses
+    159600 uses
+    159700 uses
+    159800 uses
+    159900 uses
+    160000 uses
+    160100 uses
+    160200 uses
+    160300 uses
+    160400 uses
+    160500 uses
+    160600 uses
+    160700 uses
+    160800 uses
+    160900 uses
+    161000 uses
+    161100 uses
+    161200 uses
+    161300 uses
+    161400 uses
+    161500 uses
+    161600 uses
+    161700 uses
+    161800 uses
+    161900 uses
+    162000 uses
+    162100 uses
+    162200 uses
+    162300 uses
+    162400 uses
+    162500 uses
+    162600 uses
+    162700 uses
+    162800 uses
+    162900 uses
+    163000 uses
+    163100 uses
+    163200 uses
+    163300 uses
+    163400 uses
+    163500 uses
+    163600 uses
+    163700 uses
+    163800 uses
+    163900 uses
+    164000 uses
+    164100 uses
+    164200 uses
+    164300 uses
+    164400 uses
+    164500 uses
+    164600 uses
+    164700 uses
+    164800 uses
+    164900 uses
+    165000 uses
+    165100 uses
+    165200 uses
+    165300 uses
+    165400 uses
+    165500 uses
+    165600 uses
+    165700 uses
+    165800 uses
+    165900 uses
+    166000 uses
+    166100 uses
+    166200 uses
+    166300 uses
+    166400 uses
+    166500 uses
+    166600 uses
+    166700 uses
+    166800 uses
+    166900 uses
+    167000 uses
+    167100 uses
+    167200 uses
+    167300 uses
+    167400 uses
+    167500 uses
+    167600 uses
+    167700 uses
+    167800 uses
+    167900 uses
+    168000 uses
+    168100 uses
+    168200 uses
+    168300 uses
+    168400 uses
+    168500 uses
+    168600 uses
+    168700 uses
+    168800 uses
+    168900 uses
+    169000 uses
+    169100 uses
+    169200 uses
+    169300 uses
+    169400 uses
+    169500 uses
+    169600 uses
+    169700 uses
+    169800 uses
+    169900 uses
+    170000 uses
+    170100 uses
+    170200 uses
+    170300 uses
+    170400 uses
+    170500 uses
+    170600 uses
+    170700 uses
+    170800 uses
+    170900 uses
+    171000 uses
+    171100 uses
+    171200 uses
+    171300 uses
+    171400 uses
+    171500 uses
+    171600 uses
+    171700 uses
+    171800 uses
+    171900 uses
+    172000 uses
+    172100 uses
+    172200 uses
+    172300 uses
+    172400 uses
+    172500 uses
+    172600 uses
+    172700 uses
+    172800 uses
+    172900 uses
+    173000 uses
+    173100 uses
+    173200 uses
+    173300 uses
+    173400 uses
+    173500 uses
+    173600 uses
+    173700 uses
+    173800 uses
+    173900 uses
+    174000 uses
+    174100 uses
+    174200 uses
+    174300 uses
+    174400 uses
+    174500 uses
+    174600 uses
+    174700 uses
+    174800 uses
+    174900 uses
+    175000 uses
+    175100 uses
+    175200 uses
+    175300 uses
+    175400 uses
+    175500 uses
+    175600 uses
+    175700 uses
+    175800 uses
+    175900 uses
+    176000 uses
+    176100 uses
+    176200 uses
+    176300 uses
+    176400 uses
+    176500 uses
+    176600 uses
+Reading "sky130_fd_sc_hd__mux2_1".
+Reading "clk_skew_adjust".
+Reading "sky130_ef_sc_hd__fakediode_2".
+Reading "wb_host".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+Reading "sdrc_top".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+    24900 uses
+    25000 uses
+    25100 uses
+    25200 uses
+    25300 uses
+    25400 uses
+    25500 uses
+    25600 uses
+    25700 uses
+    25800 uses
+    25900 uses
+    26000 uses
+    26100 uses
+    26200 uses
+    26300 uses
+    26400 uses
+    26500 uses
+    26600 uses
+    26700 uses
+    26800 uses
+    26900 uses
+    27000 uses
+    27100 uses
+    27200 uses
+    27300 uses
+    27400 uses
+    27500 uses
+    27600 uses
+    27700 uses
+    27800 uses
+    27900 uses
+    28000 uses
+    28100 uses
+    28200 uses
+    28300 uses
+    28400 uses
+    28500 uses
+    28600 uses
+    28700 uses
+    28800 uses
+    28900 uses
+    29000 uses
+    29100 uses
+    29200 uses
+    29300 uses
+    29400 uses
+    29500 uses
+    29600 uses
+    29700 uses
+    29800 uses
+    29900 uses
+    30000 uses
+    30100 uses
+    30200 uses
+    30300 uses
+    30400 uses
+    30500 uses
+    30600 uses
+    30700 uses
+    30800 uses
+    30900 uses
+    31000 uses
+    31100 uses
+    31200 uses
+    31300 uses
+    31400 uses
+    31500 uses
+    31600 uses
+    31700 uses
+    31800 uses
+    31900 uses
+    32000 uses
+    32100 uses
+    32200 uses
+    32300 uses
+    32400 uses
+    32500 uses
+    32600 uses
+    32700 uses
+    32800 uses
+    32900 uses
+    33000 uses
+    33100 uses
+    33200 uses
+    33300 uses
+    33400 uses
+    33500 uses
+    33600 uses
+    33700 uses
+    33800 uses
+    33900 uses
+    34000 uses
+    34100 uses
+    34200 uses
+    34300 uses
+    34400 uses
+    34500 uses
+    34600 uses
+    34700 uses
+    34800 uses
+    34900 uses
+Reading "sky130_fd_sc_hd__inv_4".
+Reading "uart_core".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+Reading "wb_interconnect".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+    24900 uses
+    25000 uses
+    25100 uses
+    25200 uses
+    25300 uses
+    25400 uses
+    25500 uses
+    25600 uses
+    25700 uses
+    25800 uses
+    25900 uses
+    26000 uses
+    26100 uses
+    26200 uses
+    26300 uses
+    26400 uses
+    26500 uses
+    26600 uses
+    26700 uses
+    26800 uses
+    26900 uses
+    27000 uses
+    27100 uses
+    27200 uses
+    27300 uses
+    27400 uses
+    27500 uses
+    27600 uses
+    27700 uses
+    27800 uses
+    27900 uses
+    28000 uses
+    28100 uses
+    28200 uses
+    28300 uses
+    28400 uses
+    28500 uses
+    28600 uses
+    28700 uses
+    28800 uses
+    28900 uses
+    29000 uses
+    29100 uses
+    29200 uses
+    29300 uses
+    29400 uses
+    29500 uses
+    29600 uses
+    29700 uses
+    29800 uses
+    29900 uses
+    30000 uses
+    30100 uses
+    30200 uses
+    30300 uses
+    30400 uses
+    30500 uses
+    30600 uses
+    30700 uses
+    30800 uses
+    30900 uses
+    31000 uses
+    31100 uses
+    31200 uses
+    31300 uses
+    31400 uses
+    31500 uses
+    31600 uses
+    31700 uses
+    31800 uses
+    31900 uses
+    32000 uses
+    32100 uses
+    32200 uses
+    32300 uses
+    32400 uses
+    32500 uses
+    32600 uses
+    32700 uses
+    32800 uses
+    32900 uses
+    33000 uses
+    33100 uses
+    33200 uses
+    33300 uses
+    33400 uses
+    33500 uses
+    33600 uses
+    33700 uses
+    33800 uses
+    33900 uses
+    34000 uses
+    34100 uses
+    34200 uses
+    34300 uses
+    34400 uses
+    34500 uses
+    34600 uses
+    34700 uses
+    34800 uses
+    34900 uses
+    35000 uses
+    35100 uses
+    35200 uses
+    35300 uses
+    35400 uses
+    35500 uses
+    35600 uses
+    35700 uses
+    35800 uses
+    35900 uses
+Reading "glbl_cfg".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+Reading "sky130_fd_sc_hd__o41a_4".
+Reading "spim_top".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+Reading "user_project_wrapper".
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:   20.00 x 3520.00  (-20.00,  0.00 ), (  0.00,  3520.00)  70400.00  
+lambda:   2000.00 x 352000.00  (-2000.00,  0.00 ), (  0.00,  352000.00)  704000000.00
+internal:   4000 x 704000  ( -4000,  0    ), (     0,  704000)  2816000000
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:   20.00 x 3520.00  ( 2920.00,  0.00 ), ( 2940.00,  3520.00)  70400.00  
+lambda:   2000.00 x 352000.00  ( 292000.00,  0.00 ), ( 294000.00,  352000.00)  704000000.00
+internal:   4000 x 704000  ( 584000,  0    ), ( 588000,  704000)  2816000000
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:  2960.00 x 20.00   (-20.00, -20.00), ( 2940.00,  0.00 )  59200.00  
+lambda:   296000.00 x 2000.00  (-2000.00, -2000.00), ( 294000.00,  0.00 )  592000000.00
+internal: 592000 x 4000    ( -4000, -4000 ), ( 588000,  0    )  2368000000
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:  2960.00 x 20.00   (-20.00,  3520.00), ( 2940.00,  3540.00)  59200.00  
+lambda:   296000.00 x 2000.00  (-2000.00,  352000.00), ( 294000.00,  354000.00)  592000000.00
+internal: 592000 x 4000    ( -4000,  704000), ( 588000,  708000)  2368000000
+   Generating output for cell xor_target
+/home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_erased.gds
diff --git a/checks/erase_box_user_project_wrapper_empty.gds.log b/checks/erase_box_user_project_wrapper_empty.gds.log
new file mode 100644
index 0000000..a2e47b6
--- /dev/null
+++ b/checks/erase_box_user_project_wrapper_empty.gds.log
@@ -0,0 +1,45 @@
+/home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_empty.gds /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_empty_erased.gds user_project_wrapper
+
+Magic 8.3 revision 182 - Compiled on Fri Jun 25 23:58:13 UTC 2021.
+Starting magic under Tcl interpreter
+Using the terminal as the console.
+Using NULL graphics device.
+Processing system .magicrc file
+Sourcing design .magicrc for technology sky130A ...
+2 Magic internal units = 1 Lambda
+Input style sky130(): scaleFactor=2, multiplier=2
+Scaled tech values by 2 / 1 to match internal grid scaling
+Loading sky130A Device Generator Menu ...
+Using technology "sky130A", version 1.0.116-4-g522a373
+Input style sky130(vendor): scaleFactor=2, multiplier=2
+CIF input style is now "sky130(vendor)"
+Warning: Calma reading is not undoable!  I hope that's OK.
+Library written using GDS-II Release 3.0
+Library name: user_project_wrapper
+Reading "user_project_wrapper".
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:   20.00 x 3520.00  (-20.00,  0.00 ), (  0.00,  3520.00)  70400.00  
+lambda:   2000.00 x 352000.00  (-2000.00,  0.00 ), (  0.00,  352000.00)  704000000.00
+internal:   4000 x 704000  ( -4000,  0    ), (     0,  704000)  2816000000
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:   20.00 x 3520.00  ( 2920.00,  0.00 ), ( 2940.00,  3520.00)  70400.00  
+lambda:   2000.00 x 352000.00  ( 292000.00,  0.00 ), ( 294000.00,  352000.00)  704000000.00
+internal:   4000 x 704000  ( 584000,  0    ), ( 588000,  704000)  2816000000
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:  2960.00 x 20.00   (-20.00, -20.00), ( 2940.00,  0.00 )  59200.00  
+lambda:   296000.00 x 2000.00  (-2000.00, -2000.00), ( 294000.00,  0.00 )  592000000.00
+internal: 592000 x 4000    ( -4000, -4000 ), ( 588000,  0    )  2368000000
+Root cell box:
+           width x height  (   llx,  lly  ), (   urx,  ury  )  area (units^2)
+
+microns:  2960.00 x 20.00   (-20.00,  3520.00), ( 2940.00,  3540.00)  59200.00  
+lambda:   296000.00 x 2000.00  (-2000.00,  352000.00), ( 294000.00,  354000.00)  592000000.00
+internal: 592000 x 4000    ( -4000,  704000), ( 588000,  708000)  2368000000
+   Generating output for cell xor_target
+/home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_empty_erased.gds
diff --git a/checks/full_log.log b/checks/full_log.log
index 912e28a..2484dda 100644
--- a/checks/full_log.log
+++ b/checks/full_log.log
@@ -3,7 +3,7 @@
 Step 0 done without fatal errors.
  Executing Step 1 of 8: Project License Check
 {{LICENSE COMPLIANCE PASSED}} Apache-2.0 LICENSE file was found in project root
- SPDX COMPLIANCE Found 503 non-compliant files with the SPDX Standard. Check full log for more information
+ SPDX COMPLIANCE Found 691 non-compliant files with the SPDX Standard. Check full log for more information
 SPDX COMPLIANCE: NON-COMPLIANT FILES PREVIEW: ['/home/dinesha/workarea/opencore/git/yifive_r0/a', '/home/dinesha/workarea/opencore/git/yifive_r0/README.md', '/home/dinesha/workarea/opencore/git/yifive_r0/test.v', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/default.cvcrc', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/config.tcl', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/magic_spice.tcl', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/opt.lib', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/trimmed.lib', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/tracks_copy.info', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/sky130_fd_sc_hd__tt_025C_1v80.no_pg.lib', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/synthesis/hierarchy.dot', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/synthesis/yosys.sdc', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/routing/20-fastroute_4.guide', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/routing/24-tritonRoute.param', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/routing/17-fastroute.guide', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/routing/21-fastroute_5.guide', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/routing/24-tritonRoute.guide', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/routing/19-fastroute_3.guide', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/routing/18-fastroute_2.guide', '/home/dinesha/workarea/opencore/git/yifive_r0/openlane/syntacore/runs/syntacore/tmp/magic/sky130_fd_sc_hd__conb_1.ext']
  Executing Step 2 of 8: YAML File Check
  YAML file valid!
diff --git a/checks/magic_drc.log b/checks/magic_drc.log
new file mode 100644
index 0000000..7f275df
--- /dev/null
+++ b/checks/magic_drc.log
@@ -0,0 +1,3279 @@
+
+Magic 8.3 revision 182 - Compiled on Fri Jun 25 23:58:13 UTC 2021.
+Starting magic under Tcl interpreter
+Using the terminal as the console.
+Using NULL graphics device.
+Processing system .magicrc file
+Sourcing design .magicrc for technology sky130A ...
+2 Magic internal units = 1 Lambda
+Input style sky130(): scaleFactor=2, multiplier=2
+Scaled tech values by 2 / 1 to match internal grid scaling
+Loading sky130A Device Generator Menu ...
+Loading "/usr/local/bin/drc_checks/magic_drc_check.tcl" from command line.
+Warning: Calma reading is not undoable!  I hope that's OK.
+Library written using GDS-II Release 3.0
+Library name: user_project_wrapper
+Reading "sky130_fd_sc_hd__decap_3".
+Reading "sky130_fd_sc_hd__decap_8".
+Reading "sky130_fd_sc_hd__decap_6".
+Reading "sky130_fd_sc_hd__decap_12".
+Reading "sky130_fd_sc_hd__tapvpwrvgnd_1".
+Reading "sky130_fd_sc_hd__decap_4".
+Reading "sky130_fd_sc_hd__o22a_4".
+Reading "sky130_fd_sc_hd__fill_1".
+Reading "sky130_fd_sc_hd__clkbuf_1".
+Reading "sky130_fd_sc_hd__buf_2".
+Reading "sky130_fd_sc_hd__and2_4".
+Reading "sky130_fd_sc_hd__o21a_4".
+Reading "sky130_fd_sc_hd__or2_4".
+Reading "sky130_fd_sc_hd__fill_2".
+Reading "sky130_fd_sc_hd__and3_4".
+Reading "sky130_fd_sc_hd__dfxtp_4".
+Reading "sky130_fd_sc_hd__conb_1".
+Reading "sky130_fd_sc_hd__inv_2".
+Reading "sky130_fd_sc_hd__a32o_4".
+Reading "sky130_fd_sc_hd__a2bb2o_4".
+Reading "sky130_fd_sc_hd__diode_2".
+Reading "sky130_fd_sc_hd__dfrtp_4".
+Reading "sky130_fd_sc_hd__a211o_4".
+Reading "sky130_fd_sc_hd__a21o_4".
+Reading "sky130_fd_sc_hd__a21boi_4".
+Reading "sky130_fd_sc_hd__or4_4".
+Reading "sky130_fd_sc_hd__or3_4".
+Reading "sky130_fd_sc_hd__buf_4".
+Reading "sky130_fd_sc_hd__a21oi_4".
+Reading "sky130_fd_sc_hd__and4_4".
+Reading "sky130_fd_sc_hd__dfstp_4".
+Reading "sky130_fd_sc_hd__nor2_4".
+Reading "sky130_fd_sc_hd__nand2_4".
+Reading "sky130_fd_sc_hd__a22oi_4".
+Reading "sky130_fd_sc_hd__a2111o_4".
+Reading "sky130_fd_sc_hd__buf_8".
+Reading "sky130_fd_sc_hd__o32a_4".
+Reading "sky130_fd_sc_hd__clkbuf_16".
+Reading "sky130_fd_sc_hd__a21bo_4".
+Reading "sky130_fd_sc_hd__o21ai_4".
+Reading "scr1_top_wb".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+    24900 uses
+    25000 uses
+    25100 uses
+    25200 uses
+    25300 uses
+    25400 uses
+    25500 uses
+    25600 uses
+    25700 uses
+    25800 uses
+    25900 uses
+    26000 uses
+    26100 uses
+    26200 uses
+    26300 uses
+    26400 uses
+    26500 uses
+    26600 uses
+    26700 uses
+    26800 uses
+    26900 uses
+    27000 uses
+    27100 uses
+    27200 uses
+    27300 uses
+    27400 uses
+    27500 uses
+    27600 uses
+    27700 uses
+    27800 uses
+    27900 uses
+    28000 uses
+    28100 uses
+    28200 uses
+    28300 uses
+    28400 uses
+    28500 uses
+    28600 uses
+    28700 uses
+    28800 uses
+    28900 uses
+    29000 uses
+    29100 uses
+    29200 uses
+    29300 uses
+    29400 uses
+    29500 uses
+    29600 uses
+    29700 uses
+    29800 uses
+    29900 uses
+    30000 uses
+    30100 uses
+    30200 uses
+    30300 uses
+    30400 uses
+    30500 uses
+    30600 uses
+    30700 uses
+    30800 uses
+    30900 uses
+    31000 uses
+    31100 uses
+    31200 uses
+    31300 uses
+    31400 uses
+    31500 uses
+    31600 uses
+    31700 uses
+    31800 uses
+    31900 uses
+    32000 uses
+    32100 uses
+    32200 uses
+    32300 uses
+    32400 uses
+    32500 uses
+    32600 uses
+    32700 uses
+    32800 uses
+    32900 uses
+    33000 uses
+    33100 uses
+    33200 uses
+    33300 uses
+    33400 uses
+    33500 uses
+    33600 uses
+    33700 uses
+    33800 uses
+    33900 uses
+    34000 uses
+    34100 uses
+    34200 uses
+    34300 uses
+    34400 uses
+    34500 uses
+    34600 uses
+    34700 uses
+    34800 uses
+    34900 uses
+    35000 uses
+    35100 uses
+    35200 uses
+    35300 uses
+    35400 uses
+    35500 uses
+    35600 uses
+    35700 uses
+    35800 uses
+    35900 uses
+    36000 uses
+    36100 uses
+    36200 uses
+    36300 uses
+    36400 uses
+    36500 uses
+    36600 uses
+    36700 uses
+    36800 uses
+    36900 uses
+    37000 uses
+    37100 uses
+    37200 uses
+    37300 uses
+    37400 uses
+    37500 uses
+    37600 uses
+    37700 uses
+    37800 uses
+    37900 uses
+    38000 uses
+    38100 uses
+    38200 uses
+    38300 uses
+    38400 uses
+    38500 uses
+    38600 uses
+    38700 uses
+    38800 uses
+    38900 uses
+    39000 uses
+    39100 uses
+    39200 uses
+    39300 uses
+    39400 uses
+    39500 uses
+    39600 uses
+    39700 uses
+    39800 uses
+    39900 uses
+    40000 uses
+    40100 uses
+    40200 uses
+    40300 uses
+    40400 uses
+    40500 uses
+    40600 uses
+    40700 uses
+    40800 uses
+    40900 uses
+    41000 uses
+    41100 uses
+    41200 uses
+    41300 uses
+    41400 uses
+    41500 uses
+    41600 uses
+    41700 uses
+    41800 uses
+    41900 uses
+    42000 uses
+    42100 uses
+    42200 uses
+    42300 uses
+    42400 uses
+    42500 uses
+    42600 uses
+    42700 uses
+    42800 uses
+    42900 uses
+    43000 uses
+    43100 uses
+    43200 uses
+    43300 uses
+    43400 uses
+    43500 uses
+    43600 uses
+    43700 uses
+    43800 uses
+    43900 uses
+    44000 uses
+    44100 uses
+    44200 uses
+    44300 uses
+    44400 uses
+    44500 uses
+    44600 uses
+    44700 uses
+    44800 uses
+    44900 uses
+    45000 uses
+    45100 uses
+    45200 uses
+    45300 uses
+    45400 uses
+    45500 uses
+    45600 uses
+    45700 uses
+    45800 uses
+    45900 uses
+    46000 uses
+    46100 uses
+    46200 uses
+    46300 uses
+    46400 uses
+    46500 uses
+    46600 uses
+    46700 uses
+    46800 uses
+    46900 uses
+    47000 uses
+    47100 uses
+    47200 uses
+    47300 uses
+    47400 uses
+    47500 uses
+    47600 uses
+    47700 uses
+    47800 uses
+    47900 uses
+    48000 uses
+    48100 uses
+    48200 uses
+    48300 uses
+    48400 uses
+    48500 uses
+    48600 uses
+    48700 uses
+    48800 uses
+    48900 uses
+    49000 uses
+    49100 uses
+    49200 uses
+    49300 uses
+    49400 uses
+    49500 uses
+    49600 uses
+    49700 uses
+    49800 uses
+    49900 uses
+    50000 uses
+    50100 uses
+    50200 uses
+    50300 uses
+    50400 uses
+    50500 uses
+    50600 uses
+    50700 uses
+    50800 uses
+    50900 uses
+    51000 uses
+    51100 uses
+    51200 uses
+    51300 uses
+    51400 uses
+    51500 uses
+    51600 uses
+    51700 uses
+    51800 uses
+    51900 uses
+    52000 uses
+    52100 uses
+    52200 uses
+    52300 uses
+    52400 uses
+    52500 uses
+    52600 uses
+    52700 uses
+    52800 uses
+    52900 uses
+    53000 uses
+    53100 uses
+    53200 uses
+    53300 uses
+    53400 uses
+    53500 uses
+    53600 uses
+    53700 uses
+    53800 uses
+    53900 uses
+    54000 uses
+    54100 uses
+    54200 uses
+    54300 uses
+    54400 uses
+    54500 uses
+    54600 uses
+    54700 uses
+    54800 uses
+    54900 uses
+    55000 uses
+    55100 uses
+    55200 uses
+    55300 uses
+    55400 uses
+    55500 uses
+    55600 uses
+    55700 uses
+    55800 uses
+    55900 uses
+    56000 uses
+    56100 uses
+    56200 uses
+    56300 uses
+    56400 uses
+    56500 uses
+    56600 uses
+    56700 uses
+    56800 uses
+    56900 uses
+    57000 uses
+    57100 uses
+    57200 uses
+    57300 uses
+    57400 uses
+    57500 uses
+    57600 uses
+    57700 uses
+    57800 uses
+    57900 uses
+    58000 uses
+    58100 uses
+    58200 uses
+    58300 uses
+    58400 uses
+    58500 uses
+    58600 uses
+    58700 uses
+    58800 uses
+    58900 uses
+    59000 uses
+    59100 uses
+    59200 uses
+    59300 uses
+    59400 uses
+    59500 uses
+    59600 uses
+    59700 uses
+    59800 uses
+    59900 uses
+    60000 uses
+    60100 uses
+    60200 uses
+    60300 uses
+    60400 uses
+    60500 uses
+    60600 uses
+    60700 uses
+    60800 uses
+    60900 uses
+    61000 uses
+    61100 uses
+    61200 uses
+    61300 uses
+    61400 uses
+    61500 uses
+    61600 uses
+    61700 uses
+    61800 uses
+    61900 uses
+    62000 uses
+    62100 uses
+    62200 uses
+    62300 uses
+    62400 uses
+    62500 uses
+    62600 uses
+    62700 uses
+    62800 uses
+    62900 uses
+    63000 uses
+    63100 uses
+    63200 uses
+    63300 uses
+    63400 uses
+    63500 uses
+    63600 uses
+    63700 uses
+    63800 uses
+    63900 uses
+    64000 uses
+    64100 uses
+    64200 uses
+    64300 uses
+    64400 uses
+    64500 uses
+    64600 uses
+    64700 uses
+    64800 uses
+    64900 uses
+    65000 uses
+    65100 uses
+    65200 uses
+    65300 uses
+    65400 uses
+    65500 uses
+    65600 uses
+    65700 uses
+    65800 uses
+    65900 uses
+    66000 uses
+    66100 uses
+    66200 uses
+    66300 uses
+    66400 uses
+    66500 uses
+    66600 uses
+    66700 uses
+    66800 uses
+    66900 uses
+    67000 uses
+    67100 uses
+    67200 uses
+    67300 uses
+    67400 uses
+    67500 uses
+    67600 uses
+    67700 uses
+    67800 uses
+    67900 uses
+    68000 uses
+    68100 uses
+    68200 uses
+    68300 uses
+    68400 uses
+    68500 uses
+    68600 uses
+    68700 uses
+    68800 uses
+    68900 uses
+    69000 uses
+    69100 uses
+    69200 uses
+    69300 uses
+    69400 uses
+    69500 uses
+    69600 uses
+    69700 uses
+    69800 uses
+    69900 uses
+    70000 uses
+    70100 uses
+    70200 uses
+    70300 uses
+    70400 uses
+    70500 uses
+    70600 uses
+    70700 uses
+    70800 uses
+    70900 uses
+    71000 uses
+    71100 uses
+    71200 uses
+    71300 uses
+    71400 uses
+    71500 uses
+    71600 uses
+    71700 uses
+    71800 uses
+    71900 uses
+    72000 uses
+    72100 uses
+    72200 uses
+    72300 uses
+    72400 uses
+    72500 uses
+    72600 uses
+    72700 uses
+    72800 uses
+    72900 uses
+    73000 uses
+    73100 uses
+    73200 uses
+    73300 uses
+    73400 uses
+    73500 uses
+    73600 uses
+    73700 uses
+    73800 uses
+    73900 uses
+    74000 uses
+    74100 uses
+    74200 uses
+    74300 uses
+    74400 uses
+    74500 uses
+    74600 uses
+    74700 uses
+    74800 uses
+    74900 uses
+    75000 uses
+    75100 uses
+    75200 uses
+    75300 uses
+    75400 uses
+    75500 uses
+    75600 uses
+    75700 uses
+    75800 uses
+    75900 uses
+    76000 uses
+    76100 uses
+    76200 uses
+    76300 uses
+    76400 uses
+    76500 uses
+    76600 uses
+    76700 uses
+    76800 uses
+    76900 uses
+    77000 uses
+    77100 uses
+    77200 uses
+    77300 uses
+    77400 uses
+    77500 uses
+    77600 uses
+    77700 uses
+    77800 uses
+    77900 uses
+    78000 uses
+    78100 uses
+    78200 uses
+    78300 uses
+    78400 uses
+    78500 uses
+    78600 uses
+    78700 uses
+    78800 uses
+    78900 uses
+    79000 uses
+    79100 uses
+    79200 uses
+    79300 uses
+    79400 uses
+    79500 uses
+    79600 uses
+    79700 uses
+    79800 uses
+    79900 uses
+    80000 uses
+    80100 uses
+    80200 uses
+    80300 uses
+    80400 uses
+    80500 uses
+    80600 uses
+    80700 uses
+    80800 uses
+    80900 uses
+    81000 uses
+    81100 uses
+    81200 uses
+    81300 uses
+    81400 uses
+    81500 uses
+    81600 uses
+    81700 uses
+    81800 uses
+    81900 uses
+    82000 uses
+    82100 uses
+    82200 uses
+    82300 uses
+    82400 uses
+    82500 uses
+    82600 uses
+    82700 uses
+    82800 uses
+    82900 uses
+    83000 uses
+    83100 uses
+    83200 uses
+    83300 uses
+    83400 uses
+    83500 uses
+    83600 uses
+    83700 uses
+    83800 uses
+    83900 uses
+    84000 uses
+    84100 uses
+    84200 uses
+    84300 uses
+    84400 uses
+    84500 uses
+    84600 uses
+    84700 uses
+    84800 uses
+    84900 uses
+    85000 uses
+    85100 uses
+    85200 uses
+    85300 uses
+    85400 uses
+    85500 uses
+    85600 uses
+    85700 uses
+    85800 uses
+    85900 uses
+    86000 uses
+    86100 uses
+    86200 uses
+    86300 uses
+    86400 uses
+    86500 uses
+    86600 uses
+    86700 uses
+    86800 uses
+    86900 uses
+    87000 uses
+    87100 uses
+    87200 uses
+    87300 uses
+    87400 uses
+    87500 uses
+    87600 uses
+    87700 uses
+    87800 uses
+    87900 uses
+    88000 uses
+    88100 uses
+    88200 uses
+    88300 uses
+    88400 uses
+    88500 uses
+    88600 uses
+    88700 uses
+    88800 uses
+    88900 uses
+    89000 uses
+    89100 uses
+    89200 uses
+    89300 uses
+    89400 uses
+    89500 uses
+    89600 uses
+    89700 uses
+    89800 uses
+    89900 uses
+    90000 uses
+    90100 uses
+    90200 uses
+    90300 uses
+    90400 uses
+    90500 uses
+    90600 uses
+    90700 uses
+    90800 uses
+    90900 uses
+    91000 uses
+    91100 uses
+    91200 uses
+    91300 uses
+    91400 uses
+    91500 uses
+    91600 uses
+    91700 uses
+    91800 uses
+    91900 uses
+    92000 uses
+    92100 uses
+    92200 uses
+    92300 uses
+    92400 uses
+    92500 uses
+    92600 uses
+    92700 uses
+    92800 uses
+    92900 uses
+    93000 uses
+    93100 uses
+    93200 uses
+    93300 uses
+    93400 uses
+    93500 uses
+    93600 uses
+    93700 uses
+    93800 uses
+    93900 uses
+    94000 uses
+    94100 uses
+    94200 uses
+    94300 uses
+    94400 uses
+    94500 uses
+    94600 uses
+    94700 uses
+    94800 uses
+    94900 uses
+    95000 uses
+    95100 uses
+    95200 uses
+    95300 uses
+    95400 uses
+    95500 uses
+    95600 uses
+    95700 uses
+    95800 uses
+    95900 uses
+    96000 uses
+    96100 uses
+    96200 uses
+    96300 uses
+    96400 uses
+    96500 uses
+    96600 uses
+    96700 uses
+    96800 uses
+    96900 uses
+    97000 uses
+    97100 uses
+    97200 uses
+    97300 uses
+    97400 uses
+    97500 uses
+    97600 uses
+    97700 uses
+    97800 uses
+    97900 uses
+    98000 uses
+    98100 uses
+    98200 uses
+    98300 uses
+    98400 uses
+    98500 uses
+    98600 uses
+    98700 uses
+    98800 uses
+    98900 uses
+    99000 uses
+    99100 uses
+    99200 uses
+    99300 uses
+    99400 uses
+    99500 uses
+    99600 uses
+    99700 uses
+    99800 uses
+    99900 uses
+    100000 uses
+    100100 uses
+    100200 uses
+    100300 uses
+    100400 uses
+    100500 uses
+    100600 uses
+    100700 uses
+    100800 uses
+    100900 uses
+    101000 uses
+    101100 uses
+    101200 uses
+    101300 uses
+    101400 uses
+    101500 uses
+    101600 uses
+    101700 uses
+    101800 uses
+    101900 uses
+    102000 uses
+    102100 uses
+    102200 uses
+    102300 uses
+    102400 uses
+    102500 uses
+    102600 uses
+    102700 uses
+    102800 uses
+    102900 uses
+    103000 uses
+    103100 uses
+    103200 uses
+    103300 uses
+    103400 uses
+    103500 uses
+    103600 uses
+    103700 uses
+    103800 uses
+    103900 uses
+    104000 uses
+    104100 uses
+    104200 uses
+    104300 uses
+    104400 uses
+    104500 uses
+    104600 uses
+    104700 uses
+    104800 uses
+    104900 uses
+    105000 uses
+    105100 uses
+    105200 uses
+    105300 uses
+    105400 uses
+    105500 uses
+    105600 uses
+    105700 uses
+    105800 uses
+    105900 uses
+    106000 uses
+    106100 uses
+    106200 uses
+    106300 uses
+    106400 uses
+    106500 uses
+    106600 uses
+    106700 uses
+    106800 uses
+    106900 uses
+    107000 uses
+    107100 uses
+    107200 uses
+    107300 uses
+    107400 uses
+    107500 uses
+    107600 uses
+    107700 uses
+    107800 uses
+    107900 uses
+    108000 uses
+    108100 uses
+    108200 uses
+    108300 uses
+    108400 uses
+    108500 uses
+    108600 uses
+    108700 uses
+    108800 uses
+    108900 uses
+    109000 uses
+    109100 uses
+    109200 uses
+    109300 uses
+    109400 uses
+    109500 uses
+    109600 uses
+    109700 uses
+    109800 uses
+    109900 uses
+    110000 uses
+    110100 uses
+    110200 uses
+    110300 uses
+    110400 uses
+    110500 uses
+    110600 uses
+    110700 uses
+    110800 uses
+    110900 uses
+    111000 uses
+    111100 uses
+    111200 uses
+    111300 uses
+    111400 uses
+    111500 uses
+    111600 uses
+    111700 uses
+    111800 uses
+    111900 uses
+    112000 uses
+    112100 uses
+    112200 uses
+    112300 uses
+    112400 uses
+    112500 uses
+    112600 uses
+    112700 uses
+    112800 uses
+    112900 uses
+    113000 uses
+    113100 uses
+    113200 uses
+    113300 uses
+    113400 uses
+    113500 uses
+    113600 uses
+    113700 uses
+    113800 uses
+    113900 uses
+    114000 uses
+    114100 uses
+    114200 uses
+    114300 uses
+    114400 uses
+    114500 uses
+    114600 uses
+    114700 uses
+    114800 uses
+    114900 uses
+    115000 uses
+    115100 uses
+    115200 uses
+    115300 uses
+    115400 uses
+    115500 uses
+    115600 uses
+    115700 uses
+    115800 uses
+    115900 uses
+    116000 uses
+    116100 uses
+    116200 uses
+    116300 uses
+    116400 uses
+    116500 uses
+    116600 uses
+    116700 uses
+    116800 uses
+    116900 uses
+    117000 uses
+    117100 uses
+    117200 uses
+    117300 uses
+    117400 uses
+    117500 uses
+    117600 uses
+    117700 uses
+    117800 uses
+    117900 uses
+    118000 uses
+    118100 uses
+    118200 uses
+    118300 uses
+    118400 uses
+    118500 uses
+    118600 uses
+    118700 uses
+    118800 uses
+    118900 uses
+    119000 uses
+    119100 uses
+    119200 uses
+    119300 uses
+    119400 uses
+    119500 uses
+    119600 uses
+    119700 uses
+    119800 uses
+    119900 uses
+    120000 uses
+    120100 uses
+    120200 uses
+    120300 uses
+    120400 uses
+    120500 uses
+    120600 uses
+    120700 uses
+    120800 uses
+    120900 uses
+    121000 uses
+    121100 uses
+    121200 uses
+    121300 uses
+    121400 uses
+    121500 uses
+    121600 uses
+    121700 uses
+    121800 uses
+    121900 uses
+    122000 uses
+    122100 uses
+    122200 uses
+    122300 uses
+    122400 uses
+    122500 uses
+    122600 uses
+    122700 uses
+    122800 uses
+    122900 uses
+    123000 uses
+    123100 uses
+    123200 uses
+    123300 uses
+    123400 uses
+    123500 uses
+    123600 uses
+    123700 uses
+    123800 uses
+    123900 uses
+    124000 uses
+    124100 uses
+    124200 uses
+    124300 uses
+    124400 uses
+    124500 uses
+    124600 uses
+    124700 uses
+    124800 uses
+    124900 uses
+    125000 uses
+    125100 uses
+    125200 uses
+    125300 uses
+    125400 uses
+    125500 uses
+    125600 uses
+    125700 uses
+    125800 uses
+    125900 uses
+    126000 uses
+    126100 uses
+    126200 uses
+    126300 uses
+    126400 uses
+    126500 uses
+    126600 uses
+    126700 uses
+    126800 uses
+    126900 uses
+    127000 uses
+    127100 uses
+    127200 uses
+    127300 uses
+    127400 uses
+    127500 uses
+    127600 uses
+    127700 uses
+    127800 uses
+    127900 uses
+    128000 uses
+    128100 uses
+    128200 uses
+    128300 uses
+    128400 uses
+    128500 uses
+    128600 uses
+    128700 uses
+    128800 uses
+    128900 uses
+    129000 uses
+    129100 uses
+    129200 uses
+    129300 uses
+    129400 uses
+    129500 uses
+    129600 uses
+    129700 uses
+    129800 uses
+    129900 uses
+    130000 uses
+    130100 uses
+    130200 uses
+    130300 uses
+    130400 uses
+    130500 uses
+    130600 uses
+    130700 uses
+    130800 uses
+    130900 uses
+    131000 uses
+    131100 uses
+    131200 uses
+    131300 uses
+    131400 uses
+    131500 uses
+    131600 uses
+    131700 uses
+    131800 uses
+    131900 uses
+    132000 uses
+    132100 uses
+    132200 uses
+    132300 uses
+    132400 uses
+    132500 uses
+    132600 uses
+    132700 uses
+    132800 uses
+    132900 uses
+    133000 uses
+    133100 uses
+    133200 uses
+    133300 uses
+    133400 uses
+    133500 uses
+    133600 uses
+    133700 uses
+    133800 uses
+    133900 uses
+    134000 uses
+    134100 uses
+    134200 uses
+    134300 uses
+    134400 uses
+    134500 uses
+    134600 uses
+    134700 uses
+    134800 uses
+    134900 uses
+    135000 uses
+    135100 uses
+    135200 uses
+    135300 uses
+    135400 uses
+    135500 uses
+    135600 uses
+    135700 uses
+    135800 uses
+    135900 uses
+    136000 uses
+    136100 uses
+    136200 uses
+    136300 uses
+    136400 uses
+    136500 uses
+    136600 uses
+    136700 uses
+    136800 uses
+    136900 uses
+    137000 uses
+    137100 uses
+    137200 uses
+    137300 uses
+    137400 uses
+    137500 uses
+    137600 uses
+    137700 uses
+    137800 uses
+    137900 uses
+    138000 uses
+    138100 uses
+    138200 uses
+    138300 uses
+    138400 uses
+    138500 uses
+    138600 uses
+    138700 uses
+    138800 uses
+    138900 uses
+    139000 uses
+    139100 uses
+    139200 uses
+    139300 uses
+    139400 uses
+    139500 uses
+    139600 uses
+    139700 uses
+    139800 uses
+    139900 uses
+    140000 uses
+    140100 uses
+    140200 uses
+    140300 uses
+    140400 uses
+    140500 uses
+    140600 uses
+    140700 uses
+    140800 uses
+    140900 uses
+    141000 uses
+    141100 uses
+    141200 uses
+    141300 uses
+    141400 uses
+    141500 uses
+    141600 uses
+    141700 uses
+    141800 uses
+    141900 uses
+    142000 uses
+    142100 uses
+    142200 uses
+    142300 uses
+    142400 uses
+    142500 uses
+    142600 uses
+    142700 uses
+    142800 uses
+    142900 uses
+    143000 uses
+    143100 uses
+    143200 uses
+    143300 uses
+    143400 uses
+    143500 uses
+    143600 uses
+    143700 uses
+    143800 uses
+    143900 uses
+    144000 uses
+    144100 uses
+    144200 uses
+    144300 uses
+    144400 uses
+    144500 uses
+    144600 uses
+    144700 uses
+    144800 uses
+    144900 uses
+    145000 uses
+    145100 uses
+    145200 uses
+    145300 uses
+    145400 uses
+    145500 uses
+    145600 uses
+    145700 uses
+    145800 uses
+    145900 uses
+    146000 uses
+    146100 uses
+    146200 uses
+    146300 uses
+    146400 uses
+    146500 uses
+    146600 uses
+    146700 uses
+    146800 uses
+    146900 uses
+    147000 uses
+    147100 uses
+    147200 uses
+    147300 uses
+    147400 uses
+    147500 uses
+    147600 uses
+    147700 uses
+    147800 uses
+    147900 uses
+    148000 uses
+    148100 uses
+    148200 uses
+    148300 uses
+    148400 uses
+    148500 uses
+    148600 uses
+    148700 uses
+    148800 uses
+    148900 uses
+    149000 uses
+    149100 uses
+    149200 uses
+    149300 uses
+    149400 uses
+    149500 uses
+    149600 uses
+    149700 uses
+    149800 uses
+    149900 uses
+    150000 uses
+    150100 uses
+    150200 uses
+    150300 uses
+    150400 uses
+    150500 uses
+    150600 uses
+    150700 uses
+    150800 uses
+    150900 uses
+    151000 uses
+    151100 uses
+    151200 uses
+    151300 uses
+    151400 uses
+    151500 uses
+    151600 uses
+    151700 uses
+    151800 uses
+    151900 uses
+    152000 uses
+    152100 uses
+    152200 uses
+    152300 uses
+    152400 uses
+    152500 uses
+    152600 uses
+    152700 uses
+    152800 uses
+    152900 uses
+    153000 uses
+    153100 uses
+    153200 uses
+    153300 uses
+    153400 uses
+    153500 uses
+    153600 uses
+    153700 uses
+    153800 uses
+    153900 uses
+    154000 uses
+    154100 uses
+    154200 uses
+    154300 uses
+    154400 uses
+    154500 uses
+    154600 uses
+    154700 uses
+    154800 uses
+    154900 uses
+    155000 uses
+    155100 uses
+    155200 uses
+    155300 uses
+    155400 uses
+    155500 uses
+    155600 uses
+    155700 uses
+    155800 uses
+    155900 uses
+    156000 uses
+    156100 uses
+    156200 uses
+    156300 uses
+    156400 uses
+    156500 uses
+    156600 uses
+    156700 uses
+    156800 uses
+    156900 uses
+    157000 uses
+    157100 uses
+    157200 uses
+    157300 uses
+    157400 uses
+    157500 uses
+    157600 uses
+    157700 uses
+    157800 uses
+    157900 uses
+    158000 uses
+    158100 uses
+    158200 uses
+    158300 uses
+    158400 uses
+    158500 uses
+    158600 uses
+    158700 uses
+    158800 uses
+    158900 uses
+    159000 uses
+    159100 uses
+    159200 uses
+    159300 uses
+    159400 uses
+    159500 uses
+    159600 uses
+    159700 uses
+    159800 uses
+    159900 uses
+    160000 uses
+    160100 uses
+    160200 uses
+    160300 uses
+    160400 uses
+    160500 uses
+    160600 uses
+    160700 uses
+    160800 uses
+    160900 uses
+    161000 uses
+    161100 uses
+    161200 uses
+    161300 uses
+    161400 uses
+    161500 uses
+    161600 uses
+    161700 uses
+    161800 uses
+    161900 uses
+    162000 uses
+    162100 uses
+    162200 uses
+    162300 uses
+    162400 uses
+    162500 uses
+    162600 uses
+    162700 uses
+    162800 uses
+    162900 uses
+    163000 uses
+    163100 uses
+    163200 uses
+    163300 uses
+    163400 uses
+    163500 uses
+    163600 uses
+    163700 uses
+    163800 uses
+    163900 uses
+    164000 uses
+    164100 uses
+    164200 uses
+    164300 uses
+    164400 uses
+    164500 uses
+    164600 uses
+    164700 uses
+    164800 uses
+    164900 uses
+    165000 uses
+    165100 uses
+    165200 uses
+    165300 uses
+    165400 uses
+    165500 uses
+    165600 uses
+    165700 uses
+    165800 uses
+    165900 uses
+    166000 uses
+    166100 uses
+    166200 uses
+    166300 uses
+    166400 uses
+    166500 uses
+    166600 uses
+    166700 uses
+    166800 uses
+    166900 uses
+    167000 uses
+    167100 uses
+    167200 uses
+    167300 uses
+    167400 uses
+    167500 uses
+    167600 uses
+    167700 uses
+    167800 uses
+    167900 uses
+    168000 uses
+    168100 uses
+    168200 uses
+    168300 uses
+    168400 uses
+    168500 uses
+    168600 uses
+    168700 uses
+    168800 uses
+    168900 uses
+    169000 uses
+    169100 uses
+    169200 uses
+    169300 uses
+    169400 uses
+    169500 uses
+    169600 uses
+    169700 uses
+    169800 uses
+    169900 uses
+    170000 uses
+    170100 uses
+    170200 uses
+    170300 uses
+    170400 uses
+    170500 uses
+    170600 uses
+    170700 uses
+    170800 uses
+    170900 uses
+    171000 uses
+    171100 uses
+    171200 uses
+    171300 uses
+    171400 uses
+    171500 uses
+    171600 uses
+    171700 uses
+    171800 uses
+    171900 uses
+    172000 uses
+    172100 uses
+    172200 uses
+    172300 uses
+    172400 uses
+    172500 uses
+    172600 uses
+    172700 uses
+    172800 uses
+    172900 uses
+    173000 uses
+    173100 uses
+    173200 uses
+    173300 uses
+    173400 uses
+    173500 uses
+    173600 uses
+    173700 uses
+    173800 uses
+    173900 uses
+    174000 uses
+    174100 uses
+    174200 uses
+    174300 uses
+    174400 uses
+    174500 uses
+    174600 uses
+    174700 uses
+    174800 uses
+    174900 uses
+    175000 uses
+    175100 uses
+    175200 uses
+    175300 uses
+    175400 uses
+    175500 uses
+    175600 uses
+    175700 uses
+    175800 uses
+    175900 uses
+    176000 uses
+    176100 uses
+    176200 uses
+    176300 uses
+    176400 uses
+    176500 uses
+    176600 uses
+Reading "sky130_fd_sc_hd__mux2_1".
+Reading "clk_skew_adjust".
+Reading "sky130_ef_sc_hd__fakediode_2".
+Reading "wb_host".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+Reading "sdrc_top".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+    24900 uses
+    25000 uses
+    25100 uses
+    25200 uses
+    25300 uses
+    25400 uses
+    25500 uses
+    25600 uses
+    25700 uses
+    25800 uses
+    25900 uses
+    26000 uses
+    26100 uses
+    26200 uses
+    26300 uses
+    26400 uses
+    26500 uses
+    26600 uses
+    26700 uses
+    26800 uses
+    26900 uses
+    27000 uses
+    27100 uses
+    27200 uses
+    27300 uses
+    27400 uses
+    27500 uses
+    27600 uses
+    27700 uses
+    27800 uses
+    27900 uses
+    28000 uses
+    28100 uses
+    28200 uses
+    28300 uses
+    28400 uses
+    28500 uses
+    28600 uses
+    28700 uses
+    28800 uses
+    28900 uses
+    29000 uses
+    29100 uses
+    29200 uses
+    29300 uses
+    29400 uses
+    29500 uses
+    29600 uses
+    29700 uses
+    29800 uses
+    29900 uses
+    30000 uses
+    30100 uses
+    30200 uses
+    30300 uses
+    30400 uses
+    30500 uses
+    30600 uses
+    30700 uses
+    30800 uses
+    30900 uses
+    31000 uses
+    31100 uses
+    31200 uses
+    31300 uses
+    31400 uses
+    31500 uses
+    31600 uses
+    31700 uses
+    31800 uses
+    31900 uses
+    32000 uses
+    32100 uses
+    32200 uses
+    32300 uses
+    32400 uses
+    32500 uses
+    32600 uses
+    32700 uses
+    32800 uses
+    32900 uses
+    33000 uses
+    33100 uses
+    33200 uses
+    33300 uses
+    33400 uses
+    33500 uses
+    33600 uses
+    33700 uses
+    33800 uses
+    33900 uses
+    34000 uses
+    34100 uses
+    34200 uses
+    34300 uses
+    34400 uses
+    34500 uses
+    34600 uses
+    34700 uses
+    34800 uses
+    34900 uses
+Reading "sky130_fd_sc_hd__inv_4".
+Reading "uart_core".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+Reading "wb_interconnect".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+    24900 uses
+    25000 uses
+    25100 uses
+    25200 uses
+    25300 uses
+    25400 uses
+    25500 uses
+    25600 uses
+    25700 uses
+    25800 uses
+    25900 uses
+    26000 uses
+    26100 uses
+    26200 uses
+    26300 uses
+    26400 uses
+    26500 uses
+    26600 uses
+    26700 uses
+    26800 uses
+    26900 uses
+    27000 uses
+    27100 uses
+    27200 uses
+    27300 uses
+    27400 uses
+    27500 uses
+    27600 uses
+    27700 uses
+    27800 uses
+    27900 uses
+    28000 uses
+    28100 uses
+    28200 uses
+    28300 uses
+    28400 uses
+    28500 uses
+    28600 uses
+    28700 uses
+    28800 uses
+    28900 uses
+    29000 uses
+    29100 uses
+    29200 uses
+    29300 uses
+    29400 uses
+    29500 uses
+    29600 uses
+    29700 uses
+    29800 uses
+    29900 uses
+    30000 uses
+    30100 uses
+    30200 uses
+    30300 uses
+    30400 uses
+    30500 uses
+    30600 uses
+    30700 uses
+    30800 uses
+    30900 uses
+    31000 uses
+    31100 uses
+    31200 uses
+    31300 uses
+    31400 uses
+    31500 uses
+    31600 uses
+    31700 uses
+    31800 uses
+    31900 uses
+    32000 uses
+    32100 uses
+    32200 uses
+    32300 uses
+    32400 uses
+    32500 uses
+    32600 uses
+    32700 uses
+    32800 uses
+    32900 uses
+    33000 uses
+    33100 uses
+    33200 uses
+    33300 uses
+    33400 uses
+    33500 uses
+    33600 uses
+    33700 uses
+    33800 uses
+    33900 uses
+    34000 uses
+    34100 uses
+    34200 uses
+    34300 uses
+    34400 uses
+    34500 uses
+    34600 uses
+    34700 uses
+    34800 uses
+    34900 uses
+    35000 uses
+    35100 uses
+    35200 uses
+    35300 uses
+    35400 uses
+    35500 uses
+    35600 uses
+    35700 uses
+    35800 uses
+    35900 uses
+Reading "glbl_cfg".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+Reading "sky130_fd_sc_hd__o41a_4".
+Reading "spim_top".
+    100 uses
+    200 uses
+    300 uses
+    400 uses
+    500 uses
+    600 uses
+    700 uses
+    800 uses
+    900 uses
+    1000 uses
+    1100 uses
+    1200 uses
+    1300 uses
+    1400 uses
+    1500 uses
+    1600 uses
+    1700 uses
+    1800 uses
+    1900 uses
+    2000 uses
+    2100 uses
+    2200 uses
+    2300 uses
+    2400 uses
+    2500 uses
+    2600 uses
+    2700 uses
+    2800 uses
+    2900 uses
+    3000 uses
+    3100 uses
+    3200 uses
+    3300 uses
+    3400 uses
+    3500 uses
+    3600 uses
+    3700 uses
+    3800 uses
+    3900 uses
+    4000 uses
+    4100 uses
+    4200 uses
+    4300 uses
+    4400 uses
+    4500 uses
+    4600 uses
+    4700 uses
+    4800 uses
+    4900 uses
+    5000 uses
+    5100 uses
+    5200 uses
+    5300 uses
+    5400 uses
+    5500 uses
+    5600 uses
+    5700 uses
+    5800 uses
+    5900 uses
+    6000 uses
+    6100 uses
+    6200 uses
+    6300 uses
+    6400 uses
+    6500 uses
+    6600 uses
+    6700 uses
+    6800 uses
+    6900 uses
+    7000 uses
+    7100 uses
+    7200 uses
+    7300 uses
+    7400 uses
+    7500 uses
+    7600 uses
+    7700 uses
+    7800 uses
+    7900 uses
+    8000 uses
+    8100 uses
+    8200 uses
+    8300 uses
+    8400 uses
+    8500 uses
+    8600 uses
+    8700 uses
+    8800 uses
+    8900 uses
+    9000 uses
+    9100 uses
+    9200 uses
+    9300 uses
+    9400 uses
+    9500 uses
+    9600 uses
+    9700 uses
+    9800 uses
+    9900 uses
+    10000 uses
+    10100 uses
+    10200 uses
+    10300 uses
+    10400 uses
+    10500 uses
+    10600 uses
+    10700 uses
+    10800 uses
+    10900 uses
+    11000 uses
+    11100 uses
+    11200 uses
+    11300 uses
+    11400 uses
+    11500 uses
+    11600 uses
+    11700 uses
+    11800 uses
+    11900 uses
+    12000 uses
+    12100 uses
+    12200 uses
+    12300 uses
+    12400 uses
+    12500 uses
+    12600 uses
+    12700 uses
+    12800 uses
+    12900 uses
+    13000 uses
+    13100 uses
+    13200 uses
+    13300 uses
+    13400 uses
+    13500 uses
+    13600 uses
+    13700 uses
+    13800 uses
+    13900 uses
+    14000 uses
+    14100 uses
+    14200 uses
+    14300 uses
+    14400 uses
+    14500 uses
+    14600 uses
+    14700 uses
+    14800 uses
+    14900 uses
+    15000 uses
+    15100 uses
+    15200 uses
+    15300 uses
+    15400 uses
+    15500 uses
+    15600 uses
+    15700 uses
+    15800 uses
+    15900 uses
+    16000 uses
+    16100 uses
+    16200 uses
+    16300 uses
+    16400 uses
+    16500 uses
+    16600 uses
+    16700 uses
+    16800 uses
+    16900 uses
+    17000 uses
+    17100 uses
+    17200 uses
+    17300 uses
+    17400 uses
+    17500 uses
+    17600 uses
+    17700 uses
+    17800 uses
+    17900 uses
+    18000 uses
+    18100 uses
+    18200 uses
+    18300 uses
+    18400 uses
+    18500 uses
+    18600 uses
+    18700 uses
+    18800 uses
+    18900 uses
+    19000 uses
+    19100 uses
+    19200 uses
+    19300 uses
+    19400 uses
+    19500 uses
+    19600 uses
+    19700 uses
+    19800 uses
+    19900 uses
+    20000 uses
+    20100 uses
+    20200 uses
+    20300 uses
+    20400 uses
+    20500 uses
+    20600 uses
+    20700 uses
+    20800 uses
+    20900 uses
+    21000 uses
+    21100 uses
+    21200 uses
+    21300 uses
+    21400 uses
+    21500 uses
+    21600 uses
+    21700 uses
+    21800 uses
+    21900 uses
+    22000 uses
+    22100 uses
+    22200 uses
+    22300 uses
+    22400 uses
+    22500 uses
+    22600 uses
+    22700 uses
+    22800 uses
+    22900 uses
+    23000 uses
+    23100 uses
+    23200 uses
+    23300 uses
+    23400 uses
+    23500 uses
+    23600 uses
+    23700 uses
+    23800 uses
+    23900 uses
+    24000 uses
+    24100 uses
+    24200 uses
+    24300 uses
+    24400 uses
+    24500 uses
+    24600 uses
+    24700 uses
+    24800 uses
+Reading "user_project_wrapper".
+[INFO]: Loading user_project_wrapper
+
+DRC style is now "drc(full)"
+Loading DRC CIF style.
+No errors found.
+[INFO]: COUNT: 0
+[INFO]: Should be divided by 3 or 4
+[INFO]: DRC Checking DONE (/home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper.magic.drc)
+[INFO]: Saving mag view with DRC errors(/home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper.magic.drc.mag)
+[INFO]: Saved
diff --git a/checks/spdx_compliance_report.log b/checks/spdx_compliance_report.log
index b4c0380..1496967 100644
--- a/checks/spdx_compliance_report.log
+++ b/checks/spdx_compliance_report.log
@@ -191,19 +191,19 @@
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/glbl_cfg/runs/glbl_cfg/results/klayout/glbl_cfg.lyp
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/config.tcl
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic_spice.tcl
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/opt.lib
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/trimmed.lib
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/tracks_copy.info
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/sky130_fd_sc_hd__tt_025C_1v80.no_pg.lib
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/synthesis/hierarchy.dot
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/synthesis/yosys.sdc
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/routing/16-fastroute.guide
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/routing/18-tritonRoute.param
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/routing/18-tritonRoute.guide
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/routing/13-fastroute.guide
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/routing/16-tritonRoute.param
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/routing/16-tritonRoute.guide
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/clk_skew_adjust.ext
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/sky130_fd_sc_hd__mux2_1.ext
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/sky130_fd_sc_hd__fill_2.ext
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/sky130_fd_sc_hd__decap_4.ext
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/sky130_fd_sc_hd__diode_2.ext
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/sky130_fd_sc_hd__decap_12.ext
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/sky130_fd_sc_hd__decap_3.ext
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/tmp/magic/sky130_fd_sc_hd__tapvpwrvgnd_1.ext
@@ -216,28 +216,25 @@
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/runtime_summary_report.rpt
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/manufacturability_report.rpt
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/1-yosys_4.chk.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/2-opensta.min_max.rpt
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/1-yosys_pre.stat
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/2-opensta_tns.rpt
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/1-yosys_dff.stat
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/21-opensta_spef.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/2-opensta_wns.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/2-opensta.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/21-opensta_spef_wns.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/21-opensta_spef.min_max.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/2-opensta.timing.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/21-opensta_spef.timing.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/21-opensta_spef_tns.rpt
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/synthesis/1-yosys_4.stat.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/routing/39-antenna.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/floorplan/3-verilog2def.die_area.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/floorplan/3-verilog2def.core_area.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/klayout/33-klayout.xor.rpt
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/klayout/37-klayout.magic.lydrc
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/klayout/31-klayout.xor.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/routing/36-antenna.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/floorplan/2-verilog2def.core_area.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/floorplan/2-verilog2def.die_area.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/klayout/30-klayout.xor.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/klayout/28-klayout.xor.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/klayout/34-klayout.magic.lydrc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/placement/8-openphysyn_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/placement/8-openphysyn_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/reports/placement/8-openphysyn_allchecks.rpt
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/synthesis/clk_skew_adjust.synthesis_preroute.v
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/synthesis/clk_skew_adjust.synthesis_diodes.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/synthesis/clk_skew_adjust.synthesis_optimized.v
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/synthesis/clk_skew_adjust.synthesis.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/cvc/cvc_clk_skew_adjust.error
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/cvc/cvc_clk_skew_adjust.debug
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/cvc/clk_skew_adjust.cdl
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/cvc/clk_skew_adjust.power
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/routing/clk_skew_adjust.spef
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/routing/clk_skew_adjust.def.ref
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/magic/.magicrc
@@ -245,8 +242,6 @@
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/lvs/clk_skew_adjust.lvs.powered.v
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/lvs/clk_skew_adjust.lvs.lef.json
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/results/klayout/clk_skew_adjust.lyp
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/logs/synthesis/2-opensta
-/home/dinesha/workarea/opencore/git/yifive_r0/openlane/clk_skew_adjust/runs/clk_skew_adjust/logs/synthesis/21-opensta_spef
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/wb_host/runs/wb_host/config.tcl
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/wb_host/runs/wb_host/tmp/magic_spice.tcl
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/wb_host/runs/wb_host/tmp/opt.lib
@@ -342,6 +337,198 @@
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/wb_host/runs/wb_host/logs/synthesis/2-opensta
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/wb_host/runs/wb_host/logs/synthesis/26-opensta_spef
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/wb_host/runs/wb_host/logs/synthesis/11-opensta_post_openphysyn
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/config.tcl
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic_spice.tcl
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/opt.lib
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/trimmed.lib
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/tracks_copy.info
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/sky130_fd_sc_hd__tt_025C_1v80.no_pg.lib
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/synthesis/hierarchy.dot
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/synthesis/yosys.sdc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/routing/23-tritonRoute.guide
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/routing/23-tritonRoute.param
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/routing/21-fastroute.guide
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__inv_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__conb_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__nor2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__and2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a21oi_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__fill_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a32o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__or2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__clkbuf_16.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__decap_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__diode_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__buf_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__buf_8.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__nand2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a211o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a21o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a21boi_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__buf_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__or3_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__decap_12.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a2bb2o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__and4_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/uart_core.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__decap_3.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__o21ai_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a22oi_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__dfrtp_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__dfxtp_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__tapvpwrvgnd_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a2111o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__fill_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__clkbuf_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__decap_6.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__or4_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__a21bo_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__decap_8.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__inv_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__o21a_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__o22a_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__and3_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/magic/sky130_fd_sc_hd__dfstp_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/tmp/lvs/setup_file.lef.lvs
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/runtime_summary_report.rpt.parsable
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/runtime_summary_report.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/manufacturability_report.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/26-opensta_spef_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/1-yosys_4.chk.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/26-opensta_spef.min_max.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/26-opensta_spef_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/2-opensta.min_max.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/1-yosys_pre.stat
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/2-opensta_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/11-opensta_post_openphysyn.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/11-opensta_post_openphysyn_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/1-yosys_dff.stat
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/11-opensta_post_openphysyn.min_max.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/11-opensta_post_openphysyn.timing.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/2-opensta_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/2-opensta.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/26-opensta_spef.timing.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/2-opensta.timing.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/26-opensta_spef.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/11-opensta_post_openphysyn_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/synthesis/1-yosys_4.stat.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/routing/44-antenna.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/floorplan/3-verilog2def.die_area.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/floorplan/3-verilog2def.core_area.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/klayout/36-klayout.xor.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/klayout/38-klayout.xor.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/klayout/42-klayout.magic.lydrc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/placement/9-openphysyn_allchecks.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/placement/9-openphysyn_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/reports/placement/9-openphysyn_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/synthesis/uart_core.synthesis_cts.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/synthesis/uart_core.synthesis.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/synthesis/uart_core.synthesis_diodes.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/synthesis/uart_core.synthesis_optimized.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/synthesis/uart_core.synthesis_preroute.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/routing/uart_core.def.ref
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/routing/uart_core.spef
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/magic/.magicrc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/magic/uart_core.gds.lydrc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/lvs/uart_core.lvs.lef.json
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/lvs/uart_core.lvs.powered.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/uart/runs/uart/results/klayout/uart_core.lyp
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/config.tcl
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic_spice.tcl
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/opt.lib
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/trimmed.lib
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/tracks_copy.info
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/sky130_fd_sc_hd__tt_025C_1v80.no_pg.lib
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/synthesis/hierarchy.dot
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/synthesis/yosys.sdc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/routing/21-tritonRoute.guide
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/routing/17-fastroute.guide
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/routing/21-tritonRoute.param
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/routing/18-fastroute_2.guide
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__conb_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__nor2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__and2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a21oi_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__fill_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a32o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__or2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__clkbuf_16.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__decap_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__diode_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__nand2_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a211o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a21o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a21boi_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__buf_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__or3_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__decap_12.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a2bb2o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__and4_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__decap_3.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__o21ai_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/spim_top.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a22oi_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__dfrtp_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__dfxtp_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__tapvpwrvgnd_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a2111o_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__o41a_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__fill_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__clkbuf_1.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__o32a_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__decap_6.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__or4_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__a21bo_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__decap_8.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__inv_2.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__o21a_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__o22a_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__and3_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/magic/sky130_fd_sc_hd__dfstp_4.ext
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/tmp/lvs/setup_file.lef.lvs
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/runtime_summary_report.rpt.parsable
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/runtime_summary_report.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/manufacturability_report.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/1-yosys_4.chk.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/24-opensta_spef.timing.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/2-opensta.min_max.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/1-yosys_pre.stat
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/2-opensta_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/11-opensta_post_openphysyn.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/11-opensta_post_openphysyn_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/1-yosys_dff.stat
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/24-opensta_spef.min_max.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/11-opensta_post_openphysyn.min_max.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/11-opensta_post_openphysyn.timing.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/2-opensta_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/2-opensta.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/2-opensta.timing.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/24-opensta_spef_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/24-opensta_spef_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/11-opensta_post_openphysyn_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/24-opensta_spef.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/synthesis/1-yosys_4.stat.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/routing/42-antenna.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/floorplan/3-verilog2def.die_area.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/floorplan/3-verilog2def.core_area.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/klayout/36-klayout.xor.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/klayout/34-klayout.xor.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/klayout/40-klayout.magic.lydrc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/placement/9-openphysyn_allchecks.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/placement/9-openphysyn_tns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/placement/9-openphysyn_wns.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/reports/placement/9-openphysyn_violators.rpt
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/synthesis/spim_top.synthesis_optimized.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/synthesis/spim_top.synthesis_preroute.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/synthesis/spim_top.synthesis.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/synthesis/spim_top.synthesis_cts.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/routing/spim_top.def.ref
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/routing/spim_top.spef
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/magic/.magicrc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/magic/spim_top.gds.lydrc
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/lvs/spim_top.lvs.powered.v
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/lvs/spim_top.lvs.lef.json
+/home/dinesha/workarea/opencore/git/yifive_r0/openlane/spi_master/runs/spi_master/results/klayout/spim_top.lyp
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/user_project_wrapper/runs/user_project_wrapper/config.tcl
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/user_project_wrapper/runs/user_project_wrapper/tmp/magic_spice.tcl
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/user_project_wrapper/runs/user_project_wrapper/tmp/opt.lib
@@ -500,6 +687,7 @@
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/sdram/runs/sdram/results/lvs/sdrc_top.lvs.powered.v
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/sdram/runs/sdram/results/lvs/sdrc_top.lvs.lef.json
 /home/dinesha/workarea/opencore/git/yifive_r0/openlane/sdram/runs/sdram/results/klayout/sdrc_top.lyp
+/home/dinesha/workarea/opencore/git/yifive_r0/verilog/dv/model/s25fl256s.sv
 /home/dinesha/workarea/opencore/git/yifive_r0/verilog/rtl/syntacore/scr1/README.md
 /home/dinesha/workarea/opencore/git/yifive_r0/work/_info
 /home/dinesha/workarea/opencore/git/yifive_r0/work/_vmake
diff --git a/checks/user_project_wrapper.magic.drc b/checks/user_project_wrapper.magic.drc
new file mode 100644
index 0000000..46ca7f3
--- /dev/null
+++ b/checks/user_project_wrapper.magic.drc
@@ -0,0 +1,5 @@
+user_project_wrapper
+----------------------------------------
+[INFO]: COUNT: 0
+[INFO]: Should be divided by 3 or 4
+
diff --git a/checks/user_project_wrapper.xor.gds.png b/checks/user_project_wrapper.xor.gds.png
new file mode 100644
index 0000000..cd63482
--- /dev/null
+++ b/checks/user_project_wrapper.xor.gds.png
Binary files differ
diff --git a/checks/user_project_wrapper.xor.xml b/checks/user_project_wrapper.xor.xml
new file mode 100644
index 0000000..ad44b6d
--- /dev/null
+++ b/checks/user_project_wrapper.xor.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>XOR /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_empty_erased.gds vs. /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_erased.gds</description>
+ <original-file/>
+ <generator>drc: script='/usr/local/bin/xor_checks/xor.drc'</generator>
+ <top-cell>user_project_wrapper</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>235/4</name>
+   <description>XOR results for layer 235/4 </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>69/20</name>
+   <description>XOR results for layer 69/20 </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>70/20</name>
+   <description>XOR results for layer 70/20 </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>71/20</name>
+   <description>XOR results for layer 71/20 </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>71/44</name>
+   <description>XOR results for layer 71/44 </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>72/20</name>
+   <description>XOR results for layer 72/20 </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>81/14</name>
+   <description>XOR results for layer 81/14 </description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>user_project_wrapper</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/checks/xor.log b/checks/xor.log
new file mode 100644
index 0000000..73bb66b
--- /dev/null
+++ b/checks/xor.log
@@ -0,0 +1,68 @@
+First Layout: /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_empty_erased.gds
+Second Layout: /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_erased.gds
+Design Name: xor_target
+Output GDS will be: /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper.xor.gds
+Reading /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_empty_erased.gds ..
+Reading /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper_erased.gds ..
+--- Running XOR for 69/20 ---
+"_input" in: xor.drc:38
+Elapsed: 0.000s
+"_input" in: xor.drc:38
+Elapsed: 0.010s
+"^" in: xor.drc:38
+Elapsed: 0.000s
+XOR differences: 0
+"_output" in: xor.drc:41
+Elapsed: 0.010s
+--- Running XOR for 70/20 ---
+"_input" in: xor.drc:38
+Elapsed: 0.000s
+"_input" in: xor.drc:38
+Elapsed: 0.010s
+"^" in: xor.drc:38
+Elapsed: 0.000s
+XOR differences: 0
+"_output" in: xor.drc:41
+Elapsed: 0.010s
+--- Running XOR for 71/20 ---
+"_input" in: xor.drc:38
+Elapsed: 0.000s
+"_input" in: xor.drc:38
+Elapsed: 0.010s
+"^" in: xor.drc:38
+Elapsed: 0.010s
+XOR differences: 0
+"_output" in: xor.drc:41
+Elapsed: 0.000s
+--- Running XOR for 71/44 ---
+"_input" in: xor.drc:38
+Elapsed: 0.010s
+"_input" in: xor.drc:38
+Elapsed: 0.000s
+"^" in: xor.drc:38
+Elapsed: 0.010s
+XOR differences: 0
+"_output" in: xor.drc:41
+Elapsed: 0.000s
+--- Running XOR for 72/20 ---
+"_input" in: xor.drc:38
+Elapsed: 0.010s
+"_input" in: xor.drc:38
+Elapsed: 0.000s
+"^" in: xor.drc:38
+Elapsed: 0.010s
+XOR differences: 0
+"_output" in: xor.drc:41
+Elapsed: 0.010s
+--- Running XOR for 81/14 ---
+"_input" in: xor.drc:38
+Elapsed: 0.000s
+"_input" in: xor.drc:38
+Elapsed: 0.010s
+"^" in: xor.drc:38
+Elapsed: 0.000s
+XOR differences: 0
+"_output" in: xor.drc:41
+Elapsed: 0.010s
+Writing layout file: /home/dinesha/workarea/opencore/git/yifive_r0/checks/user_project_wrapper.xor.gds ..
+Total run time: 0.140s
diff --git a/checks/xor_total.txt b/checks/xor_total.txt
new file mode 100644
index 0000000..05b29a4
--- /dev/null
+++ b/checks/xor_total.txt
@@ -0,0 +1 @@
+Total XOR differences = 0
\ No newline at end of file
diff --git a/openlane/clk_skew_adjust/config.tcl b/openlane/clk_skew_adjust/config.tcl
index 0c507cc..d1b3e25 100644
--- a/openlane/clk_skew_adjust/config.tcl
+++ b/openlane/clk_skew_adjust/config.tcl
@@ -12,9 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # SPDX-License-Identifier: Apache-2.0
+# SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
 
-# Base Configurations. Don't Touch
-# section begin
+# Global
+# ------
+
 set script_dir [file dirname [file normalize [info script]]]
 
 set ::env(DESIGN_NAME) clk_skew_adjust
@@ -27,7 +29,6 @@
 #
 set ::env(DESIGN_IS_CORE) 0
 set ::env(FP_PDN_CORE_RING) "0"
-set ::env(SYNTH_READ_BLACKBOX_LIB) "1"
 
 
 ## Source Verilog Files
@@ -35,55 +36,31 @@
 	$script_dir/../../verilog/rtl/clk_skew_adjust/src/clk_skew_adjust.gv"
 
 ## Clock configurations
-set ::env(CLOCK_PORT) "clk_in"
+#set ::env(CLOCK_PORT) "clk_in"
 
-set ::env(CLOCK_PERIOD) "10"
+#set ::env(CLOCK_PERIOD) "10"
 
 ## Internal Macros
 ### Macro Placement
 set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
-set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 50 50"
-set ::env(PL_TARGET_DENSITY) 0.85
-set ::env(FP_CORE_UTIL) "60"
 
 
 
-set ::env(FP_PDN_CHECK_NODES) 0
 
-set ::env(RUN_KLAYOUT_DRC) 0
 
 set ::env(VDD_PIN) [list {vccd1}]
 set ::env(GND_PIN) [list {vssd1}]
 
-# If you're going to use multiple power domains, then keep this disabled.
-set ::env(RUN_CVC) 0
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
 
-# The following is because there are no std cells in the example wrapper project.
-set ::env(SYNTH_TOP_LEVEL) 1
-
-set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
-set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0
-set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) 0
-set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) 0
-
-# No Synthesis and CTS
-set ::env(RUN_SIMPLE_CTS) 0
-set ::env(SYNTH_BUFFERING) 0
-set ::env(SYNTH_SIZING) 0
+# Fill this
 set ::env(CLOCK_TREE_SYNTH) 0
-set ::env(PL_OPENPHYSYN_OPTIMIZATIONS) 0
-set ::env(FILL_INSERTION) 1
-set ::env(RUN_SIMPLE_CTS) 0
-set ::env(LVS_CONNECT_BY_LABEL) 1
+
 set ::env(CELL_PAD) 0
 
+set ::env(FP_CORE_UTIL) 40
+set ::env(PL_RANDOM_GLB_PLACEMENT) 1
 
-
-
-set ::env(PL_ROUTABILITY_DRIVEN) 1
-set ::env(FP_IO_VEXTEND) 4
-set ::env(FP_IO_HEXTEND) 4
+set ::env(BOTTOM_MARGIN_MULT) 2
+set ::env(TOP_MARGIN_MULT) 2
 set ::env(GLB_RT_MAXLAYER) 4
-set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10
-set ::env(DIODE_INSERTION_STRATEGY) 4
diff --git a/openlane/sdram/base.sdc b/openlane/sdram/base.sdc
index aa200dd..350ae31 100644
--- a/openlane/sdram/base.sdc
+++ b/openlane/sdram/base.sdc
@@ -36,13 +36,12 @@
 
 set_input_delay 2.0 -clock [get_clocks $::env(WB_CLOCK_PORT)] {wb_rst_n}
 
-set_input_delay  3.0                     -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_stb_i*]
+set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_stb_i*]
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_addr_i*]
-set_input_delay  5.0                     -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_we_i*]
+set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_we_i*]
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_dat_i*]
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_sel_i*]
-set_input_delay  3.0                     -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_cyc_i*]
-set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_cti_i*]
+set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_cyc_i*]
 
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port cfg_sdr_tras_d*]
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port cfg_sdr_trp_d*]
@@ -57,7 +56,7 @@
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port cfg_sdr_rfmax*]
 
 set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_dat_o*]
-set_output_delay 3.0                     -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_ack_o*]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wb_ack_o*]
 set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port sdr_init_done*]
 
 ######################################
@@ -69,7 +68,36 @@
 puts "\[INFO\]: Setting wb output delay to:$wb_output_delay_value"
 puts "\[INFO\]: Setting wb input delay to: $wb_input_delay_value"
 
-set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out*]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[0]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[1]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[2]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[3]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[4]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[5]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[6]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[7]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[8]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[9]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[10]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[11]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[12]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[13]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[14]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[15]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[16]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[17]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[18]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[19]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[20]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[21]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[22]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[23]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[24]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[25]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[26]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[27]]
+set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[28]]
+#set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_out[29]] Masked SDRAM clock
 set_output_delay $sdram_output_delay_value  -clock [get_clocks $::env(SDRAM_CLOCK_PORT)] [get_port io_oeb*]
 
 ################################################
diff --git a/openlane/spi_master/base.sdc b/openlane/spi_master/base.sdc
index fa507c1..cd78ed8 100644
--- a/openlane/spi_master/base.sdc
+++ b/openlane/spi_master/base.sdc
@@ -37,27 +37,27 @@
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wbd_dat_i*]
 set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wbd_sel_i*]
 
-set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdi0*]
-set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdi1*]
-set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdi2*]
-set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdi3*]
+set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_in[5]]
+set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_in[4]]
+set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_in[3]]
+set_input_delay  $wb_input_delay_value   -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_in[2]]
 
 set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wbd_dat_o*]
 set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wbd_ack_o*]
 set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port wbd_err_o*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port events_o*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_clk*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_csn0*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_csn1*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_csn2*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_csn2*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_csn3*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_mode*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdo0*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdo1*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdo2*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_sdo3*]
-set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_en_tx*]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port spi_debug*]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_out[5]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_out[4]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_out[3]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_out[2]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_out[1]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_out[0]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_oeb[5]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_oeb[4]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_oeb[3]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_oeb[2]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_oeb[1]]
+set_output_delay $wb_output_delay_value  -clock [get_clocks $::env(WB_CLOCK_PORT)] [get_port io_oeb[0]]
 
 # TODO set this as parameter
 set_driving_cell -lib_cell $::env(SYNTH_DRIVING_CELL) -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
diff --git a/openlane/spi_master/config.tcl b/openlane/spi_master/config.tcl
index 45d0586..7c87b91 100755
--- a/openlane/spi_master/config.tcl
+++ b/openlane/spi_master/config.tcl
@@ -37,7 +37,9 @@
 # Local sources + no2usb sources
 set ::env(VERILOG_FILES) "\
         $script_dir/../../verilog/rtl/spi_master/src/spim_top.sv \
+        $script_dir/../../verilog/rtl/spi_master/src/spim_if.sv \
         $script_dir/../../verilog/rtl/spi_master/src/spim_regs.sv \
+        $script_dir/../../verilog/rtl/spi_master/src/spim_fifo.sv \
         $script_dir/../../verilog/rtl/spi_master/src/spim_clkgen.sv \
         $script_dir/../../verilog/rtl/spi_master/src/spim_ctrl.sv \
         $script_dir/../../verilog/rtl/spi_master/src/spim_rx.sv \
diff --git a/openlane/spi_master/pin_order.cfg b/openlane/spi_master/pin_order.cfg
index 6d3c721..2413319 100644
--- a/openlane/spi_master/pin_order.cfg
+++ b/openlane/spi_master/pin_order.cfg
@@ -3,9 +3,39 @@
 
 #W
 mclk                   0000 0
-rst_n                  0000 1
-events_o\[1\]          0000 2
-events_o\[0\]          0000 3
+rst_n                  
+spi_debug\[31\]        
+spi_debug\[30\]        
+spi_debug\[29\]        
+spi_debug\[28\]        
+spi_debug\[27\]        
+spi_debug\[26\]        
+spi_debug\[25\]        
+spi_debug\[24\]        
+spi_debug\[23\]        
+spi_debug\[22\]        
+spi_debug\[21\]        
+spi_debug\[20\]        
+spi_debug\[19\]        
+spi_debug\[18\]        
+spi_debug\[17\]        
+spi_debug\[16\]        
+spi_debug\[15\]        
+spi_debug\[14\]        
+spi_debug\[13\]        
+spi_debug\[12\]        
+spi_debug\[11\]        
+spi_debug\[10\]        
+spi_debug\[9\]        
+spi_debug\[8\]        
+spi_debug\[7\]        
+spi_debug\[6\]        
+spi_debug\[5\]        
+spi_debug\[4\]        
+spi_debug\[3\]        
+spi_debug\[2\]        
+spi_debug\[1\]        
+spi_debug\[0\]        
 
 
 #N
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index 51dc0f8..f51d3d1 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -34,7 +34,6 @@
 ## Source Verilog Files
 set ::env(VERILOG_FILES) "\
 	$script_dir/../../caravel/verilog/rtl/defines.v \
-	$script_dir/../../verilog/rtl/digital_core/src/digital_core.sv \
 	$script_dir/../../verilog/rtl/user_project_wrapper.v"
 
 ## Clock configurations
@@ -114,7 +113,7 @@
 set ::env(TAP_DECAP_INSERTION) 0
 set ::env(CLOCK_TREE_SYNTH) 0
 
-set ::env(MAGIC_EXT_USE_GDS) "1"
+#set ::env(MAGIC_EXT_USE_GDS) "1"
 
 
 set ::env(PL_DIAMOND_SEARCH_HEIGHT) "250"
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index 2843978..c5044dc 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1,17 +1,17 @@
-u_core.u_spi_master            300             2700            N
-u_core.u_sdram_ctrl            1000            2700            N
-u_core.u_glbl_cfg              2000            2700            N
-u_core.u_riscv_top	       500	       800	       N
-u_core.u_uart_core             2200            1600            N
-u_core.u_intercon              300             2300            N
-u_core.u_wb_host               300             300             N
-u_core.u_skew_wi               2600            2300            N
-u_core.u_skew_riscv            400             800             N
-u_core.u_skew_uart             2200            1500            N
-u_core.u_skew_spi              200             2700            E
-u_core.u_skew_sdram            900             2700            E
-u_core.u_skew_glbl             2000            3200            N
-u_core.u_skew_wh               1400            300             N
-u_core.u_skew_sd_co            950             3300            N
-u_core.u_skew_sd_ci            1100            3300            N
-u_core.u_skew_sp_co            300             3400            N
+u_spi_master            300             2700            N
+u_sdram_ctrl            1000            2700            N
+u_glbl_cfg              2000            2700            N
+u_riscv_top	       500	       800	       N
+u_uart_core             2200            1600            N
+u_intercon              300             2300            N
+u_wb_host               300             300             N
+u_skew_wi               2600            2300            N
+u_skew_riscv            400             800             N
+u_skew_uart             2200            1500            N
+u_skew_spi              200             2700            E
+u_skew_sdram            900             2700            E
+u_skew_glbl             2000            3200            N
+u_skew_wh               1400            300             N
+u_skew_sd_co            950             3300            N
+u_skew_sd_ci            1100            3300            N
+u_skew_sp_co            300             3400            N
diff --git a/signoff/clk_skew_adjust/final_summary_report.csv b/signoff/clk_skew_adjust/final_summary_report.csv
index 3d2887c..61ff946 100644
--- a/signoff/clk_skew_adjust/final_summary_report.csv
+++ b/signoff/clk_skew_adjust/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/clk_skew_adjust,clk_skew_adjust,clk_skew_adjust,Flow_completed,0h1m8s,0h0m33s,20000.0,0.0025,12000.0,28,387.16,30,0,0,0,0,0,0,0,0,0,-1,0,389,195,-2.16,-2.16,-2.16,-2.16,-2.03,-2.16,-2.16,-2.16,-2.16,-2.03,237416,0.0,3.57,4.52,0.0,-1,-1,32,35,32,35,0,0,0,30,0,0,0,0,0,0,0,0,-1,-1,-1,20,12,0,32,83.1255195344971,12.03,10,AREA 0,5,60,1,153.6,153.18,0.85,0,sky130_fd_sc_hd,0,4
+0,/project/openlane/clk_skew_adjust,clk_skew_adjust,clk_skew_adjust,Flow_completed,0h1m6s,0h0m30s,64878.892733564026,0.0011560000000000001,25951.55709342561,51,384.71,30,0,0,0,0,0,0,0,0,0,0,0,677,212,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0.0,12.65,11.49,0.0,-1,-1,32,35,32,35,0,0,0,30,0,0,0,0,0,0,0,0,-1,-1,-1,16,5,0,21,90.9090909090909,11,10,AREA 0,5,40,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,0,3
diff --git a/signoff/sdram/final_summary_report.csv b/signoff/sdram/final_summary_report.csv
index e90cae1..390656f 100644
--- a/signoff/sdram/final_summary_report.csv
+++ b/signoff/sdram/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/sdram,sdrc_top,sdram,Flow_completed,0h9m41s,0h5m12s,40668.57142857143,0.35,20334.285714285714,27,639.77,7117,0,0,0,0,0,0,0,15,0,-1,0,302912,50760,-3.59,-3.59,-3.59,-3.59,-4.18,-3.59,-3.59,-3.59,-3.59,-4.18,239724191,0.0,20.25,16.33,1.79,-1,-1,7052,7280,1239,1467,0,0,0,7117,197,107,81,102,354,212,31,2263,1256,1154,27,350,4248,0,4598,70.52186177715092,14.18,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,3
+0,/project/openlane/sdram,sdrc_top,sdram,Flow_completed,0h8m28s,0h4m15s,40668.57142857143,0.35,20334.285714285714,27,639.29,7117,0,0,0,0,0,0,0,15,0,-1,0,302912,50760,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,239724191,0.0,20.25,16.33,1.79,-1,-1,7052,7280,1239,1467,0,0,0,7117,197,107,81,102,354,212,31,2263,1256,1154,27,350,4248,0,4598,100.0,10.0,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,3
diff --git a/signoff/spi_master/final_summary_report.csv b/signoff/spi_master/final_summary_report.csv
index e0a826c..7ecde4c 100644
--- a/signoff/spi_master/final_summary_report.csv
+++ b/signoff/spi_master/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/spi_master,spim_top,spi_master,Flow_completed,0h8m3s,0h5m35s,25416.66666666667,0.24,12708.333333333336,19,591.97,3050,0,0,0,0,0,0,0,5,0,-1,0,162786,26689,-1.48,-1.48,-1.55,-1.55,-2.28,-86.69,-86.69,-158.7,-158.7,-255.68,121954058,0.0,9.59,19.86,0.04,-1,-1,3016,3128,433,545,0,0,0,3050,83,0,92,79,1118,89,19,920,527,458,28,424,2889,0,3313,81.43322475570034,12.28,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,3
+0,/project/openlane/spi_master,spim_top,spi_master,Flow_completed,0h6m38s,0h3m39s,45283.33333333334,0.24,22641.66666666667,33,605.61,5434,0,0,0,0,0,0,0,1,5,-1,0,248271,41053,-0.54,-0.54,-0.42,-0.42,-0.39,-0.98,-0.98,-0.94,-0.94,-0.89,196972893,0.0,18.06,28.16,0.23,-1,-1,5370,5512,872,1014,0,0,0,5434,217,0,185,97,764,130,35,1615,982,919,24,424,2889,0,3313,96.24639076034649,10.39,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,3
diff --git a/signoff/uart/final_summary_report.csv b/signoff/uart/final_summary_report.csv
index e37c172..e9d8ff5 100644
--- a/signoff/uart/final_summary_report.csv
+++ b/signoff/uart/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/uart,uart_core,uart,Flow_completed,0h6m30s,0h4m1s,46133.33333333334,0.12,23066.66666666667,35,545.72,2768,0,0,0,0,0,0,0,1,0,-1,0,91647,20662,-0.67,-0.67,-0.47,-0.47,-0.73,-37.32,-37.32,-45.39,-45.39,-68.63,62910936,0.0,19.11,18.79,0.06,-1,-1,2767,2787,454,474,0,0,0,2768,59,0,30,41,182,125,26,685,435,396,17,278,1410,0,1688,93.19664492078284,10.73,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,4
+0,/project/openlane/uart,uart_core,uart,Flow_completed,0h5m4s,0h3m18s,46133.33333333334,0.12,23066.66666666667,35,545.71,2768,0,0,0,0,0,0,0,1,0,-1,0,91647,20662,-0.67,-0.67,-0.47,-0.47,-0.73,-37.32,-37.32,-45.39,-45.39,-68.63,62910936,0.0,19.11,18.79,0.06,-1,-1,2767,2787,454,474,0,0,0,2768,59,0,30,41,182,125,26,685,435,396,17,278,1410,0,1688,93.19664492078284,10.73,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,4
diff --git a/signoff/user_project_wrapper/final_summary_report.csv b/signoff/user_project_wrapper/final_summary_report.csv
index d2284fa..a4e190b 100644
--- a/signoff/user_project_wrapper/final_summary_report.csv
+++ b/signoff/user_project_wrapper/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,Flow_completed,0h40m41s,0h5m14s,3.3079078455790785,10.2784,1.6539539227895392,0,577.98,17,0,0,0,0,0,0,0,0,28,-1,-1,1297769,6216,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-1,0.0,2.22,3.66,1.51,1.63,-1,852,1470,852,1470,0,0,0,17,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,100.0,10.0,10,AREA 0,5,50,1,180,180,0.55,0,sky130_fd_sc_hd,4,0
+0,/project/openlane/user_project_wrapper,user_project_wrapper,user_project_wrapper,Flow_completed,0h42m41s,0h5m47s,3.3079078455790785,10.2784,1.6539539227895392,0,580.84,17,0,0,0,0,0,0,0,0,30,-1,-1,1296299,5489,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-1,0.0,2.61,3.74,0.82,1.49,-1,884,1502,853,1471,0,0,0,17,0,0,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,100.0,10.0,10,AREA 0,5,50,1,180,180,0.55,0,sky130_fd_sc_hd,4,0
diff --git a/signoff/wb_host/final_summary_report.csv b/signoff/wb_host/final_summary_report.csv
index 7565689..be336b3 100644
--- a/signoff/wb_host/final_summary_report.csv
+++ b/signoff/wb_host/final_summary_report.csv
@@ -1,2 +1,2 @@
 ,design,design_name,config,flow_status,total_runtime,routed_runtime,(Cell/mm^2)/Core_Util,DIEAREA_mm^2,CellPer_mm^2,OpenDP_Util,Peak_Memory_Usage_MB,cell_count,tritonRoute_violations,Short_violations,MetSpc_violations,OffGrid_violations,MinHole_violations,Other_violations,Magic_violations,antenna_violations,lvs_total_errors,cvc_total_errors,klayout_violations,wire_length,vias,wns,pl_wns,optimized_wns,fastroute_wns,spef_wns,tns,pl_tns,optimized_tns,fastroute_tns,spef_tns,HPWL,routing_layer1_pct,routing_layer2_pct,routing_layer3_pct,routing_layer4_pct,routing_layer5_pct,routing_layer6_pct,wires_count,wire_bits,public_wires_count,public_wire_bits,memories_count,memory_bits,processes_count,cells_pre_abc,AND,DFF,NAND,NOR,OR,XOR,XNOR,MUX,inputs,outputs,level,EndCaps,TapCells,Diodes,Total_Physical_Cells,suggested_clock_frequency,suggested_clock_period,CLOCK_PERIOD,SYNTH_STRATEGY,SYNTH_MAX_FANOUT,FP_CORE_UTIL,FP_ASPECT_RATIO,FP_PDN_VPITCH,FP_PDN_HPITCH,PL_TARGET_DENSITY,GLB_RT_ADJUSTMENT,STD_CELL_LIBRARY,CELL_PAD,DIODE_INSERTION_STRATEGY
-0,/project/openlane/wb_host,wb_host,wb_host,Flow_completed,0h10m23s,0h7m30s,30760.0,0.2,15380.0,25,615.57,3076,0,0,0,0,0,0,0,1,0,-1,0,327997,31894,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,274634123,0.0,48.31,13.11,27.06,-1,-1,2798,3440,464,1106,0,0,0,3076,83,0,5,14,30,26,9,783,597,752,15,130,2343,0,2473,100.0,10.0,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,5
+0,/project/openlane/wb_host,wb_host,wb_host,Flow_completed,0h7m6s,0h4m32s,30340.0,0.2,15170.0,25,618.03,3034,0,0,0,0,0,0,0,3,0,-1,0,323344,30030,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,276033708,0.0,49.92,13.67,23.25,-1,-1,2756,3398,457,1099,0,0,0,3034,78,0,3,11,37,27,10,770,589,744,14,130,2343,0,2473,100.0,10.0,10,AREA 0,4,50,1,153.6,153.18,0.55,0,sky130_fd_sc_hd,4,5
diff --git a/verilog/dv/Makefile b/verilog/dv/Makefile
index 7923d4a..db261ec 100644
--- a/verilog/dv/Makefile
+++ b/verilog/dv/Makefile
@@ -19,7 +19,7 @@
 .SUFFIXES:
 .SILENT: clean all
 
-PATTERNS = io_ports la_test1 la_test2 wb_port mprj_stimulus risc_boot user_risc_boot user_uart
+PATTERNS = io_ports la_test1 la_test2 wb_port mprj_stimulus risc_boot user_risc_boot user_uart user_spi
 
 all:  ${PATTERNS}
 	for i in ${PATTERNS}; do \
diff --git a/verilog/dv/model/s25fl256s.sv b/verilog/dv/model/s25fl256s.sv
new file mode 100644
index 0000000..748f037
--- /dev/null
+++ b/verilog/dv/model/s25fl256s.sv
@@ -0,0 +1,8183 @@
+///////////////////////////////////////////////////////////////////////////////
+//  File name : s25fl256s.v
+///////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+//  Copyright (C) 2012 Spansion, LLC.
+//
+//  MODIFICATION HISTORY :
+//
+//  version: | author:     |  mod date:  | changes made:
+//    V1.0      V.Mancev     19 Nov 09      Initial
+//            R.Prokopovic
+//    V1.1      V.Mancev     04 Mar 10    addr_cnt for second read in
+//                                        high performance read continuous
+//                                        mode can change its value only
+//                                        when CSNeg = '0'
+//    V1.2      V.Mancev     23 Mar 10    During read operations read_out
+//                                        signal changes its value in
+//                                        shorter interval
+//    V1.3      V.Mancev     12 Apr 10    HOLD mode corrected
+//                                        Condition for PP operation
+//                                        corrected
+//    V1.4      V.Mancev     20 May 10    SRWD bit assignment is corrected
+//                                        Condition for WRR command in
+//                                        write_cycle _decode section is
+//                                        corrected
+//                                        Blocking assignments for signals
+//                                        WSTART and PSTART are replaced
+//                                        with nonblocking assignments
+//                                        Conditions in Page Program
+//                                        section are fixed
+//    V1.5      V.Mancev     25 May 10    Conditions in programming
+//                                        sections are fixed
+//                                        Timing control sections for
+//                                        Program and Erase operation are
+//                                        changed
+//    V1.6      V.Mancev     03 June 10   bus_cycle_state section for
+//                                        PGSP command is fixed
+//    V1.7      V.Mancev     28 July 10   During the QUAD mode HOLD# input
+//                                        is not monitored for its normal
+//                                        function
+//                                        write cycle decode section is
+//                                        changed
+//    V1.8     B.Colakovic   24 Aug 10    All redundant signals are removed
+//                                        from BusCycle process
+//    V1.9      V.Mancev     30 Sep 10    Latest datasheet aligned
+//             B.Colakovic
+//
+//    V2.0      V.Mancev     05 Nov 10    Hybrid configuration added
+//
+//    V2.1      V.Mancev     12 Nov 10    QUAD Program operation during Erase
+//                                        Suspend is added
+//                                        Warning for Resume to Suspend time
+//                                        is added
+//                                        During Erase Suspend, after Program
+//                                        operation is completed, WEL bit is
+//                                        cleared
+//                                        Implemetation of Software Reset is
+//                                        Changed
+//    V2.2      S.Petrovic   18 Apr 11    Corrected timing in always block
+//                                        that generates rising_edge_CSNeg_ipd
+//    V2.3      B.Colakovic  05 July 11   Latest datasheet aligned
+//    V2.4      B.Colakovic  14 July 11   Optimization issue is fixed
+//    V2.5      V.Mancev     19 July 11   Timing check issue is fixed
+//    V2.6      V. Mancev    18 Nov 11    Time tHO is changed to 1 ns
+//                                        (customer's request)
+//                                        BRWR instruction is corrected
+//    V2.7      S.Petrovic   28 Aug 12    QPP Instruction is allowed on
+//                                        previously programmed page
+//    V2.8      V. Mancev    13 Feb 13    Reverted restriction for QPP
+//                                        on programmed page and
+//                                        added clearing with sector erase
+//    V2.9      S.Petrovic   13 Nov 28    Corrected FSM state transition
+//                                        started on Power-Up and HW
+//                                        Reset in StateGen process
+//    V2.10     V. Mancev    13 Dec 20     Corrected DLP read
+//    V2.11     M.Stojanovic 15 May 15    Ignored upper address bits for RD4
+//    V2.12     M.Stojanovic 15 May 29    Ignored upper address bits for all
+//                                        commands in QUAD mode
+//    V2.13     M.Stojanovic 16 May 11    During QPP and QPP4 commands
+//                                        the same page must not be
+//                                        programmed more than once. However
+//                                        do not generate P_ERR if this
+//                                        occurs.
+//    V2.14     M.Krneta     19 May 07    Updated according to the rev *P
+//                                        (QPP and QPP4 commands changed,
+//                                        ECCRD command added,
+//                                        LOCK bit removed)
+//    V2.15     B.Barac      20 Jan 24    Bug 49 fixed, issue with not assigning 
+//                                        sector in commands P4E4 and P4E
+//
+///////////////////////////////////////////////////////////////////////////////
+//  PART DESCRIPTION:
+//
+//  Library:    FLASH
+//  Technology: FLASH MEMORY
+//  Part:       S25FL256S
+//
+//  Description: 256 Megabit Serial Flash Memory
+//
+//////////////////////////////////////////////////////////////////////////////
+//  Comments :
+//      For correct simulation, simulator resolution should be set to 1 ps
+//      A device ordering (trim) option determines whether a feature is enabled
+//      or not, or provide relevant parameters:
+//        -15th character in TimingModel determines if enhanced high
+//         performance option is available
+//            (0,2,3,R,A,B,C,D) EHPLC
+//            (Y,Z,S,T,K,L)     Security EHPLC
+//            (4,6,7,8,9,Q)     HPLC
+//        -15th character in TimingModel determines if RESET# input
+//         is available
+//            (R,A,B,C,D,Q.6,7,K,L,S,T,M,N,U,V)  RESET# is available
+//            (0,2,3,4,8,9,Y.Z.W,X)              RESET# is tied to the inactive
+//                                               state,inside the package.
+//        -16th character in TimingModel determines Sector and Page Size:
+//            (0) Sector Size = 64 kB;  Page Size = 256 bytes
+//                Hybrid Top/Bottom sector size architecture
+//            (1) Sector Size = 256 kB; Page Size = 512 bytes
+//                Uniform sector size architecture
+//////////////////////////////////////////////////////////////////////////////
+//  Known Bugs:
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// MODULE DECLARATION                                                       //
+//////////////////////////////////////////////////////////////////////////////
+`timescale 1 ps/1 ps
+
+module s25fl256s
+    (
+        // Data Inputs/Outputs
+        SI     ,
+        SO     ,
+        // Controls
+        SCK    ,
+        CSNeg  ,
+        RSTNeg ,
+        WPNeg  ,
+        HOLDNeg
+
+);
+
+///////////////////////////////////////////////////////////////////////////////
+// Port / Part Pin Declarations
+///////////////////////////////////////////////////////////////////////////////
+
+    inout   SI            ;
+    inout   SO            ;
+
+    input   SCK           ;
+    input   CSNeg         ;
+    input   RSTNeg        ;
+    inout   HOLDNeg       ;
+    inout   WPNeg         ;
+
+    // interconnect path delay signals
+    wire   SCK_ipd        ;
+    wire   SI_ipd         ;
+    wire   SO_ipd         ;
+
+    wire SI_in            ;
+    assign SI_in = SI_ipd ;
+
+    wire SI_out           ;
+    assign SI_out = SI    ;
+
+    wire SO_in            ;
+    assign SO_in = SO_ipd ;
+
+    wire SO_out           ;
+    assign SO_out = SO    ;
+
+    wire   CSNeg_ipd      ;
+    wire   HOLDNeg_ipd    ;
+    wire   WPNeg_ipd      ;
+    wire   RSTNeg_ipd     ;
+
+    wire HOLDNeg_in                 ;
+    //Internal pull-up
+    assign HOLDNeg_in = (HOLDNeg_ipd === 1'bx) ? 1'b1 : HOLDNeg_ipd;
+
+    wire HOLDNeg_out                ;
+    assign HOLDNeg_out = HOLDNeg    ;
+
+    wire   WPNeg_in                 ;
+    //Internal pull-up
+    assign WPNeg_in = (WPNeg_ipd === 1'bx) ? 1'b1 : WPNeg_ipd;
+
+    wire   WPNeg_out                ;
+    assign WPNeg_out = WPNeg        ;
+
+    wire   RSTNeg_in                 ;
+    //Internal pull-up
+    assign RSTNeg_in = (RSTNeg_ipd === 1'bx) ? 1'b1 : RSTNeg_ipd;
+
+    // internal delays
+    reg PP_in       ;
+    reg PP_out      ;
+    reg BP_in       ;
+    reg BP_out      ;
+    reg SE_in       ;
+    reg SE_out      ;
+    reg BE_in       ;
+    reg BE_out      ;
+    reg WRR_in      ;
+    reg WRR_out     ;
+    reg ERSSUSP_in  ;
+    reg ERSSUSP_out ;
+    reg PRGSUSP_in  ;
+    reg PRGSUSP_out ;
+    reg PU_in       ;
+    reg PU_out      ;
+    reg RST_in      ;
+    reg RST_out     ;
+    reg PPBERASE_in ;
+    reg PPBERASE_out;
+    reg PASSULCK_in ;
+    reg PASSULCK_out;
+    reg PASSACC_in ;
+    reg PASSACC_out;
+
+    // event control registers
+    reg PRGSUSP_out_event;
+    reg ERSSUSP_out_event;
+    reg Reseted_event;
+    reg SCK_ipd_event;
+    reg next_state_event;
+
+    reg rising_edge_PoweredUp;
+    reg rising_edge_Reseted;
+    reg rising_edge_PASSULCK_in;
+    reg rising_edge_RES_out;
+    reg rising_edge_PSTART;
+    reg rising_edge_WSTART;
+    reg rising_edge_ESTART;
+    reg rising_edge_RSTNeg;
+    reg rising_edge_RST;
+    reg falling_edge_RSTNeg;
+    reg falling_edge_RST;
+    reg rising_edge_RST_out;
+    reg rising_edge_CSNeg_ipd  = 1'b0;
+    reg falling_edge_CSNeg_ipd = 1'b0;
+    reg rising_edge_SCK_ipd    = 1'b0;
+    reg falling_edge_SCK_ipd   = 1'b0;
+
+    reg RST                ;
+
+    reg  SOut_zd = 1'bZ     ;
+    reg  SOut_z  = 1'bZ     ;
+
+    wire SI_z                ;
+    wire SO_z                ;
+
+    reg  SIOut_zd = 1'bZ     ;
+    reg  SIOut_z  = 1'bZ     ;
+
+    reg  WPNegOut_zd   = 1'bZ  ;
+    reg  HOLDNegOut_zd = 1'bZ  ;
+
+    assign SI_z = SIOut_z;
+    assign SO_z = SOut_z;
+
+    parameter UserPreload       = 1;
+    parameter mem_file_name     = "none";//"s25fl256s.mem";
+    parameter otp_file_name     = "s25fl256sOTP.mem";//"none";
+
+    parameter TimingModel       = "DefaultTimingModel";
+
+    parameter  PartID           = "s25fl256s";
+    parameter  MaxData          = 255;
+    parameter  MemSize          = 28'h1FFFFFF;
+    parameter  SecSize256       = 20'h3FFFF;
+    parameter  SecSize64        = 16'hFFFF;
+    parameter  SecSize4         = 12'hFFF;
+    parameter  SecNum64         = 541;
+    parameter  SecNum256        = 127;
+    parameter  PageNum64        = 20'h3FFFF;
+    parameter  PageNum256       = 16'hFFFF;
+    parameter  AddrRANGE        = 28'h1FFFFFF;
+    parameter  HiAddrBit        = 31;
+    parameter  OTPSize          = 1023;
+    parameter  OTPLoAddr        = 12'h000;
+    parameter  OTPHiAddr        = 12'h3FF;
+    parameter  BYTE             = 8;
+
+    // Manufacturer Identification
+    parameter  Manuf_ID       = 8'h01;
+    parameter  DeviceID       = 8'h18;
+    // Electronic Signature
+    parameter  ESignature     = 8'h18;
+    //  Device ID
+    //Manufacturer Identification && Memory Type && Memory Capacity
+    parameter  Jedec_ID       = 8'h01;
+    parameter  DeviceID1      = 8'h02;
+    parameter  DeviceID2      = 8'h19;
+    parameter  ExtendedBytes  = 8'h4D;
+    parameter  ExtendedID64   = 8'h01;
+    parameter  ExtendedID256  = 8'h00;
+    parameter  DieRev         = 8'h00;
+    parameter  MaskRev        = 8'h00;
+
+    integer    PageSize;
+    integer    PageNum;
+    integer    SecSize;
+    integer    b_act = 0;
+
+    integer    ASP_ProtSE = 0;
+    integer    Sec_ProtSE = 0;
+
+    integer    EHP; //Enhanced High Performance Mode active
+
+    integer    BAR_ACC = 0; //Bank Register Access active
+
+    //varaibles to resolve architecture used
+    reg [24*8-1:0] tmp_timing;//stores copy of TimingModel
+    reg [7:0] tmp_char1;//Define EHPLC or HPLC Mode
+    reg [7:0] tmp_char2;//stores "0" or "1" character defining sector/page size
+    integer found = 1'b0;
+
+    // If speedsimulation is needed uncomment following line
+
+       `define SPEEDSIM;
+
+    // powerup
+    reg PoweredUp;
+
+    // Memory Array Configuration
+    reg BottomBoot          = 1'b0;
+    reg TopBoot             = 1'b0;
+    reg UniformSec          = 1'b0;
+
+    // FSM control signals
+    reg PDONE     ;
+    reg PSTART    ;
+    reg PGSUSP    ;
+    reg PGRES     ;
+
+    reg TSU       ;
+
+    reg RES_TO_SUSP_MIN_TIME;
+    reg RES_TO_SUSP_TYP_TIME;
+
+    reg WDONE     ;
+    reg WSTART    ;
+
+    reg EDONE     ;
+    reg ESTART    ;
+    reg ESUSP     ;
+    reg ERES      ;
+
+    reg Reseted   ;
+
+    reg PARAM_REGION      = 1'b0;
+
+    // Lock Bit is enabled for customer programming
+    reg WRLOCKENABLE      = 1'b1;
+    // Flag that mark if ASP Register is allready programmed
+    reg ASPOTPFLAG        = 1'b0;
+
+    //Flag for Password unlock command
+    reg PASS_UNLOCKED     = 1'b0;
+    reg [63:0] PASS_TEMP  = 64'hFFFFFFFFFFFFFFFF;
+
+    reg QUADRD            = 1'b0;
+    reg INITIAL_CONFIG    = 1'b0;
+    reg CHECK_FREQ        = 1'b0;
+
+    // Programming buffer
+    integer WByte[0:511];
+    // CFI array
+    integer CFI_array[8'h00:8'h50];
+    // OTP Memory Array
+    integer OTPMem[OTPLoAddr:OTPHiAddr];
+    // Flash Memory Array
+    integer Mem[0:AddrRANGE];
+
+    // Registers
+    // VDLR Register
+    reg[7:0] VDLR_reg          = 8'h00;
+    reg[7:0] VDLR_reg_in       = 8'h00;
+    // NVDLR Register
+    reg[7:0] NVDLR_reg         = 8'h00;
+    reg[7:0] NVDLR_reg_in      = 8'h00;
+    reg start_dlp              = 1'b0;
+
+    // Status Register 1
+    reg[7:0] Status_reg1       = 8'h00;
+    reg[7:0] Status_reg1_in    = 8'h00;
+
+    wire SRWD ;
+    wire P_ERR;
+    wire E_ERR;
+    wire [2:0]BP;
+    wire WEL;
+    wire WIP;
+    assign SRWD   = Status_reg1[7];
+    assign P_ERR  = Status_reg1[6];
+    assign E_ERR  = Status_reg1[5];
+    assign BP     = Status_reg1[4:2];
+    assign WEL    = Status_reg1[1];
+    assign WIP    = Status_reg1[0];
+
+    // Status Register 2
+    reg[7:0] Status_reg2       = 8'h00;
+    reg[7:0] Status_reg2_in    = 8'h00;
+
+    wire ES ;
+    wire PS ;
+    assign ES   = Status_reg2[1];
+    assign PS   = Status_reg2[0];
+
+    // Configuration Register 1
+    reg[7:0] Config_reg1       = 8'h00;
+    reg[7:0] Config_reg1_in    = 8'h00;
+
+    wire   LC1                     ;
+    wire   LC0                     ;
+    wire   TBPROT                  ;
+//     wire   LOCK                    ;
+    wire   BPNV                    ;
+    wire   TBPARM                  ;
+    wire   QUAD                    ;
+    wire   FREEZE                  ;
+    assign LC1     = Config_reg1[7];
+    assign LC0     = Config_reg1[6];
+    assign TBPROT  = Config_reg1[5];
+//     assign LOCK    = Config_reg1[4];
+    assign BPNV    = Config_reg1[3];
+    assign TBPARM  = Config_reg1[2];
+    assign QUAD    = Config_reg1[1];
+    assign FREEZE  = Config_reg1[0];
+
+    // Autoboot Register
+    reg[31:0] AutoBoot_reg     = 32'h00000000;
+    reg[31:0] AutoBoot_reg_in  = 32'h00000000;
+
+    wire ABE;
+    assign ABE     = AutoBoot_reg[0];
+
+    // Bank Address Register
+    reg [7:0] Bank_Addr_reg    = 8'h00;
+    reg [7:0] Bank_Addr_reg_in = 8'h00;
+
+    wire   EXTADD;
+    wire   BA24;
+
+    assign EXTADD  = Bank_Addr_reg[7];
+    assign BA24    = Bank_Addr_reg[0];
+    
+    // ECC Status Register
+    reg[7:0] ECCSR      = 8'h00;
+    
+    wire   EECC;
+    wire   EECCD;
+    wire   ECCDI;
+    
+    assign EECC   = ECCSR[2];
+    assign EECCD  = ECCSR[1];
+    assign ECCDI  = ECCSR[0];
+
+    // ASP Register
+    reg[15:0] ASP_reg   ;
+    reg[15:0] ASP_reg_in;
+
+    wire    RPME         ;
+    wire    PPBOTP       ;
+    wire    PWDMLB       ;
+    wire    PSTMLB       ;
+    assign  RPME     = ASP_reg[5];
+    assign  PPBOTP   = ASP_reg[3];
+    assign  PWDMLB   = ASP_reg[2];
+    assign  PSTMLB   = ASP_reg[1];
+
+    // Password register
+    reg[63:0] Password_reg     = 64'hFFFFFFFFFFFFFFFF;
+    reg[63:0] Password_reg_in  = 64'hFFFFFFFFFFFFFFFF;
+
+    // PPB Lock Register
+    reg[7:0] PPBL              = 8'h00;
+    reg[7:0] PPBL_in           = 8'h00;
+
+    wire   PPB_LOCK              ;
+    assign PPB_LOCK     = PPBL[0];
+
+    // PPB Access Register
+    reg[7:0] PPBAR             = 8'hFF;
+    reg[7:0] PPBAR_in          = 8'hFF;
+
+    reg[SecNum64:0] PPB_bits   = {542{1'b1}};
+
+    // DYB Access Register
+    reg[7:0] DYBAR             = 8'hFF;
+    reg[7:0] DYBAR_in          = 8'hFF;
+
+    reg[SecNum64:0] DYB_bits   = {542{1'b1}};
+
+    //The Lock Protection Registers for OTP Memory space
+    reg[7:0] LOCK_BYTE1;
+    reg[7:0] LOCK_BYTE2;
+    reg[7:0] LOCK_BYTE3;
+    reg[7:0] LOCK_BYTE4;
+
+    // Command Register
+    reg write;
+    reg cfg_write;
+    reg read_out;
+    reg dual          = 1'b0;
+    reg rd_fast       = 1'b1;
+    reg rd_slow       = 1'b0;
+    reg ddr           = 1'b0;
+    reg ddr80         = 1'b0;
+    reg ddr_fast      = 1'b0;
+    reg hold_mode     = 1'b0;
+    reg any_read      = 1'b0;
+    reg quad_pg       = 1'b0;
+
+    wire rd ;
+    wire fast_rd ;
+    wire ddrd ;
+    wire fast_ddr ;
+    wire ddrd80 ;
+
+    wire quadpg ;
+    assign quadpg = quad_pg;
+
+    wire RD_EQU_1;
+    assign RD_EQU_1 = any_read;
+
+    wire RD_EQU_0;
+    assign RD_EQU_0 = ~any_read;
+
+    reg  change_TBPARM = 0;
+
+    reg  change_BP = 0;
+    reg [2:0] BP_bits   = 3'b0;
+
+    reg DOUBLE          = 1'b0; //Double Data Rate (DDR) flag
+
+    reg RdPswdProtMode    = 1'b0;//Read Password Protection Mode Active flag
+    reg RdPswdProtEnable  = 1'b0;//Read Password Protection Mode Support flag
+
+    integer Byte_number = 0;
+
+    reg oe   = 1'b0;
+    reg oe_z = 1'b0;
+
+    reg [647:0] CFI_array_tmp ;
+    reg [7:0] CFI_tmp;
+
+    integer start_delay;
+    reg start_autoboot;
+    integer ABSD;
+
+    reg  change_addr ;
+    integer Address = 0;
+    integer SectorSuspend = 0;
+
+    //Sector and subsector addresses
+    integer SA        = 0;
+
+    // Sector is protect if Sec_Prot(SecNum) = '1'
+    reg [SecNum64:0] Sec_Prot  = {542{1'b0}};
+
+    // timing check violation
+    reg Viol = 1'b0;
+
+    integer WOTPByte;
+    integer AddrLo;
+    integer AddrHi;
+
+    reg[7:0]  old_bit, new_bit;
+    integer old_int, new_int;
+    reg[63:0] old_pass;
+    reg[63:0] new_pass;
+    integer wr_cnt;
+    integer cnt;
+
+    integer read_cnt = 0;
+    integer byte_cnt = 1;
+    integer read_addr = 0;
+    integer read_addr_tmp = 0;
+    integer Sec_addr = 0;
+    integer SecAddr = 0;
+    integer Page_addr = 0;
+    integer pgm_page = 0;
+
+    reg[7:0] data_out;
+    reg[647:0] ident_out;
+
+    time SCK_cycle = 0;
+    time prev_SCK;
+    time start_ddr;
+    time out_time;
+    time SCK_SO_DDR;
+///////////////////////////////////////////////////////////////////////////////
+//Interconnect Path Delay Section
+///////////////////////////////////////////////////////////////////////////////
+ buf   (SCK_ipd, SCK);
+ buf   (SI_ipd, SI);
+
+ buf   (SO_ipd, SO);
+ buf   (CSNeg_ipd, CSNeg);
+ buf   (HOLDNeg_ipd, HOLDNeg);
+ buf   (WPNeg_ipd, WPNeg);
+ buf   (RSTNeg_ipd, RSTNeg);
+
+///////////////////////////////////////////////////////////////////////////////
+// Propagation  delay Section
+///////////////////////////////////////////////////////////////////////////////
+    nmos   (SI,   SI_z , 1);
+
+    nmos   (SO,   SO_z , 1);
+    nmos   (HOLDNeg,   HOLDNegOut_zd , 1);
+    nmos   (WPNeg,   WPNegOut_zd , 1);
+
+    wire deg_pin;
+    wire deg_sin;
+    wire deg_holdin;
+    wire deh_pin;
+    wire deh_sout;
+    wire deh_ddr_sout;
+    wire deh_holdin;
+    //VHDL VITAL CheckEnable equivalents
+    wire quad_rd;
+    assign quad_rd = deg_holdin && ~QUAD && (SIOut_z != 1'bz);
+    wire wr_prot;
+    assign wr_prot = SRWD && WEL && ~QUAD;
+    wire dual_rd;
+    assign dual_rd = dual ;
+    wire ddro;
+    assign ddro = ddr && ~ddr80 && ~dual ;
+    wire ddro80;
+    assign ddro80 = ddr && ddr80 && ~dual ;
+    wire ddr_rd;
+    assign ddr_rd = PoweredUp && ddr;
+    wire sdr_rd;
+    assign sdr_rd = PoweredUp && ~ddr;
+
+specify
+        // tipd delays: interconnect path delays , mapped to input port delays.
+        // In Verilog is not necessary to declare any tipd_ delay variables,
+        // they can be taken from SDF file
+        // With all the other delays real delays would be taken from SDF file
+
+    // tpd delays
+    specparam        tpd_SCK_SO_normal             =1;
+    specparam        tpd_CSNeg_SO                  =1;
+    specparam        tpd_HOLDNeg_SO                =1;
+    specparam        tpd_RSTNeg_SO                 =1;
+    //DDR operation values
+    specparam        tpd_SCK_SO_DDR                =1;
+
+    //tsetup values: setup times
+    specparam        tsetup_CSNeg_SCK              =1;
+    specparam        tsetup_SI_SCK_normal          =1;
+    specparam        tsetup_WPNeg_CSNeg            =1;
+    specparam        tsetup_HOLDNeg_SCK            =1;
+    specparam        tsetup_RSTNeg_CSNeg           =1;
+    // DDR operation values
+    specparam        tsetup_SI_SCK_DDR             =1;
+    specparam        tsetup_SI_SCK_DDR_fast        =1;
+    specparam        tsetup_CSNeg_SCK_DDR          =1;
+
+    //thold values: hold times
+    specparam        thold_CSNeg_SCK               =1;
+    specparam        thold_SI_SCK_normal           =1;
+    specparam        thold_SO_SCK_normal           =1;
+    specparam        thold_WPNeg_CSNeg             =1;
+    specparam        thold_HOLDNeg_SCK             =1;
+    specparam        thold_CSNeg_RSTNeg            =1;
+    // DDR operation values
+    specparam        thold_SI_SCK_DDR              =1;
+    specparam        thold_SI_SCK_DDR_fast         =1;
+    specparam        thold_CSNeg_SCK_DDR           =1;
+
+    // tpw values: pulse width
+    specparam        tpw_SCK_serial_posedge        =1;
+    specparam        tpw_SCK_dual_posedge          =1;
+    specparam        tpw_SCK_fast_posedge          =1;
+    specparam        tpw_SCK_quadpg_posedge        =1;
+    specparam        tpw_SCK_serial_negedge        =1;
+    specparam        tpw_SCK_dual_negedge          =1;
+    specparam        tpw_SCK_fast_negedge          =1;
+    specparam        tpw_SCK_quadpg_negedge        =1;
+    specparam        tpw_CSNeg_read_posedge        =1;
+    specparam        tpw_CSNeg_pgers_posedge       =1;
+    specparam        tpw_RSTNeg_negedge            =1;
+    specparam        tpw_RSTNeg_posedge            =1;
+    // DDR operation values
+    specparam        tpw_SCK_DDR_posedge           =1;
+    specparam        tpw_SCK_DDR_negedge           =1;
+    specparam        tpw_SCK_DDR80_posedge         =1;
+    specparam        tpw_SCK_DDR80_negedge         =1;
+
+    // tperiod min (calculated as 1/max freq)
+    specparam        tperiod_SCK_serial_rd         =1;// 50 MHz
+    specparam        tperiod_SCK_fast_rd           =1;//133 MHz
+    specparam        tperiod_SCK_dual_rd           =1;//104 MHz
+    specparam        tperiod_SCK_quadpg            =1;// 80 MHz
+    // DDR operation values
+    specparam        tperiod_SCK_DDR_rd            =1;// 66 MHz
+    specparam        tperiod_SCK_DDR80_rd          =1;// 80 MHz
+
+    `ifdef SPEEDSIM
+        // Page Program Operation
+        specparam        tdevice_PP_256            = 75e7;//tPP
+        // Page Program Operation
+        specparam        tdevice_PP_512            = 75e7;//tPP
+        // Typical Byte Programming Time
+        specparam        tdevice_BP                = 4e8;//tBP
+        // Sector Erase Operation
+        specparam        tdevice_SE64              = 650e7;//tSE
+        // Sector Erase Operation
+        specparam        tdevice_SE256             = 1875e7;//tSE
+        // Bulk Erase Operation
+        specparam        tdevice_BE                = 330e9;//tBE
+        // WRR Cycle Time
+        specparam        tdevice_WRR               = 1; // 2e9;//tW
+        // Erase Suspend/Erase Resume Time
+        specparam        tdevice_ERSSUSP           = 45e6;//tESL
+        // Program Suspend/Program Resume Time
+        specparam        tdevice_PRGSUSP           = 1; // 40e6;//
+        // VCC (min) to CS# Low
+        specparam        tdevice_PU                = 1; // 3e8;//tPU
+        // PPB Erase Time
+        specparam        tdevice_PPBERASE          = 15e9;//
+        // Password Unlock Time
+        specparam        tdevice_PASSULCK          = 1e6;//
+        // Password Unlock to Password Unlock Time
+        specparam        tdevice_PASSACC           = 100e6;
+        // Data In Setup Max time
+        specparam        tdevice_TSU               = 300e3;
+    `else
+        // Page Program Operation
+        specparam        tdevice_PP_256            = 75e7;//tPP
+        // Page Program Operation
+        specparam        tdevice_PP_512            = 75e7;//tPP
+        // Typical Byte Programming Time
+        specparam        tdevice_BP                = 4e8;//tBP
+        // Sector Erase Operation
+        specparam        tdevice_SE64              = 650e9;//tSE
+        // Sector Erase Operation
+        specparam        tdevice_SE256             = 1875e9;//tSE
+        // Bulk Erase Operation
+        specparam        tdevice_BE                = 330e12;//tBE
+        // WRR Cycle Time
+        specparam        tdevice_WRR               = 2e11;//tW
+        // Erase Suspend/Erase Resume Time
+        specparam        tdevice_ERSSUSP           = 45e6;//tESL
+        // Program Suspend/Program Resume Time
+        specparam        tdevice_PRGSUSP           = 40e6;//
+        // VCC (min) to CS# Low
+        specparam        tdevice_PU                = 3e8;//tPU
+        // PPB Erase Time
+        specparam        tdevice_PPBERASE          = 15e9;//
+        // Password Unlock Time
+        specparam        tdevice_PASSULCK          = 1e6;//
+        // Password Unlock to Password Unlock Time
+        specparam        tdevice_PASSACC           = 100e6;
+        // Data In Setup Max time
+        specparam        tdevice_TSU               = 300e3;
+    `endif // SPEEDSIM
+
+///////////////////////////////////////////////////////////////////////////////
+// Input Port  Delays  don't require Verilog description
+///////////////////////////////////////////////////////////////////////////////
+// Path delays                                                               //
+///////////////////////////////////////////////////////////////////////////////
+  if (~ddr)           (SCK => SO) = tpd_SCK_SO_normal;
+  if (ddr || rd_fast) (SCK => SO) = tpd_SCK_SO_DDR;
+
+  if (~ddr && dual) (SCK => SI) = tpd_SCK_SO_normal;
+  if ( ddr && dual) (SCK => SI) = tpd_SCK_SO_DDR;
+
+  if (~ddr && QUAD)(SCK => HOLDNeg) = tpd_SCK_SO_normal;
+  if ( ddr && QUAD)(SCK => HOLDNeg) = tpd_SCK_SO_DDR;
+  if (~ddr && QUAD)(SCK => WPNeg)   = tpd_SCK_SO_normal;
+  if ( ddr && QUAD)(SCK => WPNeg)   = tpd_SCK_SO_DDR;
+
+  if (CSNeg)         (CSNeg => SO) = tpd_CSNeg_SO;
+  if (CSNeg && dual) (CSNeg => SI) = tpd_CSNeg_SO;
+
+  if (CSNeg && QUAD) (CSNeg => HOLDNeg) = tpd_CSNeg_SO;
+  if (CSNeg && QUAD) (CSNeg => WPNeg)   = tpd_CSNeg_SO;
+
+  if (~QUAD)          (HOLDNeg => SO) = tpd_HOLDNeg_SO;
+  if (~QUAD && dual)  (HOLDNeg => SI) = tpd_HOLDNeg_SO;
+
+   (RSTNeg => SO) = tpd_RSTNeg_SO;
+///////////////////////////////////////////////////////////////////////////////
+// Timing Violation                                                          //
+///////////////////////////////////////////////////////////////////////////////
+        $setup ( CSNeg          , posedge SCK &&& sdr_rd,
+                                                tsetup_CSNeg_SCK,       Viol);
+        $setup ( CSNeg          , posedge SCK &&& ddr_rd,
+                                                tsetup_CSNeg_SCK_DDR,   Viol);
+        $setup ( SI             , posedge SCK &&& deg_sin,
+                                                tsetup_SI_SCK_normal,   Viol);
+        $setup ( WPNeg          , negedge CSNeg &&& wr_prot,
+                                                tsetup_WPNeg_CSNeg,     Viol);
+        $setup ( HOLDNeg        , posedge SCK &&& quad_rd,
+                                                tsetup_HOLDNeg_SCK,     Viol);
+        $setup ( SI             , posedge SCK &&& ddro,
+                                                tsetup_SI_SCK_DDR,      Viol);
+        $setup ( SI             , negedge SCK &&& ddro,
+                                                tsetup_SI_SCK_DDR,      Viol);
+        $setup ( SI             , posedge SCK &&& ddro80,
+                                                tsetup_SI_SCK_DDR,      Viol);
+        $setup ( SI             , negedge SCK &&& ddro80,
+                                                tsetup_SI_SCK_DDR,      Viol);
+
+        $setup ( RSTNeg         , negedge CSNeg,
+                                                tsetup_RSTNeg_CSNeg,    Viol);
+
+        $hold  ( posedge SCK &&& sdr_rd   , CSNeg,
+                                                thold_CSNeg_SCK,        Viol);
+        $hold  ( posedge SCK &&& ddr_rd   , CSNeg,
+                                                thold_CSNeg_SCK_DDR,    Viol);
+        $hold  ( posedge SCK &&& deg_sin     , SI ,
+                                                thold_SI_SCK_normal,    Viol);
+        $hold  ( negedge SCK &&& deh_sout    , SO ,
+                                                thold_SO_SCK_normal,    Viol);
+        $hold  ( negedge SCK &&& deh_ddr_sout        , SO ,
+                                                thold_SO_SCK_normal,    Viol);
+        $hold  ( posedge SCK &&& deh_ddr_sout        , SO ,
+                                                thold_SO_SCK_normal,    Viol);
+        $hold  ( posedge CSNeg &&& wr_prot , WPNeg ,
+                                                thold_WPNeg_CSNeg,      Viol);
+        $hold  ( posedge SCK  &&& quad_rd  , HOLDNeg ,
+                                                thold_HOLDNeg_SCK,      Viol);
+        $hold  ( posedge SCK &&& ddro     , SI,
+                                                thold_SI_SCK_DDR,       Viol);
+        $hold  ( negedge SCK &&& ddro     , SI,
+                                                thold_SI_SCK_DDR,       Viol);
+        $hold  ( posedge SCK &&& ddro80     , SI,
+                                                thold_SI_SCK_DDR,       Viol);
+        $hold  ( negedge SCK &&& ddro80     , SI,
+                                                thold_SI_SCK_DDR,       Viol);
+
+        $hold  ( negedge RSTNeg  , CSNeg,
+                                                thold_CSNeg_RSTNeg,     Viol);
+
+        $width ( posedge SCK &&& rd        , tpw_SCK_serial_posedge);
+        $width ( negedge SCK &&& rd        , tpw_SCK_serial_negedge);
+        $width ( posedge SCK &&& dual_rd   , tpw_SCK_dual_posedge);
+        $width ( negedge SCK &&& dual_rd   , tpw_SCK_dual_negedge);
+        $width ( posedge SCK &&& fast_rd   , tpw_SCK_fast_posedge);
+        $width ( negedge SCK &&& fast_rd   , tpw_SCK_fast_negedge);
+        $width ( posedge SCK &&& ddrd      , tpw_SCK_DDR_posedge);
+        $width ( negedge SCK &&& ddrd      , tpw_SCK_DDR_negedge);
+        $width ( posedge SCK &&& ddrd80    , tpw_SCK_DDR80_posedge);
+        $width ( negedge SCK &&& ddrd80    , tpw_SCK_DDR80_negedge);
+        $width ( posedge SCK &&& quadpg    , tpw_SCK_quadpg_posedge);
+        $width ( negedge SCK &&& quadpg    , tpw_SCK_quadpg_negedge);
+
+        $width ( posedge CSNeg &&& RD_EQU_1, tpw_CSNeg_read_posedge);
+        $width ( posedge CSNeg &&& RD_EQU_0, tpw_CSNeg_pgers_posedge);
+        $width ( negedge RSTNeg            , tpw_RSTNeg_negedge);
+        $width ( posedge RSTNeg            , tpw_RSTNeg_posedge);
+
+        $period ( posedge SCK &&& rd       , tperiod_SCK_serial_rd);
+        $period ( posedge SCK &&& fast_rd  , tperiod_SCK_fast_rd);
+        $period ( posedge SCK &&& dual_rd  , tperiod_SCK_dual_rd);
+        $period ( posedge SCK &&& quadpg   , tperiod_SCK_quadpg);
+        $period ( posedge SCK &&& ddrd     , tperiod_SCK_DDR_rd);
+        $period ( posedge SCK &&& ddrd80   , tperiod_SCK_DDR80_rd);
+
+endspecify
+
+///////////////////////////////////////////////////////////////////////////////
+// Main Behavior Block                                                       //
+///////////////////////////////////////////////////////////////////////////////
+// FSM states
+ parameter IDLE            = 5'd0;
+ parameter RESET_STATE     = 5'd1;
+ parameter AUTOBOOT        = 5'd2;
+ parameter WRITE_SR        = 5'd3;
+ parameter PAGE_PG         = 5'd4;
+ parameter OTP_PG          = 5'd5;
+ parameter PG_SUSP         = 5'd6;
+ parameter SECTOR_ERS      = 5'd7;
+ parameter BULK_ERS        = 5'd8;
+ parameter ERS_SUSP        = 5'd9;
+ parameter ERS_SUSP_PG     = 5'd10;
+ parameter ERS_SUSP_PG_SUSP= 5'd11;
+ parameter PASS_PG         = 5'd12;
+ parameter PASS_UNLOCK     = 5'd13;
+ parameter PPB_PG          = 5'd14;
+ parameter PPB_ERS         = 5'd15;
+ parameter AUTOBOOT_PG     = 5'd16;
+ parameter ASP_PG          = 5'd17;
+ parameter PLB_PG          = 5'd18;
+ parameter DYB_PG          = 5'd19;
+ parameter NVDLR_PG        = 5'd20;
+
+ reg [4:0] current_state;
+ reg [4:0] next_state;
+
+// Instruction type
+ parameter NONE            = 7'd0;
+ parameter WRR             = 7'd1;
+ parameter PP              = 7'd2;
+ parameter READ            = 7'd3;
+ parameter WRDI            = 7'd4;
+ parameter RDSR            = 7'd5;
+ parameter WREN            = 7'd6;
+ parameter RDSR2           = 7'd7;
+ parameter FSTRD           = 7'd8;
+ parameter FSTRD4          = 7'd9;
+ parameter DDRFR           = 7'd10;
+ parameter DDRFR4          = 7'd11;
+ parameter PP4             = 7'd12;
+ parameter RD4             = 7'd13;
+ parameter ABRD            = 7'd14;
+ parameter ABWR            = 7'd15;
+ parameter BRRD            = 7'd16;
+ parameter BRWR            = 7'd17;
+ parameter P4E             = 7'd19;
+ parameter P4E4            = 7'd20;
+ parameter ASPRD           = 7'd21;
+ parameter ASPP            = 7'd22;
+ parameter CLSR            = 7'd23;
+ parameter QPP             = 7'd24;
+ parameter QPP4            = 7'd25;
+ parameter RDCR            = 7'd26;
+ parameter DOR             = 7'd27;
+ parameter DOR4            = 7'd28;
+ parameter DLPRD           = 7'd29;
+ parameter OTPP            = 7'd30;
+ parameter PNVDLR          = 7'd31;
+ parameter OTPR            = 7'd32;
+ parameter WVDLR           = 7'd33;
+ parameter BE              = 7'd34;
+ parameter QOR             = 7'd35;
+ parameter QOR4            = 7'd36;
+ parameter ERSP            = 7'd37;
+ parameter ERRS            = 7'd38;
+ parameter PGSP            = 7'd39;
+ parameter PGRS            = 7'd40;
+ parameter REMS            = 7'd41;
+ parameter RDID            = 7'd42;
+ parameter MPM             = 7'd43;
+ parameter PLBWR           = 7'd44;
+ parameter PLBRD           = 7'd45;
+ parameter RES             = 7'd46;
+ parameter DIOR            = 7'd47;
+ parameter DIOR4           = 7'd48;
+ parameter DDRDIOR         = 7'd49;
+ parameter DDRDIOR4        = 7'd50;
+ parameter SE              = 7'd51;
+ parameter SE4             = 7'd52;
+ parameter DYBRD           = 7'd53;
+ parameter DYBWR           = 7'd54;
+ parameter PPBRD           = 7'd55;
+ parameter PPBP            = 7'd56;
+ parameter PPBERS          = 7'd57;
+ parameter PASSRD          = 7'd58;
+ parameter PASSP           = 7'd59;
+ parameter PASSU           = 7'd60;
+ parameter QIOR            = 7'd61;
+ parameter QIOR4           = 7'd62;
+ parameter DDRQIOR         = 7'd63;
+ parameter DDRQIOR4        = 7'd64;
+ parameter RESET           = 7'd65;
+ parameter MBR             = 7'd66;
+ parameter BRAC            = 7'd67;
+ parameter ECCRD           = 7'd68;
+
+ reg [6:0] Instruct;
+
+//Bus cycle state
+ parameter STAND_BY        = 3'd0;
+ parameter OPCODE_BYTE     = 3'd1;
+ parameter ADDRESS_BYTES   = 3'd2;
+ parameter DUMMY_BYTES     = 3'd3;
+ parameter MODE_BYTE       = 3'd4;
+ parameter DATA_BYTES      = 3'd5;
+
+ reg [2:0] bus_cycle_state;
+
+ reg deq_pin;
+    always @(SO_in, SO_z)
+    begin
+      if (SO_in==SO_z)
+        deq_pin=1'b0;
+      else
+        deq_pin=1'b1;
+    end
+    // check when data is generated from model to avoid setuphold check in
+    // this occasion
+    assign deg_pin = deq_pin;
+    assign deh_pin = (deq_pin == 1'b0) && (SO_z != 1'bz);
+ reg deq_sin;
+    always @(SI_in, SIOut_z)
+    begin
+      if (SI_in==SIOut_z)
+        deq_sin=1'b0;
+      else
+        deq_sin=1'b1;
+    end
+    // check when data is generated from model to avoid setuphold check in
+    // this occasion
+    assign deg_sin=deq_sin
+           && (ddr == 1'b0) && (Instruct !== DDRFR)
+           && (Instruct !== DDRFR4) && (Instruct !== DDRDIOR)
+           && (Instruct !== DDRDIOR4) && (Instruct !== DDRQIOR)
+           && (Instruct !== DDRQIOR4) && (SIOut_z != 1'bz);
+ reg deq_sout;
+    always @(SO_out, SIOut_z)
+    begin
+      if (SO_out==SIOut_z)
+        deq_sout=1'b0;
+      else
+        deq_sout=1'b1;
+    end
+    // check when data is generated from model
+    assign deh_sout= (deq_sout == 1'b0)
+           && (ddr == 1'b0) && (SOut_z != 1'bz);
+    assign deh_ddr_sout= (deq_sout == 1'b0)
+           && (ddr == 1'b1) && (SOut_z != 1'bz);
+
+ reg deq_holdin;
+    always @(HOLDNeg_ipd, HOLDNegOut_zd)
+    begin
+      if (HOLDNeg_ipd==HOLDNegOut_zd)
+        deq_holdin=1'b0;
+      else
+        deq_holdin=1'b1;
+    end
+    // check when data is generated from model to avoid setuphold check in
+    // this occasion
+    assign deg_holdin=deq_holdin;
+    assign deh_holdin=(deq_holdin == 1'b0) && (HOLDNegOut_zd != 1'bz);
+
+    //Power Up time;
+    initial
+    begin
+        PoweredUp = 1'b0;
+	$display("%0t=>STATUS: SPI FLASH POWER UP Wait Time: %0d:%0d",$time,tdevice_PU,tdevice_PRGSUSP);
+        #tdevice_PU PoweredUp = 1'b1;
+	$display("%0t=>STATUS: SPI FLASH POWER UP",$time,);
+    end
+
+    initial
+    begin : Init
+        write       = 1'b0;
+        cfg_write   = 1'b0;
+        read_out    = 1'b0;
+        Address     = 0;
+        change_addr = 1'b0;
+        cnt         = 0;
+        RST         = 1'b0;
+        RST_in      = 1'b0;
+        RST_out     = 1'b1;
+        PDONE       = 1'b1;
+        PSTART      = 1'b0;
+        PGSUSP      = 1'b0;
+        PGRES       = 1'b0;
+        PRGSUSP_in  = 1'b0;
+        ERSSUSP_in  = 1'b0;
+        RES_TO_SUSP_MIN_TIME  = 1'b0;
+        RES_TO_SUSP_TYP_TIME  = 1'b0;
+
+        EDONE       = 1'b1;
+        ESTART      = 1'b0;
+        ESUSP       = 1'b0;
+        ERES        = 1'b0;
+
+        WDONE       = 1'b1;
+        WSTART      = 1'b0;
+
+        Reseted     = 1'b0;
+
+        Instruct        = NONE;
+        bus_cycle_state = STAND_BY;
+        current_state   = RESET_STATE;
+        next_state      = RESET_STATE;
+    end
+
+    // initialize memory and load preload files if any
+    initial
+    begin: InitMemory
+        integer i;
+
+        for (i=0;i<=AddrRANGE;i=i+1)
+        begin
+            Mem[i] = MaxData;
+        end
+
+        if ((UserPreload) && !(mem_file_name == "none"))
+        begin
+           // Memory Preload
+           //s25fl256s.mem, memory preload file
+           //  @aaaaaa - <aaaaaa> stands for address
+           //  dd      - <dd> is byte to be written at Mem(aaaaaa++)
+           // (aaaaaa is incremented at every load)
+	   $display("%m: Loading Memfile : %s",mem_file_name);
+           $readmemh(mem_file_name,Mem);
+        end
+
+        for (i=OTPLoAddr;i<=OTPHiAddr;i=i+1)
+        begin
+            OTPMem[i] = MaxData;
+        end
+
+        if (UserPreload && !(otp_file_name == "none"))
+        begin
+        //s25fl256s_otp memory file
+        //   /       - comment
+        //   @aaaaaa     - <aaaaaa> stands for address within last defined
+        //   sector
+        //   dd      - <dd> is byte to be written at OTPMem(aaa++)
+        //   (aa is incremented at every load)
+        //   only first 1-4 columns are loaded. NO empty lines !!!!!!!!!!!!!!!!
+           $readmemh(otp_file_name,OTPMem);
+        end
+
+        LOCK_BYTE1[7:0] = OTPMem[16];
+        LOCK_BYTE2[7:0] = OTPMem[17];
+        LOCK_BYTE3[7:0] = OTPMem[18];
+        LOCK_BYTE4[7:0] = OTPMem[19];
+    end
+
+    // initialize memory and load preload files if any
+    initial
+    begin: InitTimingModel
+    integer i;
+    integer j;
+        //UNIFORM OR HYBRID arch model is used
+        //assumptions:
+        //1. TimingModel has format as S25FL128SXXXXXXXX_X_XXpF
+        //it is important that 16-th character from first one is "0" or "1"
+        //2. TimingModel does not have more then 24 characters
+        tmp_timing = TimingModel;//copy of TimingModel
+
+        i = 23;
+        while ((i >= 0) && (found != 1'b1))//search for first non null character
+        begin        //i keeps position of first non null character
+            j = 7;
+            while ((j >= 0) && (found != 1'b1))
+            begin
+                if (tmp_timing[i*8+j] != 1'd0)
+                    found = 1'b1;
+                else
+                    j = j-1;
+            end
+            i = i - 1;
+        end
+        i = i +1;
+        if (found)//if non null character is found
+        begin
+            for (j=0;j<=7;j=j+1)
+            begin
+            //EHPLC/HPLC character is 15
+            tmp_char1[j] = TimingModel[(i-14)*8+j];
+            //256B/512B Page character is 16
+            tmp_char2[j] = TimingModel[(i-15)*8+j];
+            end
+        end
+        if (tmp_char1 == "0" || tmp_char1 == "2" || tmp_char1 == "3" ||
+            tmp_char1 == "R" || tmp_char1 == "A" || tmp_char1 == "B" ||
+            tmp_char1 == "C" || tmp_char1 == "D" || tmp_char1 == "Y" ||
+            tmp_char1 == "Z" || tmp_char1 == "S" || tmp_char1 == "T" ||
+            tmp_char1 == "K" || tmp_char1 == "L")
+        begin
+            EHP = 1;
+            if(tmp_char1 == "Z" || tmp_char1 == "S" || tmp_char1 == "T" ||
+               tmp_char1 == "K" || tmp_char1 == "L" || tmp_char1 == "Y")
+            begin
+                RdPswdProtEnable = 1;
+            end
+        end
+        else if (tmp_char1 == "4" || tmp_char1 == "6" || tmp_char1 == "7" ||
+                 tmp_char1 == "8" || tmp_char1 == "9" || tmp_char1 == "Q")
+        begin
+            EHP = 0;
+        end
+
+        if (tmp_char1 == "0" || tmp_char1 == "2" || tmp_char1 == "3" ||
+            tmp_char1 == "R" || tmp_char1 == "A" || tmp_char1 == "B" ||
+            tmp_char1 == "C" || tmp_char1 == "D" || tmp_char1 == "4" ||
+            tmp_char1 == "6" || tmp_char1 == "7" || tmp_char1 == "8" ||
+            tmp_char1 == "9" || tmp_char1 == "Q")
+        begin
+            ASP_reg    = 16'hFE7F;
+            ASP_reg_in = 16'hFE7F;
+        end
+        else if (tmp_char1 == "Y" || tmp_char1 == "Z" || tmp_char1 == "S" ||
+                 tmp_char1 == "T" || tmp_char1 == "K" || tmp_char1 == "L")
+        begin
+            ASP_reg    = 16'hFE4F;
+            ASP_reg_in = 16'hFE4F;
+        end
+
+        if (tmp_char2 == "0")
+        begin
+            PageSize = 255;
+            PageNum  = PageNum64;
+            SecSize  = SecSize64;
+        end
+        else if (tmp_char2 == "1")
+        begin
+            PageSize = 511;
+            PageNum  = PageNum256;
+            SecSize  = SecSize256;
+        end
+    end
+
+    //CFI
+    initial
+    begin: InitCFI
+    integer i;
+    integer j;
+        ///////////////////////////////////////////////////////////////////////
+        // ID-CFI array data
+        ///////////////////////////////////////////////////////////////////////
+        // Manufacturer and Device ID
+        CFI_array[8'h00] = Jedec_ID;
+        CFI_array[8'h01] = DeviceID1;
+        CFI_array[8'h02] = DeviceID2;
+        CFI_array[8'h03] = 8'h00;
+        if (tmp_char2 == "0")
+        // Uniform 64kB sectors
+            CFI_array[8'h04] = ExtendedID64;
+        else if (tmp_char2 == "1")
+        // Uniform 256kB sectors
+            CFI_array[8'h04] = ExtendedID256;
+        CFI_array[8'h05] = 8'h80;
+        CFI_array[8'h06] = 8'h00;
+        CFI_array[8'h07] = 8'h00;
+        CFI_array[8'h08] = 8'h00;
+        CFI_array[8'h09] = 8'h00;
+        CFI_array[8'h0A] = 8'h00;
+        CFI_array[8'h0B] = 8'h00;
+        CFI_array[8'h0C] = 8'h00;
+        CFI_array[8'h0D] = 8'h00;
+        CFI_array[8'h0E] = 8'h00;
+        CFI_array[8'h0F] = 8'h00;
+        // CFI Query Identification String
+        CFI_array[8'h10] = 8'h51;
+        CFI_array[8'h11] = 8'h52;
+        CFI_array[8'h12] = 8'h59;
+        CFI_array[8'h13] = 8'h02;
+        CFI_array[8'h14] = 8'h00;
+        CFI_array[8'h15] = 8'h40;
+        CFI_array[8'h16] = 8'h00;
+        CFI_array[8'h17] = 8'h53;
+        CFI_array[8'h18] = 8'h46;
+        CFI_array[8'h19] = 8'h51;
+        CFI_array[8'h1A] = 8'h00;
+        //CFI system interface string
+        CFI_array[8'h1B] = 8'h27;
+        CFI_array[8'h1C] = 8'h36;
+        CFI_array[8'h1D] = 8'h00;
+        CFI_array[8'h1E] = 8'h00;
+        CFI_array[8'h1F] = 8'h06;
+        if (tmp_char2 == "0")
+        begin
+        // 64kB sector and 256B page
+            CFI_array[8'h20] = 8'h08;
+            CFI_array[8'h21] = 8'h08;
+        end
+        else if (tmp_char2 == "1")
+        begin
+        // 256kB sector and 512B page
+            CFI_array[8'h20] = 8'h09;
+            CFI_array[8'h21] = 8'h09;
+        end
+        CFI_array[8'h22] = 8'h10;
+        CFI_array[8'h23] = 8'h02;
+        CFI_array[8'h24] = 8'h02;
+        CFI_array[8'h25] = 8'h03;
+        CFI_array[8'h26] = 8'h03;
+        // Device Geometry Definition(Uniform Sector Devices)
+        CFI_array[8'h27] = 8'h19;
+        CFI_array[8'h28] = 8'h02;
+        CFI_array[8'h29] = 8'h01;
+
+        if (tmp_char2 == "0")
+        // 64kB sectors
+            CFI_array[8'h2A] = 8'h08;
+        else if (tmp_char2 == "1")
+            CFI_array[8'h2A] = 8'h09;
+
+        CFI_array[8'h2B] = 8'h00;
+        if (tmp_char2 == "1")
+        begin
+            CFI_array[8'h2C] = 8'h01;
+            CFI_array[8'h2D] = 8'h7F;
+            CFI_array[8'h2E] = 8'h00;
+            CFI_array[8'h2F] = 8'h00;
+            CFI_array[8'h30] = 8'h04;
+            CFI_array[8'h31] = 8'hFF;
+            CFI_array[8'h32] = 8'hFF;
+            CFI_array[8'h33] = 8'hFF;
+            CFI_array[8'h34] = 8'hFF;
+        end
+        else
+        begin
+            CFI_array[8'h2C] = 8'h02;
+            if (TBPARM)
+            begin
+            // 4KB physical sectors at top
+                CFI_array[8'h2D] = 8'hFD;
+                CFI_array[8'h2E] = 8'h00;
+                CFI_array[8'h2F] = 8'h00;
+                CFI_array[8'h30] = 8'h01;
+                CFI_array[8'h31] = 8'h1F;
+                CFI_array[8'h32] = 8'h01;
+                CFI_array[8'h33] = 8'h10;
+                CFI_array[8'h34] = 8'h00;
+            end
+            else
+            begin
+            // 4KB physical sectors at bottom
+                CFI_array[8'h2D] = 8'h1F;
+                CFI_array[8'h2E] = 8'h00;
+                CFI_array[8'h2F] = 8'h10;
+                CFI_array[8'h30] = 8'h00;
+                CFI_array[8'h31] = 8'hFD;
+                CFI_array[8'h32] = 8'h01;
+                CFI_array[8'h33] = 8'h00;
+                CFI_array[8'h34] = 8'h01;
+            end
+        end
+        CFI_array[8'h35] = 8'hFF;
+        CFI_array[8'h36] = 8'hFF;
+        CFI_array[8'h37] = 8'hFF;
+        CFI_array[8'h38] = 8'hFF;
+        CFI_array[8'h39] = 8'hFF;
+        CFI_array[8'h3A] = 8'hFF;
+        CFI_array[8'h3B] = 8'hFF;
+        CFI_array[8'h3C] = 8'hFF;
+        CFI_array[8'h3D] = 8'hFF;
+        CFI_array[8'h3E] = 8'hFF;
+        CFI_array[8'h3F] = 8'hFF;
+        // CFI Primary Vendor-Specific Extended Query
+        CFI_array[8'h40] = 8'h50;
+        CFI_array[8'h41] = 8'h52;
+        CFI_array[8'h42] = 8'h49;
+        CFI_array[8'h43] = 8'h31;
+        CFI_array[8'h44] = 8'h33;
+        CFI_array[8'h45] = 8'h21;
+        CFI_array[8'h46] = 8'h02;
+        CFI_array[8'h47] = 8'h01;
+        CFI_array[8'h48] = 8'h00;
+        CFI_array[8'h49] = 8'h08;
+        CFI_array[8'h4A] = 8'h00;
+        CFI_array[8'h4B] = 8'h01;
+        CFI_array[8'h4C] = 8'h00;
+        CFI_array[8'h4D] = 8'h00;
+        CFI_array[8'h4E] = 8'h00;
+        CFI_array[8'h4F] = 8'h07;
+        CFI_array[8'h50] = 8'h01;
+
+        begin
+            for(i=80;i>=0;i=i-1)
+            begin
+                CFI_tmp = CFI_array[8'h00-i+80];
+                for(j=7;j>=0;j=j-1)
+                begin
+                    CFI_array_tmp[8*i+j] = CFI_tmp[j];
+                end
+            end
+        end
+
+    end
+
+    always @(next_state_event or PoweredUp or RST or RST_out or
+            RSTNeg_in or rising_edge_RSTNeg or falling_edge_RST)
+    begin: StateTransition
+        if (PoweredUp)
+        begin
+            if ((RSTNeg_in == 1'b1) && (RST_out == 1'b1))
+                current_state = #(1000) next_state;
+            else if ((~RSTNeg_in || rising_edge_RSTNeg) && falling_edge_RST)
+            begin
+            // no state transition while RESET# low
+                current_state = RESET_STATE;
+                RST_in = 1'b1;
+                #1000 RST_in = 1'b0;
+            end
+        end
+    end
+
+    always @(posedge RST_in)
+    begin:Threset
+        RST_out = 1'b0;
+        #(35000000-200000) RST_out = 1'b1;
+    end
+
+    always @(negedge CSNeg_ipd)
+    begin:CheckCEOnPowerUP
+        if (~PoweredUp)
+            $display ("%0t=> Device is selected during Power Up",$time);
+    end
+
+    ///////////////////////////////////////////////////////////////////////////
+    //// Internal Delays
+    ///////////////////////////////////////////////////////////////////////////
+
+    always @(posedge PRGSUSP_in)
+    begin:PRGSuspend
+        PRGSUSP_out = 1'b0;
+        #tdevice_PRGSUSP PRGSUSP_out = 1'b1;
+    end
+
+    always @(posedge PPBERASE_in)
+    begin:PPBErs
+        PPBERASE_out = 1'b0;
+        #tdevice_PPBERASE PPBERASE_out = 1'b1;
+    end
+
+    always @(posedge ERSSUSP_in)
+    begin:ERSSuspend
+        ERSSUSP_out = 1'b0;
+        #tdevice_ERSSUSP ERSSUSP_out = 1'b1;
+    end
+
+    always @(posedge PASSULCK_in)
+    begin:PASSULock
+        PASSULCK_out = 1'b0;
+        #tdevice_PASSULCK PASSULCK_out = 1'b1;
+    end
+
+    always @(posedge PASSACC_in)
+    begin:PASSAcc
+        PASSACC_out = 1'b0;
+        #tdevice_PASSACC PASSACC_out = 1'b1;
+    end
+
+///////////////////////////////////////////////////////////////////////////////
+// write cycle decode
+///////////////////////////////////////////////////////////////////////////////
+    integer opcode_cnt = 0;
+    integer addr_cnt   = 0;
+    integer mode_cnt   = 0;
+    integer dummy_cnt  = 0;
+    integer data_cnt   = 0;
+    integer bit_cnt    = 0;
+
+    reg [4095:0] Data_in = 4096'b0;
+    reg [7:0] opcode;
+    reg [7:0] opcode_in;
+    reg [7:0] opcode_tmp;
+    reg [31:0] addr_bytes;
+    reg [31:0] hiaddr_bytes;
+    reg [31:0] Address_in;
+    reg [7:0] mode_bytes;
+    reg [7:0] mode_in;
+    integer Latency_code;
+    integer quad_data_in [0:1023];
+    reg [3:0] quad_nybble = 4'b0;
+    reg [3:0] Quad_slv;
+    reg [7:0] Byte_slv;
+
+   always @(rising_edge_CSNeg_ipd or falling_edge_CSNeg_ipd or
+            rising_edge_SCK_ipd or falling_edge_SCK_ipd or
+            current_state)
+   begin: Buscycle
+        integer i;
+        integer j;
+        integer k;
+        time CLK_PER;
+        time LAST_CLK;
+
+        if (current_state == RESET_STATE)
+            bus_cycle_state = STAND_BY;
+        else
+        begin
+            if (falling_edge_CSNeg_ipd)
+            begin
+                if (bus_cycle_state==STAND_BY)
+                begin
+                    Instruct = NONE;
+                    write = 1'b1;
+                    cfg_write  = 0;
+                    opcode_cnt = 0;
+                    addr_cnt   = 0;
+                    mode_cnt   = 0;
+                    dummy_cnt  = 0;
+                    data_cnt   = 0;
+                    opcode_tmp = 0;
+                    start_dlp  = 0;
+                    DOUBLE     = 1'b0;
+                    QUADRD     = 1'b0;
+                    CLK_PER    = 1'b0;
+                    LAST_CLK   = 1'b0;
+                    if (current_state == AUTOBOOT)
+                    begin
+                        bus_cycle_state = DATA_BYTES;
+                    end
+                    else
+                    begin
+                        bus_cycle_state = OPCODE_BYTE;
+                    end
+                end
+            end
+
+            if (rising_edge_SCK_ipd) // Instructions, addresses or data present
+            begin                    // at SI are latched on the rising edge of SCK
+
+                CLK_PER = $time - LAST_CLK;
+                LAST_CLK = $time;
+                if (CHECK_FREQ)
+                begin
+                    if ((CLK_PER < 20000 && Latency_code == 3) ||
+                    (CLK_PER < 12500 && Latency_code == 0) ||
+                    (CLK_PER < 11100 && Latency_code == 1) ||
+                    (CLK_PER < 9600 && Latency_code == 2))
+                    begin
+                        $display ("More wait states are required for");
+                        $display ("this clock frequency value");
+                    end
+                    if (Instruct == DDRFR || Instruct == DDRFR4 || Instruct == DDRDIOR ||
+                        Instruct == DDRDIOR4 || Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                    begin
+                       if   (CLK_PER < 12500)
+                       begin
+                           ddr80 = 1'b1;
+                       end
+                       else
+                       begin
+                           ddr80 = 1'b0;
+                       end
+                    end
+                    CHECK_FREQ = 0;
+                end
+
+                if (~CSNeg_ipd)
+                begin
+                    case (bus_cycle_state)
+                        OPCODE_BYTE:
+                        begin
+                            if ((HOLDNeg_in && ~QUAD) || QUAD)
+                            begin
+                                opcode_in[opcode_cnt] = SI_in;
+                                opcode_cnt = opcode_cnt + 1;
+                                Latency_code = Config_reg1[7:6];
+                                if (opcode_cnt == BYTE)
+                                begin
+                                    for(i=7;i>=0;i=i-1)
+                                    begin
+                                        opcode[i] = opcode_in[7-i];
+                                    end
+                                    case (opcode)
+                                        8'b00000110 : // 06h
+                                        begin
+                                            Instruct = WREN;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00000100 : // 04h
+                                        begin
+                                            Instruct = WRDI;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00000001 : // 01h
+                                        begin
+                                            Instruct = WRR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00000011 : // 03h
+                                        begin
+                                            Instruct = READ;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b00010011 : // 13h
+                                        begin
+                                            Instruct = RD4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b01001011 : // 4Bh
+                                        begin
+                                            Instruct = OTPR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b00000101 : // 05h
+                                        begin
+                                            Instruct = RDSR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00000111 : // 07h
+                                        begin
+                                            Instruct = RDSR2;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00110101 : // 35h
+                                        begin
+                                            Instruct = RDCR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b10010000 : // 90h
+                                        begin
+                                            Instruct = REMS;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b10011111 : // 9Fh
+                                        begin
+                                            Instruct = RDID;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b10101011 : // ABh
+                                        begin
+                                            Instruct = RES;
+                                            bus_cycle_state = DUMMY_BYTES;
+                                        end
+                                        8'b00001011 : // 0Bh
+                                        begin
+                                            Instruct = FSTRD;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b00001100 : // 0Ch
+                                        begin
+                                            Instruct = FSTRD4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b00001101 : // 0Dh
+                                        begin
+                                            Instruct = DDRFR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b00001110 : // 0Eh
+                                        begin
+                                            Instruct = DDRFR4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b00111011 : // 3Bh
+                                        begin
+                                            Instruct = DOR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b00111100 : // 3Ch
+                                        begin
+                                            Instruct = DOR4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b10111011 : // BBh
+                                        begin
+                                            Instruct = DIOR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b10111100 : // BCh
+                                        begin
+                                            Instruct = DIOR4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b10111101 : // BDh
+                                        begin
+                                            Instruct = DDRDIOR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b10111110 : // BEh
+                                        begin
+                                            Instruct = DDRDIOR4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b01101011 : // 6Bh
+                                        begin
+                                            Instruct = QOR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b01101100 : // 6Ch
+                                        begin
+                                            Instruct = QOR4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b11101011 : // EBh
+                                        begin
+                                            Instruct = QIOR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b11101100 : // ECh
+                                        begin
+                                            Instruct = QIOR4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b11101101 : // EDh
+                                        begin
+                                            Instruct = DDRQIOR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b11101110 : // EEh
+                                        begin
+                                            Instruct = DDRQIOR4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            CHECK_FREQ = 1'b1;
+                                        end
+                                        8'b00000010 : // 02h
+                                        begin
+                                            Instruct = PP;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b00010010 : // 12h
+                                        begin
+                                            Instruct = PP4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b00110010: // 32h
+                                        begin
+                                            Instruct = QPP;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            quad_pg = 1'b1;
+                                        end
+                                        8'b00111000: // 38h
+                                        begin
+                                            Instruct = QPP;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            quad_pg = 1'b1;
+                                        end
+                                        8'b00110100 : // 34h
+                                        begin
+                                            Instruct = QPP4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                            quad_pg = 1'b1;
+                                        end
+                                        8'b01000010 : // 42h
+                                        begin
+                                            Instruct = OTPP;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b10000101 : // 85h
+                                        begin
+                                            Instruct = PGSP;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b10001010 : // 8Ah
+                                        begin
+                                            Instruct = PGRS;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11000111 : // C7h
+                                        begin
+                                            Instruct = BE;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b01100000 : // 60h
+                                        begin
+                                            Instruct = BE;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11011000 : // D8h
+                                        begin
+                                            Instruct = SE;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b11011100 : // DCh
+                                        begin
+                                            Instruct = SE4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b01110101 : // 75h
+                                        begin
+                                            Instruct = ERSP;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b01111010 : // 7Ah
+                                        begin
+                                            Instruct = ERRS;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00010100 : // 14h
+                                        begin
+                                            Instruct = ABRD;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00010101 : // 15h
+                                        begin
+                                            Instruct = ABWR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00010110 : // 16h
+                                        begin
+                                            Instruct = BRRD;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00010111 : // 17h
+                                        begin
+                                            Instruct = BRWR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00101011 : // 2Bh
+                                        begin
+                                            Instruct = ASPRD;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00101111 : // 2Fh
+                                        begin
+                                            Instruct = ASPP;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11100000 : // E0h
+                                        begin
+                                            Instruct = DYBRD;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b11100001 : // E1h
+                                        begin
+                                            Instruct = DYBWR;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b11100010 : // E2h
+                                        begin
+                                            Instruct = PPBRD;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b11100011 : // E3h
+                                        begin
+                                            Instruct = PPBP;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b11100100 : // E4h
+                                        begin
+                                            Instruct = PPBERS;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b10100110 : // A6h
+                                        begin
+                                            Instruct = PLBWR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b10100111 : // A7h
+                                        begin
+                                            Instruct = PLBRD;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11100111 : // E7h
+                                        begin
+                                            Instruct = PASSRD;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11101000 : // E8h
+                                        begin
+                                            Instruct = PASSP;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11101001 : // E9h
+                                        begin
+                                            Instruct = PASSU;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11110000 : // F0h
+                                        begin
+                                            Instruct = RESET;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00110000 : // 30h
+                                        begin
+                                            Instruct = CLSR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b00100000 : // 20h
+                                        begin
+                                            Instruct = P4E;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b00100001 : // 21h
+                                        begin
+                                            Instruct = P4E4;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                        8'b01000001 : // 41h
+                                        begin
+                                            Instruct = DLPRD;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b01000011 : // 43h
+                                        begin
+                                            Instruct = PNVDLR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b01001010 : // 4Ah
+                                        begin
+                                            Instruct = WVDLR;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b10111001 : // B9h
+                                        begin
+                                            Instruct = BRAC;
+                                            bus_cycle_state = DATA_BYTES;
+                                        end
+                                        8'b11111111 : // FFh
+                                        begin
+                                            Instruct = MBR;
+                                            bus_cycle_state = MODE_BYTE;
+                                        end
+                                        8'b00011000 : // 18h
+                                        begin
+                                            Instruct = ECCRD;
+                                            bus_cycle_state = ADDRESS_BYTES;
+                                        end
+                                    endcase
+                                end
+                            end
+                        end //end of OPCODE BYTE
+
+                        ADDRESS_BYTES :
+                        begin
+                            if ((Instruct == DDRFR)  || (Instruct == DDRFR4)  ||
+                                (Instruct == DDRDIOR) || (Instruct == DDRDIOR4) ||
+                                (Instruct == DDRQIOR) || (Instruct == DDRQIOR4))
+                                DOUBLE = 1'b1;
+                            else
+                                DOUBLE = 1'b0;
+                            if ((Instruct == QOR)  || (Instruct == QOR4)  ||
+                                (Instruct == QIOR) || (Instruct == QIOR4) ||
+                                (Instruct == DDRQIOR) || (Instruct == DDRQIOR4))
+                                QUADRD = 1'b1;
+                            else
+                                QUADRD = 1'b0;
+                            if (DOUBLE == 1'b0)
+                            begin
+                                if (((((Instruct == FSTRD) && (~EXTADD)) ||
+                                ((Instruct == DOR)  && (~EXTADD)) ||
+                                (Instruct == OTPR)) &&
+                                ((HOLDNeg_in && ~QUAD) || QUAD)) ||
+                                ((Instruct == QOR) && QUAD && (~EXTADD)))
+                                begin
+                                //Instruction + 3 Bytes Address + Dummy Byte
+                                    Address_in[addr_cnt] = SI_in;
+                                    addr_cnt = addr_cnt + 1;
+                                    if (addr_cnt == 3*BYTE)
+                                    begin
+                                        for(i=23;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[23-i] = Address_in[i];
+                                        end
+                                        addr_bytes[31:25] = 7'b0000000;
+                                        addr_bytes[24] = Bank_Addr_reg[0];
+                                        Address = addr_bytes ;
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (Instruct==FSTRD || Instruct==DOR ||
+                                            Instruct == QOR)
+                                        begin
+                                            if (Latency_code == 3)
+                                                bus_cycle_state = DATA_BYTES;
+                                            else
+                                                bus_cycle_state = DUMMY_BYTES;
+                                        end
+                                        else
+                                            bus_cycle_state = DUMMY_BYTES;
+                                    end
+                                end
+                                else if (Instruct==ECCRD)
+                                begin
+                                //Instruction + 4 Bytes Address + Dummy Byte
+                                    Address_in[addr_cnt] = SI_in;
+                                    addr_cnt = addr_cnt + 1;
+                                    if (addr_cnt == 4*BYTE)
+                                    begin
+                                        for(i=31;i>=0;i=i-1)
+                                        begin
+                                            hiaddr_bytes[31-i] = Address_in[i];
+                                        end
+                                        //High order address bits are ignored
+                                        Address = {hiaddr_bytes[31:4],4'b0000};
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        bus_cycle_state = DUMMY_BYTES;
+                                    end
+                                end
+                                else if ((((Instruct==FSTRD4) ||
+                                        (Instruct==DOR4) ||
+                                        ((Instruct==FSTRD) && EXTADD) ||
+                                        ((Instruct==DOR) && EXTADD)) &&
+                                        ((HOLDNeg_in && ~QUAD) || QUAD)) ||
+                                        ((Instruct==QOR4) && QUAD) ||
+                                        ((Instruct==QOR) && QUAD && EXTADD))
+                                begin
+                                //Instruction + 4 Bytes Address + Dummy Byte
+                                    Address_in[addr_cnt] = SI_in;
+                                    addr_cnt = addr_cnt + 1;
+                                    if (addr_cnt == 4*BYTE)
+                                    begin
+                                        for(i=31;i>=0;i=i-1)
+                                        begin
+                                            hiaddr_bytes[31-i] = Address_in[i];
+                                        end
+                                        //High order address bits are ignored
+                                        Address = {7'b0000000,hiaddr_bytes[24:0]};
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (Latency_code == 3)
+                                            bus_cycle_state = DATA_BYTES;
+                                        else
+                                        begin
+                                            bus_cycle_state = DUMMY_BYTES;
+                                        end
+                                    end
+                                end
+                                else if ((Instruct==DIOR) && (~EXTADD) &&
+                                            ((HOLDNeg_in && ~QUAD) || QUAD))
+                                begin
+                                //DUAL I/O High Performance Read(3 Bytes Addr)
+                                    Address_in[2*addr_cnt]     = SO_in;
+                                    Address_in[2*addr_cnt + 1] = SI_in;
+                                    read_cnt = 0;
+                                    addr_cnt = addr_cnt + 1;
+                                    if (addr_cnt == 3*BYTE/2)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=23;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[23-i]=Address_in[i];
+                                        end
+                                        addr_bytes[31:25] = 7'b0000000;
+                                        addr_bytes[24] = Bank_Addr_reg[0];
+                                        Address = addr_bytes;
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (EHP)
+                                            bus_cycle_state = MODE_BYTE;
+                                        else
+                                            bus_cycle_state = DUMMY_BYTES;
+                                    end
+                                end
+                                else if (((Instruct==DIOR4) ||
+                                        ((Instruct==DIOR) && EXTADD)) &&
+                                        ((HOLDNeg_in && ~QUAD) || QUAD))
+                                begin //DUAL I/O High Performance Read(4Bytes Addr)
+                                    Address_in[2*addr_cnt]     = SO_in;
+                                    Address_in[2*addr_cnt + 1] = SI_in;
+                                    read_cnt = 0;
+                                    addr_cnt = addr_cnt + 1;
+                                    if (addr_cnt == 4*BYTE/2)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=31;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[31-i] = Address_in[i];
+                                        end
+                                        Address = {7'b0000000,addr_bytes[24:0]};
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (EHP)
+                                            bus_cycle_state = MODE_BYTE;
+                                        else
+                                            bus_cycle_state = DUMMY_BYTES;
+                                    end
+                                end
+                                else if ((Instruct == QIOR) && (~EXTADD))
+                                begin
+                                //QUAD I/O High Performance Read (3Bytes Address)
+                                    if (QUAD)
+                                    begin
+                                        Address_in[4*addr_cnt] = HOLDNeg_in;
+                                        Address_in[4*addr_cnt+1] = WPNeg_in;
+                                        Address_in[4*addr_cnt+2] = SO_in;
+                                        Address_in[4*addr_cnt+3] = SI_in;
+                                        read_cnt = 0;
+                                        addr_cnt = addr_cnt + 1;
+                                        if (addr_cnt == 3*BYTE/4)
+                                        begin
+                                            addr_cnt = 0;
+                                            for(i=23;i>=0;i=i-1)
+                                            begin
+                                                addr_bytes[23-i] = Address_in[i];
+                                            end
+                                            addr_bytes[31:25] = 7'b0000000;
+                                            addr_bytes[24] = Bank_Addr_reg[0];
+
+                                            Address = addr_bytes;
+                                            change_addr = 1'b1;
+                                            #1 change_addr = 1'b0;
+                                            bus_cycle_state = MODE_BYTE;
+                                        end
+                                    end
+                                    else
+                                        bus_cycle_state = STAND_BY;
+                                end
+                                else if ((Instruct==QIOR4) || ((Instruct==QIOR)
+                                        && EXTADD))
+                                begin
+                                    //QUAD I/O High Performance Read (4Bytes Addr)
+                                    if (QUAD)
+                                    begin
+                                        Address_in[4*addr_cnt] = HOLDNeg_in;
+                                        Address_in[4*addr_cnt+1] = WPNeg_in;
+                                        Address_in[4*addr_cnt+2] = SO_in;
+                                        Address_in[4*addr_cnt+3] = SI_in;
+                                        read_cnt = 0;
+                                        addr_cnt = addr_cnt +1;
+                                        if (addr_cnt == 4*BYTE/4)
+                                        begin
+                                            addr_cnt =0;
+                                            for(i=31;i>=0;i=i-1)
+                                            begin
+                                                hiaddr_bytes[31-i] = Address_in[i];
+                                            end
+                                            //High order address bits are ignored
+                                            Address = {7'b0000000,hiaddr_bytes[24:0]};
+                                            change_addr = 1'b1;
+                                            #1 change_addr = 1'b0;
+                                            bus_cycle_state = MODE_BYTE;
+                                        end
+                                    end
+                                    else
+                                        bus_cycle_state = STAND_BY;
+                                end
+                                else if ((((Instruct==RD4) || (Instruct==PP4) ||
+                                        (Instruct==SE4) ||(Instruct==PPBRD) ||
+                                        (Instruct==DYBRD) ||(Instruct==DYBWR) ||
+                                        (Instruct==PPBP) || (Instruct==P4E4) ||
+                                        ((Instruct==READ) && EXTADD) ||
+                                        ((Instruct==PP) && EXTADD) ||
+                                        ((Instruct==P4E) && EXTADD) ||
+                                        ((Instruct==SE) && EXTADD)) &&
+                                        ((HOLDNeg_in && ~QUAD) || QUAD)) ||
+                                        (QUAD && (Instruct==QPP4 ||
+                                        ((Instruct==QPP) && EXTADD))))
+                                begin
+                                    Address_in[addr_cnt] = SI_in;
+                                    addr_cnt = addr_cnt + 1;
+                                    if (addr_cnt == 4*BYTE)
+                                    begin
+                                        for(i=31;i>=0;i=i-1)
+                                        begin
+                                            hiaddr_bytes[31-i] = Address_in[i];
+                                        end
+                                        //High order address bits are ignored
+                                        Address = {7'b0000000,hiaddr_bytes[24:0]};
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        bus_cycle_state = DATA_BYTES;
+                                    end
+                                end
+                                else if (((HOLDNeg_in && ~QUAD) || QUAD) &&
+                                        (~EXTADD))
+                                begin
+                                    Address_in[addr_cnt] = SI_in;
+                                    addr_cnt = addr_cnt + 1;
+                                    if (addr_cnt == 3*BYTE)
+                                    begin
+                                        for(i=23;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[23-i] = Address_in[i];
+                                        end
+                                        addr_bytes[31:25] = 7'b0000000;
+                                        addr_bytes[24] = Bank_Addr_reg[0];
+                                        Address = addr_bytes;
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        bus_cycle_state = DATA_BYTES;
+                                    end
+                                end
+                            end
+                            else
+                            begin
+                                if ((Instruct==DDRFR) && (~EXTADD))
+                                //Fast DDR Read Mode
+                                begin
+                                    Address_in[addr_cnt] = SI_in;
+                                    if ((addr_cnt/2) <= 16)
+                                    begin
+                                        opcode_tmp[addr_cnt/2] = SI_in;
+                                    end
+                                    addr_cnt = addr_cnt + 1;
+                                    read_cnt = 0;
+                                end
+                                else if ((Instruct==DDRFR4) ||
+                                        ((Instruct==DDRFR) && EXTADD))
+                                begin
+                                    Address_in[addr_cnt] = SI_in;
+                                    if ((addr_cnt/2) <= 16)
+                                    begin
+                                        opcode_tmp[addr_cnt/2] = SI_in;
+                                    end
+                                    addr_cnt = addr_cnt + 1;
+                                    read_cnt = 0;
+                                end
+                                else if ((Instruct == DDRDIOR) && (~EXTADD))
+                                begin    //Dual I/O DDR Read Mode
+                                    Address_in[2*addr_cnt] = SO_in;
+                                    Address_in[2*addr_cnt+1]= SI_in;
+                                    if ((addr_cnt/2) <= 16)
+                                    begin
+                                        opcode_tmp[addr_cnt/2] = SI_in;
+                                    end
+                                    addr_cnt = addr_cnt + 1;
+                                    read_cnt = 0;
+                                end
+                                else if ((Instruct==DDRDIOR4) ||
+                                        ((Instruct==DDRDIOR) && EXTADD))
+                                begin    //Dual I/O DDR Read Mode
+                                    Address_in[2*addr_cnt]   = SO_in;
+                                    Address_in[2*addr_cnt+1] = SI_in;
+                                    if ((addr_cnt/2) <= 16)
+                                    begin
+                                        opcode_tmp[addr_cnt/2] = SI_in;
+                                    end
+                                    addr_cnt = addr_cnt + 1;
+                                    read_cnt = 0;
+                                end
+                                else if ((Instruct==DDRQIOR) && (~EXTADD) && QUAD)
+                                begin    //Quad I/O DDR Read Mode
+                                    Address_in[4*addr_cnt] = HOLDNeg_in;
+                                    Address_in[4*addr_cnt+1] = WPNeg_in;
+                                    Address_in[4*addr_cnt+2] = SO_in;
+                                    Address_in[4*addr_cnt+3] = SI_in;
+                                    opcode_tmp[addr_cnt/2] = SI_in;
+                                    addr_cnt = addr_cnt +1;
+                                    read_cnt = 0;
+                                end
+                                else if (QUAD && ((Instruct==DDRQIOR4) ||
+                                        ((Instruct==DDRQIOR) && EXTADD)))
+                                begin
+                                    Address_in[4*addr_cnt] = HOLDNeg_in;
+                                    Address_in[4*addr_cnt+1] = WPNeg_in;
+                                    Address_in[4*addr_cnt+2] = SO_in;
+                                    Address_in[4*addr_cnt+3] = SI_in;
+                                    opcode_tmp[addr_cnt/2] = SI_in;
+                                    addr_cnt = addr_cnt +1;
+                                    read_cnt = 0;
+                                end
+                            end
+                        end
+
+                        MODE_BYTE :
+                        begin
+                            if (((Instruct==DIOR) || (Instruct == DIOR4))
+                                && ((HOLDNeg_in && ~QUAD) || QUAD))
+                            begin
+                                mode_in[2*mode_cnt] = SO_in;
+                                mode_in[2*mode_cnt+1] = SI_in;
+                                mode_cnt = mode_cnt + 1;
+                                if (mode_cnt == BYTE/2)
+                                begin
+                                    mode_cnt = 0;
+                                    for(i=7;i>=0;i=i-1)
+                                    begin
+                                        mode_bytes[i] = mode_in[7-i];
+                                    end
+                                    if (Latency_code == 0 || Latency_code == 3)
+                                        bus_cycle_state = DATA_BYTES;
+                                    else
+                                        bus_cycle_state = DUMMY_BYTES;
+                                end
+                            end
+                            else if (((Instruct==QIOR) || (Instruct == QIOR4))
+                                    && QUAD)
+                            begin
+                                mode_in[4*mode_cnt] = HOLDNeg_in;
+                                mode_in[4*mode_cnt+1] = WPNeg_in;
+                                mode_in[4*mode_cnt+2] = SO_in;
+                                mode_in[4*mode_cnt+3] = SI_in;
+                                mode_cnt = mode_cnt + 1;
+                                if (mode_cnt == BYTE/4)
+                                begin
+                                    mode_cnt = 0;
+                                    for(i=7;i>=0;i=i-1)
+                                    begin
+                                        mode_bytes[i] = mode_in[7-i];
+                                    end
+                                    bus_cycle_state = DUMMY_BYTES;
+                                end
+                            end
+                            else if ((Instruct == DDRFR) || (Instruct == DDRFR4))
+                                mode_in[2*mode_cnt] = SI_in;
+                            else if ((Instruct==DDRDIOR) || (Instruct==DDRDIOR4))
+                            begin
+                                mode_in[4*mode_cnt]   = SO_in;
+                                mode_in[4*mode_cnt+1] = SI_in;
+                            end
+                            else if (((Instruct==DDRQIOR) || (Instruct == DDRQIOR4))
+                                    && QUAD)
+                            begin
+                                mode_in[0] = HOLDNeg_in;
+                                mode_in[1] = WPNeg_in;
+                                mode_in[2] = SO_in;
+                                mode_in[3] = SI_in;
+                            end
+                            dummy_cnt = 0;
+                        end
+
+                        DUMMY_BYTES :
+                        begin
+                            Return_DLP(Instruct, EHP, Latency_code,
+                                       dummy_cnt, start_dlp);
+                            if (DOUBLE == 1'b1 && (hold_mode==0) &&
+                               (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                read_out = 1'b1;
+                                #10 read_out = 1'b0;
+                            end
+                            if ((((Instruct==FSTRD) || (Instruct==FSTRD4) ||
+                            (Instruct==DOR)  || (Instruct==DOR4)  ||
+                            (Instruct==OTPR)) &&
+                            ((HOLDNeg_in && ~QUAD) || QUAD)) ||
+                            (((Instruct==QOR)||(Instruct==QOR4)) && QUAD))
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+                                if (dummy_cnt == BYTE)
+                                begin
+                                    bus_cycle_state = DATA_BYTES;
+                                end
+                            end
+
+                            else if ((Instruct==DDRFR) || (Instruct==DDRFR4))
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+                                if (EHP)
+                                begin
+                                    if (((Latency_code == 3) && (dummy_cnt==1)) ||
+                                        ((Latency_code == 0) && (dummy_cnt==2)) ||
+                                        ((Latency_code == 1) && (dummy_cnt==4)) ||
+                                        ((Latency_code == 2) && (dummy_cnt==5)))
+                                    begin
+                                        bus_cycle_state = DATA_BYTES;
+                                    end
+                                end
+                                else
+                                begin
+                                    if (((Latency_code == 3) && (dummy_cnt==4)) ||
+                                        ((Latency_code == 0) && (dummy_cnt==5)) ||
+                                        ((Latency_code == 1) && (dummy_cnt==6)) ||
+                                        ((Latency_code == 2) && (dummy_cnt==7)))
+                                    begin
+                                        bus_cycle_state = DATA_BYTES;
+                                    end
+                                end
+                            end
+                            else if (Instruct==RES)
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+                                if (dummy_cnt == 3*BYTE)
+                                bus_cycle_state = DATA_BYTES;
+                            end
+                            else if (Instruct==ECCRD)
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+                                if (dummy_cnt == BYTE)
+                                bus_cycle_state = DATA_BYTES;
+                            end
+                            else if ((Instruct == DIOR) || (Instruct == DIOR4)
+                                    && ((HOLDNeg_in && ~QUAD) || QUAD))
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+                                if (EHP)
+                                begin
+                                    if (((Latency_code == 1) && (dummy_cnt==1)) ||
+                                        ((Latency_code == 2) && (dummy_cnt==2)))
+                                        bus_cycle_state = DATA_BYTES;
+                                end
+                                else
+                                begin
+                                    if (((Latency_code == 3) && (dummy_cnt==4)) ||
+                                        ((Latency_code == 0) && (dummy_cnt==4)) ||
+                                        ((Latency_code == 1) && (dummy_cnt==5)) ||
+                                        ((Latency_code == 2) && (dummy_cnt==6)))
+                                        bus_cycle_state = DATA_BYTES;
+                                end
+                            end
+                            else if ((Instruct==DDRDIOR) || (Instruct==DDRDIOR4))
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+                                if (EHP)
+                                begin
+                                    if (((Latency_code == 3) && (dummy_cnt==2)) ||
+                                        ((Latency_code == 0) && (dummy_cnt==4)) ||
+                                        ((Latency_code == 1) && (dummy_cnt==5)) ||
+                                        ((Latency_code == 2) && (dummy_cnt==6)))
+                                    begin
+                                        bus_cycle_state = DATA_BYTES;
+                                    end
+                                end
+                                else
+                                begin
+                                    if (((Latency_code == 3) && (dummy_cnt==4)) ||
+                                        ((Latency_code == 0) && (dummy_cnt==6)) ||
+                                        ((Latency_code == 1) && (dummy_cnt==7)) ||
+                                        ((Latency_code == 2) && (dummy_cnt==8)))
+                                    begin
+                                        bus_cycle_state = DATA_BYTES;
+                                    end
+                                end
+                            end
+                            else if (((Instruct == QIOR) || (Instruct == QIOR4))
+                                    && QUAD)
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+                                if (((Latency_code == 3) && (dummy_cnt==1)) ||
+                                    ((Latency_code == 0) && (dummy_cnt==4)) ||
+                                    ((Latency_code == 1) && (dummy_cnt==4)) ||
+                                    ((Latency_code == 2) && (dummy_cnt==5)))
+                                begin
+                                    bus_cycle_state = DATA_BYTES;
+                                end
+                            end
+                            else if (((Instruct==DDRQIOR) || (Instruct==DDRQIOR4))
+                                    && QUAD)
+                            begin
+                                dummy_cnt = dummy_cnt + 1;
+
+                                if (((Latency_code == 3) && (dummy_cnt==3)) ||
+                                    ((Latency_code == 0) && (dummy_cnt==6)) ||
+                                    ((Latency_code == 1) && (dummy_cnt==7)) ||
+                                    ((Latency_code == 2) && (dummy_cnt==8)))
+                                begin
+                                    bus_cycle_state = DATA_BYTES;
+                                end
+                            end
+                        end
+
+                        DATA_BYTES :
+                        begin
+
+                            if (DOUBLE == 1'b1 && (hold_mode==0))
+                            begin
+                                read_out = 1'b1;
+                                #10 read_out = 1'b0;
+                            end
+
+                            if ((QUAD) && ((Instruct==QPP) || (Instruct == QPP4)))
+                            begin
+                                quad_nybble = {HOLDNeg_in, WPNeg_in, SO_in, SI_in};
+                                if (data_cnt > ((PageSize+1)*2-1))
+                                begin
+                                //In case of quad mode and QPP,
+                                //if more than 512 bytes are sent to the device
+                                    for(i=0;i<=(PageSize*2-1);i=i+1)
+                                    begin
+                                        quad_data_in[i] = quad_data_in[i+1];
+                                    end
+                                    quad_data_in[(PageSize+1)*2-1] = quad_nybble;
+                                    data_cnt = data_cnt +1;
+                                end
+                                else
+                                begin
+                                    if (quad_nybble !== 4'bZZZZ)
+                                    begin
+                                        quad_data_in[data_cnt] = quad_nybble;
+                                    end
+                                    data_cnt = data_cnt +1;
+                                end
+                            end
+                            else if ((~QUADRD) && ((HOLDNeg_in && ~QUAD) || QUAD))
+                            begin
+                                if (data_cnt > ((PageSize+1)*8-1))
+                                begin
+                                //In case of serial mode and PP,
+                                //if more than PageSize are sent to the device
+                                //previously latched data are discarded and last
+                                //256/512 data bytes are guaranteed to be programmed
+                                //correctly within the same page.
+                                    if (bit_cnt == 0)
+                                    begin
+                                        for(i=0;i<=(PageSize*BYTE-1);i=i+1)
+                                        begin
+                                            Data_in[i] = Data_in[i+8];
+                                        end
+                                    end
+                                    Data_in[PageSize*BYTE + bit_cnt] = SI_in;
+                                    bit_cnt = bit_cnt + 1;
+                                    if (bit_cnt == 8)
+                                    begin
+                                        bit_cnt = 0;
+                                    end
+                                    data_cnt = data_cnt + 1;
+                                end
+                                else
+                                begin
+                                    Data_in[data_cnt] = SI_in;
+                                    data_cnt = data_cnt + 1;
+                                    bit_cnt = 0;
+                                end
+                            end
+                        end
+                    endcase
+                end
+            end
+
+            if (falling_edge_SCK_ipd)
+            begin
+                if (~CSNeg_ipd)
+                begin
+                    case (bus_cycle_state)
+                        ADDRESS_BYTES :
+                        begin
+                            if (DOUBLE == 1'b1)
+                            begin
+                                if ((Instruct==DDRFR) && (~EXTADD))
+                                //Fast DDR Read Mode
+                                begin
+                                    Address_in[addr_cnt] = SI_in;
+                                    if (addr_cnt != 0)
+                                    begin
+                                        addr_cnt = addr_cnt + 1;
+                                    end
+                                    read_cnt = 0;
+                                    if (addr_cnt == 3*BYTE)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=23;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[23-i] = Address_in[i];
+                                        end
+                                        addr_bytes[31:25] = 7'b0000000;
+                                        addr_bytes[24] = Bank_Addr_reg[0];
+                                        Address = addr_bytes;
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (EHP)
+                                            bus_cycle_state = MODE_BYTE;
+                                        else
+                                            bus_cycle_state = DUMMY_BYTES;
+                                    end
+                                end
+                                else if ((Instruct==DDRFR4) ||
+                                        ((Instruct==DDRFR) && EXTADD))
+                                begin
+                                    Address_in[addr_cnt] = SI_in;
+                                    if (addr_cnt != 0)
+                                    begin
+                                        addr_cnt = addr_cnt + 1;
+                                    end
+                                    read_cnt = 0;
+                                    if (addr_cnt == 4*BYTE)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=31;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[31-i] = Address_in[i];
+                                        end
+                                        Address = {7'b0000000,addr_bytes[24:0]};
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (EHP)
+                                            bus_cycle_state = MODE_BYTE;
+                                        else
+                                        begin
+                                            bus_cycle_state = DUMMY_BYTES;
+                                            if (DOUBLE == 1'b1 && (hold_mode==0)
+                                            && VDLR_reg != 8'b00000000)
+                                            begin
+                                                read_out = 1'b1;
+                                                #10 read_out = 1'b0;
+                                            end
+                                        end
+                                    end
+                                end
+                                else if ((Instruct == DDRDIOR) && (~EXTADD))
+                                begin    //Dual I/O DDR Read Mode
+                                    Address_in[2*addr_cnt] = SO_in;
+                                    Address_in[2*addr_cnt+1]= SI_in;
+                                    if (addr_cnt != 0)
+                                    begin
+                                        addr_cnt = addr_cnt + 1;
+                                    end
+                                    read_cnt = 0;
+                                    if (addr_cnt == 3*BYTE/2)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=23;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[23-i] = Address_in[i];
+                                        end
+                                        addr_bytes[31:25] = 7'b0000000;
+                                        addr_bytes[24] = Bank_Addr_reg[0];
+                                        Address = addr_bytes;
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (EHP)
+                                            bus_cycle_state = MODE_BYTE;
+                                        else
+                                            bus_cycle_state = DUMMY_BYTES;
+                                    end
+                                end
+                                else if ((Instruct==DDRDIOR4) ||
+                                        ((Instruct==DDRDIOR) && EXTADD))
+                                begin    //Dual I/O DDR Read Mode
+                                    Address_in[2*addr_cnt]   = SO_in;
+                                    Address_in[2*addr_cnt+1] = SI_in;
+                                    if (addr_cnt != 0)
+                                    begin
+                                        addr_cnt = addr_cnt + 1;
+                                    end
+                                    read_cnt = 0;
+                                    if (addr_cnt == 4*BYTE/2)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=31;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[31-i] = Address_in[i];
+                                        end
+                                        Address = {7'b0000000,addr_bytes[24:0]};
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        if (EHP)
+                                            bus_cycle_state = MODE_BYTE;
+                                        else
+                                        begin
+                                            bus_cycle_state = DUMMY_BYTES;
+                                            if (DOUBLE == 1'b1 && (hold_mode==0)
+                                            && VDLR_reg != 8'b00000000)
+                                            begin
+                                                read_out = 1'b1;
+                                                #10 read_out = 1'b0;
+                                            end
+                                        end
+                                    end
+                                end
+                                else if ((Instruct==DDRQIOR) && (~EXTADD) && QUAD)
+                                begin    //Quad I/O DDR Read Mode
+                                    Address_in[4*addr_cnt] = HOLDNeg_in;
+                                    Address_in[4*addr_cnt+1] = WPNeg_in;
+                                    Address_in[4*addr_cnt+2] = SO_in;
+                                    Address_in[4*addr_cnt+3] = SI_in;
+                                    if (addr_cnt != 0)
+                                    begin
+                                        addr_cnt = addr_cnt + 1;
+                                    end
+                                    read_cnt = 0;
+                                    if (addr_cnt == 3*BYTE/4)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=23;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[23-i] = Address_in[i];
+                                        end
+                                        addr_bytes[31:25] = 7'b0000000;
+                                        addr_bytes[24] = Bank_Addr_reg[0];
+                                        Address = addr_bytes;
+                                        change_addr = 1'b1;
+                                    #1 change_addr = 1'b0;
+                                        bus_cycle_state = MODE_BYTE;
+                                    end
+                                end
+                                else if (QUAD && ((Instruct==DDRQIOR4) ||
+                                        ((Instruct==DDRQIOR) && EXTADD)))
+                                begin
+                                    Address_in[4*addr_cnt] = HOLDNeg_in;
+                                    Address_in[4*addr_cnt+1] = WPNeg_in;
+                                    Address_in[4*addr_cnt+2] = SO_in;
+                                    Address_in[4*addr_cnt+3] = SI_in;
+                                    if (addr_cnt != 0)
+                                    begin
+                                        addr_cnt = addr_cnt + 1;
+                                    end
+                                    read_cnt = 0;
+                                    if (addr_cnt == 4*BYTE/4)
+                                    begin
+                                        addr_cnt = 0;
+                                        for(i=31;i>=0;i=i-1)
+                                        begin
+                                            addr_bytes[31-i] = Address_in[i];
+                                        end
+                                        Address = {7'b0000000,addr_bytes[24:0]};
+                                        change_addr = 1'b1;
+                                        #1 change_addr = 1'b0;
+                                        bus_cycle_state = MODE_BYTE;
+                                    end
+                                end
+                            end
+                        end
+
+                        MODE_BYTE :
+                        begin
+                            if ((Instruct == DDRFR) || (Instruct == DDRFR4))
+                            begin
+                                mode_in[2*mode_cnt+1] = SI_in;
+                                mode_cnt = mode_cnt + 1;
+                                if (mode_cnt == BYTE/2)
+                                begin
+                                    mode_cnt = 0;
+                                    for(i=7;i>=0;i=i-1)
+                                    begin
+                                        mode_bytes[i] = mode_in[7-i];
+                                    end
+                                    bus_cycle_state = DUMMY_BYTES;
+                                    Return_DLP(Instruct, EHP, Latency_code,
+                                               dummy_cnt, start_dlp);
+                                    if (DOUBLE == 1'b1 && (hold_mode==0) &&
+                                       (VDLR_reg != 8'b00000000) && start_dlp)
+                                    begin
+                                        read_out = 1'b1;
+                                        #10 read_out = 1'b0;
+                                    end
+                                end
+                            end
+                            else if ((Instruct==DDRDIOR) || (Instruct==DDRDIOR4))
+                            begin
+                                mode_in[4*mode_cnt+2] = SO_in;
+                                mode_in[4*mode_cnt+3] = SI_in;
+                                mode_cnt = mode_cnt + 1;
+                                if (mode_cnt == BYTE/4)
+                                begin
+                                    mode_cnt = 0;
+                                    for(i=7;i>=0;i=i-1)
+                                    begin
+                                        mode_bytes[i] = mode_in[7-i];
+                                    end
+                                    bus_cycle_state = DUMMY_BYTES;
+                                    Return_DLP(Instruct, EHP, Latency_code,
+                                               dummy_cnt, start_dlp);
+                                    if (DOUBLE == 1'b1 && (hold_mode==0) &&
+                                       (VDLR_reg != 8'b00000000) && start_dlp)
+                                    begin
+                                        read_out = 1'b1;
+                                        #10 read_out = 1'b0;
+                                    end
+                                end
+                            end
+                            else if ((Instruct==DDRQIOR) || (Instruct==DDRQIOR4))
+                            begin
+                                mode_in[4] = HOLDNeg_in;
+                                mode_in[5] = WPNeg_in;
+                                mode_in[6] = SO_in;
+                                mode_in[7] = SI_in;
+                                for(i=7;i>=0;i=i-1)
+                                begin
+                                    mode_bytes[i] = mode_in[7-i];
+                                end
+                                bus_cycle_state = DUMMY_BYTES;
+                                Return_DLP(Instruct, EHP, Latency_code,
+                                               dummy_cnt, start_dlp);
+                                if (DOUBLE == 1'b1 && (hold_mode==0) &&
+                                    (VDLR_reg != 8'b00000000) && start_dlp)
+                                begin
+
+                                    read_out = 1'b1;
+                                    #10 read_out = 1'b0;
+                                end
+                            end
+                        end
+
+                        DATA_BYTES:
+                        begin
+                            if (hold_mode==0)
+                            begin
+                                if (DOUBLE == 1'b1 )
+                                begin
+                                    read_out = 1'b1;
+                                    #10 read_out = 1'b0;
+
+                                end
+                                else
+                                begin
+                                    if ((Instruct==READ) || (Instruct==RD4)   ||
+                                        (Instruct==FSTRD)|| (Instruct==FSTRD4)||
+                                        (Instruct==RDSR) || (Instruct==RDSR2) ||
+                                        (Instruct==RDCR) || (Instruct==OTPR)  ||
+                                        (Instruct==DOR) || (Instruct==DOR4) ||
+                                        (Instruct==DIOR)|| (Instruct==DIOR4)||
+                                        (Instruct==ABRD) || (Instruct==BRRD)  ||
+                                        (Instruct==ASPRD)|| (Instruct==DYBRD) ||
+                                        (Instruct==PPBRD)|| (Instruct == ECCRD) ||
+                                        (Instruct==PASSRD)|| (Instruct==RDID)||
+                                        (Instruct==RES) || (Instruct==REMS)  ||
+                                        (Instruct==PLBRD)|| (Instruct==DLPRD) ||
+                                        (current_state == AUTOBOOT &&
+                                        start_delay == 0) ||
+                                        (((Instruct==QOR) || (Instruct==QIOR) ||
+                                        (Instruct==QOR4) ||
+                                        (Instruct==QIOR4)) && QUAD))
+                                    begin
+                                        read_out = 1'b1;
+                                        #10 read_out = 1'b0;
+                                    end
+                                end
+                            end
+                        end
+
+                        DUMMY_BYTES:
+                        begin
+                            if (hold_mode==0)
+                            begin
+                                Return_DLP(Instruct, EHP, Latency_code,
+                                           dummy_cnt, start_dlp);
+
+                                if (DOUBLE == 1'b1 && VDLR_reg != 8'b00000000 &&
+                                    start_dlp)
+                                begin
+                                    read_out = 1'b1;
+                                    #10 read_out = 1'b0;
+                                end
+                            end
+                        end
+
+                    endcase
+                end
+            end
+
+            if (rising_edge_CSNeg_ipd)
+            begin
+                if (bus_cycle_state != DATA_BYTES)
+                begin
+                    if (bus_cycle_state == ADDRESS_BYTES && opcode_tmp == 8'hFF)
+                    begin
+                        Instruct = MBR;
+                    end
+                    bus_cycle_state = STAND_BY;
+                end
+                else
+                begin
+                    if (bus_cycle_state == DATA_BYTES)
+                    begin
+                        if (((mode_bytes[7:4] == 4'b1010) &&
+                            (Instruct==DIOR || Instruct==DIOR4 ||
+                            Instruct==QIOR || Instruct==QIOR4)) ||
+                            ((mode_bytes[7:4] == ~mode_bytes[3:0]) &&
+                            (Instruct == DDRFR  || Instruct == DDRFR4  ||
+                            Instruct == DDRDIOR || Instruct == DDRDIOR4 ||
+                            Instruct == DDRQIOR || Instruct == DDRQIOR4)))
+                            bus_cycle_state = ADDRESS_BYTES;
+                        else
+                            bus_cycle_state = STAND_BY;
+
+                        case (Instruct)
+                            WREN,
+                            WRDI,
+                            BE,
+                            SE,
+                            SE4,
+                            P4E,
+                            P4E4,
+                            CLSR,
+                            BRAC,
+                            RESET,
+                            PPBERS,
+                            PPBP,
+                            PLBWR,
+                            PGSP,
+                            PGRS,
+                            ERSP,
+                            ERRS:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 0)
+                                        write = 1'b0;
+                                end
+                            end
+
+                            WRR:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 8)
+                                    //If CS# is driven high after eight
+                                    //cycle,only the Status Register is
+                                    //written to.
+                                    begin
+                                        write = 1'b0;
+                                        if (BAR_ACC == 0)
+                                        begin
+                                            for(i=0;i<=7;i=i+1)
+                                            begin
+                                                Status_reg1_in[i]=
+                                                Data_in[7-i];
+                                            end
+                                        end
+                                        else
+                                        begin
+                                            if (P_ERR == 0 && E_ERR == 0)
+                                            begin
+                                                for(i=0;i<=7;i=i+1)
+                                                begin
+                                                    Bank_Addr_reg_in[i]=
+                                                    Data_in[7-i];
+                                                end
+                                            end
+                                        end
+                                    end
+                                    else if (data_cnt == 16)
+                                    //After the 16th cycle both the
+                                    //Status and Configuration Registers
+                                    //are written to.
+                                    begin
+                                        write = 1'b0;
+                                        if (BAR_ACC == 0)
+                                        begin
+                                            cfg_write = 1'b1;
+                                            for(i=0;i<=7;i=i+1)
+                                            begin
+                                                Status_reg1_in[i]=
+                                                Data_in[7-i];
+                                                Config_reg1_in[i]=
+                                                Data_in[15-i];
+                                            end
+                                        end
+                                        else
+                                        begin
+                                            if (P_ERR == 0 && E_ERR == 0)
+                                            begin
+                                                for(i=0;i<=7;i=i+1)
+                                                begin
+                                                    Bank_Addr_reg_in[i]=
+                                                    Data_in[7-i];
+                                                end
+                                            end
+                                        end
+                                    end
+                                end
+                            end
+
+                            PP,
+                            PP4,
+                            OTPP:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt > 0)
+                                    begin
+                                        if ((data_cnt % 8) == 0)
+                                        begin
+                                            write = 1'b0;
+                                            for(i=0;i<=PageSize;i=i+1)
+                                            begin
+                                                for(j=7;j>=0;j=j-1)
+                                                begin
+                                                    if ((Data_in[(i*8)+(7-j)])
+                                                        !== 1'bX)
+                                                    begin
+                                                        Byte_slv[j] =
+                                                        Data_in[(i*8)+(7-j)];
+                                                    end
+                                                end
+                                                WByte[i] = Byte_slv;
+                                            end
+
+                                            if (data_cnt > (PageSize+1)*BYTE)
+                                                Byte_number = PageSize;
+                                            else
+                                                Byte_number =
+                                                    ((data_cnt/8) - 1);
+                                        end
+                                    end
+                                end
+                            end
+
+                            QPP,
+                            QPP4:
+                            begin
+                                if (data_cnt >0)
+                                begin
+                                    if ((data_cnt % 2) == 0)
+                                    begin
+                                        write = 1'b0;
+                                        quad_pg = 1'b0;
+                                        for(i=0;i<=PageSize;i=i+1)
+                                        begin
+                                            for(j=1;j>=0;j=j-1)
+                                            begin
+                                                Quad_slv =
+                                                quad_data_in[(i*2)+(1-j)];
+                                                if (j==1)
+                                                    Byte_slv[7:4] = Quad_slv;
+                                                else if (j==0)
+                                                    Byte_slv[3:0] = Quad_slv;
+                                            end
+                                            WByte[i] = Byte_slv;
+                                        end
+                                        if (data_cnt > (PageSize+1)*2)
+                                            Byte_number = PageSize;
+                                        else
+                                            Byte_number = ((data_cnt/2)-1);
+                                    end
+                                end
+                            end
+
+                            ABWR:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 32)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=0;j<=31;j=j+1)
+                                        begin
+                                            AutoBoot_reg_in[j] = Data_in[31-j];
+                                        end
+                                    end
+                                end
+                            end
+
+                            BRWR:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 8)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=0;j<=7;j=j+1)
+                                        begin
+                                            Bank_Addr_reg_in[j] = Data_in[7-j];
+                                        end
+                                    end
+                                end
+                            end
+
+                            ASPP:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 16)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=0;j<=15;j=j+1)
+                                        begin
+                                            ASP_reg_in[j] = Data_in[15-j];
+                                        end
+                                    end
+                                end
+                            end
+
+                            DYBWR:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 8)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=0;j<=7;j=j+1)
+                                        begin
+                                            DYBAR_in[j] = Data_in[7-j];
+                                        end
+                                    end
+                                end
+                            end
+
+                            PNVDLR:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 8)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=0;j<=7;j=j+1)
+                                        begin
+                                            NVDLR_reg_in[j] = Data_in[7-j];
+                                        end
+                                    end
+                                end
+                            end
+
+                            WVDLR:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 8)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=0;j<=7;j=j+1)
+                                        begin
+                                            VDLR_reg_in[j] = Data_in[7-j];
+                                        end
+                                    end
+                                end
+                            end
+
+                            PASSP:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 64)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=1;j<=8;j=j+1)
+                                        begin
+                                            for(k=1;k<=8;k=k+1)
+                                            begin
+                                                Password_reg_in[j*8-k] =
+                                                            Data_in[8*(j-1)+k-1];
+                                            end
+                                        end
+                                    end
+                                end
+                            end
+
+                            PASSU:
+                            begin
+                                if ((HOLDNeg_in && ~QUAD) || QUAD)
+                                begin
+                                    if (data_cnt == 64)
+                                    begin
+                                        write = 1'b0;
+                                        for(j=1;j<=8;j=j+1)
+                                        begin
+                                            for(k=1;k<=8;k=k+1)
+                                            begin
+                                                PASS_TEMP[j*8-k] =
+                                                            Data_in[8*(j-1)+k-1];
+                                            end
+                                        end
+                                    end
+                                end
+                            end
+                        endcase
+                    end
+                end
+            end
+        end
+    end
+
+///////////////////////////////////////////////////////////////////////////////
+// Timing control for the Page Program
+///////////////////////////////////////////////////////////////////////////////
+    time pob;
+    time elapsed_pgm;
+    time elapsed_tsu;
+    time start_pgm;
+    time start_tsu;
+    time duration_pgm;
+    time duration_tsu;
+    event pdone_event;
+
+    always @(rising_edge_PSTART)
+    begin
+        if ((Instruct == PP) || (Instruct == PP4) || (Instruct == OTPP) ||
+           (Instruct == QPP) || (Instruct == QPP4))
+            if (PageSize == 255)
+            begin
+                pob = tdevice_PP_256;
+            end
+            else
+            begin
+                pob = tdevice_PP_512;
+            end
+        else
+            pob = tdevice_BP;
+        if ((rising_edge_PSTART) && PDONE)
+        begin
+            elapsed_pgm = 0;
+            duration_pgm = pob;
+            PDONE = 1'b0;
+            ->pdone_event;
+            start_pgm = $time;
+        end
+    end
+
+    always @(posedge PGSUSP)
+    begin
+        if (PGSUSP && (~PDONE))
+        begin
+            disable pdone_process;
+            elapsed_pgm = $time - start_pgm;
+            duration_pgm = pob - elapsed_pgm;
+            PDONE = 1'b0;
+        end
+    end
+
+    always @(posedge PGRES)
+    begin
+        start_pgm = $time;
+        ->pdone_event;
+    end
+
+    always @(pdone_event)
+    begin:pdone_process
+        PDONE = 1'b0;
+        #duration_pgm PDONE = 1'b1;
+    end
+
+    always @(SI)
+    begin
+        if ((Instruct == PGSP) || (Instruct == PGRS) ||
+           (Instruct == ERSP) || (Instruct == ERRS))
+        begin
+            start_tsu = $time;
+        end
+    end
+
+    always @(posedge SCK)
+    begin
+        if ((Instruct == PGSP) || (Instruct == PGRS) ||
+           (Instruct == ERSP) || (Instruct == ERRS))
+        begin
+            elapsed_tsu = $time - start_tsu;
+            duration_tsu = tdevice_TSU - elapsed_tsu;
+            if (duration_tsu > 0)
+            begin
+                TSU = 1'b0;
+            end
+            else
+            begin
+                TSU = 1'b1;
+                $display("Warning at", $time);
+                $display("tSU max time violation");
+            end
+        end
+    end
+///////////////////////////////////////////////////////////////////////////////
+// Timing control for the Write Status Register
+///////////////////////////////////////////////////////////////////////////////
+    time wob;
+    always @(posedge WSTART)
+    begin:wdone_process
+        wob = tdevice_WRR;
+        if (WSTART && WDONE)
+        begin
+            WDONE = 1'b0;
+            #wob WDONE = 1'b1;
+        end
+    end
+
+///////////////////////////////////////////////////////////////////////////////
+// Reset Timing
+///////////////////////////////////////////////////////////////////////////////
+
+    time startlo;
+    time starthi;
+    time durationlo;
+    time durationhi;
+
+    always @(negedge RSTNeg_in or Instruct)
+    begin
+        if (~RSTNeg_in)
+        begin
+            RST = 1'b1;
+            #200000 RST = 1'b0;  // 200 ns
+        end
+        else if (Instruct == RESET)
+        begin
+            Reseted = 1'b0;
+            #10000 Reseted = 1'b1;   //  10 ns
+        end
+    end
+
+    always @(RST_in or rising_edge_Reseted) // Reset done,program terminated
+    begin
+        if ((RST_in && ~RST) || (rising_edge_Reseted))
+            disable pdone_process;
+            disable edone_process;
+            disable wdone_process;
+            PDONE = 1'b1;
+            EDONE = 1'b1;
+            WDONE = 1'b1;
+    end
+
+///////////////////////////////////////////////////////////////////////////////
+// Timing control for the Bulk Erase
+///////////////////////////////////////////////////////////////////////////////
+    time seo;
+    time beo;
+    event edone_event;
+    time elapsed_ers;
+    time start_ers;
+    time duration_ers;
+
+    always @(rising_edge_ESTART)
+    begin
+        if (UniformSec)
+        begin
+            seo = tdevice_SE256;
+        end
+        else
+        begin
+            seo = tdevice_SE64;
+        end
+        beo = tdevice_BE;
+        if ((rising_edge_ESTART) && EDONE)
+        begin
+            if (Instruct == BE)
+            begin
+                duration_ers = beo;
+            end
+            else
+            begin
+                duration_ers = seo;
+            end
+            elapsed_ers = 0;
+            EDONE = 1'b0;
+            ->edone_event;
+            start_ers = $time;
+        end
+    end
+
+    always @(posedge ESUSP)
+    begin
+        if (ESUSP && (~EDONE))
+        begin
+            disable edone_process;
+            elapsed_ers = $time - start_ers;
+            duration_ers = seo - elapsed_ers;
+            EDONE = 1'b0;
+        end
+    end
+
+    always @(posedge ERES)
+    begin
+        if  (ERES && (~EDONE))
+        begin
+            start_ers = $time;
+            ->edone_event;
+        end
+    end
+
+    always @(edone_event)
+    begin : edone_process
+        EDONE = 1'b0;
+        #duration_ers EDONE = 1'b1;
+    end
+
+    ///////////////////////////////////////////////////////////////////
+    // Process for clock frequency determination
+    ///////////////////////////////////////////////////////////////////
+    always @(posedge SCK_ipd)
+    begin : clock_period
+        if (SCK_ipd)
+        begin
+            SCK_cycle = $time - prev_SCK;
+            prev_SCK = $time;
+        end
+    end
+
+//    /////////////////////////////////////////////////////////////////////////
+//    // Main Behavior Process
+//    // combinational process for next state generation
+//    /////////////////////////////////////////////////////////////////////////
+
+    reg rising_edge_PDONE = 1'b0;
+    reg rising_edge_EDONE = 1'b0;
+    reg rising_edge_WDONE = 1'b0;
+    reg falling_edge_write = 1'b0;
+    reg falling_edge_PPBERASE_in = 1'b0;
+    reg falling_edge_PASSULCK_in = 1'b0;
+
+    integer i;
+    integer j;
+
+    always @(rising_edge_PoweredUp or falling_edge_write or
+             falling_edge_RSTNeg or rising_edge_PDONE or rising_edge_WDONE or
+             rising_edge_EDONE or ERSSUSP_out_event or rising_edge_RSTNeg or
+             PRGSUSP_out_event or rising_edge_CSNeg_ipd or rising_edge_RST_out
+             or falling_edge_PPBERASE_in or falling_edge_PASSULCK_in or RST_out)
+    begin: StateGen1
+
+        integer sect;
+
+        if (rising_edge_PoweredUp && RSTNeg_in && RST_out)
+        begin
+            if (ABE == 1 && RPME !== 0 )
+            begin
+                next_state     = AUTOBOOT;
+                read_cnt       = 0;
+                byte_cnt       = 1;
+                read_addr      = {AutoBoot_reg[31:9], 9'b0};
+                start_delay    = AutoBoot_reg[8:1];
+                start_autoboot = 0;
+                ABSD           = AutoBoot_reg[8:1];
+            end
+            else
+                next_state = IDLE;
+        end
+        else if (PoweredUp)
+        begin
+            if (RST_out == 1'b0)
+                next_state = current_state;
+            else if (falling_edge_write && Instruct == RESET)
+            begin
+                if (ABE == 1 && RPME !== 0)
+                begin
+                    read_cnt       = 0;
+                    byte_cnt       = 1;
+                    read_addr      = {AutoBoot_reg[31:9], 9'b0};
+                    start_delay    = AutoBoot_reg[8:1];
+                    ABSD           = AutoBoot_reg[8:1];
+                    start_autoboot = 0;
+                    next_state     = AUTOBOOT;
+                end
+                else
+                    next_state = IDLE;
+            end
+            else 
+            begin
+                case (current_state)
+                    RESET_STATE :
+                    begin
+                        if ((rising_edge_RST_out && RSTNeg_in) ||
+                        (rising_edge_RSTNeg && RST_out))
+                        begin
+                            if (ABE == 1 && RPME!== 0)
+                            begin
+                                next_state = AUTOBOOT;
+                                read_cnt       = 0;
+                                byte_cnt       = 1;
+                                read_addr      = {AutoBoot_reg[31:9],9'b0};
+                                start_delay    = AutoBoot_reg[8:1];
+                                start_autoboot = 0;
+                                ABSD           = AutoBoot_reg[8:1];
+                            end
+                            else
+                                next_state = IDLE;
+                        end
+                    end
+
+                    IDLE :
+                    begin
+                        if (falling_edge_write && RdPswdProtMode == 0)
+                        begin
+                            if (Instruct == WRR && WEL == 1 && BAR_ACC == 0
+                            && (((~(SRWD == 1 && ~WPNeg_in))&& ~QUAD) || QUAD))
+                            // can not execute if HPM is entered or
+                            // if WEL bit is zero
+                                if (((TBPROT==1 && Config_reg1_in[5]==1'b0) ||
+                                     (TBPARM==1 && Config_reg1_in[2]==1'b0) ||
+                                     (BPNV  ==1 && Config_reg1_in[3]==1'b0)) &&
+                                     cfg_write)
+                                begin
+                                    $display ("WARNING: Changing value of ");
+                                    $display ("Configuration Register OTP ");
+                                    $display ("bit from 1 to 0 is not");
+                                    $display ("allowed!!!");
+                                end
+                                else
+                                begin
+                                    next_state = WRITE_SR;
+                                end
+                            else if (Instruct == WRR && BAR_ACC == 1)
+                            begin
+                            // Write to the lower address bits of the BAR
+                                if (P_ERR == 0 && E_ERR == 0)
+                                begin
+                                    next_state = IDLE;
+                                end
+                            end
+                            else if ((Instruct == PP || Instruct == QPP ||
+                                      Instruct == PP4 || Instruct == QPP4) &&
+                                      WEL == 1)
+                            begin
+                                ReturnSectorID(sect,Address);
+                                pgm_page = Address / (PageSize+1);
+                                if (Sec_Prot[sect]== 0 && PPB_bits[sect]== 1 &&
+                                    DYB_bits[sect]== 1)
+                                begin
+                                    next_state = PAGE_PG;
+                                end
+                            end
+                            else if (Instruct==OTPP && WEL==1 && FREEZE==0)
+                            begin
+                                if (((((Address>=16'h0010 && Address<=16'h0013)
+                                    ||(Address>=16'h0020 && Address<=16'h00FF))
+                                    && LOCK_BYTE1[Address/32] == 1) ||
+                                    ((Address>=16'h0100 && Address<=16'h01FF)
+                                    && LOCK_BYTE2[(Address-16'h0100)/32]==1) ||
+                                    ((Address>=16'h0200 && Address<=16'h02FF)
+                                    && LOCK_BYTE3[(Address-16'h0200)/32]==1) ||
+                                    ((Address>=16'h0300 && Address<=16'h03FF)
+                                    && LOCK_BYTE4[(Address-16'h0300)/32] == 1))
+                                    && (Address + Byte_number <= OTPHiAddr))
+                                next_state =  OTP_PG;
+                            end
+                            else if ((Instruct == SE || Instruct == SE4)
+                                    && WEL == 1)
+                            begin
+                                ReturnSectorID(sect,Address);
+                                if (UniformSec || (TopBoot && sect < 510) ||
+                                   (BottomBoot && sect > 31))
+                                begin
+                                    if (Sec_Prot[sect]== 0 && PPB_bits[sect]== 1
+                                         && DYB_bits[sect]== 1)
+                                        next_state =  SECTOR_ERS;
+                                end
+                                else if ((TopBoot && sect >= 510) ||
+                                        (BottomBoot && sect <= 31))
+                                begin
+                                    if (Sec_ProtSE == 32 && ASP_ProtSE == 32)
+                                    //Sector erase command is applied to a
+                                    //64 KB range that includes 4 KB sectors.
+                                        next_state =  SECTOR_ERS;
+                                end
+                            end
+                            else if ((Instruct == P4E || Instruct == P4E4)
+                                    && WEL == 1)
+                            begin
+                                ReturnSectorID(sect,Address);
+                                if (UniformSec || (TopBoot && sect < 510) ||
+                                   (BottomBoot && sect > 31))
+                                begin
+                                    $display("The instruction is applied to");
+                                    $display("a sector that is larger than");
+                                    $display("4 KB.");
+                                    $display("Instruction is ignored!!!");
+                                end
+                                else
+                                begin
+                                     if (Sec_Prot[sect]== 0 &&
+                                      PPB_bits[sect]== 1 && DYB_bits[sect]== 1)
+                                        next_state =  SECTOR_ERS;
+                                end
+                            end
+                            else if (Instruct == BE && WEL == 1 &&
+                                (Status_reg1[4]== 0 && Status_reg1[3]== 0 &&
+                                    Status_reg1[2]== 0))
+                                next_state = BULK_ERS;
+                            else if (Instruct == ABWR && WEL == 1)
+                                //Autoboot Register Write Command
+                                next_state = AUTOBOOT_PG;
+                            else if (Instruct == BRWR)
+                                //Bank Register Write Command
+                                next_state = IDLE;
+                            else if (Instruct == ASPP && WEL == 1)
+                            begin
+                                //ASP Register Program Command
+                                if (~(ASPOTPFLAG))
+                                    next_state = ASP_PG;
+                            end
+                            else if (Instruct == PLBWR && WEL == 1 &&
+                                     RdPswdProtEnable == 0)
+                                next_state = PLB_PG;
+                            else if (Instruct == PASSP && WEL == 1)
+                            begin
+                                if (~(PWDMLB== 0 && PSTMLB== 1))
+                                    next_state = PASS_PG;
+                            end
+                            else if (Instruct == PASSU && WEL && ~WIP)
+                                next_state = PASS_UNLOCK;
+                            else if (Instruct == PPBP && WEL == 1)
+                                next_state <= PPB_PG;
+                            else if (Instruct == PPBERS && WEL && PPBOTP)
+                                next_state <= PPB_ERS;
+                            else if (Instruct == DYBWR && WEL == 1)
+                                next_state = DYB_PG;
+                            else if (Instruct == PNVDLR && WEL == 1)
+                                next_state = NVDLR_PG;
+                            else
+                                next_state = IDLE;
+                        end
+                        if (falling_edge_write && RdPswdProtMode == 1 && ~WIP)
+                        begin
+                            if (Instruct == PASSU)
+                                next_state = PASS_UNLOCK;
+                        end
+                    end
+
+                    AUTOBOOT :
+                    begin
+                        if (rising_edge_CSNeg_ipd)
+                            next_state = IDLE;
+                    end
+
+                    WRITE_SR :
+                    begin
+                        if (rising_edge_WDONE)
+                            next_state = IDLE;
+                    end
+
+                    PAGE_PG :
+                    begin
+                        if (PRGSUSP_out_event && PRGSUSP_out == 1)
+                            next_state = PG_SUSP;
+                        else if (rising_edge_PDONE)
+                            next_state = IDLE;
+                    end
+
+                    PG_SUSP :
+                    begin
+                        if (falling_edge_write)
+                        begin
+                            if (Instruct == BRWR)
+                                //Bank Register Write Command
+                                next_state = PG_SUSP;
+                            else if (Instruct == PGRS)
+                                next_state = PAGE_PG;
+                        end
+                    end
+
+                    OTP_PG :
+                    begin
+                        if (rising_edge_PDONE)
+                            next_state = IDLE;
+                    end
+
+                    BULK_ERS :
+                    begin
+                        if (rising_edge_EDONE)
+                            next_state = IDLE;
+                    end
+
+                    SECTOR_ERS :
+                    begin
+                        if (ERSSUSP_out_event && ERSSUSP_out == 1)
+                            next_state = ERS_SUSP;
+                        else if (rising_edge_EDONE)
+                            next_state = IDLE;
+                    end
+
+                    ERS_SUSP :
+                    begin
+                        if (falling_edge_write)
+                        begin
+                            if ((Instruct == PP || Instruct == QPP ||
+                                 Instruct == PP4 || Instruct == QPP4) &&
+                                 WEL == 1)
+                            begin
+                                if ((PARAM_REGION &&
+                                     SectorSuspend != Address/(SecSize+1)) ||
+                                   (~PARAM_REGION && SectorSuspend !=
+                                     Address/(SecSize+1)+30*b_act))
+                                begin
+                                    ReturnSectorID(sect,Address);
+                                    pgm_page = Address / (PageSize+1);
+                                    if (PPB_bits[sect]== 1 &&
+                                        DYB_bits[sect]== 1)
+                                    begin
+                                        next_state = ERS_SUSP_PG;
+                                    end
+                                end
+                            end
+                            else if (Instruct == BRWR)
+                            begin
+                                //Bank Register Write Command
+                                next_state = ERS_SUSP;
+                            end
+                            else if (Instruct == DYBWR && WEL == 1)
+                                next_state = DYB_PG;
+                            else if  (Instruct == ERRS)
+                                next_state = SECTOR_ERS;
+                        end
+                    end
+
+                    ERS_SUSP_PG :
+                    begin
+                        if (rising_edge_PDONE)
+                            next_state = ERS_SUSP;
+                        else if (PRGSUSP_out_event && PRGSUSP_out == 1)
+                            next_state = ERS_SUSP_PG_SUSP;
+                    end
+
+                    ERS_SUSP_PG_SUSP :
+                    begin
+                        if (rising_edge_PDONE)
+                            next_state = ERS_SUSP;
+                        if (falling_edge_write)
+                        begin
+                            if (Instruct == BRWR)
+                            begin
+                                next_state =  ERS_SUSP_PG_SUSP;
+                            end
+                            else if (Instruct == PGRS)
+                            begin
+                                next_state =  ERS_SUSP_PG;
+                            end
+                        end
+                    end
+
+                    PASS_PG :
+                    begin
+                    if (rising_edge_PDONE)
+                        next_state = IDLE;
+                    end
+
+                    PASS_UNLOCK :
+                    begin
+                    if (falling_edge_PASSULCK_in)
+                        next_state = IDLE;
+                    end
+
+                    PPB_PG :
+                    begin
+                    if (rising_edge_PDONE)
+                        next_state = IDLE;
+                    end
+
+                    PPB_ERS :
+                    begin
+                    if (falling_edge_PPBERASE_in)
+                        next_state = IDLE;
+                    end
+
+                    AUTOBOOT_PG :
+                    begin
+                    if (rising_edge_PDONE)
+                        next_state = IDLE;
+                    end
+
+                    PLB_PG :
+                    begin
+                    if (rising_edge_PDONE)
+                        next_state = IDLE;
+                    end
+
+                    DYB_PG :
+                    begin
+                    if (rising_edge_PDONE)
+                        if (ES)
+                            next_state = ERS_SUSP;
+                        else
+                            next_state = IDLE;
+                    end
+
+                    ASP_PG :
+                    begin
+                    if (rising_edge_PDONE)
+                        next_state = IDLE;
+                    end
+                                        
+                    NVDLR_PG :
+                    begin
+                    if (rising_edge_PDONE)
+                        next_state = IDLE;
+                    end
+
+                endcase
+            end
+        end
+    end
+
+    ///////////////////////////////////////////////////////////////////////////
+    //FSM Output generation and general functionality
+    ///////////////////////////////////////////////////////////////////////////
+    reg rising_edge_read_out = 1'b0;
+    reg Instruct_event       = 1'b0;
+    reg change_addr_event    = 1'b0;
+    reg current_state_event  = 1'b0;
+    reg rising_edge_DP_out   = 1'b0;
+
+    integer WData [0:511];
+    integer WOTPData;
+    integer Addr;
+    integer Addr_tmp;
+
+    always @(Instruct_event)
+    begin
+        read_cnt = 0;
+        byte_cnt = 1;
+        rd_fast  = 1'b1;
+        dual     = 1'b0;
+        rd_slow  = 1'b0;
+        any_read = 1'b0;
+    end
+
+    always @(rising_edge_read_out)
+    begin
+        if (rising_edge_read_out == 1'b1)
+        begin
+            if (PoweredUp == 1'b1)
+            begin
+                oe_z = 1'b1;
+                #1000 oe_z = 1'b0;
+                oe = 1'b1;
+                #1000 oe = 1'b0;
+            end
+        end
+    end
+
+    always @(change_addr_event)
+    begin
+        if (change_addr_event)
+        begin
+            read_addr = Address;
+        end
+    end
+
+    always @(posedge PASSACC_out)
+    begin
+        Status_reg1[0] = 1'b0; //WIP
+        PASSACC_in = 1'b0;
+    end
+
+    always @(Instruct or posedge start_autoboot or oe or current_state_event or
+             falling_edge_write or posedge PDONE or posedge WDONE or oe_z or
+             posedge EDONE or ERSSUSP_out or rising_edge_Reseted or
+             rising_edge_PoweredUp or rising_edge_CSNeg_ipd or PRGSUSP_out or
+             Address)
+    begin: Functionality
+    integer i,j;
+    integer sect;
+
+        if (rising_edge_PoweredUp)
+        begin
+            //the default condition after power-up
+            //The Bank Address Register is loaded to all zeroes
+            Bank_Addr_reg = 8'h0;
+            //The Configuration Register FREEZE bit is cleared.
+            Config_reg1[0] = 0;
+            //The WEL bit is cleared.
+            Status_reg1[1] = 0;
+            //When BPNV is set to '1'. the BP2-0 bits in Status Register are
+            //volatile and will be reset binary 111 after power-on reset
+            if (BPNV == 1  && FREEZE == 0 ) //&& LOCK == 0
+            begin
+                Status_reg1[4] = 1'b0;// BP2
+                Status_reg1[3] = 1'b0;// BP1
+                Status_reg1[2] = 1'b0;// BP0
+                BP_bits = {Status_reg1[4],Status_reg1[3],Status_reg1[2]};
+                change_BP = 1'b1;
+                #1000 change_BP = 1'b0;
+            end
+
+            //As shipped from the factory, all devices default ASP to the
+            //Persistent Protection mode, with all sectors unprotected,
+            //when power is applied. The device programmer or host system must
+            //then choose which sector protection method to use.
+            //For Persistent Protection mode, PPBLOCK defaults to "1"
+            PPBL[0] = 1'b1;
+
+            //All the DYB power-up in the unprotected state
+            DYB_bits = {542{1'b1}};
+
+        end
+
+        if (Instruct == RESET)
+        begin
+            //EXTADD is cleared to “0”
+            Bank_Addr_reg[7] = 1'b0;
+            //P_ERR bit is cleared
+            Status_reg1[6] = 1'b0;
+            //E_ERR bit is cleared
+            Status_reg1[5] = 1'b0;
+            //The WEL bit is cleared.
+            Status_reg1[1] = 1'b0;
+            //The WIP bit is cleared.
+            Status_reg1[0] = 1'b0;
+            //The ES bit is cleared.
+            Status_reg2[1] = 1'b0;
+            //The PS bit is cleared.
+            Status_reg2[0] = 1'b0;
+            //When BPNV is set to '1'. the BP2-0 bits in Status
+            //Register are volatile and will be reseted after
+            //reset command
+            if (BPNV == 1  && FREEZE == 0) //&& LOCK== 0
+            begin
+                Status_reg1[4] = 1'b1;
+                Status_reg1[3] = 1'b1;
+                Status_reg1[2] = 1'b1;
+
+                BP_bits = {Status_reg1[4],Status_reg1[3],
+                        Status_reg1[2]};
+                change_BP = 1'b1;
+                #1000 change_BP = 1'b0;
+            end
+        end
+
+        case (current_state)
+            IDLE :
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                ASP_ProtSE = 0;
+                Sec_ProtSE = 0;
+
+                if (BottomBoot)
+                begin
+                    for (j=31;j>=0;j=j-1)
+                    begin
+                        if (PPB_bits[j] == 1 && DYB_bits[j] == 1)
+                        begin
+                            ASP_ProtSE = ASP_ProtSE + 1;
+                        end
+                        if (Sec_Prot[j] == 0)
+                        begin
+                            Sec_ProtSE = Sec_ProtSE + 1;
+                        end
+                    end
+                end
+                else if (TopBoot)
+                begin
+                    for (j=541;j>=510;j=j-1)
+                    begin
+                        if (PPB_bits[j] == 1 && DYB_bits[j] == 1)
+                        begin
+                            ASP_ProtSE = ASP_ProtSE + 1;
+                        end
+                        if (Sec_Prot[j] == 0)
+                        begin
+                            Sec_ProtSE = Sec_ProtSE + 1;
+                        end
+                    end
+                end
+
+                if (falling_edge_write && RdPswdProtMode == 1)
+                begin
+                    if(Instruct == PASSU)
+                    begin
+                        if (~WIP)
+                        begin
+                            PASSULCK_in = 1;
+                            Status_reg1[0] = 1'b1; //WIP
+                        end
+                        else
+                        begin
+                            $display ("The PASSU command cannot be accepted");
+                            $display (" any faster than once every 100us");
+                        end
+                    end
+                    else if (Instruct == CLSR)
+                    begin
+                    //The Clear Status Register Command resets bit SR1[5]
+                    //(Erase Fail Flag) and bit SR1[6] (Program Fail Flag)
+                        Status_reg1[5] = 0;
+                        Status_reg1[6] = 0;
+                    end
+                end
+
+                if (falling_edge_write && RdPswdProtMode == 0)
+                begin
+                    read_cnt = 0;
+                    byte_cnt = 1;
+                    if (Instruct == WREN)
+                        Status_reg1[1] = 1'b1;
+                    else if (Instruct == WRDI)
+                        Status_reg1[1] = 0;
+                    else if ((Instruct == WRR) && WEL == 1 && WDONE == 1 &&
+                              BAR_ACC == 0)
+                    begin
+                        if (((~(SRWD == 1 && ~WPNeg_in))&& ~QUAD) || QUAD)
+                        begin
+                            if (((TBPROT==1 && Config_reg1_in[5]==1'b0) ||
+                                 (TBPARM==1 && Config_reg1_in[2]==1'b0) ||
+                                 (BPNV  ==1 && Config_reg1_in[3]==1'b0)) &&
+                                 cfg_write)
+                            begin
+                                // P_ERR bit is set to 1
+                                Status_reg1[6] = 1'b1;
+                            end
+                            else
+                            begin
+                            // can not execute if Hardware Protection Mode
+                            // is entered or if WEL bit is zero
+                                WSTART = 1'b1;
+                                WSTART <= #5 1'b0;
+                                Status_reg1[0] = 1'b1;
+                            end
+                        end
+                        else
+                            Status_reg1[1] = 0;
+                    end
+                    else if ((Instruct == PP || Instruct == PP4) && WEL ==1 &&
+                              PDONE == 1 )
+                    begin
+                        ReturnSectorID(sect,Address);
+                        if (Sec_Prot[sect] == 0 &&
+                            PPB_bits[sect]== 1 && DYB_bits[sect]== 1)
+                        begin
+                            PSTART  = 1'b1;
+                            PSTART <= #5 1'b0;
+                            PGSUSP  = 0;
+                            PGRES   = 0;
+                            INITIAL_CONFIG = 1;
+                            Status_reg1[0] = 1'b1;
+                            SA      = sect;
+                            Addr    = Address;
+                            Addr_tmp= Address;
+                            wr_cnt  = Byte_number;
+                            for (i=wr_cnt;i>=0;i=i-1)
+                            begin
+                                if (Viol != 0)
+                                    WData[i] = -1;
+                                else
+                                    WData[i] = WByte[i];
+                            end
+                        end
+                        else
+                        begin
+                        //P_ERR bit will be set when the user attempts to
+                        //to program within a protected main memory sector
+                            Status_reg1[6] = 1'b1; //P_ERR
+                            Status_reg1[1] = 1'b0; //WEL
+                        end
+                    end
+                    else if ((Instruct == QPP || Instruct == QPP4) && WEL ==1 &&
+                              PDONE == 1 )
+                    begin
+                        ReturnSectorID(sect,Address);
+                        pgm_page = Address / (PageSize+1);
+                        if (Sec_Prot[sect] == 0 &&
+                            PPB_bits[sect]== 1 && DYB_bits[sect]== 1)
+                        begin
+                            PSTART  = 1'b1;
+                            PSTART <= #5 1'b0;
+                            PGSUSP  = 0;
+                            PGRES   = 0;
+                            INITIAL_CONFIG = 1;
+//                            QPP_page[pgm_page] = 1'b1;
+                            Status_reg1[0] = 1'b1;
+                            SA      = sect;
+                            Addr    = Address;
+                            Addr_tmp= Address;
+                            wr_cnt  = Byte_number;
+                            for (i=wr_cnt;i>=0;i=i-1)
+                            begin
+                                if (Viol != 0)
+                                    WData[i] = -1;
+                                else
+                                    WData[i] = WByte[i];
+                            end
+                        end
+                        else
+                        begin
+                        //P_ERR bit will be set when the user attempts to
+                        //to program within a protected main memory sector
+                            Status_reg1[6] = 1'b1; //P_ERR
+                            Status_reg1[1] = 1'b0; //WEL
+                        end
+                    end
+                    else if (Instruct == OTPP && WEL == 1)
+                    begin
+                        // As long as the FREEZE bit remains cleared to a logic
+                        // '0' the OTP address space is programmable.
+                        if (FREEZE == 0)
+                        begin
+                            if (((((Address>= 16'h0010 && Address<= 16'h0013) ||
+                                (Address >= 16'h0020 && Address <= 16'h00FF))
+                                && LOCK_BYTE1[Address/32] == 1) ||
+                                ((Address >= 16'h0100 && Address <= 16'h01FF)
+                                && LOCK_BYTE2[(Address-16'h0100)/32] == 1) ||
+                                ((Address >= 16'h0200 && Address <= 16'h02FF)
+                                && LOCK_BYTE3[(Address-16'h0200)/32] == 1) ||
+                                ((Address >= 16'h0300 && Address <= 16'h03FF)
+                                && LOCK_BYTE4[(Address-16'h0300)/32] == 1)) &&
+                                (Address + Byte_number <= OTPHiAddr))
+                            begin
+                                PSTART = 1'b1;
+                                PSTART <= #5 1'b0;
+                                Status_reg1[0] = 1'b1;
+                                Addr    = Address;
+                                Addr_tmp= Address;
+                                wr_cnt  = Byte_number;
+                                for (i=wr_cnt;i>=0;i=i-1)
+                                begin
+                                    if (Viol != 0)
+                                        WData[i] = -1;
+                                    else
+                                        WData[i] = WByte[i];
+                                end
+                            end
+                            else if ((Address < 8'h10 || (Address > 8'h13 &&
+                                    Address < 8'h20) || Address > 12'h3FF ))
+                            begin
+                                Status_reg1[6] = 1'b1;//P_ERR
+                                Status_reg1[1] = 1'b0;//WEL
+                                if (Address < 8'h20)
+                                begin
+                                    $display ("Given  address is ");
+                                    $display ("in reserved address range");
+                                end
+                                else if (Address > 12'h3FF)
+                                begin
+                                    $display ("Given  address is ");
+                                    $display ("out of OTP address range");
+                                end
+                            end
+                            else
+                            begin
+                            //P_ERR bit will be set when the user attempts to
+                            // to program within locked OTP region
+                                Status_reg1[6] = 1'b1;//P_ERR
+                                Status_reg1[1] = 1'b0;//WEL
+                            end
+                        end
+                        else
+                        begin
+                        //P_ERR bit will be set when the user attempts to
+                        //to program within locked OTP region
+                            Status_reg1[6] = 1'b1;//P_ERR
+                            Status_reg1[1] = 1'b0;//WEL
+                        end
+                    end
+                    else if ((Instruct == SE || Instruct == SE4) && WEL == 1)
+                    begin
+                        ReturnSectorID(sect,Address);
+                        if (UniformSec || (TopBoot && sect < 510) ||
+                           (BottomBoot && sect > 31))
+                        begin
+                            SectorSuspend = sect;
+                            PARAM_REGION  = 0;
+                            if (Sec_Prot[sect] == 0 &&
+                               PPB_bits[sect]== 1 && DYB_bits[sect]== 1)
+                            begin
+                                ESTART = 1'b1;
+                                ESTART <= #5 1'b0;
+                                ESUSP     = 0;
+                                ERES      = 0;
+                                INITIAL_CONFIG = 1;
+                                Status_reg1[0] = 1'b1;
+                                Addr = Address;
+                            end
+                            else
+                            begin
+                            //E_ERR bit will be set when the user attempts to
+                            //erase an individual protected main memory sector
+                                Status_reg1[5] = 1'b1;//E_ERR
+                                Status_reg1[1] = 1'b0;//WEL
+                            end
+                        end
+                        else if ((TopBoot && sect >= 510) ||
+                                (BottomBoot && sect <= 31))
+                        begin
+                            if (Sec_ProtSE == 32 && ASP_ProtSE == 32)
+                            //Sector erase command is applied to a 64 KB range
+                            //that includes 4 KB sectors
+                            begin
+                                if (TopBoot)
+                                begin
+                                    SectorSuspend = 510 + (541 - sect)/16;
+                                end
+                                else
+                                begin
+                                    SectorSuspend = sect/16;
+                                end
+                                PARAM_REGION  = 1;
+                                ESTART = 1'b1;
+                                ESTART <= #5 1'b0;
+                                ESUSP     = 0;
+                                ERES      = 0;
+                                INITIAL_CONFIG = 1;
+                                Status_reg1[0] = 1'b1;
+                                Addr = Address;
+                            end
+                            else
+                            begin
+                            //E_ERR bit will be set when the user attempts to
+                            //erase an individual protected main memory sector
+                                Status_reg1[5] = 1'b1;//E_ERR
+                                Status_reg1[1] = 1'b0;//WEL
+                            end
+                        end
+                    end
+                    else if ((Instruct == P4E || Instruct == P4E4) && WEL == 1)
+                    begin
+                        ReturnSectorID(sect,Address);
+                        if (UniformSec || (TopBoot && sect < 510) ||
+                           (BottomBoot && sect > 31))
+                        begin
+                            Status_reg1[1] = 1'b0;//WEL
+                        end
+                        else
+                        begin
+                            if (Sec_Prot[sect] == 0 &&
+                                PPB_bits[sect]== 1 && DYB_bits[sect]== 1)
+                            //A P4E instruction applied to a sector
+                            //that has been Write Protected through the
+                            //Block Protect Bits or ASP will not be
+                            //executed and will set the E_ERR status
+                            begin
+                                ESTART = 1'b1;
+                                ESTART <= #5 1'b0;
+                                ESUSP     = 0;
+                                ERES      = 0;
+                                INITIAL_CONFIG = 1;
+                                Status_reg1[0] = 1'b1;
+                                Addr = Address;
+                            end
+                            else
+                            begin
+                            //E_ERR bit will be set when the user attempts to
+                            //erase an individual protected main memory sector
+                                Status_reg1[5] = 1'b1;//E_ERR
+                                Status_reg1[1] = 1'b0;//WEL
+                            end
+                        end
+                    end
+                    else if (Instruct == BE && WEL == 1)
+                    begin
+                        if (Status_reg1[4]== 0 && Status_reg1[3]== 0 &&
+                            Status_reg1[2]== 0)
+                        begin
+                            ESTART = 1'b1;
+                            ESTART <= #5 1'b0;
+                            ESUSP  = 0;
+                            ERES   = 0;
+                            INITIAL_CONFIG = 1;
+                            Status_reg1[0] = 1'b1;
+                        end
+                        else
+                        begin
+                        //The Bulk Erase command will not set E_ERR if a
+                        //protected sector is found during the command
+                        //execution.
+                            Status_reg1[1] = 1'b0;//WEL
+                        end
+                    end
+                    else if (Instruct == PASSP && WEL == 1)
+                    begin
+                        if (~(PWDMLB== 0 && PSTMLB== 1))
+                        begin
+                            PSTART = 1'b1;
+                            PSTART <= #5 1'b0;
+                            Status_reg1[0] = 1'b1;
+                        end
+                        else
+                        begin
+                            $display ("Password programming is not allowed");
+                            $display (" in Password Protection Mode.");
+                        end
+                    end
+                    else if (Instruct == PASSU  && WEL)
+                    begin
+                        if (~WIP)
+                        begin
+                            PASSULCK_in = 1;
+                            Status_reg1[0] = 1'b1; //WIP
+                        end
+                        else
+                        begin
+                            $display ("The PASSU command cannot be accepted");
+                            $display (" any faster than once every 100us");
+                        end
+                    end
+                    else if (Instruct == BRWR)
+                    begin
+                        Bank_Addr_reg[7] = Bank_Addr_reg_in[7];
+                        Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                        if(Bank_Addr_reg_in[1] == 1)
+                        begin
+                            $display ("WARNING: Changing values of ");
+                            $display ("Bank Address Register");
+                            $display ("BA25 is not allowed!!!");
+                        end
+                    end
+                    else if (Instruct == WRR && BAR_ACC == 1)
+                    begin
+                    // Write to the lower address bits of the BAR
+                        if (P_ERR == 0 && E_ERR == 0)
+                        begin
+                            Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                            if(Bank_Addr_reg_in[1] == 1)
+                            begin
+                                $display ("WARNING: Changing values of ");
+                                $display ("Bank Address Register");
+                                $display ("BA25 is not allowed!!!");
+                            end
+                        end
+                    end
+                    else if (Instruct == ASPP  && WEL == 1)
+                    begin
+                        if (~(ASPOTPFLAG))
+                        begin
+                            PSTART = 1'b1;
+                            PSTART <= #5 1'b0;
+                            Status_reg1[0]    = 1'b1;
+                        end
+                        else
+                        begin
+                            Status_reg1[1]   = 1'b0;
+                            Status_reg1[6] = 1'b1;
+                            $display ("Once the Protection Mode is selected,");
+                            $display ("no further changes to the ASP ");
+                            $display ("register is allowed.");
+                        end
+                    end
+                    else if (Instruct == ABWR  && WEL == 1)
+                    begin
+                        PSTART = 1'b1;
+                        PSTART <= #5 1'b0;
+                        Status_reg1[0] = 1'b1;
+                    end
+                    else if (Instruct == PPBP  && WEL == 1)
+                    begin
+                        ReturnSectorID(sect,Address);
+                        PSTART = 1'b1;
+                        PSTART <= #5 1'b0;
+                        Status_reg1[0] = 1'b1;
+                    end
+                    else if (Instruct == PPBERS  && WEL == 1)
+                    begin
+                        if (PPBOTP)
+                        begin
+                            PPBERASE_in = 1'b1;
+                            Status_reg1[0] = 1'b1;
+                        end
+                        else
+                        begin
+                             Status_reg1[5] = 1'b1;
+                        end
+                    end
+                    else if (Instruct == PLBWR  && WEL == 1 &&
+                             RdPswdProtEnable == 0)
+                    begin
+                        PSTART = 1'b1;
+                        PSTART <= #5 1'b0;
+                        Status_reg1[0] = 1'b1;
+                    end
+                    else if (Instruct == DYBWR  && WEL == 1)
+                    begin
+                        ReturnSectorID(sect,Address);
+                        pgm_page = Address / (PageSize+1);
+                        PSTART = 1'b1;
+                        PSTART <= #5 1'b0;
+                        Status_reg1[0]    = 1'b1;
+                    end
+                    else if (Instruct == PNVDLR  && WEL == 1)
+                    begin
+                        PSTART = 1'b1;
+                        PSTART <= #5 1'b0;
+                        Status_reg1[0]    = 1'b1;
+                    end
+                    else if (Instruct == WVDLR  && WEL == 1)
+                    begin
+                        VDLR_reg = VDLR_reg_in;
+                        Status_reg1[1] = 1'b0;
+                    end
+                    else if (Instruct == CLSR)
+                    begin
+                    //The Clear Status Register Command resets bit SR1[5]
+                    //(Erase Fail Flag) and bit SR1[6] (Program Fail Flag)
+                        Status_reg1[5] = 0;
+                        Status_reg1[6] = 0;
+                    end
+
+                    if (Instruct == BRAC && P_ERR == 0 && E_ERR == 0)
+                    begin
+                        BAR_ACC = 1;
+                    end
+                    else
+                    begin
+                        BAR_ACC = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    if (Instruct == READ || Instruct == RD4 ||
+                        Instruct == RES  ||
+                       (Instruct == DLPRD && RdPswdProtMode == 0))
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b1;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    else if (Instruct == DDRFR || Instruct == DDRFR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DDRDIOR || Instruct == DDRDIOR4 ||
+                           ((Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                             && QUAD))
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DOR  || Instruct == DOR4  ||
+                             Instruct == DIOR || Instruct == DIOR4 ||
+                           ((Instruct == QOR  || Instruct == QOR4  ||
+                             Instruct == QIOR || Instruct == QIOR4)
+                             && QUAD))
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b0;
+                    end
+                    else
+                    begin
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+                else if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == ECCRD)
+                    begin
+                        //Read ECC Register
+                        SOut_zd = ECCSR[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == READ || Instruct == RD4 ||
+                            Instruct == FSTRD || Instruct == FSTRD4 ||
+                            Instruct == DDRFR || Instruct == DDRFR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == READ || Instruct == RD4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b1;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        else if (Instruct == DDRFR || Instruct == DDRFR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b1;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        if ((Instruct == DDRFR || Instruct == DDRFR4) &&
+                            (VDLR_reg != 8'b00000000) && start_dlp)
+                        begin
+                            // Data Learning Pattern (DLP) is enabled
+                            // Optional DLP
+                            data_out[7:0] = VDLR_reg;
+                            SOut_zd  = data_out[7-read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt  = 0;
+                                start_dlp = 1'b0;
+                            end
+
+                        end
+                        else
+                        begin
+                            read_addr_tmp = read_addr;
+                            SecAddr = read_addr/(SecSize+1) ;
+                            Sec_addr = read_addr - SecAddr*(SecSize+1);
+                            SecAddr = ReturnSectorIDRdPswdMd(TBPROT);
+                            read_addr = Sec_addr + SecAddr*(SecSize+1);
+                            if (RdPswdProtMode == 0)
+                            begin
+                                read_addr = read_addr_tmp;
+                            end
+                            if (Mem[read_addr] !== -1)
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                SOut_zd  = data_out[7-read_cnt];
+                            end
+                            else
+                            begin
+                                SOut_zd  = 8'bx;
+                            end
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == DOR  || Instruct == DOR4  ||
+                            Instruct == DIOR || Instruct == DIOR4 ||
+                            Instruct == DDRDIOR || Instruct == DDRDIOR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if ((Instruct == DDRDIOR || Instruct == DDRDIOR4) &&
+                            (VDLR_reg != 8'b00000000) && start_dlp)
+                        begin
+
+                            data_out[7:0] = VDLR_reg;
+                            SOut_zd  = data_out[7-read_cnt];
+                            SIOut_zd = data_out[7-read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt  = 0;
+                                start_dlp = 0;
+                            end
+                        end
+                        else
+                        begin
+                            read_addr_tmp = read_addr;
+                            SecAddr = read_addr/(SecSize+1) ;
+                            Sec_addr = read_addr - SecAddr*(SecSize+1);
+                            SecAddr = ReturnSectorIDRdPswdMd(TBPROT);
+                            read_addr = Sec_addr + SecAddr*(SecSize+1);
+                            if (RdPswdProtMode == 0)
+                                read_addr = read_addr_tmp;
+
+                            data_out[7:0] = Mem[read_addr];
+                            SOut_zd = data_out[7-2*read_cnt];
+                            SIOut_zd = data_out[6-2*read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 4)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if ((Instruct == QOR  || Instruct == QOR4 ||
+                            Instruct == QIOR || Instruct == QIOR4 ||
+                            Instruct == DDRQIOR || Instruct == DDRQIOR4 )
+                            && QUAD)
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if ((Instruct == DDRQIOR || Instruct == DDRQIOR4) &&
+                            (VDLR_reg != 8'b00000000) && start_dlp)
+                        begin
+                            // Data Learning Pattern (DLP) is enabled
+                            // Optional DLP
+                            data_out[7:0] = VDLR_reg;
+                            HOLDNegOut_zd = data_out[7-read_cnt];
+                            WPNegOut_zd   = data_out[7-read_cnt];
+                            SOut_zd   = data_out[7-read_cnt];
+                            SIOut_zd   = data_out[7-read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt  = 0;
+                                start_dlp = 1'b0;
+                            end
+                        end
+                        else
+                        begin
+                            read_addr_tmp = read_addr;
+                            SecAddr = read_addr/(SecSize+1) ;
+                            Sec_addr = read_addr - SecAddr*(SecSize+1);
+                            SecAddr = ReturnSectorIDRdPswdMd(TBPROT);
+                            read_addr = Sec_addr + SecAddr*(SecSize+1);
+                            if (RdPswdProtMode == 0)
+                                read_addr = read_addr_tmp;
+
+                            data_out[7:0] = Mem[read_addr];
+                            HOLDNegOut_zd = data_out[7-4*read_cnt];
+                            WPNegOut_zd   = data_out[6-4*read_cnt];
+                            SOut_zd   = data_out[5-4*read_cnt];
+                            SIOut_zd   = data_out[4-4*read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 2)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == OTPR)
+                    begin
+                        if(read_addr>=OTPLoAddr && read_addr<=OTPHiAddr
+                        && RdPswdProtMode == 0)
+                        begin
+                        //Read OTP Memory array
+                            rd_fast = 1'b1;
+                            rd_slow = 1'b0;
+                            data_out[7:0] = OTPMem[read_addr];
+                            SOut_zd  = data_out[7-read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                read_addr = read_addr + 1;
+                            end
+                        end
+                        else if ((read_addr > OTPHiAddr)||(RdPswdProtMode==1))
+                        begin
+                        //OTP Read operation will not wrap to the
+                        //starting address after the OTP address is at
+                        //its maximum or Read Password Protection Mode
+                        //is selected instead, the data beyond the
+                        //maximum OTP address will be undefined.
+                            SOut_zd = 1'bX;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                                read_cnt = 0;
+                        end
+                    end
+                    else if (Instruct == REMS)
+                    begin
+                        //Read Manufacturer and Device ID
+                        if (read_addr % 2 == 0)
+                        begin
+                            data_out[7:0] = Manuf_ID;
+                            SOut_zd = data_out[7-read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                read_addr = read_addr + 1;
+                            end
+                        end
+                        else
+                        begin
+                            data_out[7:0] = DeviceID;
+                            SOut_zd = data_out[7-read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                read_addr = 0;
+                            end
+                        end
+                    end
+                    else if (Instruct == RDID)
+                    begin
+                        ident_out = CFI_array_tmp;
+                        if(read_cnt < 648)
+                        begin
+                            SOut_zd = ident_out[647-read_cnt];
+                            read_cnt  = read_cnt + 1;
+                        end
+                        else
+                        begin
+                        //Continued shifting of output beyond the end of
+                        //the defined ID-CFI address space will
+                        //provide undefined data.
+                            SOut_zd = 1'bX;
+                        end
+                    end
+                    else if (Instruct == RES)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b1;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        data_out = ESignature;
+                        SOut_zd = data_out[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == DLPRD && RdPswdProtMode == 0)
+                    begin
+                    //Read DLP
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b1;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = VDLR_reg[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == ABRD && RdPswdProtMode == 0)
+                    begin
+                    //Read AutoBoot register
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = AutoBoot_reg_in[31-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 32)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == BRRD && RdPswdProtMode == 0)
+                    begin
+                    //Read Bank Address Register
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = Bank_Addr_reg[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == ASPRD && RdPswdProtMode == 0)
+                    begin
+                    //Read ASP Register
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = ASP_reg[15-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 16)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == PASSRD && RdPswdProtMode == 0)
+                    begin
+                    //Read Password Register
+                        if (~(PWDMLB == 0 && PSTMLB == 1))
+                        begin
+                            rd_fast = 1'b1;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                            SOut_zd =
+                                        Password_reg[(8*byte_cnt-1)-read_cnt];
+                            read_cnt  = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                byte_cnt = byte_cnt + 1;
+                                if (byte_cnt == 9)
+                                    byte_cnt = 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == PLBRD)
+                    begin
+                    //Read PPB Lock Register
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = PPBL[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == DYBRD)
+                    begin
+                    //Read DYB Access Register
+                        ReturnSectorID(sect,Address);
+                        pgm_page = Address / (PageSize+1);
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        DYBAR[7:0] = 8'bXXXXXXXX;
+
+                        if (RdPswdProtMode == 0)
+                        begin
+                            if (DYB_bits[sect] == 1)
+                                DYBAR[7:0] = 8'hFF;
+                            else
+                            begin
+                                DYBAR[7:0] = 8'h0;
+                            end
+                        end
+                        SOut_zd = DYBAR[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == PPBRD)
+                    begin
+                    //Read PPB Access Register
+                        ReturnSectorID(sect,Address);
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        PPBAR[7:0] = 8'bXXXXXXXX;
+                        if (RdPswdProtMode == 0)
+                        begin
+                            if (PPB_bits[sect] == 1)
+                                PPBAR[7:0] = 8'hFF;
+                            else
+                            begin
+                                PPBAR[7:0] = 8'h0;
+                            end
+                        end
+                        SOut_zd = PPBAR[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+            end
+
+            AUTOBOOT:
+            begin
+                if (start_autoboot == 1)
+                begin
+                    if (oe)
+                    begin
+                        any_read = 1'b1;
+                        if (QUAD == 1)
+                        begin
+                            if (ABSD > 0)      //If ABSD > 0,
+                            begin              //max SCK frequency is 104MHz
+                                rd_fast = 1'b0;
+                                rd_slow = 1'b0;
+                                dual    = 1'b1;
+                                ddr     = 1'b0;
+                            end
+                            else // If ABSD = 0, max SCK frequency is 50 MHz
+                            begin
+                                rd_fast = 1'b0;
+                                rd_slow = 1'b1;
+                                dual    = 1'b0;
+                                ddr     = 1'b0;
+                            end
+                            data_out[7:0] = Mem[read_addr];
+                            HOLDNegOut_zd = data_out[7-4*read_cnt];
+                            WPNegOut_zd   = data_out[6-4*read_cnt];
+                            SOut_zd   = data_out[5-4*read_cnt];
+                            SIOut_zd   = data_out[4-4*read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 2)
+                            begin
+                                read_cnt = 0;
+                                read_addr = read_addr + 1;
+                            end
+                        end
+                        else
+                        begin
+                            if (ABSD > 0)      //If ABSD > 0,
+                            begin              //max SCK frequency is 133MHz
+                                rd_fast = 1'b1;
+                                rd_slow = 1'b0;
+                                dual    = 1'b0;
+                                ddr     = 1'b0;
+                            end
+                            else // If ABSD = 0, max SCK frequency is 50 MHz
+                            begin
+                                rd_fast = 1'b0;
+                                rd_slow = 1'b1;
+                                dual    = 1'b0;
+                                ddr     = 1'b0;
+                            end
+                            data_out[7:0] = Mem[read_addr];
+                            SOut_zd = data_out[7-read_cnt];
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (oe_z)
+                    begin
+                        if (QUAD == 1)
+                        begin
+                            if (ABSD > 0)      //If ABSD > 0,
+                            begin              //max SCK frequency is 104MHz
+                                rd_fast = 1'b0;
+                                rd_slow = 1'b0;
+                                dual    = 1'b1;
+                                ddr     = 1'b0;
+                            end
+                            else // If ABSD = 0, max SCK frequency is 50 MHz
+                            begin
+                                rd_fast = 1'b0;
+                                rd_slow = 1'b1;
+                                dual    = 1'b0;
+                                ddr     = 1'b0;
+                            end
+                        end
+                        else
+                        begin
+                            if (ABSD > 0)      //If ABSD > 0,
+                            begin              //max SCK frequency is 133MHz
+                                rd_fast = 1'b1;
+                                rd_slow = 1'b0;
+                                dual    = 1'b0;
+                                ddr     = 1'b0;
+                            end
+                            else // If ABSD = 0, max SCK frequency is 50 MHz
+                            begin
+                                rd_fast = 1'b0;
+                                rd_slow = 1'b1;
+                                dual    = 1'b0;
+                                ddr     = 1'b0;
+                            end
+                        end
+                        HOLDNegOut_zd = 1'bZ;
+                        WPNegOut_zd   = 1'bZ;
+                        SOut_zd       = 1'bZ;
+                        SIOut_zd      = 1'bZ;
+                    end
+                end
+            end
+
+            WRITE_SR:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (WDONE == 1)
+                begin
+                    Status_reg1[0] = 1'b0; //WIP
+                    Status_reg1[1] = 1'b0; //WEL
+                    //SRWD bit
+                    Status_reg1[7] = Status_reg1_in[7]; //MSB first
+
+//                     if (LOCK == 0)
+//                     begin
+                        if (FREEZE == 0)
+                        //The Freeze Bit, when set to 1, locks the current
+                        //state of the BP2-0 bits in Status Register,
+                        //the TBPROT and TBPARM bits in the Config Register
+                        //As long as the FREEZE bit remains cleared to logic
+                        //'0', the other bits of the Configuration register
+                        //including FREEZE are writeable.
+                        begin
+                            Status_reg1[4] = Status_reg1_in[4];//BP2
+                            Status_reg1[3] = Status_reg1_in[3];//BP1
+                            Status_reg1[2] = Status_reg1_in[2];//BP0
+
+                            BP_bits = {Status_reg1[4],Status_reg1[3],
+                                       Status_reg1[2]};
+                            if (TBPROT == 1'b0 && INITIAL_CONFIG == 1'b0)
+                            begin
+                                Config_reg1[5] = Config_reg1_in[5];//TBPROT
+                            end
+                            if (TBPARM == 1'b0 && INITIAL_CONFIG == 1'b0 &&
+                                tmp_char2 == "0")
+                            begin
+                                Config_reg1[2] = Config_reg1_in[2];//TBPARM
+                                change_TBPARM = 1'b1;
+                                #1000 change_TBPARM = 1'b0;
+                            end
+                            change_BP = 1'b1;
+                            #1000 change_BP = 1'b0;
+                        end
+//                     end
+
+                    Config_reg1[7] = Config_reg1_in[7];//LC1
+                    Config_reg1[6] = Config_reg1_in[6];//LC0
+                    Config_reg1[1] = Config_reg1_in[1];//QUAD
+
+                    if (FREEZE == 1'b0)
+                    begin
+                        Config_reg1[0] = Config_reg1_in[0];//FREEZE
+                    end
+
+//                     if (WRLOCKENABLE== 1'b1 && LOCK == 1'b0)
+//                     begin
+//                         Config_reg1[4] = Config_reg1_in[4];//LOCK
+//                         WRLOCKENABLE = 1'b0;
+//                     end
+                    if (BPNV == 1'b0)
+                    begin
+                        Config_reg1[3] = Config_reg1_in[3];//BPNV
+                    end
+                end
+            end
+
+            PAGE_PG :
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if(current_state_event && current_state == PAGE_PG)
+                begin
+                    if (~PDONE)
+                    begin
+                        ADDRHILO_PG(AddrLo, AddrHi, Addr);
+                        cnt = 0;
+
+                        for (i=0;i<=wr_cnt;i=i+1)
+                        begin
+                            new_int = WData[i];
+                            old_int = Mem[Addr + i - cnt];
+                            if (new_int > -1)
+                            begin
+                                new_bit = new_int;
+                                if (old_int > -1)
+                                begin
+                                    old_bit = old_int;
+                                    for(j=0;j<=7;j=j+1)
+                                    begin
+                                        if (~old_bit[j])
+                                            new_bit[j]=1'b0;
+                                    end
+                                    new_int=new_bit;
+                                end
+                                WData[i]= new_int;
+                            end
+                            else
+                            begin
+                                WData[i] = -1;
+                            end
+
+                            Mem[Addr + i - cnt] = - 1;
+                            if ((Addr + i) == AddrHi)
+                            begin
+
+                                Addr = AddrLo;
+                                cnt = i + 1;
+                            end
+                        end
+                    end
+                    cnt = 0;
+                end
+
+                if (PDONE)
+                begin
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                    quad_pg        = 0;
+                    for (i=0;i<=wr_cnt;i=i+1)
+                    begin
+                        Mem[Addr_tmp + i - cnt] = WData[i];
+                        if ((Addr_tmp + i) == AddrHi)
+                        begin
+                            Addr_tmp = AddrLo;
+                            cnt = i + 1;
+                        end
+                    end
+                end
+
+                if (Instruct)
+                begin
+                    if (Instruct == PGSP && ~PRGSUSP_in)
+                    begin
+                        if (~RES_TO_SUSP_MIN_TIME)
+                        begin
+                            PGSUSP = 1'b1;
+                            PGSUSP <= #5 1'b0;
+                            PRGSUSP_in = 1'b1;
+                            if (RES_TO_SUSP_TYP_TIME)
+                            begin
+                                $display("Typical periods are needed for ",
+                                         "Program to progress to completion");
+                            end
+                        end
+                        else
+                        begin
+                            $display("Minimum for tPRS is not satisfied! ",
+                                     "PGSP command is ignored");
+                        end
+                    end
+                end
+            end
+
+            PG_SUSP:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+
+                if (PRGSUSP_out && PRGSUSP_in)
+                begin
+                    PRGSUSP_in = 1'b0;
+                    //The RDY/BSY bit in the Status Register will indicate that
+                    //the device is ready for another operation.
+                    Status_reg1[0] = 1'b0;
+                    //The Program Suspend (PS) bit in the Status Register will
+                    //be set to the logical “1” state to indicate that the
+                    //program operation has been suspended.
+                    Status_reg2[0] = 1'b1;
+                    PDONE = 1'b1;
+                end
+
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == BRRD)
+                    begin
+                    //Read Bank Address Register
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = Bank_Addr_reg[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    //Read Array Operations
+                    else if (Instruct == READ || Instruct == RD4 ||
+                            Instruct == FSTRD || Instruct == FSTRD4 ||
+                            Instruct == DDRFR || Instruct == DDRFR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == READ || Instruct == RD4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b1;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        else if (Instruct == DDRFR || Instruct == DDRFR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b1;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        if (pgm_page != read_addr / (PageSize+1))
+                        begin
+                            if ((Instruct == DDRFR || Instruct == DDRFR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                data_out[7:0] = VDLR_reg;
+                                SOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                SOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+
+                            end
+                        end
+                        else
+                        begin
+                            SOut_zd  = 8'bxxxxxxxx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == DOR || Instruct == DOR4  ||
+                            Instruct == DIOR || Instruct == DIOR4 ||
+                            Instruct == DDRDIOR || Instruct == DDRDIOR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if (pgm_page != read_addr / (PageSize+1))
+                        begin
+                            if ((Instruct == DDRDIOR || Instruct == DDRDIOR4) &&
+                               (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                data_out[7:0] = VDLR_reg;
+                                SOut_zd = data_out[7-read_cnt];
+                                SIOut_zd = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                SOut_zd = data_out[7-2*read_cnt];
+                                SIOut_zd = data_out[6-2*read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 4)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+                            end
+                        end
+                        else
+                        begin
+                            SOut_zd = 1'bx;
+                            SIOut_zd = 1'bx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 4)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == QOR || Instruct == QOR4  ||
+                            Instruct == QIOR || Instruct == QIOR4 ||
+                            Instruct == DDRQIOR || Instruct == DDRQIOR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if (pgm_page != read_addr / (PageSize+1))
+                        begin
+                            if ((Instruct == DDRQIOR || Instruct == DDRQIOR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                // Data Learning Pattern (DLP)
+                                // is enabled Optional DLP
+                                data_out[7:0] = VDLR_reg;
+                                HOLDNegOut_zd= data_out[7-read_cnt];
+                                WPNegOut_zd  = data_out[7-read_cnt];
+                                SOut_zd  = data_out[7-read_cnt];
+                                SIOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                HOLDNegOut_zd = data_out[7-4*read_cnt];
+                                WPNegOut_zd   = data_out[6-4*read_cnt];
+                                SOut_zd   = data_out[5-4*read_cnt];
+                                SIOut_zd   = data_out[4-4*read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 2)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+                            end
+                        end
+                        else
+                        begin
+                            HOLDNegOut_zd = 1'bx;
+                            WPNegOut_zd   = 1'bx;
+                            SOut_zd   = 1'bx;
+                            SIOut_zd   = 1'bx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 2)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                end
+                else if (oe_z)
+                begin
+                    if (Instruct == READ || Instruct == RD4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b1;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    else if (Instruct == DDRFR || Instruct == DDRFR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DOR || Instruct == DOR4  ||
+                             Instruct == DIOR || Instruct == DIOR4 ||
+                             Instruct == QOR || Instruct == QOR4  ||
+                             Instruct == QIOR || Instruct == QIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b0;
+                    end
+                    else if (Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b1;
+                    end
+                    else
+                    begin
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (falling_edge_write)
+                begin
+                    if (Instruct == BRWR)
+                    begin
+                        Bank_Addr_reg[7] = Bank_Addr_reg_in[7];
+                        Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                        if(Bank_Addr_reg_in[1] == 1)
+                        begin
+                            $display ("WARNING: Changing values of ");
+                            $display ("Bank Address Register");
+                            $display ("BA25 is not allowed!!!");
+                        end
+                    end
+                    else if (Instruct == WRR && BAR_ACC == 1)
+                    begin
+                    // Write to the lower address bits of the BAR
+                        if (P_ERR == 0 && E_ERR == 0)
+                        begin
+                            Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                            if(Bank_Addr_reg_in[1] == 1)
+                            begin
+                                $display ("WARNING: Changing values of ");
+                                $display ("Bank Address Register");
+                                $display ("BA25 is not allowed!!!");
+                            end
+                        end
+                    end
+                    else if (Instruct == PGRS)
+                    begin
+                        Status_reg2[0] = 1'b0;
+                        Status_reg1[0] = 1'b1;
+                        PGRES = 1'b1;
+                        PGRES <= #5 1'b0;
+                        RES_TO_SUSP_MIN_TIME = 1'b1;
+                        RES_TO_SUSP_MIN_TIME <= #60000 1'b0;//60 ns
+                        RES_TO_SUSP_TYP_TIME = 1'b1;
+                        RES_TO_SUSP_TYP_TIME <= #100000000 1'b0;//100us
+                    end
+
+                    if (Instruct == BRAC && P_ERR == 0 && E_ERR == 0 &&
+                        RdPswdProtMode == 0)
+                    begin
+                        BAR_ACC = 1;
+                    end
+                    else
+                    begin
+                        BAR_ACC = 0;
+                    end
+                end
+            end
+
+            ERS_SUSP_PG_SUSP:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+
+                if (PRGSUSP_out && PRGSUSP_in)
+                begin
+                    PRGSUSP_in = 1'b0;
+                    //The RDY/BSY bit in the Status Register will indicate that
+                    //the device is ready for another operation.
+                    Status_reg1[0] = 1'b0;
+                    //The Program Suspend (PS) bit in the Status Register will
+                    //be set to the logical “1” state to indicate that the
+                    //program operation has been suspended.
+                    Status_reg2[0] = 1'b1;
+                end
+
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == BRRD)
+                    begin
+                    //Read Bank Address Register
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = Bank_Addr_reg[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    //Read Array Operations
+                    else if (Instruct == READ || Instruct == RD4 ||
+                            Instruct == FSTRD || Instruct == FSTRD4 ||
+                            Instruct == DDRFR || Instruct == DDRFR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == READ || Instruct == RD4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b1;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        else if (Instruct == DDRFR || Instruct == DDRFR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b1;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        if ((SectorSuspend != read_addr/(SecSize+1)) &&
+                        (pgm_page != read_addr / (PageSize+1)))
+                        begin
+                            if ((Instruct == DDRFR || Instruct == DDRFR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                data_out[7:0] = VDLR_reg;
+                                SOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                SOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+
+                            end
+                        end
+                        else
+                        begin
+                            SOut_zd  = 8'bxxxxxxxx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == DOR || Instruct == DOR4  ||
+                            Instruct == DIOR || Instruct == DIOR4 ||
+                            Instruct == DDRDIOR || Instruct == DDRDIOR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if ((SectorSuspend != read_addr/(SecSize+1)) &&
+                        (pgm_page != read_addr / (PageSize+1)))
+                        begin
+                            if ((Instruct == DDRDIOR || Instruct == DDRDIOR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                // Data Learning Pattern (DLP)
+                                // is enabled Optional DLP
+                                data_out[7:0] = VDLR_reg;
+                                SOut_zd = data_out[7-read_cnt];
+                                SIOut_zd = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                SOut_zd = data_out[7-2*read_cnt];
+                                SIOut_zd = data_out[6-2*read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 4)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+                            end
+                        end
+                        else
+                        begin
+                            SOut_zd = 1'bx;
+                            SIOut_zd = 1'bx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 4)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == QOR || Instruct == QOR4  ||
+                            Instruct == QIOR || Instruct == QIOR4 ||
+                            Instruct == DDRQIOR || Instruct == DDRQIOR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if ((SectorSuspend != read_addr/(SecSize+1)) &&
+                        (pgm_page != read_addr / (PageSize+1)))
+                        begin
+                            if ((Instruct == DDRQIOR || Instruct == DDRQIOR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                // Data Learning Pattern (DLP)
+                                // is enabled Optional DLP
+                                data_out[7:0] = VDLR_reg;
+                                HOLDNegOut_zd =data_out[7-read_cnt];
+                                WPNegOut_zd = data_out[7-read_cnt];
+                                SOut_zd = data_out[7-read_cnt];
+                                SIOut_zd = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                HOLDNegOut_zd = data_out[7-4*read_cnt];
+                                WPNegOut_zd   = data_out[6-4*read_cnt];
+                                SOut_zd   = data_out[5-4*read_cnt];
+                                SIOut_zd   = data_out[4-4*read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 2)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+                            end
+                        end
+                        else
+                        begin
+                            HOLDNegOut_zd = 1'bx;
+                            WPNegOut_zd   = 1'bx;
+                            SOut_zd   = 1'bx;
+                            SIOut_zd   = 1'bx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 2)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                end
+                else if (oe_z)
+                begin
+                    if (Instruct == READ || Instruct == RD4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b1;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    else if (Instruct == DDRFR || Instruct == DDRFR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DOR || Instruct == DOR4  ||
+                             Instruct == DIOR || Instruct == DIOR4 ||
+                             Instruct == QOR || Instruct == QOR4  ||
+                             Instruct == QIOR || Instruct == QIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b0;
+                    end
+                    else if (Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b1;
+                    end
+                    else
+                    begin
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (falling_edge_write)
+                begin
+                    if (Instruct == BRWR)
+                    begin
+                        Bank_Addr_reg[7] = Bank_Addr_reg_in[7];
+                        Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                        if(Bank_Addr_reg_in[1] == 1)
+                        begin
+                            $display ("WARNING: Changing values of ");
+                            $display ("Bank Address Register");
+                            $display ("BA25 is not allowed!!!");
+                        end
+                    end
+                    else if (Instruct == WRR && BAR_ACC == 1)
+                    begin
+                    // Write to the lower address bits of the BAR
+                        if (P_ERR == 0 && E_ERR == 0)
+                        begin
+                            Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                            if(Bank_Addr_reg_in[1] == 1)
+                            begin
+                                $display ("WARNING: Changing values of ");
+                                $display ("Bank Address Register");
+                                $display ("BA25 is not allowed!!!");
+                            end
+                        end
+                    end
+                    else if (Instruct == PGRS)
+                    begin
+                        Status_reg2[0] = 1'b0;
+                        Status_reg1[0] = 1'b1;
+                        PGRES = 1'b1;
+                        PGRES <= #5 1'b0;
+                        RES_TO_SUSP_MIN_TIME = 1'b1;
+                        RES_TO_SUSP_MIN_TIME <= #60000 1'b0;//60 ns
+                        RES_TO_SUSP_TYP_TIME = 1'b1;
+                        RES_TO_SUSP_TYP_TIME <= #100000000 1'b0;//100us
+                    end
+
+                    if (Instruct == BRAC && P_ERR == 0 && E_ERR == 0 &&
+                        RdPswdProtMode == 0)
+                    begin
+                        BAR_ACC = 1;
+                    end
+                    else
+                    begin
+                        BAR_ACC = 0;
+                    end
+                end
+            end
+
+            OTP_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if(current_state_event && current_state == OTP_PG)
+                begin
+                    if (~PDONE)
+                    begin
+                        if (Address + wr_cnt <= OTPHiAddr)
+                        begin
+                            for (i=0;i<=wr_cnt;i=i+1)
+                            begin
+                                new_int = WData[i];
+                                old_int = OTPMem[Addr + i];
+                                if (new_int > -1)
+                                begin
+                                    new_bit = new_int;
+                                    if (old_int > -1)
+                                    begin
+                                        old_bit = old_int;
+                                        for(j=0;j<=7;j=j+1)
+                                        begin
+                                            if (~old_bit[j])
+                                                new_bit[j] = 1'b0;
+                                        end
+                                        new_int = new_bit;
+                                    end
+                                    WData[i] = new_int;
+                                end
+                                else
+                                begin
+                                    WData[i] = -1;
+                                end
+                                OTPMem[Addr + i] =  -1;
+                            end
+                        end
+                        else
+                        begin
+                            $display ("Programming will reach over ");
+                            $display ("address limit of OTP array");
+                        end
+                    end
+                end
+
+                if (PDONE)
+                begin
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                    for (i=0;i<=wr_cnt;i=i+1)
+                    begin
+                        OTPMem[Addr + i] = WData[i];
+                    end
+                    LOCK_BYTE1 = OTPMem[16];
+                    LOCK_BYTE2 = OTPMem[17];
+                    LOCK_BYTE3 = OTPMem[18];
+                    LOCK_BYTE4 = OTPMem[19];
+                end
+            end
+
+            SECTOR_ERS:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if(current_state_event && current_state == SECTOR_ERS)
+                begin
+                    if (~EDONE)
+                    begin
+                        ADDRHILO_SEC(AddrLo, AddrHi, Addr);
+                        for (i=AddrLo;i<=AddrHi;i=i+1)
+                        begin
+                            Mem[i] = -1;
+                        end
+                    end
+                end
+
+                if (EDONE == 1)
+                begin
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                    for (i=AddrLo;i<=AddrHi;i=i+1)
+                    begin
+                        Mem[i] = MaxData;
+
+                        pgm_page = i / (PageSize+1);
+//                        QPP_page[pgm_page] = 1'b0;
+                    end
+                end
+                else if (Instruct == ERSP && ~ERSSUSP_in)
+                begin
+                    ESUSP = 1'b1;
+                    ESUSP <= #5 1'b0;
+                    ERSSUSP_in = 1'b1;
+                    if (RES_TO_SUSP_TYP_TIME)
+                    begin
+                        $display("Typical periods are needed for ",
+                                 "Program to progress to completion");
+                    end
+                end
+            end
+
+            BULK_ERS:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if(current_state_event && current_state == BULK_ERS)
+                begin
+                    if (~EDONE)
+                    begin
+                        for (i=0;i<=AddrRANGE;i=i+1)
+                        begin
+                            ReturnSectorID(sect,i);
+                            if (PPB_bits[sect] == 1 && DYB_bits[sect] == 1)
+                            begin
+                                Mem[i] = -1;
+                            end
+                        end
+
+                    end
+                end
+
+                if (EDONE == 1)
+                begin
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                    for (i=0;i<=AddrRANGE;i=i+1)
+                    begin
+                        ReturnSectorID(sect,i);
+                        if (PPB_bits[sect] == 1 && DYB_bits[sect] == 1)
+                        begin
+                            Mem[i] = MaxData;
+
+                            pgm_page = i / (PageSize+1);
+//                            QPP_page[pgm_page] = 1'b0;
+                        end
+                    end
+                end
+            end
+
+            ERS_SUSP:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (ERSSUSP_out == 1)
+                begin
+                    ERSSUSP_in = 0;
+                    //The Erase Suspend (ES) bit in the Status Register will
+                    //be set to the logical “1” state to indicate that the
+                    //erase operation has been suspended.
+                    Status_reg2[1] = 1'b1;
+                    //The WIP bit in the Status Register will indicate that
+                    //the device is ready for another operation.
+                    Status_reg1[0] = 1'b0;
+                end
+
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == DYBRD)
+                    begin
+                    //Read DYB Access Register
+                        ReturnSectorID(sect,Address);
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        if (DYB_bits[sect] == 1)
+                            DYBAR[7:0] = 8'hFF;
+                        else
+                        begin
+                            DYBAR[7:0] = 8'h0;
+                        end
+                        SOut_zd = DYBAR[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == BRRD)
+                    begin
+                    //Read Bank Address Register
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        SOut_zd = Bank_Addr_reg[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == PPBRD)
+                    begin
+                    //Read PPB Access Register
+                        ReturnSectorID(sect,Address);
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                        PPBAR[7:0] = 8'bXXXXXXXX;
+                        if (RdPswdProtMode == 0)
+                        begin
+                            if (PPB_bits[sect] == 1)
+                                PPBAR[7:0] = 8'hFF;
+                            else
+                            begin
+                                PPBAR[7:0] = 8'h0;
+                            end
+                        end
+                        SOut_zd = PPBAR[7-read_cnt];
+                        read_cnt  = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == READ || Instruct == RD4 ||
+                            Instruct == FSTRD || Instruct == FSTRD4 ||
+                            Instruct == DDRFR || Instruct == DDRFR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == READ || Instruct == RD4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b1;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        else if (Instruct == DDRFR || Instruct == DDRFR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b1;
+                            rd_slow = 1'b0;
+                            dual    = 1'b0;
+                            ddr     = 1'b0;
+                        end
+                        if ((PARAM_REGION &&
+                             SectorSuspend != read_addr/(SecSize+1)) ||
+                            (~PARAM_REGION &&
+                             SectorSuspend != read_addr/(SecSize+1)+30*b_act))
+                        begin
+                            if ((Instruct == DDRFR || Instruct == DDRFR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                // Data Learning Pattern (DLP)
+                                // is enabled Optional DLP
+                                data_out[7:0] = VDLR_reg;
+                                SOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                SOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+                            end
+                        end
+                        else
+                        begin
+                            SOut_zd  = 1'bx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 8)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == DOR || Instruct == DOR4  ||
+                            Instruct == DIOR || Instruct == DIOR4 ||
+                            Instruct == DDRDIOR || Instruct == DDRDIOR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if ((PARAM_REGION &&
+                             SectorSuspend != read_addr/(SecSize+1)) ||
+                            (~PARAM_REGION &&
+                             SectorSuspend != read_addr/(SecSize+1)+30*b_act))
+                        begin
+                            if ((Instruct == DDRDIOR || Instruct == DDRDIOR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                // Data Learning Pattern (DLP)
+                                // is enabled Optional DLP
+                                data_out[7:0] = VDLR_reg;
+                                SOut_zd = data_out[7-read_cnt];
+                                SIOut_zd = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                SOut_zd = data_out[7-2*read_cnt];
+                                SIOut_zd = data_out[6-2*read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 4)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+                            end
+                        end
+                        else
+                        begin
+                            SOut_zd = 1'bx;
+                            SIOut_zd = 1'bx;
+                            read_cnt = read_cnt + 1;
+                            if (read_cnt == 4)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                    else if (Instruct == QOR  || Instruct == QOR4  ||
+                            Instruct == QIOR || Instruct == QIOR4 ||
+                            Instruct == DDRQIOR || Instruct == DDRQIOR4 )
+                    begin
+                        //Read Memory array
+                        if (Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b1;
+                        end
+                        else
+                        begin
+                            rd_fast = 1'b0;
+                            rd_slow = 1'b0;
+                            dual    = 1'b1;
+                            ddr     = 1'b0;
+                        end
+                        if ((PARAM_REGION &&
+                             SectorSuspend != read_addr/(SecSize+1)) ||
+                            (~PARAM_REGION &&
+                             SectorSuspend != read_addr/(SecSize+1)+30*b_act))
+                        begin
+                            if ((Instruct == DDRQIOR || Instruct == DDRQIOR4) &&
+                                (VDLR_reg != 8'b00000000) && start_dlp)
+                            begin
+                                // Data Learning Pattern (DLP)
+                                // is enabled Optional DLP
+                                data_out[7:0] = VDLR_reg;
+                                HOLDNegOut_zd= data_out[7-read_cnt];
+                                WPNegOut_zd  = data_out[7-read_cnt];
+                                SOut_zd  = data_out[7-read_cnt];
+                                SIOut_zd  = data_out[7-read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 8)
+                                begin
+                                    read_cnt  = 0;
+                                    start_dlp = 1'b0;
+                                end
+                            end
+                            else
+                            begin
+                                data_out[7:0] = Mem[read_addr];
+                                HOLDNegOut_zd = data_out[7-4*read_cnt];
+                                WPNegOut_zd   = data_out[6-4*read_cnt];
+                                SOut_zd   = data_out[5-4*read_cnt];
+                                SIOut_zd   = data_out[4-4*read_cnt];
+                                read_cnt = read_cnt + 1;
+                                if (read_cnt == 2)
+                                begin
+                                    read_cnt = 0;
+                                    if (read_addr == AddrRANGE)
+                                        read_addr = 0;
+                                    else
+                                        read_addr = read_addr + 1;
+                                end
+                            end
+                        end
+                        else
+                        begin
+                            HOLDNegOut_zd = 1'bx;
+                            WPNegOut_zd   = 1'bx;
+                            SOut_zd   = 1'bx;
+                            SIOut_zd   = 1'bx;
+                            if (read_cnt == 2)
+                            begin
+                                read_cnt = 0;
+                                if (read_addr == AddrRANGE)
+                                    read_addr = 0;
+                                else
+                                    read_addr = read_addr + 1;
+                            end
+                        end
+                    end
+                end
+                else if (oe_z)
+                begin
+                    if (Instruct == READ || Instruct == RD4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b1;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    else if (Instruct == DDRFR || Instruct == DDRFR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b1;
+                    end
+                    else if (Instruct == DOR || Instruct == DOR4  ||
+                             Instruct == DIOR || Instruct == DIOR4 ||
+                             Instruct == QOR || Instruct == QOR4  ||
+                             Instruct == QIOR || Instruct == QIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b0;
+                    end
+                    else if (Instruct == DDRQIOR || Instruct == DDRQIOR4)
+                    begin
+                        rd_fast = 1'b0;
+                        rd_slow = 1'b0;
+                        dual    = 1'b1;
+                        ddr     = 1'b1;
+                    end
+                    else
+                    begin
+                        rd_fast = 1'b1;
+                        rd_slow = 1'b0;
+                        dual    = 1'b0;
+                        ddr     = 1'b0;
+                    end
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (falling_edge_write)
+                begin
+                    if ((Instruct == PP || Instruct == PP4) && WEL == 1)
+                    begin
+                        if ((PARAM_REGION &&
+                             SectorSuspend != Address/(SecSize+1)) ||
+                            (~PARAM_REGION &&
+                             SectorSuspend != Address/(SecSize+1)+30*b_act))
+                        begin
+                            ReturnSectorID(sect,Address);
+                            if (Sec_Prot[sect] == 0 &&
+                                PPB_bits[sect]== 1 && DYB_bits[sect]== 1)
+                            begin
+                                PSTART = 1'b1;
+                                PSTART <= #5 1'b0;
+                                PGSUSP  = 0;
+                                PGRES   = 0;
+                                Status_reg1[0] = 1'b1;
+                                SA      = sect;
+                                Addr    = Address;
+                                Addr_tmp= Address;
+                                wr_cnt  = Byte_number;
+                                for (i=wr_cnt;i>=0;i=i-1)
+                                begin
+                                    if (Viol != 0)
+                                        WData[i] = -1;
+                                    else
+                                        WData[i] = WByte[i];
+                                end
+                            end
+                            else
+                            begin
+                                Status_reg1[1] = 1'b0;
+                                Status_reg1[6] = 1'b1;
+                            end
+                        end
+                        else
+                        begin
+                            Status_reg1[1] = 1'b0;
+                            Status_reg1[6] = 1'b1;
+                        end
+                    end
+                    else if ((Instruct == QPP || Instruct == QPP4) && WEL == 1)
+                    begin
+                        if ((PARAM_REGION &&
+                             SectorSuspend != Address/(SecSize+1)) ||
+                            (~PARAM_REGION &&
+                             SectorSuspend != Address/(SecSize+1)+30*b_act))
+                        begin
+                            ReturnSectorID(sect,Address);
+                            pgm_page = Address / (PageSize+1);
+
+                            if (Sec_Prot[sect] == 0 &&
+                                PPB_bits[sect]== 1 && DYB_bits[sect]== 1)
+                            begin
+                                PSTART = 1'b1;
+                                PSTART <= #5 1'b0;
+                                PGSUSP  = 0;
+                                PGRES   = 0;
+                                Status_reg1[0] = 1'b1;
+//                                QPP_page[pgm_page] = 1'b1;
+                                SA      = sect;
+                                Addr    = Address;
+                                Addr_tmp= Address;
+                                wr_cnt  = Byte_number;
+                                for (i=wr_cnt;i>=0;i=i-1)
+                                begin
+                                    if (Viol != 0)
+                                        WData[i] = -1;
+                                    else
+                                        WData[i] = WByte[i];
+                                end
+                            end
+                            else
+                            begin
+                                Status_reg1[1] = 1'b0;
+                                Status_reg1[6] = 1'b1;
+                            end
+                        end
+                        else
+                        begin
+                            Status_reg1[1] = 1'b0;
+                            Status_reg1[6] = 1'b1;
+                        end
+                    end
+                    else if (Instruct == WREN)
+                        Status_reg1[1] = 1'b1;
+                    else if (Instruct == CLSR)
+                    begin
+                    //The Clear Status Register Command resets bit SR1[5]
+                    //(Erase Fail Flag) and bit SR1[6] (Program Fail Flag)
+                        Status_reg1[5] = 0;
+                        Status_reg1[6] = 0;
+                    end
+                    else if (Instruct == BRWR)
+                    begin
+                        Bank_Addr_reg[7] = Bank_Addr_reg_in[7];
+                        Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                        if(Bank_Addr_reg_in[1] == 1)
+                        begin
+                            $display ("WARNING: Changing values of ");
+                            $display ("Bank Address Register");
+                            $display ("BA25 is not allowed!!!");
+                        end
+                    end
+                    else if (Instruct == WRR && BAR_ACC == 1)
+                    begin
+                    // Write to the lower address bits of the BAR
+                        if (P_ERR == 0 && E_ERR == 0)
+                        begin
+                            Bank_Addr_reg[0] = Bank_Addr_reg_in[0];
+                            if(Bank_Addr_reg_in[1] == 1)
+                            begin
+                                $display ("WARNING: Changing values of ");
+                                $display ("Bank Address Register");
+                                $display ("BA25 is not allowed!!!");
+                            end
+                        end
+                    end
+                    else if (Instruct == DYBWR  && WEL == 1)
+                    begin
+                        ReturnSectorID(sect,Address);
+                        pgm_page = Address / (PageSize+1);
+                        PSTART = 1'b1;
+                        PSTART <= #5 1'b0;
+                        Status_reg1[0]    = 1'b1;
+                    end
+                    else if (Instruct == ERRS)
+                    begin
+                        Status_reg2[1]  = 1'b0;
+                        Status_reg1[0] = 1'b1;
+                        if (BottomBoot)
+                        begin
+                            if (PARAM_REGION)
+                            begin
+                                Addr = SectorSuspend*(SecSize+1);
+                            end
+                            else
+                            begin
+                                Addr = (SectorSuspend-30)*(SecSize+1);
+                            end
+                        end
+                        else
+                        begin
+                            Addr = SectorSuspend*(SecSize+1);
+                        end
+                        ADDRHILO_SEC(AddrLo, AddrHi, Addr);
+                        ERES = 1'b1;
+                        ERES <= #5 1'b0;
+                        RES_TO_SUSP_TYP_TIME = 1'b1;
+                        RES_TO_SUSP_TYP_TIME <= #100000000 1'b0;//100us
+                    end
+
+                    if (Instruct == BRAC && P_ERR == 0 && E_ERR == 0 &&
+                        RdPswdProtMode == 0)
+                    begin
+                        BAR_ACC = 1;
+                    end
+                    else
+                    begin
+                        BAR_ACC = 0;
+                    end
+                end
+            end
+
+            ERS_SUSP_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if(current_state_event && current_state == ERS_SUSP_PG)
+                begin
+                    if (~PDONE)
+                    begin
+                        ADDRHILO_PG(AddrLo, AddrHi, Addr);
+                        cnt = 0;
+                        for (i=0;i<=wr_cnt;i=i+1)
+                        begin
+                            new_int = WData[i];
+                            old_int = Mem[Addr + i - cnt];
+                            if (new_int > -1)
+                            begin
+                                new_bit = new_int;
+                                if (old_int > -1)
+                                begin
+                                    old_bit = old_int;
+                                    for(j=0;j<=7;j=j+1)
+                                    begin
+                                        if (~old_bit[j])
+                                            new_bit[j] = 1'b0;
+                                    end
+                                    new_int = new_bit;
+                                end
+                                WData[i] = new_int;
+                            end
+                            else
+                            begin
+                                WData[i] = -1;
+                            end
+
+                            if ((Addr + i) == AddrHi)
+                            begin
+                                Addr = AddrLo;
+                                cnt = i + 1;
+                            end
+                        end
+                    end
+                    cnt =0;
+                end
+
+                if(PDONE == 1)
+                begin
+                    Status_reg1[0] = 1'b0;//WIP
+                    Status_reg1[1] = 1'b0;//WEL
+                    for (i=0;i<=wr_cnt;i=i+1)
+                    begin
+                        Mem[Addr_tmp + i - cnt] = WData[i];
+                        if ((Addr_tmp + i) == AddrHi )
+                        begin
+                            Addr_tmp = AddrLo;
+                            cnt = i + 1;
+                        end
+                    end
+                end
+
+                if (Instruct)
+                begin
+                    if (Instruct == PGSP && ~PRGSUSP_in)
+                    begin
+                        if (~RES_TO_SUSP_MIN_TIME)
+                        begin
+                            PGSUSP = 1'b1;
+                            PGSUSP <= #5 1'b0;
+                            PRGSUSP_in = 1'b1;
+                            if (RES_TO_SUSP_TYP_TIME)
+                            begin
+                                $display("Typical periods are needed for ",
+                                         "Program to progress to completion");
+                            end
+                        end
+                        else
+                        begin
+                            $display("Minimum for tPRS is not satisfied! ",
+                                     "PGSP command is ignored");
+                        end
+                    end
+                end
+            end
+
+            PASS_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                new_pass = Password_reg_in;
+                old_pass = Password_reg;
+                for (i=0;i<=63;i=i+1)
+                begin
+                    if (old_pass[j] == 0)
+                        new_pass[j] = 0;
+                end
+
+                if (PDONE == 1)
+                begin
+                    Password_reg = new_pass;
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                end
+            end
+
+            PASS_UNLOCK:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PASS_TEMP == Password_reg)
+                begin
+                    PASS_UNLOCKED = 1'b1;
+                end
+                else
+                begin
+                    PASS_UNLOCKED = 1'b0;
+                end
+                if (PASSULCK_out == 1'b1)
+                begin
+                    if ((PASS_UNLOCKED == 1'b1) && (~PWDMLB))
+                    begin
+                        PPBL[0] = 1'b1;
+                        Status_reg1[0] = 1'b0; //WIP
+                    end
+                    else
+                    begin
+                        Status_reg1[6] = 1'b1;
+                        $display ("Incorrect Password");
+                        PASSACC_in = 1'b1;
+                    end
+                    Status_reg1[1] = 1'b0;
+                    PASSULCK_in = 1'b0;
+                end
+            end
+
+            PPB_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PDONE)
+                begin
+                    if (PPB_LOCK !== 0)
+                    begin
+                        PPB_bits[sect]= 1'b0;
+                        Status_reg1[0] = 1'b0;
+                        Status_reg1[1] = 1'b0;
+                    end
+                    else
+                    begin
+                        Status_reg1[5] = 1'b0;
+                        Status_reg1[0] = 1'b0;
+                        Status_reg1[1] = 1'b0;
+                    end
+                end
+            end
+
+            PPB_ERS:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PPBERASE_out == 1'b1)
+                begin
+                    if ((PPB_LOCK !== 0) && PPBOTP)
+                    begin
+                        PPB_bits = {542{1'b1}};
+                    end
+                    else
+                    begin
+                        Status_reg1[5] = 1'b1;
+                    end
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                    PPBERASE_in = 1'b0;
+                end
+            end
+
+            AUTOBOOT_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register 2
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PDONE)
+                begin
+                    for(i=0;i<=3;i=i+1)
+                        for(j=0;j<=7;j=j+1)
+                            AutoBoot_reg[i*8+j] =
+                            AutoBoot_reg_in[(3-i)*8+j];
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                end
+            end
+
+            PLB_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PDONE)
+                begin
+                    PPBL[0] = 1'b0;
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                end
+            end
+
+            DYB_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PDONE)
+                begin
+                    DYBAR = DYBAR_in;
+                    if (DYBAR == 8'hFF)
+                    begin
+                        DYB_bits[sect]= 1'b1;
+                    end
+                    else if (DYBAR == 8'h00)
+                    begin
+                        DYB_bits[sect]= 1'b0;
+                    end
+                    else
+                    begin
+                        Status_reg1[6] = 1'b1;
+                    end
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                end
+            end
+
+            ASP_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PDONE)
+                begin
+
+                    if (RPME == 1'b0 && ASP_reg_in[5] == 1'b1)
+                    begin
+                       Status_reg1[6] = 1'b1; //P_ERR
+                       $display("RPME bit is allready programmed");
+                    end
+                    else
+                    begin
+                        ASP_reg[5] = ASP_reg_in[5];//RPME
+                    end
+
+                    if (PPBOTP == 1'b0 && ASP_reg_in[3] == 1'b1)
+                    begin
+                       Status_reg1[6] = 1'b1; //P_ERR
+                       $display("PPBOTP bit is allready programmed");
+                    end
+                    else
+                    begin
+                        ASP_reg[3] = ASP_reg_in[3];//PPBOTP
+                    end
+
+                    if (PWDMLB == 1'b1 && PSTMLB == 1'b1)
+                    begin
+                        if (ASP_reg_in[2] == 1'b0 && ASP_reg_in[1] == 1'b0)
+                        begin
+                            $display("ASPR[2:1] = 00  Illegal condition");
+                            Status_reg1[6] = 1'b1; //P_ERR
+                        end
+                        else
+                        begin
+                            if (ASP_reg_in[2]!==1'b1 || ASP_reg_in[1]!==1'b1)
+                            begin
+                                ASPOTPFLAG = 1'b1;
+                            end
+                            ASP_reg[2] = ASP_reg_in[2];//PWDMLB
+                            ASP_reg[1] = ASP_reg_in[1];//PSTMLB
+                        end
+                    end
+
+                    Status_reg1[0] = 1'b0;
+                    Status_reg1[1] = 1'b0;
+                end
+            end
+
+            NVDLR_PG:
+            begin
+                rd_fast = 1'b1;
+                rd_slow = 1'b0;
+                dual    = 1'b0;
+                ddr     = 1'b0;
+                if (oe)
+                begin
+                    any_read = 1'b1;
+                    if (Instruct == RDSR)
+                    begin
+                    //Read Status Register 1
+                        SOut_zd = Status_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDSR2)
+                    begin
+                    //Read Status Register
+                        SOut_zd = Status_reg2[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                    else if (Instruct == RDCR)
+                    begin
+                        //Read Configuration Register 1
+                        SOut_zd = Config_reg1[7-read_cnt];
+                        read_cnt = read_cnt + 1;
+                        if (read_cnt == 8)
+                            read_cnt = 0;
+                    end
+                end
+                else if (oe_z)
+                begin
+                    HOLDNegOut_zd = 1'bZ;
+                    WPNegOut_zd   = 1'bZ;
+                    SOut_zd       = 1'bZ;
+                    SIOut_zd      = 1'bZ;
+                end
+
+                if (PDONE)
+                begin
+                    if (NVDLR_reg == 0)
+                    begin
+                        NVDLR_reg = NVDLR_reg_in;
+                        VDLR_reg = NVDLR_reg_in;
+                        Status_reg1[0] = 1'b0;
+                        Status_reg1[1] = 1'b0;
+                    end
+                    else
+                    begin
+                        Status_reg1[0] = 1'b0;
+                        Status_reg1[1] = 1'b0;
+                        Status_reg1[6] = 1'b1; //P_ERR
+                        $display("NVDLR bits allready programmed");
+                    end
+                end
+            end
+
+            RESET_STATE:
+            begin
+            //the default condition hardware reset
+            //The Bank Address Register is loaded to all zeroes
+                Bank_Addr_reg = 8'h0;
+                if (BPNV && ~FREEZE) //&& ~LOCK 
+                begin
+                    Status_reg1[2] = 1'b1;// BP0
+                    Status_reg1[3] = 1'b1;// BP1
+                    Status_reg1[4] = 1'b1;// BP2
+                    BP_bits = 3'b111;
+                    change_BP = 1'b1;
+                    #1000 change_BP = 1'b0;
+                end
+                //Resets the volatile bits in the Status register 1
+                Status_reg1[6] = 1'b0;
+                Status_reg1[5] = 1'b0;
+                Status_reg1[1] = 1'b0;
+                Status_reg1[0] = 1'b0;
+                //Resets the volatile bits in the Status register 2
+                Status_reg2[1] = 1'b0;
+                Status_reg2[0] = 1'b0;
+                //Resets the volatile bits in the Configuration register 1
+                Config_reg1[0] = 1'b0;
+                //On reset cycles the data pattern reverts back
+                //to what is in the NVDLR
+                VDLR_reg = NVDLR_reg;
+                start_dlp = 1'b0;
+                //Loads the Program Buffer with all ones
+                for(i=0;i<=511;i=i+1)
+                begin
+                    WData[i] = MaxData;
+                end
+                if (~PWDMLB)
+                    PPBL[0] = 1'b0;
+                else
+                    PPBL[0] = 1'b1;
+            end
+
+        endcase
+
+        //Output Disable Control
+        if (CSNeg_ipd )
+        begin
+            SOut_zd = 1'bZ;
+            SIOut_zd = 1'bZ;
+            HOLDNegOut_zd = 1'bZ;
+            WPNegOut_zd = 1'bZ;
+        end
+    end
+
+    assign fast_rd = rd_fast;
+    assign rd = rd_slow;
+    assign ddrd = ddr && ~ddr80;
+    assign ddrd80 = ddr && ddr80;
+    assign fast_ddr = ddr_fast;
+
+    always @(change_TBPARM, posedge PoweredUp)
+    begin
+        if (tmp_char2 == "0")
+        begin
+            if (TBPARM == 0)
+            begin
+                BottomBoot = 1;
+                b_act = 1;
+            end
+            else
+            begin
+                TopBoot     = 1;
+                BottomBoot  = 0;
+                b_act = 0;
+            end
+        end
+        else if (tmp_char2 == "1")
+        begin
+            UniformSec = 1;
+        end
+    end
+
+    always @(posedge change_BP)
+    begin
+        case (Status_reg1[4:2])
+
+            3'b000:
+            begin
+                Sec_Prot[541:0] = {542{1'b0}};
+            end
+            3'b001:
+            begin
+                if (tmp_char2 == "1")
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum256:(SecNum256+1)*63/64] = 2'b11;
+                        Sec_Prot[(SecNum256+1)*63/64-1 : 0] = 126'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum256+1)/64-1 : 0] = 2'b11;
+                        Sec_Prot[SecNum256 : (SecNum256+1)/64] = 126'h0;
+                    end
+                end
+                else if (tmp_char2 == "0" && TBPARM == 1)
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64:(SecNum64-29)*63/64] = {38{1'b1}};
+                        Sec_Prot[(SecNum64-29)*63/64-1 : 0]    = 504'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/64-1 : 0] = {8{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/64] = 534'h0;
+                    end
+                end
+                else
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64:(SecNum64-29)*63/64+30] = {8{1'b1}};
+                        Sec_Prot[(SecNum64-29)*63/64+29 : 0] = 534'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/64+29 : 0]        = {38{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/64+30] = 504'h0;
+                    end
+                end
+            end
+
+            3'b010:
+            begin
+                if (tmp_char2 == "1")
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum256 : (SecNum256+1)*31/32] = {4{1'b1}};
+                        Sec_Prot[(SecNum256+1)*31/32-1 : 0] = 124'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum256+1)/32-1 : 0] = {4{1'b1}};
+                        Sec_Prot[SecNum256 : (SecNum256+1)/32] = 124'h0;
+                    end
+                end
+                else if (tmp_char2 == "0" && TBPARM == 1)
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)*31/32] = {46{1'b1}};
+                        Sec_Prot[(SecNum64-29)*31/32-1 : 0] = 496'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/32-1 : 0] = {16{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/32] = 526'h0;
+                    end
+                end
+                else
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64:(SecNum64-29)*31/32+30] = {16{1'b1}};
+                        Sec_Prot[(SecNum64-29)*31/32+29 : 0] = 526'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/32+29 : 0] = {46{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/32+30] = 496'h0;
+                    end
+                end
+            end
+
+            3'b011:
+            begin
+                if (tmp_char2 == "1")
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum256 : (SecNum256+1)*15/16] = 8'hFF;
+                        Sec_Prot[(SecNum256+1)*15/16-1 : 0] = 120'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum256+1)/16-1 : 0] = 8'hFF;
+                        Sec_Prot[SecNum256 : (SecNum256+1)/16] = 120'h0;
+                    end
+                end
+                else if (tmp_char2 == "0" && TBPARM == 1)
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)*15/16] = {62{1'b1}};
+                        Sec_Prot[(SecNum64-29)*15/16-1 : 0] = 480'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/16-1 : 0] = {32{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/16] = 510'h0;
+                    end
+                end
+                else
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)*15/16+30]={32{1'b1}};
+                        Sec_Prot[(SecNum64-29)*15/16+29 : 0] = 510'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/16+29 : 0] ={62{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/16+30] = 480'h0;
+                    end
+                end
+            end
+
+            3'b100:
+            begin
+                if (tmp_char2 == "1")
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum256 : (SecNum256+1)*7/8] = {16{1'b1}};
+                        Sec_Prot[(SecNum256+1)*7/8-1 : 0] = 112'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum256+1)/8-1 : 0] = {16{1'b1}};
+                        Sec_Prot[SecNum256 : (SecNum256+1)/8] = 112'h0;
+                    end
+                end
+                else if (tmp_char2 == "0" && TBPARM == 1)
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)*7/8] = {94{1'b1}};
+                        Sec_Prot[(SecNum64-29)*7/8-1 : 0] = 448'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/8-1 : 0] = {64{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/8] = 478'h0;
+                    end
+                end
+                else
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)*7/8+30] ={64{1'b1}};
+                        Sec_Prot[(SecNum64-29)*7/8+29 : 0] = 478'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/8+29 : 0] = {94{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/8+30] = 448'h0;
+                    end
+                end
+            end
+
+            3'b101:
+            begin
+                if (tmp_char2 == "1")
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum256 : (SecNum256+1)*3/4] = {32{1'b1}};
+                        Sec_Prot[(SecNum256+1)*3/4-1 : 0] = 96'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum256+1)/4-1 : 0] = {32{1'b1}};
+                        Sec_Prot[SecNum256 : (SecNum256+1)/4] = 96'h0;
+                    end
+                end
+                else if (tmp_char2 == "0" && TBPARM == 1)
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)*3/4] = {158{1'b1}};
+                        Sec_Prot[(SecNum64-29)*3/4-1 : 0] = 384'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/4-1 : 0] = {128{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/4] = 414'h0;
+                    end
+                end
+                else
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)*3/4+30] = {128{1'b1}};
+                        Sec_Prot[(SecNum64-29)*3/4+29 : 0] = 414'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/4+29 : 0] = {158{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/4+30] = 384'h0;
+                    end
+                end
+            end
+
+            3'b110:
+            begin
+                if (tmp_char2 == "1")
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum256 : (SecNum256+1)/2] = {64{1'b1}};
+                        Sec_Prot[(SecNum256+1)/2-1 : 0] = 64'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum256+1)/2-1 : 0] = {64{1'b1}};
+                        Sec_Prot[SecNum256 : (SecNum256+1)/2] = 64'h0;
+                    end
+                end
+                else if (tmp_char2 == "0" && TBPARM == 1)
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)/2] = {286{1'b1}};
+                        Sec_Prot[(SecNum64-29)/2-1 : 0] = 256'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/2-1 : 0] = {256{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/2] = 286'h0;
+                    end
+                end
+                else
+                begin
+                    if (~TBPROT)
+                    begin
+                        Sec_Prot[SecNum64 : (SecNum64-29)/2+30] = {256{1'b1}};
+                        Sec_Prot[(SecNum64-29)/2+29 : 0] = 286'h0;
+                    end
+                    else
+                    begin
+                        Sec_Prot[(SecNum64-29)/2+29 : 0] = {286{1'b1}};
+                        Sec_Prot[SecNum64 : (SecNum64-29)/2+30] = 256'h0;
+                    end
+                end
+            end
+
+            3'b111:
+            begin
+                Sec_Prot[SecNum64:0] =  {542{1'b1}};
+            end
+        endcase
+    end
+
+    always @(SOut_zd or HOLDNeg_in or SIOut_zd)
+    begin
+        if (HOLDNeg_in == 0 && ~QUAD)
+        begin
+            hold_mode = 1'b1;
+            SIOut_z   = 1'bZ;
+            SOut_z    = 1'bZ;
+        end
+        else
+        begin
+            if (hold_mode == 1)
+            begin
+                SIOut_z <= #(tpd_HOLDNeg_SO) SIOut_zd;
+                SOut_z  <= #(tpd_HOLDNeg_SO) SOut_zd;
+                hold_mode = #(tpd_HOLDNeg_SO) 1'b0;
+            end
+            else
+            begin
+                SIOut_z = SIOut_zd;
+                SOut_z  = SOut_zd;
+                hold_mode = 1'b0;
+            end
+        end
+    end
+
+    ////////////////////////////////////////////////////////////////////////
+    // autoboot control logic
+    ////////////////////////////////////////////////////////////////////////
+    always @(rising_edge_SCK_ipd or current_state_event)
+    begin
+        if(current_state == AUTOBOOT)
+        begin
+            if (rising_edge_SCK_ipd)
+            begin
+                if (start_delay > 0)
+                    start_delay = start_delay - 1;
+            end
+
+            if (start_delay == 0)
+            begin
+                start_autoboot = 1;
+            end
+        end
+    end
+
+    ////////////////////////////////////////////////////////////////////////
+    // functions & tasks
+    ////////////////////////////////////////////////////////////////////////
+    // Procedure FDDR_DPL
+task Return_DLP;
+    input integer Instruct;
+    input integer EHP;
+    input integer Latency_code;
+    input integer dummy_cnt;
+    inout start_dlp;
+    begin
+        if (Instruct == DDRFR || Instruct == DDRFR4)
+        begin
+            if (EHP)
+            begin
+                if (Latency_code == 1)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 2 && dummy_cnt >= 1)
+                    start_dlp = 1'b1;
+                else if(Latency_code == 3 || Latency_code == 0)
+                begin
+                    start_dlp = 1'b0;
+                    $display("Warning at", $time);
+                    $display("Inappropriate latency is set during DPL mode");
+                end
+            end
+            else
+            begin
+
+                if (Latency_code == 3)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 0 && dummy_cnt >= 1)
+                    start_dlp = 1'b1;
+                else if(Latency_code == 1 && dummy_cnt >= 2)
+                    start_dlp = 1'b1;
+                else if(Latency_code == 2 && dummy_cnt >= 3)
+                    start_dlp = 1'b1;
+                else
+                    start_dlp = 1'b0;
+            end
+        end
+        if (Instruct == DDRDIOR || Instruct == DDRDIOR4)
+        begin
+            if (EHP)
+            begin
+                if (Latency_code == 1 && dummy_cnt >= 1)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 2 && dummy_cnt >= 2)
+                    start_dlp = 1'b1;
+                else if( Latency_code == 3 || Latency_code == 0)
+                begin
+                    start_dlp = 1'b0;
+                    $display("Warning at", $time);
+                    $display("Inappropriate latency is set during DPL mode");
+                end
+                else
+                    start_dlp = 1'b0;
+            end
+            else
+            begin
+                if (Latency_code == 0 && dummy_cnt >= 2)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 1 && dummy_cnt >= 3)
+                    start_dlp = 1'b1;
+                else if(Latency_code == 2 && dummy_cnt >= 4)
+                    start_dlp = 1'b1;
+                else
+                    start_dlp = 1'b0;
+            end
+        end
+        if ((Instruct == DDRQIOR || Instruct == DDRQIOR4) && QUAD)
+        begin
+            if (EHP)
+            begin
+                if (Latency_code == 0 && dummy_cnt >= 2)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 1 && dummy_cnt >= 3)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 2 && dummy_cnt >= 4)
+                    start_dlp = 1'b1;
+                else if( Latency_code == 3)
+                begin
+                    start_dlp = 1'b0;
+                    $display("Warning at", $time);
+                    $display("Inappropriate latency is");
+                    $display("set during DPL mode");
+                end
+                else
+                    start_dlp  = 1'b0;
+
+            end
+            else
+            begin
+                if (Latency_code == 0 && dummy_cnt >= 2)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 1 && dummy_cnt >= 3)
+                    start_dlp = 1'b1;
+                else if (Latency_code == 2 && dummy_cnt >= 4)
+                    start_dlp = 1'b1;
+                else if( Latency_code == 3)
+                begin
+                    start_dlp = 1'b0;
+                    $display("Warning at", $time);
+                    $display("Inappropriate latency is");
+                    $display("set during DPL mode");
+                end
+                else
+                    start_dlp = 1'b0;
+            end
+        end
+    end
+    endtask
+
+    function integer ReturnSectorIDRdPswdMd;
+        input reg TBPROT;
+    begin
+        if(TBPROT == 0)
+        begin
+            ReturnSectorIDRdPswdMd = 0;
+        end
+        else
+        begin
+            if (UniformSec)
+            begin
+                ReturnSectorIDRdPswdMd = SecNum256;
+            end
+            else
+            begin
+                ReturnSectorIDRdPswdMd = 511;
+            end
+        end
+    end
+    endfunction
+
+    // Procedure ADDRHILO_SEC
+    task ADDRHILO_SEC;
+    inout  AddrLOW;
+    inout  AddrHIGH;
+    input   Addr;
+    integer AddrLOW;
+    integer AddrHIGH;
+    integer Addr;
+    integer sector;
+    begin
+        if (tmp_char2 == "0")
+        begin
+            if (TBPARM == 0)
+            begin
+                if (Addr/(SecSize64+1) <= 1 &&
+                   (Instruct == P4E || Instruct == P4E4))  //4KB Sectors
+                begin
+                    sector   = Addr/(SecSize4+1);
+                    AddrLOW  = sector*(SecSize4+1);
+                    AddrHIGH = sector*(SecSize4+1) + SecSize4;
+                end
+                else
+                begin
+                    sector   = Addr/(SecSize64+1);
+                    AddrLOW  = sector*(SecSize64+1);
+                    AddrHIGH = sector*(SecSize64+1) + SecSize64;
+                end
+            end
+            else
+            begin
+                if (Addr/(SecSize64+1) >= 510 &&
+                   (Instruct == P4E || Instruct == P4E4)) //4KB Sectors
+                begin
+                    sector   = 510 + (Addr-(SecSize64+1)*510)/(SecSize4+1);
+                    AddrLOW  = 510*(SecSize64+1)+(sector-510)*(SecSize4+1);
+                    AddrHIGH = 510*(SecSize64+1)+
+                                   (sector-510)*(SecSize4+1) + SecSize4;
+                end
+                else
+                begin
+                    sector   = Addr/(SecSize64+1);
+                    AddrLOW  = sector*(SecSize64+1);
+                    AddrHIGH = sector*(SecSize64+1) + SecSize64;
+                end
+            end
+        end
+        else if (tmp_char2 == "1")
+        begin
+            sector   = Addr/(SecSize256+1);
+            AddrLOW  = sector*(SecSize256+1);
+            AddrHIGH = sector*(SecSize256+1) + SecSize256;
+        end
+    end
+    endtask
+
+    // Procedure ADDRHILO_PG
+    task ADDRHILO_PG;
+    inout  AddrLOW;
+    inout  AddrHIGH;
+    input   Addr;
+    integer AddrLOW;
+    integer AddrHIGH;
+    integer Addr;
+    integer page;
+    begin
+        page = Addr / (PageSize + 1);
+        AddrLOW = page * (PageSize + 1);
+        AddrHIGH = page * (PageSize + 1) + PageSize ;
+    end
+    endtask
+
+    // Procedure ReturnSectorID
+    task ReturnSectorID;
+    inout   sect;
+    input   Address;
+    integer sect;
+    integer Address;
+    integer conv;
+    begin
+        if (tmp_char2 == "0")
+        begin
+            conv = Address / (SecSize64+1);
+            if (BottomBoot)
+            begin
+                if (conv <= 1)      //4KB Sectors
+                begin
+                    sect = Address/(SecSize4+1);
+                end
+                else
+                begin
+                    sect = conv + 30;
+                end
+            end
+            else if (TopBoot)
+            begin
+                if (conv >= 510)       //4KB Sectors
+                begin
+                    sect = 510 + (Address-(SecSize64+1)*510)/(SecSize4+1);
+                end
+                else
+                begin
+                    sect = conv;
+                end
+            end
+        end
+        else
+        begin
+            sect = Address/(SecSize256+1);
+        end
+    end
+    endtask
+
+    always @(PPBL[0], ASP_reg)
+    begin
+        if (PPBL[0] == 0 && PWDMLB == 0 && RPME == 0 && RdPswdProtEnable)
+        begin
+            RdPswdProtMode = 1;
+            AutoBoot_reg[0] = 0;//AUTOBOOT is disabled when Read Password
+        end                     //Protection is enabled
+        else
+        begin
+            RdPswdProtMode = 0;
+        end
+    end
+
+    ///////////////////////////////////////////////////////////////////////////
+    // edge controll processes
+    ///////////////////////////////////////////////////////////////////////////
+
+    always @(posedge PoweredUp)
+    begin
+        rising_edge_PoweredUp = 1;
+        #1000 rising_edge_PoweredUp = 0;
+    end
+
+    always @(posedge SCK_ipd)
+    begin
+       rising_edge_SCK_ipd = 1'b1;
+       #1000 rising_edge_SCK_ipd = 1'b0;
+    end
+
+    always @(negedge SCK_ipd)
+    begin
+       falling_edge_SCK_ipd = 1'b1;
+       #1000 falling_edge_SCK_ipd = 1'b0;
+    end
+
+    always @(posedge read_out)
+    begin
+        rising_edge_read_out = 1'b1;
+        #1000 rising_edge_read_out = 1'b0;
+    end
+
+    always @(negedge write)
+    begin
+        falling_edge_write = 1;
+        #1000 falling_edge_write = 0;
+    end
+
+    always @(posedge PRGSUSP_out)
+    begin
+        PRGSUSP_out_event = 1;
+        #1000 PRGSUSP_out_event = 0;
+    end
+
+    always @(posedge ERSSUSP_out)
+    begin
+        ERSSUSP_out_event = 1;
+        #1000 ERSSUSP_out_event = 0;
+    end
+
+    always @(posedge CSNeg_ipd)
+    begin
+        rising_edge_CSNeg_ipd = 1'b1;
+        #1000 rising_edge_CSNeg_ipd = 1'b0;
+    end
+
+    always @(negedge CSNeg_ipd)
+    begin
+        falling_edge_CSNeg_ipd = 1'b1;
+        #1000 falling_edge_CSNeg_ipd = 1'b0;
+    end
+
+    always @(negedge RSTNeg_in)
+    begin
+        falling_edge_RSTNeg = 1'b1;
+        #50000 falling_edge_RSTNeg = 1'b0;
+    end
+
+    always @(posedge RSTNeg_in)
+    begin
+        rising_edge_RSTNeg = 1'b1;
+        #10000 rising_edge_RSTNeg = 1'b0;
+    end
+
+    always @(negedge RST)
+    begin
+        falling_edge_RST = 1'b1;
+        #10000 falling_edge_RST = 1'b0;
+    end
+
+    always @(posedge RST)
+    begin
+        rising_edge_RST = 1'b1;
+        #1000 rising_edge_RST = 1'b0;
+    end
+
+    always @(posedge PDONE)
+    begin
+        rising_edge_PDONE = 1'b1;
+        #1000 rising_edge_PDONE = 1'b0;
+    end
+
+    always @(posedge WDONE)
+    begin
+        rising_edge_WDONE = 1'b1;
+        #1000 rising_edge_WDONE = 1'b0;
+    end
+
+    always @(posedge WSTART)
+    begin
+        rising_edge_WSTART = 1'b1;
+        #1000 rising_edge_WSTART = 1'b0;
+    end
+
+    always @(posedge EDONE)
+    begin
+        rising_edge_EDONE = 1'b1;
+        #1000 rising_edge_EDONE = 1'b0;
+    end
+
+    always @(posedge ESTART)
+    begin
+        rising_edge_ESTART = 1'b1;
+        #1000 rising_edge_ESTART = 1'b0;
+    end
+
+    always @(posedge PSTART)
+    begin
+        rising_edge_PSTART = 1'b1;
+        #1000 rising_edge_PSTART = 1'b0;
+    end
+
+    always @(posedge Reseted)
+    begin
+        rising_edge_Reseted = 1'b1;
+        #1000 rising_edge_Reseted = 1'b0;
+    end
+
+    always @(negedge PASSULCK_in)
+    begin
+        falling_edge_PASSULCK_in = 1'b1;
+        #1000 falling_edge_PASSULCK_in = 1'b0;
+    end
+
+    always @(negedge PPBERASE_in)
+    begin
+        falling_edge_PPBERASE_in = 1'b1;
+        #1000 falling_edge_PPBERASE_in = 1'b0;
+    end
+
+    always @(Instruct)
+    begin
+        Instruct_event = 1'b1;
+        #1000 Instruct_event = 1'b0;
+    end
+
+    always @(change_addr)
+    begin
+        change_addr_event = 1'b1;
+        #1000 change_addr_event = 1'b0;
+    end
+
+    always @(next_state)
+    begin
+        next_state_event = 1'b1;
+        #1000 next_state_event = 1'b0;
+    end
+
+    always @(current_state)
+    begin
+        current_state_event = 1'b1;
+        #1000 current_state_event = 1'b0;
+    end
+
+    always @(posedge RST_out)
+    begin
+        rising_edge_RST_out = 1'b1;
+        #1000 rising_edge_RST_out = 1'b0;
+    end
+
+endmodule
diff --git a/verilog/dv/risc_boot/risc_boot_tb.v b/verilog/dv/risc_boot/risc_boot_tb.v
index a90c7b1..457dcf7 100644
--- a/verilog/dv/risc_boot/risc_boot_tb.v
+++ b/verilog/dv/risc_boot/risc_boot_tb.v
@@ -71,6 +71,7 @@
 
 `timescale 1 ns / 1 ps
 
+`include "s25fl256s.sv"
 `include "uprj_netlists.v"
 `include "caravel_netlists.v"
 `include "spiflash.v"
@@ -130,8 +131,9 @@
         begin
            $dumpfile("simx.vcd");
            $dumpvars(1,risc_boot_tb);
+           $dumpvars(1,risc_boot_tb.u_spi_flash_256mb);
            //$dumpvars(2,risc_boot_tb.uut);
-           $dumpvars(4,risc_boot_tb.uut.mprj.u_core);
+           $dumpvars(4,risc_boot_tb.uut.mprj);
            //$dumpvars(0,risc_boot_tb.u_user_spiflash);
 	   $display("Waveform Dump started");
         end
@@ -302,18 +304,22 @@
    //tri  user_flash_io2 = mprj_io[35];
    //tri  user_flash_io3 = mprj_io[36];
 
-   // Quard flash
-	spiflash #(
-		.FILENAME("user_uart.hex")
-	) u_user_spiflash (
-		.csb(user_flash_csb),
-		.clk(user_flash_clk),
-		.io0(mprj_io[32]),
-		.io1(mprj_io[33]),
-		.io2(mprj_io[34]),
-		.io3(mprj_io[35])	
-	);
 
+   // Quard flash
+     s25fl256s #(.mem_file_name("user_uart.hex"),
+	         .otp_file_name("none")) 
+		 u_spi_flash_256mb (
+           // Data Inputs/Outputs
+       .SI      (mprj_io[32]),
+       .SO      (mprj_io[33]),
+       // Controls
+       .SCK     (user_flash_clk),
+       .CSNeg   (user_flash_csb),
+       .WPNeg   (mprj_io[34]),
+       .HOLDNeg (mprj_io[35]),
+       .RSTNeg  (RSTB)
+
+       );
 
 //------------------------------------------------
 // Integrate the SDRAM 8 BIT Memory
diff --git a/verilog/dv/risc_boot/run_iverilog b/verilog/dv/risc_boot/run_iverilog
index 30d8ffd..e2f2a4d 100755
--- a/verilog/dv/risc_boot/run_iverilog
+++ b/verilog/dv/risc_boot/run_iverilog
@@ -18,7 +18,7 @@
 #add -DWFDUMP to enable waveform dump
 iverilog -DWFDUMP -g2005-sv -DFUNCTIONAL -DSIM -I $PDK_PATH \
 -I $CARAVEL_ROOT/verilog/dv/caravel -I $CARAVEL_ROOT/verilog/rtl \
--I ../model  -I ../agents  -I ../../../verilog/rtl \
+-I ../model  -I ../agents  -I ../../../verilog/rtl -I ../../../verilog \
 -I ../../../verilog/rtl/syntacore/scr1/src/includes    -I ../../../verilog/rtl/sdram_ctrl/src/defs \
 risc_boot_tb.v -o risc_boot.vvp 
 
diff --git a/verilog/dv/user_risc_boot/Makefile b/verilog/dv/user_risc_boot/Makefile
index 8c55f5e..a3a1ac8 100644
--- a/verilog/dv/user_risc_boot/Makefile
+++ b/verilog/dv/user_risc_boot/Makefile
@@ -26,6 +26,7 @@
 ## User Project Pointers
 UPRJ_VERILOG_PATH ?= ../../../verilog
 UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
+UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
 UPRJ_BEHAVIOURAL_MODELS = ../model
 UPRJ_BEHAVIOURAL_AGENTS = ../agents
 UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/syntacore/scr1/src/includes
@@ -63,14 +64,14 @@
 ifeq ($(SIM),RTL)
 	iverilog -g2005-sv -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
 	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
-	-I $(UPRJ_BEHAVIOURAL_MODELS)    -I $(UPRJ_RTL_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_MODELS)    -I $(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
 	-I $(UPRJ_BEHAVIOURAL_AGENTS)    \
 	-I $(UPRJ_INCLUDE_PATH1)    -I $(UPRJ_INCLUDE_PATH2) \
 	$< -o $@ 
 else  
-	iverilog -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+	iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
 	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
-	-I $(UPRJ_BEHAVIOURAL_MODELS) -I$(UPRJ_RTL_PATH)   -I $(UPRJ_VERILOG_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
 	-I $(UPRJ_BEHAVIOURAL_AGENTS)    \
 	$< -o $@ 
 endif
diff --git a/verilog/dv/user_risc_boot/uprj_netlists.v b/verilog/dv/user_risc_boot/uprj_netlists.v
index 24c1d6d..ae6502e 100644
--- a/verilog/dv/user_risc_boot/uprj_netlists.v
+++ b/verilog/dv/user_risc_boot/uprj_netlists.v
@@ -16,7 +16,7 @@
 // Include caravel global defines for the number of the user project IO pads 
 `include "defines.v"
 `define USE_POWER_PINS
-`define UNIT_DELAY #1
+`define UNIT_DELAY #0.1
 
 `ifdef GL
 
@@ -24,57 +24,29 @@
        `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
        `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
        `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
+       `include "libs.ref//sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__fakediode_2.v"
 
+        `include "glbl_cfg.v"
+        `include "sdram.v"
+        `include "spi_master.v"
+        `include "uart.v"
+        `include "wb_interconnect.v"
+        `include "user_project_wrapper.v"
+        `include "syntacore.v"
+        `include "wb_host.v"
+	`include "clk_skew_adjust.v"
 
-
-      `include "glbl_cfg.v"
-      `include "sdram.v"
-      `include "spi_master.v"
-      `include "uart.v"
-      `include "wb_interconnect.v"
-
-     `include "wb_host/src/wb_host.sv"
-     `include "lib/async_wb.sv"
-     `include "lib/registers.v"
-
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_hdu.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_tdu.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_ipic.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_csr.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_exu.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ialu.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_idu.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ifu.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_lsu.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_mprf.sv"
-     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_top.sv"
-     `include "syntacore/scr1/src/core/primitives/scr1_reset_cells.sv"
-     `include "syntacore/scr1/src/core/primitives/scr1_cg.sv"
-     `include "syntacore/scr1/src/core/scr1_clk_ctrl.sv"
-     `include "syntacore/scr1/src/core/scr1_tapc_shift_reg.sv"
-     `include "syntacore/scr1/src/core/scr1_tapc.sv"
-     `include "syntacore/scr1/src/core/scr1_tapc_synchronizer.sv"
-     `include "syntacore/scr1/src/core/scr1_core_top.sv"
-     `include "syntacore/scr1/src/core/scr1_dm.sv"
-     `include "syntacore/scr1/src/core/scr1_dmi.sv"
-     `include "syntacore/scr1/src/core/scr1_scu.sv"
-      
-     `include "syntacore/scr1/src/top/scr1_dmem_router.sv"
-     `include "syntacore/scr1/src/top/scr1_dp_memory.sv"
-     `include "syntacore/scr1/src/top/scr1_tcm.sv"
-     `include "syntacore/scr1/src/top/scr1_timer.sv"
-     `include "syntacore/scr1/src/top/scr1_dmem_wb.sv"
-     `include "syntacore/scr1/src/top/scr1_imem_wb.sv"
-     `include "syntacore/scr1/src/top/scr1_top_wb.sv"
-     `include "lib/sync_fifo.sv"
-     `include "lib/async_fifo.sv"  
 `else
+
      `include "libs.ref/sky130_fd_sc_hd/verilog/primitives.v"
      `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
      `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
      `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
 
+
      `include "spi_master/src/spim_top.sv"
+     `include "spi_master/src/spim_if.sv"
+     `include "spi_master/src/spim_fifo.sv"
      `include "spi_master/src/spim_regs.sv"
      `include "spi_master/src/spim_clkgen.sv"
      `include "spi_master/src/spim_ctrl.sv"
@@ -102,7 +74,6 @@
      `include "lib/registers.v"
      `include "lib/clk_ctl.v"
      `include "digital_core/src/glbl_cfg.sv"
-     `include "digital_core/src/digital_core.sv"
 
      `include "wb_host/src/wb_host.sv"
      `include "lib/async_wb.sv"
diff --git a/verilog/dv/user_risc_boot/user_risc_boot_tb.v b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
index 87bf24c..348ecd0 100644
--- a/verilog/dv/user_risc_boot/user_risc_boot_tb.v
+++ b/verilog/dv/user_risc_boot/user_risc_boot_tb.v
@@ -69,12 +69,12 @@
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 
-`default_nettype none
+`default_nettype wire
 
 `timescale 1 ns / 1 ns
 
+`include "s25fl256s.sv"
 `include "uprj_netlists.v"
-`include "spiflash.v"
 `include "mt48lc8m8a2.v"
 
 module user_risc_boot_tb;
@@ -126,7 +126,7 @@
 	`ifdef WFDUMP
 	   initial begin
 	   	$dumpfile("risc_boot.vcd");
-	   	$dumpvars(0, user_risc_boot_tb);
+	   	$dumpvars(2, user_risc_boot_tb);
 	   end
        `endif
 
@@ -259,10 +259,15 @@
 
    wire flash_clk = io_out[30];
    wire flash_csb = io_out[31];
-   tri  flash_io0 = (io_oeb[32]== 1'b0) ? io_out[32] : 1'bz;
-   tri  flash_io1 = (io_oeb[33]== 1'b0) ? io_out[33] : 1'bz;
-   tri  flash_io2 = (io_oeb[34]== 1'b0) ? io_out[34] : 1'bz;
-   tri  flash_io3 = (io_oeb[35]== 1'b0) ? io_out[35] : 1'bz;
+   // Creating Pad Delay
+   wire #1 io_oeb_32 = io_oeb[32];
+   wire #1 io_oeb_33 = io_oeb[33];
+   wire #1 io_oeb_34 = io_oeb[34];
+   wire #1 io_oeb_35 = io_oeb[35];
+   tri  flash_io0 = (io_oeb_32== 1'b0) ? io_out[32] : 1'bz;
+   tri  flash_io1 = (io_oeb_33== 1'b0) ? io_out[33] : 1'bz;
+   tri  flash_io2 = (io_oeb_34== 1'b0) ? io_out[34] : 1'bz;
+   tri  flash_io3 = (io_oeb_35== 1'b0) ? io_out[35] : 1'bz;
 
    assign io_in[32] = flash_io0;
    assign io_in[33] = flash_io1;
@@ -271,16 +276,21 @@
 
 
    // Quard flash
-	spiflash #(
-		.FILENAME("user_risc_boot.hex")
-	) u_user_spiflash (
-		.csb(flash_csb),
-		.clk(flash_clk),
-		.io0(flash_io0),
-		.io1(flash_io1),
-		.io2(flash_io2),
-		.io3(flash_io3)	
-	);
+     s25fl256s #(.mem_file_name("user_risc_boot.hex"),
+	         .otp_file_name("none")) 
+		 u_spi_flash_256mb (
+           // Data Inputs/Outputs
+       .SI      (flash_io0),
+       .SO      (flash_io1),
+       // Controls
+       .SCK     (flash_clk),
+       .CSNeg   (flash_csb),
+       .WPNeg   (flash_io2),
+       .HOLDNeg (flash_io3),
+       .RSTNeg  (!wb_rst_i)
+
+       );
+
 
 
 //------------------------------------------------
@@ -383,9 +393,35 @@
 end
 endtask
 
+`ifdef GL
 
+wire        wbd_spi_stb_i   = u_top.u_spi_master.wbd_stb_i;
+wire        wbd_spi_ack_o   = u_top.u_spi_master.wbd_ack_o;
+wire        wbd_spi_we_i    = u_top.u_spi_master.wbd_we_i;
+wire [31:0] wbd_spi_adr_i   = u_top.u_spi_master.wbd_adr_i;
+wire [31:0] wbd_spi_dat_i   = u_top.u_spi_master.wbd_dat_i;
+wire [31:0] wbd_spi_dat_o   = u_top.u_spi_master.wbd_dat_o;
+wire [3:0]  wbd_spi_sel_i   = u_top.u_spi_master.wbd_sel_i;
 
+wire        wbd_sdram_stb_i = u_top.u_sdram_ctrl.wb_stb_i;
+wire        wbd_sdram_ack_o = u_top.u_sdram_ctrl.wb_ack_o;
+wire        wbd_sdram_we_i  = u_top.u_sdram_ctrl.wb_we_i;
+wire [31:0] wbd_sdram_adr_i = u_top.u_sdram_ctrl.wb_addr_i;
+wire [31:0] wbd_sdram_dat_i = u_top.u_sdram_ctrl.wb_dat_i;
+wire [31:0] wbd_sdram_dat_o = u_top.u_sdram_ctrl.wb_dat_o;
+wire [3:0]  wbd_sdram_sel_i = u_top.u_sdram_ctrl.wb_sel_i;
 
+wire        wbd_uart_stb_i  = u_top.u_uart_core.reg_cs;
+wire        wbd_uart_ack_o  = u_top.u_uart_core.reg_ack;
+wire        wbd_uart_we_i   = u_top.u_uart_core.reg_wr;
+wire [7:0]  wbd_uart_adr_i  = u_top.u_uart_core.reg_addr;
+wire [7:0]  wbd_uart_dat_i  = u_top.u_uart_core.reg_wdata;
+wire [7:0]  wbd_uart_dat_o  = u_top.u_uart_core.reg_rdata;
+wire        wbd_uart_sel_i  = u_top.u_uart_core.reg_be;
+
+`endif
+
+/**
 `ifdef GL
 //-----------------------------------------------------------------------------
 // RISC IMEM amd DMEM Monitoring TASK
@@ -403,5 +439,6 @@
 end
 
 `endif
+**/
 endmodule
 `default_nettype wire
diff --git a/verilog/dv/user_spi/Makefile b/verilog/dv/user_spi/Makefile
new file mode 100644
index 0000000..7fca4c3
--- /dev/null
+++ b/verilog/dv/user_spi/Makefile
@@ -0,0 +1,96 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+## Caravel Pointers
+CARAVEL_ROOT ?= ../../../caravel
+CARAVEL_PATH ?= $(CARAVEL_ROOT)
+CARAVEL_FIRMWARE_PATH = $(CARAVEL_PATH)/verilog/dv/caravel
+CARAVEL_VERILOG_PATH  = $(CARAVEL_PATH)/verilog
+CARAVEL_RTL_PATH = $(CARAVEL_VERILOG_PATH)/rtl
+CARAVEL_BEHAVIOURAL_MODELS = $(CARAVEL_VERILOG_PATH)/dv/caravel
+
+
+## User Project Pointers
+UPRJ_VERILOG_PATH ?= ../../../verilog
+UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
+UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
+UPRJ_BEHAVIOURAL_MODELS = ../model
+UPRJ_BEHAVIOURAL_AGENTS = ../agents
+UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/syntacore/scr1/src/includes
+UPRJ_INCLUDE_PATH2 = $(UPRJ_RTL_PATH)/sdram_ctrl/src/defs
+
+## SYNTACORE FIRMWARE
+SYNTACORE_FIRMWARE_PATH = $(UPRJ_VERILOG_PATH)/rtl/syntacore/scr1/sim/tests/common
+GCC64_PREFIX?=riscv64-unknown-elf
+
+## RISCV GCC 
+GCC_PATH?=/ef/apps/bin
+GCC_PREFIX?=riscv32-unknown-elf
+PDK_PATH?=/ef/tech/SW/sky130A
+
+## Simulation mode: RTL/GL
+SIM?=RTL
+
+.SUFFIXES:
+
+PATTERN = user_spi
+
+all:  ${PATTERN:=.vcd}
+
+hex:  ${PATTERN:=.hex}
+
+vvp:  ${PATTERN:=.vvp}
+
+%.vvp: %_tb.v
+	riscv64-unknown-elf-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las  -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\"  -c -I./ -I../../rtl/syntacore/scr1/sim/tests/common  user_risc_boot.c -o user_risc_boot.o
+	riscv64-unknown-elf-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las  -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\"  -D__ASSEMBLY__=1 -c -I./ -I../../rtl/syntacore/scr1/sim/tests/common/  ../../rtl/syntacore/scr1/sim/tests/common/crt_tcm.S -o crt_tcm.o
+	riscv64-unknown-elf-gcc -o user_risc_boot.elf -T ../../rtl/syntacore/scr1/sim/tests/common/link_tcm.ld user_risc_boot.o crt_tcm.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32
+	riscv64-unknown-elf-objcopy -O verilog user_risc_boot.elf user_risc_boot.hex
+	riscv64-unknown-elf-objdump -D user_risc_boot.elf > user_risc_boot.dump
+	rm crt_tcm.o user_risc_boot.o
+ifeq ($(SIM),RTL)
+	iverilog -g2005-sv -DFUNCTIONAL -DSIM -I $(PDK_PATH) \
+	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_MODELS)    -I $(UPRJ_RTL_PATH) -I $(UPRJ_VERILOG_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_AGENTS)    \
+	-I $(UPRJ_INCLUDE_PATH1)    -I $(UPRJ_INCLUDE_PATH2) \
+	$< -o $@ 
+else  
+	iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_AGENTS)    \
+	$< -o $@ 
+endif
+
+%.vcd: %.vvp
+	vvp $<
+
+%.elf: %.c $(CARAVEL_FIRMWARE_PATH)/sections.lds $(CARAVEL_FIRMWARE_PATH)/start.s
+	${GCC_PREFIX}-gcc -I $(CARAVEL_PATH) -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(CARAVEL_FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(CARAVEL_FIRMWARE_PATH)/start.s $<
+
+%.hex: 
+	echo @"This is user boot test, noting to compile the mangment core code"
+
+%.bin: %.elf
+	${GCC_PREFIX}-objcopy -O binary $< /dev/stdout | tail -c +1048577 > $@
+
+# ---- Clean ----
+
+clean:
+	rm -f *.elf *.hex *.bin *.vvp *.vcd *.log *.dump
+
+.PHONY: clean hex all
diff --git a/verilog/dv/user_spi/run_iverilog b/verilog/dv/user_spi/run_iverilog
new file mode 100755
index 0000000..a88ab91
--- /dev/null
+++ b/verilog/dv/user_spi/run_iverilog
@@ -0,0 +1,42 @@
+# //////////////////////////////////////////////////////////////////////////////
+# // SPDX-FileCopyrightText: 2021, Dinesh Annayya
+# // 
+# // Licensed under the Apache License, Version 2.0 (the "License");
+# // you may not use this file except in compliance with the License.
+# // You may obtain a copy of the License at
+# //
+# //      http://www.apache.org/licenses/LICENSE-2.0
+# //
+# // Unless required by applicable law or agreed to in writing, software
+# // distributed under the License is distributed on an "AS IS" BASIS,
+# // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# // See the License for the specific language governing permissions and
+# // limitations under the License.
+# // SPDX-License-Identifier: Apache-2.0
+# // SPDX-FileContributor: Dinesh Annayya <dinesha@opencores.org>
+# // //////////////////////////////////////////////////////////////////////////
+riscv64-unknown-elf-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las  -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\"  -c -I./ -I../../rtl/syntacore/scr1/sim/tests/common  user_risc_boot.c -o user_risc_boot.o
+
+riscv64-unknown-elf-gcc -O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las  -D__RVC_EXT -static -std=gnu99 -fno-common -fno-builtin-printf -DTCM=1 -Wa,-march=rv32imc -march=rv32imc -mabi=ilp32 -DFLAGS_STR=\""-O2 -funroll-loops -fpeel-loops -fgcse-sm -fgcse-las "\"  -D__ASSEMBLY__=1 -c -I./ -I../../rtl/syntacore/scr1/sim/tests/common/  ../../rtl/syntacore/scr1/sim/tests/common/crt_tcm.S -o crt_tcm.o
+
+riscv64-unknown-elf-gcc -o user_risc_boot.elf -T ../../rtl/syntacore/scr1/sim/tests/common/link_tcm.ld user_risc_boot.o crt_tcm.o -nostartfiles -nostdlib -lc -lgcc -march=rv32imc -mabi=ilp32
+
+riscv64-unknown-elf-objcopy -O verilog user_risc_boot.elf user_risc_boot.hex
+
+riscv64-unknown-elf-objdump -D user_risc_boot.elf > user_risc_boot.dump
+
+rm crt_tcm.o user_risc_boot.o
+
+#iverilog with waveform dump
+#iverilog -g2005-sv -DWFDUMP -DFUNCTIONAL -DSIM -I $PDK_PATH -I  ../../../caravel/verilog/rtl  -I ../ -I ../../../verilog/rtl -I ../ -I ../../../verilog -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_spi_tb.v -o user_spi_tb.vvp
+
+#iverilog without Dump
+iverilog -g2005-sv -DFUNCTIONAL -DSIM -I $PDK_PATH -I  ../../../caravel/verilog/rtl  -I ../ -I ../../../verilog/rtl -I ../ -I ../../../verilog -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_spi_tb.v -o user_spi_tb.vvp
+
+# GLS 
+#iverilog -g2005-sv -D GL -D FUNCTIONAL -I $PDK_PATH -I  ../../../caravel/verilog/rtl  -I ../ -I ../../../verilog/gl -I ../../../verilog -I /home/dinesha/workarea/pdk/sky130A -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_spi_tb.v -o user_spi_tb.vvp
+#
+
+vvp user_spi_tb.vvp | tee test.log
+
+\rm -rf user_spi_tb.vvp
diff --git a/verilog/dv/user_spi/uprj_netlists.v b/verilog/dv/user_spi/uprj_netlists.v
new file mode 100644
index 0000000..ae6502e
--- /dev/null
+++ b/verilog/dv/user_spi/uprj_netlists.v
@@ -0,0 +1,121 @@
+// SPDX-FileCopyrightText: 2020 Efabless Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+
+// Include caravel global defines for the number of the user project IO pads 
+`include "defines.v"
+`define USE_POWER_PINS
+`define UNIT_DELAY #0.1
+
+`ifdef GL
+
+       `include "libs.ref/sky130_fd_sc_hd/verilog/primitives.v"
+       `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
+       `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
+       `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
+       `include "libs.ref//sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__fakediode_2.v"
+
+        `include "glbl_cfg.v"
+        `include "sdram.v"
+        `include "spi_master.v"
+        `include "uart.v"
+        `include "wb_interconnect.v"
+        `include "user_project_wrapper.v"
+        `include "syntacore.v"
+        `include "wb_host.v"
+	`include "clk_skew_adjust.v"
+
+`else
+
+     `include "libs.ref/sky130_fd_sc_hd/verilog/primitives.v"
+     `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
+     `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
+     `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
+
+
+     `include "spi_master/src/spim_top.sv"
+     `include "spi_master/src/spim_if.sv"
+     `include "spi_master/src/spim_fifo.sv"
+     `include "spi_master/src/spim_regs.sv"
+     `include "spi_master/src/spim_clkgen.sv"
+     `include "spi_master/src/spim_ctrl.sv"
+     `include "spi_master/src/spim_rx.sv"
+     `include "spi_master/src/spim_tx.sv"
+
+     `include "uart/src/uart_core.sv"
+     `include "uart/src/uart_cfg.sv"
+     `include "uart/src/uart_rxfsm.sv"
+     `include "uart/src/uart_txfsm.sv"
+     `include "lib/async_fifo_th.sv"  
+     `include "lib/reset_sync.sv"  
+     `include "lib/double_sync_low.v"  
+
+     `include "sdram_ctrl/src/top/sdrc_top.v" 
+     `include "sdram_ctrl/src/wb2sdrc/wb2sdrc.v" 
+     `include "lib/async_fifo.sv"  
+     `include "sdram_ctrl/src/core/sdrc_core.v"
+     `include "sdram_ctrl/src/core/sdrc_bank_ctl.v"
+     `include "sdram_ctrl/src/core/sdrc_bank_fsm.v"
+     `include "sdram_ctrl/src/core/sdrc_bs_convert.v"
+     `include "sdram_ctrl/src/core/sdrc_req_gen.v"
+     `include "sdram_ctrl/src/core/sdrc_xfr_ctl.v"
+
+     `include "lib/registers.v"
+     `include "lib/clk_ctl.v"
+     `include "digital_core/src/glbl_cfg.sv"
+
+     `include "wb_host/src/wb_host.sv"
+     `include "lib/async_wb.sv"
+
+     `include "lib/wb_stagging.sv"
+     `include "wb_interconnect/src/wb_arb.sv"
+     `include "wb_interconnect/src/wb_interconnect.sv"
+
+
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_hdu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_tdu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_ipic.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_csr.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_exu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ialu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_idu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_ifu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_lsu.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_mprf.sv"
+     `include "syntacore/scr1/src/core/pipeline/scr1_pipe_top.sv"
+     `include "syntacore/scr1/src/core/primitives/scr1_reset_cells.sv"
+     `include "syntacore/scr1/src/core/primitives/scr1_cg.sv"
+     `include "syntacore/scr1/src/core/scr1_clk_ctrl.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc_shift_reg.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc.sv"
+     `include "syntacore/scr1/src/core/scr1_tapc_synchronizer.sv"
+     `include "syntacore/scr1/src/core/scr1_core_top.sv"
+     `include "syntacore/scr1/src/core/scr1_dm.sv"
+     `include "syntacore/scr1/src/core/scr1_dmi.sv"
+     `include "syntacore/scr1/src/core/scr1_scu.sv"
+      
+     `include "syntacore/scr1/src/top/scr1_dmem_router.sv"
+     `include "syntacore/scr1/src/top/scr1_dp_memory.sv"
+     `include "syntacore/scr1/src/top/scr1_tcm.sv"
+     `include "syntacore/scr1/src/top/scr1_timer.sv"
+     `include "syntacore/scr1/src/top/scr1_dmem_wb.sv"
+     `include "syntacore/scr1/src/top/scr1_imem_wb.sv"
+     `include "syntacore/scr1/src/top/scr1_top_wb.sv"
+     `include "lib/sync_fifo.sv"
+
+     `include "user_project_wrapper.v"
+     // we are using netlist file for clk_skew_adjust as it has 
+     // standard cell + power pin
+     `include "gl/clk_skew_adjust.v"
+`endif
diff --git a/verilog/dv/user_spi/user_risc_boot.c b/verilog/dv/user_spi/user_risc_boot.c
new file mode 100644
index 0000000..af9339d
--- /dev/null
+++ b/verilog/dv/user_spi/user_risc_boot.c
@@ -0,0 +1,61 @@
+//////////////////////////////////////////////////////////////////////////////
+// SPDX-FileCopyrightText: 2021, Dinesh Annayya
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-FileContributor: Dinesh Annayya <dinesha@opencores.org>
+// //////////////////////////////////////////////////////////////////////////
+#define SC_SIM_OUTPORT (0xf0000000)
+#define uint32_t  long
+
+#define reg_mprj_globl_reg0  (*(volatile uint32_t*)0x30000000)
+#define reg_mprj_globl_reg1  (*(volatile uint32_t*)0x30000004)
+#define reg_mprj_globl_reg2  (*(volatile uint32_t*)0x30000008)
+#define reg_mprj_globl_reg3  (*(volatile uint32_t*)0x3000000C)
+#define reg_mprj_globl_reg4  (*(volatile uint32_t*)0x30000010)
+#define reg_mprj_globl_reg5  (*(volatile uint32_t*)0x30000014)
+#define reg_mprj_globl_reg6  (*(volatile uint32_t*)0x30000018)
+#define reg_mprj_globl_reg7  (*(volatile uint32_t*)0x3000001C)
+#define reg_mprj_globl_reg8  (*(volatile uint32_t*)0x30000020)
+#define reg_mprj_globl_reg9  (*(volatile uint32_t*)0x30000024)
+#define reg_mprj_globl_reg10 (*(volatile uint32_t*)0x30000028)
+#define reg_mprj_globl_reg11 (*(volatile uint32_t*)0x3000002C)
+#define reg_mprj_globl_reg12 (*(volatile uint32_t*)0x30000030)
+#define reg_mprj_globl_reg13 (*(volatile uint32_t*)0x30000034)
+#define reg_mprj_globl_reg14 (*(volatile uint32_t*)0x30000038)
+#define reg_mprj_globl_reg15 (*(volatile uint32_t*)0x3000003C)
+
+int main()
+{
+
+    //volatile long *out_ptr = (volatile long*)SC_SIM_OUTPORT;
+    //*out_ptr = 0xAABBCCDD;
+    //*out_ptr = 0xBBCCDDEE;
+    //*out_ptr = 0xCCDDEEFF;
+    //*out_ptr = 0xDDEEFF00;
+
+    // Write software Write & Read Register
+    reg_mprj_globl_reg6  = 0x11223344; 
+    reg_mprj_globl_reg7  = 0x22334455; 
+    reg_mprj_globl_reg8  = 0x33445566; 
+    reg_mprj_globl_reg9  = 0x44556677; 
+    reg_mprj_globl_reg10 = 0x55667788; 
+    reg_mprj_globl_reg11 = 0x66778899; 
+    //reg_mprj_globl_reg12 = 0x778899AA; 
+    //reg_mprj_globl_reg13 = 0x8899AABB; 
+    //reg_mprj_globl_reg14 = 0x99AABBCC; 
+    //reg_mprj_globl_reg15 = 0xAABBCCDD; 
+
+    while(1) {}
+    return 0;
+}
diff --git a/verilog/dv/user_spi/user_spi_tb.v b/verilog/dv/user_spi/user_spi_tb.v
new file mode 100644
index 0000000..de9fe38
--- /dev/null
+++ b/verilog/dv/user_spi/user_spi_tb.v
@@ -0,0 +1,612 @@
+////////////////////////////////////////////////////////////////////////////
+// SPDX-FileCopyrightText:  2021 , Dinesh Annayya
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-FileContributor: Modified by Dinesh Annayya <dinesha@opencores.org>
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  Standalone User validation Test bench                       ////
+////                                                              ////
+////  This file is part of the YIFive cores project               ////
+////  https://github.com/dineshannayya/yifive_r0.git              ////
+////  http://www.opencores.org/cores/yifive/                      ////
+////                                                              ////
+////  Description                                                 ////
+////   This is a standalone test bench to validate the            ////
+////   Digital core.                                              ////
+////   1. User Risc core is booted using  compiled code of        ////
+////      user_risc_boot.c                                        ////
+////   2. User Risc core uses Serial Flash and SDRAM to boot      ////
+////   3. After successful boot, Risc core will  write signature  ////
+////      in to  user register from 0x3000_0018 to 0x3000_002C    ////
+////   4. Through the External Wishbone Interface we read back    ////
+////       and validate the user register to declared pass fail   ////
+////                                                              ////
+////  To Do:                                                      ////
+////    nothing                                                   ////
+////                                                              ////
+////  Author(s):                                                  ////
+////      - Dinesh Annayya, dinesha@opencores.org                 ////
+////                                                              ////
+////  Revision :                                                  ////
+////    0.1 - 16th Feb 2021, Dinesh A                             ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+
+`default_nettype wire
+
+`timescale 1 ns / 1 ns
+
+`include "s25fl256s.sv"
+`include "uprj_netlists.v"
+`include "mt48lc8m8a2.v"
+
+module user_spi_tb;
+	reg clock;
+	reg wb_rst_i;
+	reg power1, power2;
+	reg power3, power4;
+
+        reg        wbd_ext_cyc_i;  // strobe/request
+        reg        wbd_ext_stb_i;  // strobe/request
+        reg [31:0] wbd_ext_adr_i;  // address
+        reg        wbd_ext_we_i;  // write
+        reg [31:0] wbd_ext_dat_i;  // data output
+        reg [3:0]  wbd_ext_sel_i;  // byte enable
+
+        wire [31:0] wbd_ext_dat_o;  // data input
+        wire        wbd_ext_ack_o;  // acknowlegement
+        wire        wbd_ext_err_o;  // error
+
+	// User I/O
+	wire [37:0] io_oeb;
+	wire [37:0] io_out;
+	wire [37:0] io_in;
+
+	wire gpio;
+	wire [37:0] mprj_io;
+	wire [7:0] mprj_io_0;
+	reg        test_fail;
+	reg [31:0] read_data;
+
+
+
+	// External clock is used by default.  Make this artificially fast for the
+	// simulation.  Normally this would be a slow clock and the digital PLL
+	// would be the fast clock.
+
+	always #12.5 clock <= (clock === 1'b0);
+
+	initial begin
+		clock = 0;
+                wbd_ext_cyc_i ='h0;  // strobe/request
+                wbd_ext_stb_i ='h0;  // strobe/request
+                wbd_ext_adr_i ='h0;  // address
+                wbd_ext_we_i  ='h0;  // write
+                wbd_ext_dat_i ='h0;  // data output
+                wbd_ext_sel_i ='h0;  // byte enable
+	end
+
+	`ifdef WFDUMP
+	   initial begin
+	   	$dumpfile("user_spi.vcd");
+	   	$dumpvars(5, user_spi_tb);
+	   end
+       `endif
+
+	initial begin
+
+		#200; // Wait for reset removal
+	        repeat (10) @(posedge clock);
+		$display("Monitor: Standalone User Risc Boot Test Started");
+
+		// Remove Wb Reset
+		wb_user_core_write('h3080_0000,'h1);
+
+	        repeat (2) @(posedge clock);
+		#1;
+		// Remove WB and SPI Reset, Keep SDARM and CORE under Reset
+                wb_user_core_write('h3080_0000,'h5);
+
+                wb_user_core_write('h3080_0004,'h0); // Change the Bank Sel 0
+
+
+		test_fail = 0;
+	        repeat (200) @(posedge clock);
+		$display("#############################################");
+		$display("  Testing Direct SPI Memory Read             ");
+		$display("#############################################");
+		wb_user_core_read_check(32'h00000200,read_data,32'h00000093);
+		wb_user_core_read_check(32'h00000204,read_data,32'h00000113);
+		wb_user_core_read_check(32'h00000208,read_data,32'h00000193);
+		wb_user_core_read_check(32'h0000020C,read_data,32'h00000213);
+		wb_user_core_read_check(32'h00000210,read_data,32'h00000293);
+		wb_user_core_read_check(32'h00000214,read_data,32'h00000313);
+		wb_user_core_read_check(32'h00000218,read_data,32'h00000393);
+		wb_user_core_read_check(32'h0000021C,read_data,32'h00000413);
+		wb_user_core_read_check(32'h00000400,read_data,32'h11223737);
+		wb_user_core_read_check(32'h00000404,read_data,32'h300007b7);
+		wb_user_core_read_check(32'h00000408,read_data,32'h34470293);
+		wb_user_core_read_check(32'h0000040C,read_data,32'h22334337);
+		wb_user_core_read_check(32'h00000410,read_data,32'h0057ac23);
+		wb_user_core_read_check(32'h00000414,read_data,32'h45530393);
+		wb_user_core_read_check(32'h00000418,read_data,32'h33445537);
+		wb_user_core_read_check(32'h0000041C,read_data,32'h0077ae23);
+
+		$display("#############################################");
+		$display("  Testing Single Word Indirect SPI Memory Read");
+		$display("#############################################");
+                wb_user_core_write('h3080_0004,'h10); // Change the Bank Sel 10
+
+		wb_user_core_write(32'h1000000C,{15'h0,1'b0,2'b01,2'b10,4'b0001});
+		wb_user_core_write(32'h10000010,{8'h4,2'b01,2'b10,4'b0110,8'h00,8'hEB});
+		wb_user_core_write(32'h10000014,32'h00000200);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000093);
+		wb_user_core_write(32'h10000014,32'h00000204);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000113);
+		wb_user_core_write(32'h10000014,32'h00000208);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000193);
+		wb_user_core_write(32'h10000014,32'h0000020C);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000213);
+		wb_user_core_write(32'h10000014,32'h00000210);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000293);
+		wb_user_core_write(32'h10000014,32'h00000214);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000313);
+		wb_user_core_write(32'h10000014,32'h00000218);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000393);
+		wb_user_core_write(32'h10000014,32'h0000021C);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000413);
+		wb_user_core_write(32'h10000014,32'h00000400);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h11223737);
+		wb_user_core_write(32'h10000014,32'h00000404);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h300007b7);
+		wb_user_core_write(32'h10000014,32'h00000408);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h34470293);
+		wb_user_core_write(32'h10000014,32'h0000040C);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h22334337);
+		wb_user_core_write(32'h10000014,32'h00000410);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0057ac23);
+		wb_user_core_write(32'h10000014,32'h00000414);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h45530393);
+		wb_user_core_write(32'h10000014,32'h00000418);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h33445537);
+		wb_user_core_write(32'h10000014,32'h0000041C);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0077ae23);
+		repeat (100) @(posedge clock);
+		$display("#############################################");
+		$display("  Testing Two Word Indirect SPI Memory Read");
+		$display("#############################################");
+		wb_user_core_write(32'h1000000C,{15'h0,1'b0,2'b01,2'b10,4'b0001});
+		wb_user_core_write(32'h10000010,{8'h8,2'b01,2'b10,4'b0110,8'h00,8'hEB});
+		wb_user_core_write(32'h10000014,32'h00000200);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000093);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000113);
+		wb_user_core_write(32'h10000014,32'h00000208);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000193);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000213);
+		wb_user_core_write(32'h10000014,32'h00000210);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000313);
+		wb_user_core_write(32'h10000014,32'h00000218);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000393);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000413);
+		wb_user_core_write(32'h10000014,32'h00000400);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h11223737);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h300007b7);
+		wb_user_core_write(32'h10000014,32'h00000408);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h34470293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h22334337);
+		wb_user_core_write(32'h10000014,32'h00000410);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0057ac23);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h45530393);
+		wb_user_core_write(32'h10000014,32'h00000418);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h33445537);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0077ae23);
+		repeat (100) @(posedge clock);
+		$display("#############################################");
+		$display("  Testing Three Word Indirect SPI Memory Read");
+		$display("#############################################");
+		wb_user_core_write(32'h10000010,{8'hC,2'b01,2'b10,4'b0110,8'h00,8'hEB});
+		wb_user_core_write(32'h10000014,32'h00000200);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000093);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000113);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000193);
+		wb_user_core_write(32'h10000014,32'h0000020C);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000213);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000313);
+		wb_user_core_write(32'h10000014,32'h00000400);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h11223737);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h300007b7);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h34470293);
+		wb_user_core_write(32'h10000014,32'h0000040C);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h22334337);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0057ac23);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h45530393);
+		repeat (100) @(posedge clock);
+		$display("#############################################");
+		$display("  Testing Four Word Indirect SPI Memory Read");
+		$display("#############################################");
+		wb_user_core_write(32'h10000010,{8'h10,2'b01,2'b10,4'b0110,8'h00,8'hEB});
+		wb_user_core_write(32'h10000014,32'h00000200);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000093);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000113);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000193);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000213);
+		wb_user_core_write(32'h10000014,32'h00000210);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000313);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000393);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000413);
+		wb_user_core_write(32'h10000014,32'h00000400);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h11223737);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h300007b7);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h34470293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h22334337);
+		wb_user_core_write(32'h10000014,32'h00000410);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0057ac23);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h45530393);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h33445537);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0077ae23);
+		repeat (100) @(posedge clock);
+		$display("#############################################");
+		$display("  Testing Five Word Indirect SPI Memory Read");
+		$display("#############################################");
+		wb_user_core_write(32'h10000010,{8'h14,2'b01,2'b10,4'b0110,8'h00,8'hEB});
+		wb_user_core_write(32'h10000014,32'h00000200);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000093);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000113);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000193);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000213);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000293);
+		wb_user_core_write(32'h10000014,32'h00000400);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h11223737);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h300007b7);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h34470293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h22334337);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0057ac23);
+		$display("#############################################");
+		$display("  Testing Eight Word Indirect SPI Memory Read");
+		$display("#############################################");
+		wb_user_core_write(32'h10000010,{8'h20,2'b01,2'b10,4'b0110,8'h00,8'hEB});
+		wb_user_core_write(32'h10000014,32'h00000200);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000093);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000113);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000193);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000213);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000313);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000393);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h00000413);
+		wb_user_core_write(32'h10000014,32'h00000400);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h11223737);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h300007b7);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h34470293);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h22334337);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0057ac23);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h45530393);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h33445537);
+		wb_user_core_read_check(32'h1000001C,read_data,32'h0077ae23);
+		repeat (100) @(posedge clock);
+			// $display("+1000 cycles");
+
+          	if(test_fail == 0) begin
+		   `ifdef GL
+	    	       $display("Monitor: SPI Master Mode (GL) Passed");
+		   `else
+		       $display("Monitor: SPI Master Mode (RTL) Passed");
+		   `endif
+	        end else begin
+		    `ifdef GL
+	    	        $display("Monitor: SPI Master Mode (GL) Failed");
+		    `else
+		        $display("Monitor: SPI Master Mode (RTL) Failed");
+		    `endif
+		 end
+	    	$display("###################################################");
+	        $finish;
+	end
+
+	initial begin
+		wb_rst_i <= 1'b1;
+		#100;
+		wb_rst_i <= 1'b0;	    	// Release reset
+	end
+wire USER_VDD1V8 = 1'b1;
+wire VSS = 1'b0;
+
+user_project_wrapper u_top(
+`ifdef USE_POWER_PINS
+    .vccd1(USER_VDD1V8),	// User area 1 1.8V supply
+    .vssd1(VSS),	// User area 1 digital ground
+`endif
+    .wb_clk_i        (clock),  // System clock
+    .user_clock2     (1'b1),  // Real-time clock
+    .wb_rst_i        (wb_rst_i),  // Regular Reset signal
+
+    .wbs_cyc_i   (wbd_ext_cyc_i),  // strobe/request
+    .wbs_stb_i   (wbd_ext_stb_i),  // strobe/request
+    .wbs_adr_i   (wbd_ext_adr_i),  // address
+    .wbs_we_i    (wbd_ext_we_i),  // write
+    .wbs_dat_i   (wbd_ext_dat_i),  // data output
+    .wbs_sel_i   (wbd_ext_sel_i),  // byte enable
+
+    .wbs_dat_o   (wbd_ext_dat_o),  // data input
+    .wbs_ack_o   (wbd_ext_ack_o),  // acknowlegement
+
+ 
+    // Logic Analyzer Signals
+    .la_data_in      ('0) ,
+    .la_data_out     (),
+    .la_oenb         ('0),
+ 
+
+    // IOs
+    .io_in          (io_in)  ,
+    .io_out         (io_out) ,
+    .io_oeb         (io_oeb) ,
+
+    .user_irq       () 
+
+);
+
+//------------------------------------------------------
+//  Integrate the Serial flash with qurd support to
+//  user core using the gpio pads
+//  ----------------------------------------------------
+
+   wire flash_clk = io_out[30];
+   wire flash_csb = io_out[31];
+   // Creating Pad Delay
+   wire #1 io_oeb_32 = io_oeb[32];
+   wire #1 io_oeb_33 = io_oeb[33];
+   wire #1 io_oeb_34 = io_oeb[34];
+   wire #1 io_oeb_35 = io_oeb[35];
+   tri  flash_io0 = (io_oeb_32== 1'b0) ? io_out[32] : 1'bz;
+   tri  flash_io1 = (io_oeb_33== 1'b0) ? io_out[33] : 1'bz;
+   tri  flash_io2 = (io_oeb_34== 1'b0) ? io_out[34] : 1'bz;
+   tri  flash_io3 = (io_oeb_35== 1'b0) ? io_out[35] : 1'bz;
+
+   assign io_in[32] = flash_io0;
+   assign io_in[33] = flash_io1;
+   assign io_in[34] = flash_io2;
+   assign io_in[35] = flash_io3;
+
+
+   // Quard flash
+     s25fl256s #(.mem_file_name("user_risc_boot.hex"),
+	         .otp_file_name("none")) 
+		 u_spi_flash_256mb (
+           // Data Inputs/Outputs
+       .SI      (flash_io0),
+       .SO      (flash_io1),
+       // Controls
+       .SCK     (flash_clk),
+       .CSNeg   (flash_csb),
+       .WPNeg   (flash_io2),
+       .HOLDNeg (flash_io3),
+       .RSTNeg  (!wb_rst_i)
+
+       );
+
+
+
+//------------------------------------------------
+// Integrate the SDRAM 8 BIT Memory
+// -----------------------------------------------
+
+wire [7:0]    Dq                 ; // SDRAM Read/Write Data Bus
+wire [0:0]    sdr_dqm            ; // SDRAM DATA Mask
+wire [1:0]    sdr_ba             ; // SDRAM Bank Select
+wire [12:0]   sdr_addr           ; // SDRAM ADRESS
+wire          sdr_cs_n           ; // chip select
+wire          sdr_cke            ; // clock gate
+wire          sdr_ras_n          ; // ras
+wire          sdr_cas_n          ; // cas
+wire          sdr_we_n           ; // write enable        
+wire          sdram_clk         ;      
+
+assign  Dq[7:0]           =  (io_oeb[7:0] == 8'h0) ? io_out [7:0] : 8'hZZ;
+assign  sdr_addr[12:0]    =    io_out [20:8]     ;
+assign  sdr_ba[1:0]       =    io_out [22:21]    ;
+assign  sdr_dqm[0]        =    io_out [23]       ;
+assign  sdr_we_n          =    io_out [24]       ;
+assign  sdr_cas_n         =    io_out [25]       ;
+assign  sdr_ras_n         =    io_out [26]       ;
+assign  sdr_cs_n          =    io_out [27]       ;
+assign  sdr_cke           =    io_out [28]       ;
+assign  sdram_clk         =    io_out [29]       ;
+assign  io_in[29]         =    sdram_clk;
+assign  #(1) io_in[7:0]   =    Dq;
+
+// to fix the sdram interface timing issue
+wire #(1) sdram_clk_d   = sdram_clk;
+
+	// SDRAM 8bit
+mt48lc8m8a2 #(.data_bits(8)) u_sdram8 (
+          .Dq                 (Dq                 ) , 
+          .Addr               (sdr_addr[11:0]     ), 
+          .Ba                 (sdr_ba             ), 
+          .Clk                (sdram_clk_d        ), 
+          .Cke                (sdr_cke            ), 
+          .Cs_n               (sdr_cs_n           ), 
+          .Ras_n              (sdr_ras_n          ), 
+          .Cas_n              (sdr_cas_n          ), 
+          .We_n               (sdr_we_n           ), 
+          .Dqm                (sdr_dqm            )
+     );
+
+task wb_user_core_write;
+input [31:0] address;
+input [31:0] data;
+begin
+  repeat (1) @(posedge clock);
+  #1;
+  wbd_ext_adr_i =address;  // address
+  wbd_ext_we_i  ='h1;  // write
+  wbd_ext_dat_i =data;  // data output
+  wbd_ext_sel_i ='hF;  // byte enable
+  wbd_ext_cyc_i ='h1;  // strobe/request
+  wbd_ext_stb_i ='h1;  // strobe/request
+  wait(wbd_ext_ack_o == 1);
+  repeat (1) @(posedge clock);
+  #1;
+  wbd_ext_cyc_i ='h0;  // strobe/request
+  wbd_ext_stb_i ='h0;  // strobe/request
+  wbd_ext_adr_i ='h0;  // address
+  wbd_ext_we_i  ='h0;  // write
+  wbd_ext_dat_i ='h0;  // data output
+  wbd_ext_sel_i ='h0;  // byte enable
+  $display("STATUS: WB USER ACCESS WRITE Address : 0x%x, Data : 0x%x",address,data);
+  repeat (2) @(posedge clock);
+end
+endtask
+
+task  wb_user_core_read;
+input [31:0] address;
+output [31:0] data;
+reg    [31:0] data;
+begin
+  repeat (1) @(posedge clock);
+  #1;
+  wbd_ext_adr_i =address;  // address
+  wbd_ext_we_i  ='h0;  // write
+  wbd_ext_dat_i ='0;  // data output
+  wbd_ext_sel_i ='hF;  // byte enable
+  wbd_ext_cyc_i ='h1;  // strobe/request
+  wbd_ext_stb_i ='h1;  // strobe/request
+  wait(wbd_ext_ack_o == 1);
+  data  = wbd_ext_dat_o;  
+  repeat (1) @(posedge clock);
+  #1;
+  wbd_ext_cyc_i ='h0;  // strobe/request
+  wbd_ext_stb_i ='h0;  // strobe/request
+  wbd_ext_adr_i ='h0;  // address
+  wbd_ext_we_i  ='h0;  // write
+  wbd_ext_dat_i ='h0;  // data output
+  wbd_ext_sel_i ='h0;  // byte enable
+  $display("STATUS: WB USER ACCESS READ  Address : 0x%x, Data : 0x%x",address,data);
+  repeat (2) @(posedge clock);
+end
+endtask
+
+task  wb_user_core_read_check;
+input [31:0] address;
+output [31:0] data;
+input [31:0] cmp_data;
+reg    [31:0] data;
+begin
+  repeat (1) @(posedge clock);
+  #1;
+  wbd_ext_adr_i =address;  // address
+  wbd_ext_we_i  ='h0;  // write
+  wbd_ext_dat_i ='0;  // data output
+  wbd_ext_sel_i ='hF;  // byte enable
+  wbd_ext_cyc_i ='h1;  // strobe/request
+  wbd_ext_stb_i ='h1;  // strobe/request
+  wait(wbd_ext_ack_o == 1);
+  data  = wbd_ext_dat_o;  
+  repeat (1) @(posedge clock);
+  #1;
+  wbd_ext_cyc_i ='h0;  // strobe/request
+  wbd_ext_stb_i ='h0;  // strobe/request
+  wbd_ext_adr_i ='h0;  // address
+  wbd_ext_we_i  ='h0;  // write
+  wbd_ext_dat_i ='h0;  // data output
+  wbd_ext_sel_i ='h0;  // byte enable
+  if(data !== cmp_data) begin
+     $display("ERROR : WB USER ACCESS READ  Address : 0x%x, Exd: 0x%x Rxd: 0x%x ",address,cmp_data,data);
+     user_spi_tb.test_fail = 1;
+  end else begin
+     $display("STATUS: WB USER ACCESS READ  Address : 0x%x, Data : 0x%x",address,data);
+  end
+  repeat (2) @(posedge clock);
+end
+endtask
+
+
+`ifdef GL
+
+wire        wbd_spi_stb_i   = u_top.u_spi_master.wbd_stb_i;
+wire        wbd_spi_ack_o   = u_top.u_spi_master.wbd_ack_o;
+wire        wbd_spi_we_i    = u_top.u_spi_master.wbd_we_i;
+wire [31:0] wbd_spi_adr_i   = u_top.u_spi_master.wbd_adr_i;
+wire [31:0] wbd_spi_dat_i   = u_top.u_spi_master.wbd_dat_i;
+wire [31:0] wbd_spi_dat_o   = u_top.u_spi_master.wbd_dat_o;
+wire [3:0]  wbd_spi_sel_i   = u_top.u_spi_master.wbd_sel_i;
+
+wire        wbd_sdram_stb_i = u_top.u_sdram_ctrl.wb_stb_i;
+wire        wbd_sdram_ack_o = u_top.u_sdram_ctrl.wb_ack_o;
+wire        wbd_sdram_we_i  = u_top.u_sdram_ctrl.wb_we_i;
+wire [31:0] wbd_sdram_adr_i = u_top.u_sdram_ctrl.wb_addr_i;
+wire [31:0] wbd_sdram_dat_i = u_top.u_sdram_ctrl.wb_dat_i;
+wire [31:0] wbd_sdram_dat_o = u_top.u_sdram_ctrl.wb_dat_o;
+wire [3:0]  wbd_sdram_sel_i = u_top.u_sdram_ctrl.wb_sel_i;
+
+wire        wbd_uart_stb_i  = u_top.u_uart_core.reg_cs;
+wire        wbd_uart_ack_o  = u_top.u_uart_core.reg_ack;
+wire        wbd_uart_we_i   = u_top.u_uart_core.reg_wr;
+wire [7:0]  wbd_uart_adr_i  = u_top.u_uart_core.reg_addr;
+wire [7:0]  wbd_uart_dat_i  = u_top.u_uart_core.reg_wdata;
+wire [7:0]  wbd_uart_dat_o  = u_top.u_uart_core.reg_rdata;
+wire        wbd_uart_sel_i  = u_top.u_uart_core.reg_be;
+
+`endif
+
+/**
+`ifdef GL
+//-----------------------------------------------------------------------------
+// RISC IMEM amd DMEM Monitoring TASK
+//-----------------------------------------------------------------------------
+
+`define RISC_CORE  user_uart_tb.u_top.u_core.u_riscv_top
+
+always@(posedge `RISC_CORE.wb_clk) begin
+    if(`RISC_CORE.wbd_imem_ack_i)
+          $display("RISCV-DEBUG => IMEM ADDRESS: %x Read Data : %x", `RISC_CORE.wbd_imem_adr_o,`RISC_CORE.wbd_imem_dat_i);
+    if(`RISC_CORE.wbd_dmem_ack_i && `RISC_CORE.wbd_dmem_we_o)
+          $display("RISCV-DEBUG => DMEM ADDRESS: %x Write Data: %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_o);
+    if(`RISC_CORE.wbd_dmem_ack_i && !`RISC_CORE.wbd_dmem_we_o)
+          $display("RISCV-DEBUG => DMEM ADDRESS: %x READ Data : %x Resonse: %x", `RISC_CORE.wbd_dmem_adr_o,`RISC_CORE.wbd_dmem_dat_i);
+end
+
+`endif
+**/
+endmodule
+`default_nettype wire
diff --git a/verilog/dv/user_uart/Makefile b/verilog/dv/user_uart/Makefile
index c05ec68..1f5b0c3 100644
--- a/verilog/dv/user_uart/Makefile
+++ b/verilog/dv/user_uart/Makefile
@@ -26,6 +26,7 @@
 ## User Project Pointers
 UPRJ_VERILOG_PATH ?= ../../../verilog
 UPRJ_RTL_PATH = $(UPRJ_VERILOG_PATH)/rtl
+UPRJ_GL_PATH = $(UPRJ_VERILOG_PATH)/gl
 UPRJ_BEHAVIOURAL_MODELS = ../model
 UPRJ_BEHAVIOURAL_AGENTS = ../agents
 UPRJ_INCLUDE_PATH1 = $(UPRJ_RTL_PATH)/syntacore/scr1/src/includes
@@ -68,9 +69,9 @@
 	-I $(UPRJ_INCLUDE_PATH1)    -I $(UPRJ_INCLUDE_PATH2) \
 	$< -o $@ 
 else  
-	iverilog -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
+	iverilog -g2005-sv -DFUNCTIONAL -DSIM -DGL -I $(PDK_PATH) \
 	-I $(CARAVEL_BEHAVIOURAL_MODELS) -I $(CARAVEL_RTL_PATH) -I $(CARAVEL_VERILOG_PATH) \
-	-I $(UPRJ_BEHAVIOURAL_MODELS) -I$(UPRJ_RTL_PATH)   -I $(UPRJ_VERILOG_PATH) \
+	-I $(UPRJ_BEHAVIOURAL_MODELS) -I $(UPRJ_GL_PATH) \
 	-I $(UPRJ_BEHAVIOURAL_AGENTS)    \
 	$< -o $@ 
 endif
diff --git a/verilog/dv/user_uart/run_iverilog b/verilog/dv/user_uart/run_iverilog
index 6cac66f..15548a4 100755
--- a/verilog/dv/user_uart/run_iverilog
+++ b/verilog/dv/user_uart/run_iverilog
@@ -33,8 +33,9 @@
 
 #iverilog -g2005-sv -I $PDK_PATH -DFUNCTIONAL -DSIM -I  ../../../caravel/verilog/rtl -I ../ -I ../../../verilog/rtl -I ../../../verilog -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
 
-# GLS
-#iverilog -g2005-sv -DGL -I $PDK_PATH -I  ../../../caravel/verilog/rtl  -I ../ -I ../../../verilog/rtl -I ../../../verilog -I /home/dinesha/workarea/pdk/sky130A -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
+# GLS 
+#iverilog -g2005-sv -D GL -D FUNCTIONAL -I $PDK_PATH -I  ../../../caravel/verilog/rtl  -I ../ -I ../../../verilog/gl -I ../../../verilog -I /home/dinesha/workarea/pdk/sky130A -I ../../../verilog/rtl/syntacore/scr1/src/includes   -I ../../../verilog/rtl/sdram_ctrl/src/defs -I $CARAVEL_ROOT/verilog/dv/caravel -I ../model -I ../agents user_uart_tb.v -o user_uart_tb.vvp
+#
 
 vvp user_uart_tb.vvp | tee test.log
 
diff --git a/verilog/dv/user_uart/uprj_netlists.v b/verilog/dv/user_uart/uprj_netlists.v
index d140c85..ae6502e 100644
--- a/verilog/dv/user_uart/uprj_netlists.v
+++ b/verilog/dv/user_uart/uprj_netlists.v
@@ -16,7 +16,7 @@
 // Include caravel global defines for the number of the user project IO pads 
 `include "defines.v"
 `define USE_POWER_PINS
-`define UNIT_DELAY #1
+`define UNIT_DELAY #0.1
 
 `ifdef GL
 
@@ -24,18 +24,17 @@
        `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
        `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
        `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
+       `include "libs.ref//sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__fakediode_2.v"
 
-
-
-      `include "glbl_cfg.v"
-      `include "sdram.v"
-      `include "spi_master.v"
-      `include "uart.v"
-      `include "wb_interconnect.v"
-      `include "user_project_wrapper.v"
-
-     `include "syntacore.v"
-     `include "wb_host.v"
+        `include "glbl_cfg.v"
+        `include "sdram.v"
+        `include "spi_master.v"
+        `include "uart.v"
+        `include "wb_interconnect.v"
+        `include "user_project_wrapper.v"
+        `include "syntacore.v"
+        `include "wb_host.v"
+	`include "clk_skew_adjust.v"
 
 `else
 
@@ -46,6 +45,8 @@
 
 
      `include "spi_master/src/spim_top.sv"
+     `include "spi_master/src/spim_if.sv"
+     `include "spi_master/src/spim_fifo.sv"
      `include "spi_master/src/spim_regs.sv"
      `include "spi_master/src/spim_clkgen.sv"
      `include "spi_master/src/spim_ctrl.sv"
@@ -73,7 +74,6 @@
      `include "lib/registers.v"
      `include "lib/clk_ctl.v"
      `include "digital_core/src/glbl_cfg.sv"
-     `include "digital_core/src/digital_core.sv"
 
      `include "wb_host/src/wb_host.sv"
      `include "lib/async_wb.sv"
diff --git a/verilog/dv/user_uart/user_uart_tb.v b/verilog/dv/user_uart/user_uart_tb.v
index cfe4819..4852c4b 100644
--- a/verilog/dv/user_uart/user_uart_tb.v
+++ b/verilog/dv/user_uart/user_uart_tb.v
@@ -70,12 +70,12 @@
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 
-`default_nettype none
+`default_nettype wire
 
 `timescale 1 ns / 1 ns
 
+`include "s25fl256s.sv"
 `include "uprj_netlists.v"
-`include "spiflash.v"
 `include "mt48lc8m8a2.v"
 `include "uart_agent.v"
 
@@ -149,7 +149,7 @@
 	`ifdef WFDUMP
 	   initial begin
 	   	$dumpfile("risc_boot.vcd");
-	   	$dumpvars(4, user_uart_tb);
+	   	$dumpvars(2, user_uart_tb);
 	   end
        `endif
 
@@ -298,10 +298,15 @@
 
    wire flash_clk = io_out[30];
    wire flash_csb = io_out[31];
-   tri  flash_io0 = (io_oeb[32]== 1'b0) ? io_out[32] : 1'bz;
-   tri  flash_io1 = (io_oeb[33]== 1'b0) ? io_out[33] : 1'bz;
-   tri  flash_io2 = (io_oeb[34]== 1'b0) ? io_out[34] : 1'bz;
-   tri  flash_io3 = (io_oeb[35]== 1'b0) ? io_out[35] : 1'bz;
+   // Creating Pad Delay
+   wire #1 io_oeb_32 = io_oeb[32];
+   wire #1 io_oeb_33 = io_oeb[33];
+   wire #1 io_oeb_34 = io_oeb[34];
+   wire #1 io_oeb_35 = io_oeb[35];
+   tri  flash_io0 = (io_oeb_32== 1'b0) ? io_out[32] : 1'bz;
+   tri  flash_io1 = (io_oeb_33== 1'b0) ? io_out[33] : 1'bz;
+   tri  flash_io2 = (io_oeb_34== 1'b0) ? io_out[34] : 1'bz;
+   tri  flash_io3 = (io_oeb_35== 1'b0) ? io_out[35] : 1'bz;
 
    assign io_in[32] = flash_io0;
    assign io_in[33] = flash_io1;
@@ -310,16 +315,20 @@
 
 
    // Quard flash
-	spiflash #(
-		.FILENAME("user_uart.hex")
-	) u_user_spiflash (
-		.csb(flash_csb),
-		.clk(flash_clk),
-		.io0(flash_io0),
-		.io1(flash_io1),
-		.io2(flash_io2),
-		.io3(flash_io3)	
-	);
+     s25fl256s #(.mem_file_name("user_uart.hex"),.otp_file_name("none")) u_spi_flash_256mb
+       (
+           // Data Inputs/Outputs
+       .SI      (flash_io0),
+       .SO      (flash_io1),
+       // Controls
+       .SCK     (flash_clk),
+       .CSNeg   (flash_csb),
+       .WPNeg   (flash_io2),
+       .HOLDNeg (flash_io3),
+       .RSTNeg  (!wb_rst_i)
+
+       );
+
 
 
 //------------------------------------------------
@@ -437,7 +446,33 @@
 end
 endtask
 
+`ifdef GL
 
+wire        wbd_spi_stb_i   = u_top.u_spi_master.wbd_stb_i;
+wire        wbd_spi_ack_o   = u_top.u_spi_master.wbd_ack_o;
+wire        wbd_spi_we_i    = u_top.u_spi_master.wbd_we_i;
+wire [31:0] wbd_spi_adr_i   = u_top.u_spi_master.wbd_adr_i;
+wire [31:0] wbd_spi_dat_i   = u_top.u_spi_master.wbd_dat_i;
+wire [31:0] wbd_spi_dat_o   = u_top.u_spi_master.wbd_dat_o;
+wire [3:0]  wbd_spi_sel_i   = u_top.u_spi_master.wbd_sel_i;
+
+wire        wbd_sdram_stb_i = u_top.u_sdram_ctrl.wb_stb_i;
+wire        wbd_sdram_ack_o = u_top.u_sdram_ctrl.wb_ack_o;
+wire        wbd_sdram_we_i  = u_top.u_sdram_ctrl.wb_we_i;
+wire [31:0] wbd_sdram_adr_i = u_top.u_sdram_ctrl.wb_addr_i;
+wire [31:0] wbd_sdram_dat_i = u_top.u_sdram_ctrl.wb_dat_i;
+wire [31:0] wbd_sdram_dat_o = u_top.u_sdram_ctrl.wb_dat_o;
+wire [3:0]  wbd_sdram_sel_i = u_top.u_sdram_ctrl.wb_sel_i;
+
+wire        wbd_uart_stb_i  = u_top.u_uart_core.reg_cs;
+wire        wbd_uart_ack_o  = u_top.u_uart_core.reg_ack;
+wire        wbd_uart_we_i   = u_top.u_uart_core.reg_wr;
+wire [7:0]  wbd_uart_adr_i  = u_top.u_uart_core.reg_addr;
+wire [7:0]  wbd_uart_dat_i  = u_top.u_uart_core.reg_wdata;
+wire [7:0]  wbd_uart_dat_o  = u_top.u_uart_core.reg_rdata;
+wire        wbd_uart_sel_i  = u_top.u_uart_core.reg_be;
+
+`endif
 
 /**
 `ifdef GL
diff --git a/verilog/rtl/digital_core/src/digital_core.sv b/verilog/rtl/digital_core/src/digital_core.sv
index 2e042cd..4b8a056 100644
--- a/verilog/rtl/digital_core/src/digital_core.sv
+++ b/verilog/rtl/digital_core/src/digital_core.sv
@@ -450,7 +450,7 @@
     .wbd_ack_o              (wbd_spim_ack_i            ),
     .wbd_err_o              (wbd_spim_err_i            ),
 
-    .events_o               (                          ), // TODO - Need to connect to intr ?
+    .spi_debug              (spi_debug                 ),
 
     // Pad Interface
     .io_in                  (io_in[35:30]              ),
diff --git a/verilog/rtl/lib/async_wb.sv b/verilog/rtl/lib/async_wb.sv
index df1fbce..dac5928 100644
--- a/verilog/rtl/lib/async_wb.sv
+++ b/verilog/rtl/lib/async_wb.sv
@@ -105,7 +105,7 @@
 // -------------------------------------------------
 logic        PendingRd     ; // Pending Read Transaction
 logic        m_cmd_wr_en       ;
-logic [70:0] m_cmd_wr_data     ;
+logic [68:0] m_cmd_wr_data     ;
 logic        m_cmd_wr_full     ;
 logic        m_cmd_wr_afull    ;
 
@@ -119,14 +119,14 @@
 
 assign m_cmd_wr_en = (!PendingRd) && wbm_stb_i && !m_cmd_wr_full && !m_cmd_wr_afull;
 
-assign m_cmd_wr_data = {wbm_cyc_i,wbm_stb_i,wbm_adr_i,wbm_we_i,wbm_dat_i,wbm_sel_i};
+assign m_cmd_wr_data = {wbm_adr_i,wbm_we_i,wbm_dat_i,wbm_sel_i};
 
 always@(negedge wbm_rst_n or posedge wbm_clk_i)
 begin
    if(wbm_rst_n == 0) begin
       PendingRd <= 1'b0;
    end else begin
-      if((!PendingRd) && wbm_stb_i && (!wbm_we_i)) begin
+      if((!PendingRd) && wbm_stb_i && (!wbm_we_i) && m_cmd_wr_en) begin
       PendingRd <= 1'b1;
       end else if(PendingRd && wbm_stb_i && (!wbm_we_i) && wbm_ack_o) begin
          PendingRd <= 1'b0;
@@ -158,10 +158,26 @@
 logic [32:0] s_resp_wr_data      ;
 logic        s_resp_wr_full      ;
 logic        s_resp_wr_afull     ;
+logic        wbs_ack_f          ;
+
+
+always@(negedge wbs_rst_n or posedge wbs_clk_i)
+begin
+   if(wbs_rst_n == 0) begin
+      wbs_ack_f <= 1'b0;
+   end else begin
+      wbs_ack_f <= wbs_ack_i;
+   end
+end
 
 
 // Read Interface
-assign {wbs_cyc_o,wbs_stb_o,wbs_adr_o,wbs_we_o,wbs_dat_o,wbs_sel_o} = (s_cmd_rd_empty) ? '0:  s_cmd_rd_data;
+assign {wbs_adr_o,wbs_we_o,wbs_dat_o,wbs_sel_o} = (s_cmd_rd_empty) ? '0:  s_cmd_rd_data;
+// All the downstream logic expect Stobe is getting de-asserted 
+// atleast for 1 cycle after ack is generated
+assign wbs_stb_o = (wbs_ack_f) ? 1'b0 : (s_cmd_rd_empty) ? 1'b0: 1'b1;
+assign wbs_cyc_o = (wbs_ack_f) ? 1'b0 : (s_cmd_rd_empty) ? 1'b0: 1'b1;
+
 assign s_cmd_rd_en = wbs_ack_i;
 
 // Write Interface
@@ -169,7 +185,7 @@
 assign s_resp_wr_en   = wbs_stb_o & (!wbs_we_o) & wbs_ack_i & !s_resp_wr_full;
 assign s_resp_wr_data = {wbs_err_i,wbs_dat_i};
 
-async_fifo #(.W(71), .DP(4), .WR_FAST(1), .RD_FAST(1)) u_cmd_if (
+async_fifo #(.W(69), .DP(4), .WR_FAST(1), .RD_FAST(1)) u_cmd_if (
 	           // Sync w.r.t WR clock
 	           .wr_clk        (wbm_clk_i         ),
                    .wr_reset_n    (wbm_rst_n         ),
diff --git a/verilog/rtl/spi_master/src/spim_ctrl.sv b/verilog/rtl/spi_master/src/spim_ctrl.sv
index b4bee53..9e81d98 100644
--- a/verilog/rtl/spi_master/src/spim_ctrl.sv
+++ b/verilog/rtl/spi_master/src/spim_ctrl.sv
@@ -60,35 +60,54 @@
 //// from http://www.opencores.org/lgpl.shtml                     ////
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
-module spim_ctrl
+module spim_ctrl  #(
+     parameter ENDIEAN = 0  // 0 - Little, 1 - Big endian, since RISV is Little indian default set 0
+     )
+
 (
     input  logic                          clk,
     input  logic                          rstn,
-    output logic                          eot,
 
-    input  logic                    [5:0] spi_clk_div,
+    input  logic                    [7:0] spi_clk_div,
     output logic                    [8:0] spi_status,
 
+    // Master 0 Configuration
+    input  logic [3:0]                   cfg_m0_cs_reg    ,  // Chip select
+    input  logic [1:0]                   cfg_m0_spi_mode  ,  // Final SPI Mode 
+    input  logic [1:0]                   cfg_m0_spi_switch,  // SPI Mode Switching Place
 
-    input  logic                          spi_req,
-    input  logic                   [31:0] spi_addr,
-    input  logic                    [5:0] spi_addr_len,
-    input  logic                   [7:0]  spi_cmd,
-    input  logic                    [5:0] spi_cmd_len,
-    input  logic                   [7:0]  spi_mode_cmd,
-    input  logic                          spi_mode_cmd_enb,
-    input  logic                    [3:0] spi_csreg,
-    input  logic                   [15:0] spi_data_len,
-    input  logic                   [15:0] spi_dummy_rd_len,
-    input  logic                   [15:0] spi_dummy_wr_len,
-    input  logic                          spi_swrst, //FIXME Not used at all
-    input  logic                          spi_rd,
-    input  logic                          spi_wr,
-    input  logic                          spi_qrd,
-    input  logic                          spi_qwr,
-    input  logic                   [31:0] spi_wdata,
-    output logic                   [31:0] spi_rdata,
-    output logic                          spi_ack,
+    input  logic [3:0]                   cfg_m1_cs_reg    ,  // Chip select
+    input  logic [1:0]                   cfg_m1_spi_mode  ,  // Final SPI Mode 
+    input  logic [1:0]                   cfg_m1_spi_switch,  // SPI Mode Switching Place
+
+    input  logic [1:0]                   cfg_cs_early     ,  // Amount of cycle early CS asserted
+    input  logic [1:0]                   cfg_cs_late      ,  // Amount of cycle late CS de-asserted
+
+    // Master 0 Command FIFO Interface
+    input  logic                         m0_cmd_fifo_empty,
+    output logic                         m0_cmd_fifo_rd,
+    input  logic [33:0]                  m0_cmd_fifo_rdata,
+
+    // Master 0 response FIFO Interface
+    output logic 	                 m0_res_fifo_flush,
+    input  logic                         m0_res_fifo_empty,
+    input  logic                         m0_res_fifo_full,
+    output logic                         m0_res_fifo_wr,
+    output logic [31:0]                  m0_res_fifo_wdata,
+
+    // Master 1 Command FIFO Interface
+    output logic 	                 m1_res_fifo_flush,
+    input  logic                         m1_cmd_fifo_empty,
+    output logic                         m1_cmd_fifo_rd,
+    input  logic [33:0]                  m1_cmd_fifo_rdata,
+
+    // Master 1 response FIFO Interface
+    input  logic                         m1_res_fifo_empty,
+    input  logic                         m1_res_fifo_full,
+    output logic                         m1_res_fifo_wr,
+    output logic [31:0]                  m1_res_fifo_wdata,
+
+    output logic [3:0]                   ctrl_state,
 
     output logic                          spi_clk,
     output logic                          spi_csn0,
@@ -107,11 +126,73 @@
     output logic                          spi_en_tx // Spi Direction control
 );
 
-
+//--------------------------------------
+// Parameter
+// --------------------------------------
 parameter  SPI_STD     = 2'b00;
 parameter  SPI_QUAD_TX = 2'b01;
 parameter  SPI_QUAD_RX = 2'b10;
 
+/*************************************************************
+*  SPI FSM State Control
+*
+*   OPERATION   COMMAND                   SEQUENCE 
+*
+*    ERASE       P4E(0x20)           ->  COMMAND + ADDRESS
+*    ERASE       P8E(0x40)           ->  COMMAND + ADDRESS
+*    ERASE       SE(0xD8)            ->  COMMAND + ADDRESS
+*    ERASE       BE(0x60)            ->  COMMAND + ADDRESS
+*    ERASE       BE(0xC7)            ->  COMMAND 
+*    PROGRAM     PP(0x02)            ->  COMMAND + ADDRESS + Write DATA
+*    PROGRAM     QPP(0x32)           ->  COMMAND + ADDRESS + Write DATA
+*    READ        READ(0x3)           ->  COMMAND + ADDRESS + READ DATA
+*    READ        FAST_READ(0xB)      ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        DOR (0x3B)          ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        QOR (0x6B)          ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        DIOR (0xBB)         ->  COMMAND + ADDRESS + MODE  + READ DATA
+*    READ        QIOR (0xEB)         ->  COMMAND + ADDRESS + MODE  + DUMMY + READ DATA
+*    READ        RDID (0x9F)         ->  COMMAND + READ DATA
+*    READ        READ_ID (0x90)      ->  COMMAND + ADDRESS + READ DATA
+*    WRITE       WREN(0x6)           ->  COMMAND
+*    WRITE       WRDI                ->  COMMAND
+*    STATUS      RDSR(0x05)          ->  COMMAND + READ DATA
+*    STATUS      RCR(0x35)           ->  COMMAND + READ DATA
+*    CONFIG      WRR(0x01)           ->  COMMAND + WRITE DATA
+*    CONFIG      CLSR(0x30)          ->  COMMAND
+*    Power Saving DP(0xB9)           ->  COMMAND
+*    Power Saving RES(0xAB)          ->  COMMAND + READ DATA
+*    OTP          OTPP(0x42)         ->  COMMAND + ADDR+ WRITE DATA
+*    OTP          OTPR(0x4B)         ->  COMMAND + ADDR + DUMMY + READ DATA
+*    ********************************************************************/
+parameter P_FSM_C      = 4'b0000; // Command Phase Only
+parameter P_FSM_CW     = 4'b0001; // Command + Write DATA Phase Only
+parameter P_FSM_CA     = 4'b0010; // Command -> Address Phase Only
+
+parameter P_FSM_CAR    = 4'b0011; // Command -> Address -> Read Data
+parameter P_FSM_CADR   = 4'b0100; // Command -> Address -> Dummy -> Read Data
+parameter P_FSM_CAMR   = 4'b0101; // Command -> Address -> Mode -> Read Data
+parameter P_FSM_CAMDR  = 4'b0110; // Command -> Address -> Mode -> Dummy -> Read Data
+
+parameter P_FSM_CAW    = 4'b0111; // Command -> Address ->Write Data
+parameter P_FSM_CADW   = 4'b1000; // Command -> Address -> DUMMY + Write Data
+
+parameter P_FSM_CDR    = 4'b1001; // COMMAND -> DUMMY -> READ
+parameter P_FSM_CDW    = 4'b1010; // COMMAND -> DUMMY -> WRITE
+
+//---------------------
+  parameter P_8BIT   = 2'b00;
+  parameter P_16BIT  = 2'b01;
+  parameter P_24BIT  = 2'b10;
+  parameter P_32BIT  = 2'b11;
+
+//---- Phase where to switch the SPI Mode
+//---- This need to decided based on command
+  parameter P_MODE_SWITCH_IDLE     = 2'b00;
+  parameter P_MODE_SWITCH_AT_ADDR  = 2'b01;
+  parameter P_MODE_SWITCH_AT_DATA  = 2'b10;
+//----------------------------------------
+// Local Variable
+// ---------------------------------------
   logic spi_rise;
   logic spi_fall;
 
@@ -119,6 +200,8 @@
 
   logic spi_en_rx;
 
+  logic        res_fifo_flush;
+
   logic [15:0] counter_tx;
   logic        counter_tx_valid;
   logic [15:0] counter_rx;
@@ -127,68 +210,137 @@
   logic [31:0] data_to_tx;
   logic        data_to_tx_valid;
   logic        data_to_tx_ready;
+  logic        tx_data_ready;
 
-  logic en_quad;
-  logic en_quad_int;
-  logic do_tx; //FIXME NOT USED at all!!
-  logic do_rx;
 
-  logic tx_done;
-  logic rx_done;
+  logic       tx_done;
+  logic       rx_done;
 
   logic [1:0] s_spi_mode;
 
-  logic ctrl_data_valid;
+  logic       ctrl_data_valid;
 
-  logic spi_cs;
+  logic       spi_cs;
 
-  logic tx_clk_en;
-  logic rx_clk_en;
-  logic en_quad_in;
+  logic        tx_clk_en;
+  logic        rx_clk_en;
+  logic        en_quad_in;
+  logic [1:0]  cnt; // counter for cs assertion and de-assertion
+  logic [1:0]  nxt_cnt;
+  logic [1:0]  gnt;
+
+  logic  [7:0] cfg_data_cnt    ;
+  logic  [1:0] cfg_dummy_cnt   ;
+  logic  [1:0] cfg_addr_cnt    ;
+  logic  [3:0] cfg_spi_seq     ;
+  logic [7:0]  spi_mode_cmd    ;
   
 
   enum logic [2:0] {DATA_NULL,DATA_EMPTY,DATA_CMD,DATA_ADDR,DATA_MODE,DATA_FIFO} ctrl_data_mux;
 
-  enum logic [4:0] {IDLE,CMD,ADDR,MODE,DUMMY_RX,DUMMY_TX,DATA_TX,DATA_RX,WAIT_EDGE} state,state_next;
+  enum logic [4:0] {FSM_IDLE,FSM_CS_ASSERT,FSM_CMD_PHASE,FSM_ADR_PHASE,FSM_DUMMY_PHASE,FSM_MODE_PHASE,FSM_WRITE_CMD,FSM_WRITE_PHASE,
+	            FSM_READ_WAIT,FSM_READ_PHASE,FSM_TX_DONE,FSM_CS_DEASEERT} state,next_state;
 
-  assign en_quad = spi_qrd | spi_qwr | en_quad_int;
-  
-  
+ 
+  assign ctrl_state =  state;
   assign en_quad_in = (s_spi_mode == SPI_STD) ? 1'b0 : 1'b1;
 
+  assign spi_mode = s_spi_mode;
+
+  //----------------------------
+  // Configuration
+  //----------------------------
+  logic [3:0]  cfg_cs_reg    ;  // Chip select
+  logic [1:0]  cfg_spi_mode  ;  // Final SPI Mode 
+  logic [1:0]  cfg_spi_switch;  // SPI Mode Switching Place
+
+  
+  assign cfg_cs_reg     = (gnt == 2'b01) ? cfg_m0_cs_reg    : cfg_m1_cs_reg;
+  assign cfg_spi_mode   = (gnt == 2'b01) ? cfg_m0_spi_mode  : cfg_m1_spi_mode;  // Final SPI Mode 
+  assign cfg_spi_switch = (gnt == 2'b01) ? cfg_m0_spi_switch: cfg_m1_spi_switch;  // SPI Mode Switching Place
+
+  //----------------------------
+  // Command FIFO
+  //----------------------------
+  logic              cmd_fifo_empty;
+  logic              cmd_fifo_rd;
+  logic [33:0]       cmd_fifo_rdata;
+
+  assign cmd_fifo_empty = (gnt == 2'b01) ? m0_cmd_fifo_empty : m1_cmd_fifo_empty;
+  assign cmd_fifo_rdata = (gnt == 2'b01) ? m0_cmd_fifo_rdata : m1_cmd_fifo_rdata;
+
+  assign m0_cmd_fifo_rd = (gnt == 2'b01) ? cmd_fifo_rd : 1'b0;
+  assign m1_cmd_fifo_rd = (gnt == 2'b10) ? cmd_fifo_rd : 1'b0;
+
+  //----------------------------
+  // Response FIFO
+  //----------------------------
+  logic              res_fifo_empty;
+  logic              res_fifo_full;
+  logic              res_fifo_wr;
+  logic [31:0]       res_fifo_wdata;
+
+  assign res_fifo_empty = (gnt == 2'b01) ? m0_res_fifo_empty : m1_res_fifo_empty;
+  assign res_fifo_full  = (gnt == 2'b01) ? m0_res_fifo_full  : m1_res_fifo_full;
+
+  assign m0_res_fifo_wr = (gnt == 2'b01) ? res_fifo_wr : 1'b0;
+  assign m1_res_fifo_wr = (gnt == 2'b10) ? res_fifo_wr : 1'b0;
+
+  assign m0_res_fifo_wdata = (gnt == 2'b01) ? res_fifo_wdata : 1'b0;
+  assign m1_res_fifo_wdata = (gnt == 2'b10) ? res_fifo_wdata : 1'b0;
+
+  //---------------------------------------------------------------------------
+  // To take care of partial/stall data in response fifo
+  // we are flushing the content
+  //
+  // WARNING: This will work well for burst size 4,
+  // If User given 6 Word Burst and Read only one location
+  // Read Path will hang waiting for Response FIFO to empty, User need to take
+  // care of partial reading case.
+  //---------------------------------------------------------------------------
+  
+  assign m0_res_fifo_flush   =  (gnt == 2'b01) ? res_fifo_flush : 1'b0;
+  assign m1_res_fifo_flush   =  (gnt == 2'b10) ? res_fifo_flush : 1'b0;
+
+  assign spi_clock_en =  tx_clk_en |  rx_clk_en;
+
+  logic  fsm_flush;
+  assign fsm_flush  =  (state == FSM_IDLE);
+
   spim_clkgen u_clkgen
   (
-    .clk           ( clk               ),
-    .rstn          ( rstn              ),
-    .en            ( spi_clock_en      ),
-    .cfg_sck_period( spi_clk_div       ),
-    .spi_clk       ( spi_clk           ),
-    .spi_fall      ( spi_fall          ),
-    .spi_rise      ( spi_rise          )
+    .clk            ( clk                    ),
+    .rstn           ( rstn                   ),
+    .en             ( spi_clock_en           ),
+    .cfg_sck_period ( spi_clk_div [5:0]      ),
+    .spi_clk        ( spi_clk                ),
+    .spi_fall       ( spi_fall               ),
+    .spi_rise       ( spi_rise               )
   );
-
   spim_tx u_txreg
   (
-    .clk            ( clk              ),
-    .rstn           ( rstn             ),
-    .en             ( spi_en_tx        ),
-    .tx_edge        ( spi_fall         ),
-    .tx_done        ( tx_done          ),
-    .sdo0           ( spi_sdo0         ),
-    .sdo1           ( spi_sdo1         ),
-    .sdo2           ( spi_sdo2         ),
-    .sdo3           ( spi_sdo3         ),
-    .en_quad_in     ( en_quad_in       ),
-    .counter_in     ( counter_tx       ),
-    .txdata         ( data_to_tx       ),
-    .data_valid     ( data_to_tx_valid ),
-    .data_ready     (                  ),
-    .clk_en_o       ( tx_clk_en        )
-  );
-  spim_rx u_rxreg
-  (
     .clk            ( clk                    ),
     .rstn           ( rstn                   ),
+    .flush          ( fsm_flush              ),
+    .en             ( spi_en_tx              ),
+    .tx_edge        ( spi_fall               ),
+    .tx_done        ( tx_done                ),
+    .sdo0           ( spi_sdo0               ),
+    .sdo1           ( spi_sdo1               ),
+    .sdo2           ( spi_sdo2               ),
+    .sdo3           ( spi_sdo3               ),
+    .en_quad_in     ( en_quad_in             ),
+    .counter_in     ( counter_tx             ),
+    .txdata         ( data_to_tx             ),
+    .data_valid     ( data_to_tx_valid       ),
+    .data_ready     ( tx_data_ready          ),
+    .clk_en_o       ( tx_clk_en              )
+  );
+  spim_rx #(.ENDIEAN(ENDIEAN)) u_rxreg
+  (
+    .clk            ( clk                    ),
+    .rstn           ( rstn                   ),
+    .flush          ( fsm_flush              ),
     .en             ( spi_en_rx              ),
     .rx_edge        ( spi_rise               ),
     .rx_done        ( rx_done                ),
@@ -199,13 +351,12 @@
     .en_quad_in     ( en_quad_in             ),
     .counter_in     ( counter_rx             ),
     .counter_in_upd ( counter_rx_valid       ),
-    .data           ( spi_rdata              ),
-    .data_valid     (                        ),
-    .data_ready     ( 1'b1                   ),
+    .data           ( res_fifo_wdata         ),
+    .data_valid     ( res_fifo_wr            ),
+    .data_ready     ( !res_fifo_full         ),
     .clk_en_o       ( rx_clk_en              )
   );
 
-  
   always_comb
   begin
       data_to_tx       =  'h0;
@@ -226,7 +377,7 @@
 
           DATA_CMD:
           begin
-              data_to_tx       = {spi_cmd,24'h0};
+              data_to_tx       = {cmd_fifo_rdata[7:0],24'h0};
               data_to_tx_valid = ctrl_data_valid;
           end
           DATA_MODE:
@@ -237,518 +388,311 @@
 
           DATA_ADDR:
           begin
-              data_to_tx       = spi_addr;
+              data_to_tx       = (cfg_addr_cnt == P_8BIT)  ? {cmd_fifo_rdata[7:0],24'h0}  :
+		                 (cfg_addr_cnt == P_16BIT) ? {cmd_fifo_rdata[15:0],16'h0} :
+		                 (cfg_addr_cnt == P_24BIT) ? {cmd_fifo_rdata[23:0],8'h0}  : {cmd_fifo_rdata[31:0]};
               data_to_tx_valid = ctrl_data_valid;
           end
 
-          DATA_FIFO:
-          begin
-             data_to_tx             = spi_wdata;
-             data_to_tx_valid       = ctrl_data_valid;
+	  // RISV is little endian, so data is converted to little endian format
+          DATA_FIFO: begin
+             data_to_tx     = (ENDIEAN) ? cmd_fifo_rdata[31:0] : 
+		                 {cmd_fifo_rdata[7:0],cmd_fifo_rdata[15:8],cmd_fifo_rdata[23:16],cmd_fifo_rdata[31:24]};
+             data_to_tx_valid  = !cmd_fifo_empty;
           end
       endcase
   end
 
   always_comb
   begin
-    spi_cs           = 1'b1;
-    spi_clock_en     = 1'b0;
-    counter_tx       =  '0;
-    counter_tx_valid = 1'b0;
-    counter_rx       =  '0;
-    counter_rx_valid = 1'b0;
-    state_next       = state;
-    ctrl_data_mux    = DATA_NULL;
-    ctrl_data_valid  = 1'b0;
-    spi_en_rx        = 1'b0;
-    spi_en_tx        = 1'b0;
-    spi_status       =  '0;
-    s_spi_mode       = SPI_QUAD_RX;
-    eot              = 1'b0;
+    counter_tx         =  '0;
+    counter_tx_valid   = 1'b0;
+    counter_rx         =  '0;
+    counter_rx_valid   = 1'b0;
+    next_state         = state;
+    ctrl_data_mux      = DATA_NULL;
+    ctrl_data_valid    = 1'b0;
+    spi_en_rx          = 1'b0;
+    spi_en_tx          = 1'b0;
+    spi_status         =  '0;
+    cmd_fifo_rd        = 1'b0;
+    res_fifo_flush     = 0;
+    nxt_cnt            = cnt;
     case(state)
-      IDLE:
+      FSM_IDLE:
       begin
         spi_status[0] = 1'b1;
-        s_spi_mode = SPI_QUAD_RX;
-        if (spi_req && spi_fall)
-        begin
-          spi_cs       = 1'b0;
-          spi_clock_en = 1'b1;
-
-          if (spi_cmd_len != 0)
-          begin
-//            s_spi_mode = (spi_qrd | spi_qwr) ? `SPI_QUAD_TX : `SPI_STD;
-            s_spi_mode       = SPI_STD; // COMMAND is always Standard Mode ?
-            counter_tx       = {8'h0,spi_cmd_len};
-            counter_tx_valid = 1'b1;
-            ctrl_data_mux    = DATA_CMD;
-            ctrl_data_valid  = 1'b1;
-            spi_en_tx        = 1'b1;
-            state_next       = CMD;
-          end
-          else if (spi_addr_len != 0)
-          begin
-            s_spi_mode = (spi_qrd | spi_qwr) ? SPI_QUAD_TX : SPI_STD;
-            counter_tx       = {8'h0,spi_addr_len};
-            counter_tx_valid = 1'b1;
-            ctrl_data_mux    = DATA_ADDR;
-            ctrl_data_valid  = 1'b1;
-            spi_en_tx        = 1'b1;
-            state_next       = ADDR;
-          end
-          else if (spi_mode_cmd_enb != 0)
-          begin
-            s_spi_mode = (spi_qrd | spi_qwr) ? SPI_QUAD_TX : SPI_STD;
-            counter_tx       = {8'h0,8'h8};
-            counter_tx_valid = 1'b1;
-            ctrl_data_mux    = DATA_MODE;
-            ctrl_data_valid  = 1'b1;
-            spi_en_tx        = 1'b1;
-            state_next       = MODE;
-          end
-          else if (spi_data_len != 0)
-          begin
-             if (spi_rd || spi_qrd)
-             begin
-                s_spi_mode = (spi_qrd) ? SPI_QUAD_RX : SPI_STD;
-                if(spi_dummy_rd_len != 0)
-                begin
-                  counter_rx       = en_quad ? {2'b00,spi_dummy_rd_len[13:0]} : spi_dummy_rd_len;
-                  counter_rx_valid = 1'b1;
-                  spi_en_rx        = 1'b1;
-                  ctrl_data_mux    = DATA_EMPTY;
-                  spi_clock_en     = rx_clk_en;
-                  state_next       = DUMMY_RX;
-                end
-                else
-                begin
-                   counter_rx       = spi_data_len;
-                   counter_rx_valid = 1'b1;
-                   spi_en_rx        = 1'b1;
-                   spi_clock_en     = rx_clk_en;
-                   state_next       = DATA_RX;
-                end
-             end
-             else
-             begin
-                s_spi_mode = (spi_qwr) ? SPI_QUAD_TX : SPI_STD;
-                if(spi_dummy_wr_len != 0)
-                begin
-                   counter_tx       = en_quad ? {2'b00,spi_dummy_wr_len[13:0]} : spi_dummy_wr_len;
-                   counter_tx_valid = 1'b1;
-                   ctrl_data_mux    = DATA_EMPTY;
-                   spi_en_tx        = 1'b1;
-                   spi_clock_en     = tx_clk_en;
-                   state_next       = DUMMY_TX;
-                end
-                else
-                begin
-                   counter_tx       = spi_data_len;
-                   counter_tx_valid = 1'b1;
-                   ctrl_data_mux    = DATA_FIFO;
-                   ctrl_data_valid  = 1'b0;
-                   spi_en_tx        = 1'b1;
-                   spi_clock_en     = tx_clk_en;
-                   state_next       = DATA_TX;
-                end
-             end
-          end
-        end
-        else
-        begin
-          spi_cs = 1'b1;
-          state_next = IDLE;
+	nxt_cnt    = 0;
+	if(!m0_cmd_fifo_empty || !m1_cmd_fifo_empty )  begin
+	   next_state  = FSM_CS_ASSERT;
         end
       end
 
-      CMD:
-      begin
-        spi_status[1] = 1'b1;
-        spi_cs = 1'b0;
-        spi_clock_en = 1'b1;
-//      s_spi_mode = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-        s_spi_mode = SPI_STD; // Command is always Standard Mode ?
-        if (tx_done && spi_fall)
-        begin
-          if (spi_addr_len != 0)
-          begin
-            s_spi_mode = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-            counter_tx       = {8'h0,spi_addr_len};
-            counter_tx_valid = 1'b1;
-            ctrl_data_mux    = DATA_ADDR;
-            ctrl_data_valid  = 1'b1;
-            spi_en_tx        = 1'b1;
-            state_next       = ADDR;
-          end
-          else if (spi_mode_cmd_enb != 0)
-          begin
-            s_spi_mode = (spi_qrd | spi_qwr) ? SPI_QUAD_TX : SPI_STD;
-            counter_tx       = {8'h0,8'h8};
-            counter_tx_valid = 1'b1;
-            ctrl_data_mux    = DATA_MODE;
-            ctrl_data_valid  = 1'b1;
-            spi_en_tx        = 1'b1;
-            state_next       = MODE;
-          end
-          else if (spi_data_len != 0)
-          begin
-            if (do_rx)
-            begin
-              s_spi_mode = (en_quad) ? SPI_QUAD_RX : SPI_STD;
-              if(spi_dummy_rd_len != 0)
-              begin
-                counter_rx       = en_quad ? {2'b00,spi_dummy_rd_len[13:0]} : spi_dummy_rd_len;
-                counter_rx_valid = 1'b1;
-                spi_en_rx        = 1'b1;
-                ctrl_data_mux    = DATA_EMPTY;
-                spi_clock_en     = rx_clk_en;
-                state_next       = DUMMY_RX;
-              end
-              else
-              begin
-                counter_rx       = spi_data_len;
-                counter_rx_valid = 1'b1;
-                spi_en_rx        = 1'b1;
-                spi_clock_en     = rx_clk_en;
-                state_next       = DATA_RX;
-              end
-            end
-            else
-            begin
-              s_spi_mode = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-              if(spi_dummy_wr_len != 0)
-              begin
-                counter_tx       = en_quad ? {2'b00,spi_dummy_wr_len[13:0]} : spi_dummy_wr_len;
-                counter_tx_valid = 1'b1;
-                ctrl_data_mux    = DATA_EMPTY;
-                spi_en_tx        = 1'b1;
-                spi_clock_en     = tx_clk_en;
-                state_next       = DUMMY_TX;
-              end
-              else
-              begin
-                counter_tx       = spi_data_len;
-                counter_tx_valid = 1'b1;
-                ctrl_data_mux    = DATA_FIFO;
-                ctrl_data_valid  = 1'b1;
-                spi_en_tx        = 1'b1;
-                spi_clock_en     = tx_clk_en;
-                state_next       = DATA_TX;
-              end
-            end
-          end
-          else
-          begin
-            spi_en_tx  = 1'b1;
-            state_next = WAIT_EDGE;
-          end
-        end
-        else
-        begin
-          spi_en_tx  = 1'b1;
-          state_next = CMD;
-        end
+      // Asserted CS# low
+      FSM_CS_ASSERT: begin
+	 if(cfg_cs_early == cnt) begin
+	     next_state  = FSM_CMD_PHASE;
+	 end else begin
+             nxt_cnt = nxt_cnt+1;
+	 end
       end
 
-      ADDR:
-      begin
-        spi_en_tx     = 1'b1;
-        spi_status[2] = 1'b1;
-        spi_cs        = 1'b0;
-        spi_clock_en  = 1'b1;
-        s_spi_mode    = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-
-        if (tx_done && spi_fall)
-        begin
-          if (spi_mode_cmd_enb != 0)
-          begin
-            s_spi_mode = (spi_qrd | spi_qwr) ? SPI_QUAD_TX : SPI_STD;
-            counter_tx       = {8'h0,8'h8};
-            counter_tx_valid = 1'b1;
-            ctrl_data_mux    = DATA_MODE;
-            ctrl_data_valid  = 1'b1;
-            spi_en_tx        = 1'b1;
-            state_next       = MODE;
-          end
-          else if (spi_data_len != 0)
-          begin
-            if (do_rx)
-            begin
-              s_spi_mode = (en_quad) ? SPI_QUAD_RX : SPI_STD;
-              if(spi_dummy_rd_len != 0)
-              begin
-                counter_rx       = en_quad ? {2'b00,spi_dummy_rd_len[13:0]} : spi_dummy_rd_len;
-                counter_rx_valid = 1'b1;
-                spi_en_rx        = 1'b1;
-                ctrl_data_mux    = DATA_EMPTY;
-                spi_clock_en     = rx_clk_en;
-                state_next       = DUMMY_RX;
-              end
-              else
-              begin
-                counter_rx       = spi_data_len;
-                counter_rx_valid = 1'b1;
-                spi_en_rx        = 1'b1;
-                spi_clock_en     = rx_clk_en;
-                state_next       = DATA_RX;
-              end
-            end
-            else
-            begin
-              s_spi_mode = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-              spi_en_tx  = 1'b1;
-
-              if(spi_dummy_wr_len != 0) begin
-                counter_tx       = en_quad ? {2'b00,spi_dummy_wr_len[13:0]} : spi_dummy_wr_len;
-                counter_tx_valid = 1'b1;
-                ctrl_data_mux    = DATA_EMPTY;
-                spi_clock_en     = tx_clk_en;
-                state_next       = DUMMY_TX;
-              end else begin
-                counter_tx       = spi_data_len;
-                counter_tx_valid = 1'b1;
-                ctrl_data_mux    = DATA_FIFO;
-                ctrl_data_valid  = 1'b1;
-                spi_clock_en     = tx_clk_en;
-                state_next       = DATA_TX;
-              end
-            end
-          end
-          else
-          begin
-            state_next = WAIT_EDGE;
-          end
-        end
-      end
-
-      MODE:
-      begin
-        spi_en_tx     = 1'b1;
-        spi_status[3] = 1'b1;
-        spi_cs        = 1'b0;
-        spi_clock_en  = 1'b1;
-        s_spi_mode    = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-        if (tx_done && spi_fall)
-        begin
-          if (spi_data_len != 0)
-          begin
-            if (do_rx)
-            begin
-              s_spi_mode = (en_quad) ? SPI_QUAD_RX : SPI_STD;
-              if(spi_dummy_rd_len != 0)
-              begin
-                counter_rx       = en_quad ? {2'b00,spi_dummy_rd_len[13:0]} : spi_dummy_rd_len;
-                counter_rx_valid = 1'b1;
-                spi_en_rx        = 1'b1;
-                ctrl_data_mux    = DATA_EMPTY;
-                spi_clock_en     = rx_clk_en;
-                state_next       = DUMMY_RX;
-              end
-              else
-              begin
-                counter_rx       = spi_data_len;
-                counter_rx_valid = 1'b1;
-                spi_en_rx        = 1'b1;
-                spi_clock_en     = rx_clk_en;
-                state_next       = DATA_RX;
-              end
-            end
-            else
-            begin
-              s_spi_mode = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-              spi_en_tx  = 1'b1;
-
-              if(spi_dummy_wr_len != 0) begin
-                counter_tx       = en_quad ? {2'b00,spi_dummy_wr_len[13:0]} : spi_dummy_wr_len;
-                counter_tx_valid = 1'b1;
-                ctrl_data_mux    = DATA_EMPTY;
-                spi_clock_en     = tx_clk_en;
-                state_next       = DUMMY_TX;
-              end else begin
-                counter_tx       = spi_data_len;
-                counter_tx_valid = 1'b1;
-                ctrl_data_mux    = DATA_FIFO;
-                ctrl_data_valid  = 1'b1;
-                spi_clock_en     = tx_clk_en;
-                state_next       = DATA_TX;
-              end
-            end
-          end
-          else
-          begin
-            state_next = WAIT_EDGE;
-          end
-        end
-      end
-
-      DUMMY_TX:
-      begin
-        spi_en_tx     = 1'b1;
-        spi_status[4] = 1'b1;
-        spi_cs        = 1'b0;
-        spi_clock_en  = 1'b1;
-        s_spi_mode    = (en_quad) ? SPI_QUAD_RX : SPI_STD;
-
-        if (tx_done && spi_fall) begin
-          if (spi_data_len != 0) begin
-            if (do_rx) begin
-              counter_rx       = spi_data_len;
-              counter_rx_valid = 1'b1;
-              spi_en_rx        = 1'b1;
-              spi_clock_en     = rx_clk_en;
-              state_next       = DATA_RX;
-            end else begin
-              counter_tx       = spi_data_len;
+      // WAIT for COMMAND Phase Completed
+      FSM_CMD_PHASE: begin
+              counter_tx       = 8'h8;
+              ctrl_data_mux    = DATA_CMD;
+              ctrl_data_valid  = 1'b1;
+              counter_tx       = 'd8;
               counter_tx_valid = 1'b1;
-              s_spi_mode       = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-
-              spi_clock_en     = tx_clk_en;
               spi_en_tx        = 1'b1;
-              state_next       = DATA_TX;
-            end
-          end
-          else
-          begin
-            eot        = 1'b1;
-            state_next = WAIT_EDGE;
-          end
+	 if (tx_data_ready) begin
+	      cmd_fifo_rd      = 1'b1;
+	      case(cfg_spi_seq)
+	      P_FSM_C:     next_state = FSM_TX_DONE;
+	      P_FSM_CW:    next_state = FSM_WRITE_CMD;
+	      P_FSM_CA:    next_state = FSM_ADR_PHASE;
+	      P_FSM_CAR:   next_state = FSM_ADR_PHASE;
+              P_FSM_CADR:  next_state = FSM_ADR_PHASE;
+	      P_FSM_CAMR:  next_state = FSM_ADR_PHASE;
+	      P_FSM_CAMDR: next_state = FSM_ADR_PHASE;
+	      P_FSM_CAW:   next_state = FSM_ADR_PHASE;
+	      P_FSM_CADW:  next_state = FSM_ADR_PHASE;
+	      P_FSM_CDR:   next_state = FSM_DUMMY_PHASE;
+	      P_FSM_CDW:   next_state = FSM_DUMMY_PHASE;
+	      default  :   next_state = FSM_TX_DONE;
+              endcase
+	  end
+      end
+
+      // WAIT for ADDR Command Accepted
+      FSM_ADR_PHASE: begin
+          nxt_cnt          = 0;
+          ctrl_data_mux    = DATA_ADDR;
+          ctrl_data_valid  = 1'b1;
+          counter_tx       =  (cfg_addr_cnt == P_8BIT) ? 'd8 :
+	                      (cfg_addr_cnt == P_16BIT) ? 'd16 :
+	                      (cfg_addr_cnt == P_24BIT) ? 'd24 : 'd20;
+          counter_tx_valid = 1'b1;
+          spi_en_tx        = 1'b1;
+	  if (tx_data_ready) begin
+              ctrl_data_valid  = 1'b0;
+	      cmd_fifo_rd      = 1'b1;
+	      case(cfg_spi_seq)
+	      P_FSM_CA:    next_state = FSM_TX_DONE;
+	      P_FSM_CAR:   next_state = FSM_READ_WAIT;
+              P_FSM_CADR:  next_state = FSM_DUMMY_PHASE;
+	      P_FSM_CAMR:  next_state = FSM_MODE_PHASE;
+	      P_FSM_CAMDR: next_state = FSM_MODE_PHASE;
+	      P_FSM_CAW:   next_state = FSM_WRITE_CMD;
+	      P_FSM_CADW:  next_state = FSM_DUMMY_PHASE;
+	      default  :   next_state = FSM_TX_DONE;
+              endcase
+           end
         end
-        else
-        begin
-          ctrl_data_mux = DATA_EMPTY;
-          spi_en_tx     = 1'b1;
-          state_next    = DUMMY_TX;
+
+      // WAIT for DUMMY command Accepted
+      FSM_DUMMY_PHASE: begin
+          nxt_cnt          = 0;
+          ctrl_data_mux    = DATA_EMPTY;
+          ctrl_data_valid  = 1'b1;
+          counter_tx_valid = 1'b1;
+          counter_tx       =  (cfg_dummy_cnt == P_8BIT) ? 'd8 :
+	                      (cfg_dummy_cnt == P_16BIT) ? 'd16 :
+	                      (cfg_dummy_cnt == P_24BIT) ? 'd24 : 'd20;
+          spi_en_tx        = 1'b1;
+	  if (tx_data_ready) begin
+              ctrl_data_valid = 1'b0;
+	      case(cfg_spi_seq)
+              P_FSM_CADR:  next_state = FSM_READ_WAIT;
+	      P_FSM_CAMDR: next_state = FSM_READ_WAIT;
+	      P_FSM_CADW:  next_state = FSM_WRITE_CMD;
+	      P_FSM_CDR:   next_state = FSM_READ_WAIT;
+	      P_FSM_CDW:   next_state = FSM_WRITE_CMD;
+	      default  :   next_state = FSM_CS_DEASEERT;
+              endcase
+           end
         end
-      end
-
-      DUMMY_RX:
-      begin
-        spi_en_rx     = 1'b1;
-        spi_status[5] = 1'b1;
-        spi_cs        = 1'b0;
-        spi_clock_en  = 1'b1;
-        s_spi_mode    = (en_quad) ? SPI_QUAD_RX : SPI_STD;
-
-        if (rx_done && spi_rise) begin
-          if (spi_data_len != 0) begin
-            if (do_rx) begin
-              counter_rx       = spi_data_len;
-              counter_rx_valid = 1'b1;
-              spi_en_rx        = 1'b1;
-              spi_clock_en     = rx_clk_en;
-              state_next       = DATA_RX;
-            end else begin
-              counter_tx       = spi_data_len;
-              counter_tx_valid = 1'b1;
-              s_spi_mode       = (en_quad) ? SPI_QUAD_TX : SPI_STD;
-
-              spi_clock_en     = tx_clk_en;
-              spi_en_tx        = 1'b1;
-              state_next       = DATA_TX;
-            end
-          end
-          else
-          begin
-            eot        = 1'b1;
-            state_next = WAIT_EDGE;
-          end
+      // WAIT for MODE command accepted
+      FSM_MODE_PHASE: begin
+          nxt_cnt          = 0;
+          ctrl_data_mux    = DATA_MODE;
+          ctrl_data_valid  = 1'b1;
+          counter_tx_valid = 1'b1;
+          counter_tx       = 'd8;
+          spi_en_tx        = 1'b1;
+	  if (tx_data_ready) begin
+	      case(cfg_spi_seq)
+	      P_FSM_CAMR:  next_state = FSM_READ_WAIT;
+	      P_FSM_CAMDR: next_state = FSM_DUMMY_PHASE;
+	      default  :   next_state = FSM_CS_DEASEERT;
+              endcase
+           end
         end
-        else
-        begin
-          ctrl_data_mux = DATA_EMPTY;
-          spi_en_tx     = 1'b1;
-          spi_clock_en  = rx_clk_en;
-          state_next    = DUMMY_RX;
+
+      // Wait for WRITE COMMAND ACCEPTED
+      FSM_WRITE_CMD: begin
+          nxt_cnt          = 0;
+          ctrl_data_mux    = DATA_FIFO;
+          ctrl_data_valid  = 1'b1;
+          counter_tx_valid = 1'b1;
+          counter_tx       = {5'b0,cfg_data_cnt[7:0],3'b000}; // Convert Byte to Bit Count
+          spi_en_tx        = 1'b1;
+	  if (tx_data_ready) begin
+	      cmd_fifo_rd      = 1'b1;
+	      next_state = FSM_WRITE_PHASE;
+	   end
         end
-      end
-      DATA_TX:
-      begin
-        spi_status[6]    = 1'b1;
-        spi_cs           = 1'b0;
-        spi_clock_en     = tx_clk_en;
-        ctrl_data_mux    = DATA_FIFO;
-        spi_en_tx        = 1'b1;
-        s_spi_mode       = (en_quad) ? SPI_QUAD_TX : SPI_STD;
 
-        if (tx_done && spi_fall) begin
-          eot          = 1'b1;
-          state_next   = WAIT_EDGE;
-          spi_clock_en = 1'b0;
-        end else begin
-          state_next = DATA_TX;
+      // Wait for ALL WRITE DATA ACCEPTED
+      FSM_WRITE_PHASE: begin
+          nxt_cnt          = 0;
+          ctrl_data_mux    = DATA_FIFO;
+          ctrl_data_valid  = 1'b1;
+          spi_en_tx        = 1'b1;
+	  if (tx_done) begin
+	      next_state = FSM_CS_DEASEERT;
+           end else if(tx_data_ready  && cmd_fifo_empty == 0) begin
+	      // Once Current Data is accepted by TX FSM, check FIFO not empty
+	      // and read next location
+	      cmd_fifo_rd      = 1'b1;
+	   end
         end
+
+      // Wait for Previous TX Completeion
+      FSM_READ_WAIT: begin
+          spi_en_tx        = 1'b1;
+	  if (tx_done) begin
+              res_fifo_flush  = 1; // Flush any stall data in response fifo
+	      next_state = FSM_READ_PHASE;
+	  end
       end
 
-      DATA_RX:
-      begin
-        spi_status[7] = 1'b1;
-        spi_cs        = 1'b0;
-        spi_clock_en  = rx_clk_en;
-        s_spi_mode    = (en_quad) ? SPI_QUAD_RX : SPI_STD;
-
-        if (rx_done && spi_rise) begin
-          state_next = WAIT_EDGE;
-        end else begin
-          spi_en_rx  = 1'b1;
-          state_next = DATA_RX;
+      FSM_READ_PHASE: begin
+          nxt_cnt          = 0;
+          counter_rx_valid = 1'b1;
+          counter_rx       = {5'b0,cfg_data_cnt[7:0],3'b000}; // Convert Byte to Bit Count
+          spi_en_rx        = 1'b1;
+	  if(!cmd_fifo_empty) begin
+             // If you see new command request, then abort the current request
+	      next_state = FSM_CS_DEASEERT;
+	  end else begin
+	     if (rx_done && spi_rise) begin
+	         next_state = FSM_CS_DEASEERT;
+             end 
+	  end
         end
-      end
-      WAIT_EDGE:
-      begin
-        spi_status[8] = 1'b1;
-        spi_cs        = 1'b0;
-        spi_clock_en  = 1'b0;
-        s_spi_mode    = (en_quad) ? SPI_QUAD_RX : SPI_STD;
-        eot           = 1'b1;
-        state_next    = IDLE;
-      end
-    endcase
-  end
 
-assign  spi_ack = ((spi_req ==1) && (state == WAIT_EDGE)) ? 1'b1 : 1'b0;
+      // Wait for TX Done
+      FSM_TX_DONE: begin
+         spi_en_tx        = 1'b1;
+	 if(tx_done) next_state  = FSM_CS_DEASEERT;
+      end
+
+      // De-assert CS#
+      FSM_CS_DEASEERT: begin
+	 if(cfg_cs_late == cnt) begin
+	     next_state  = FSM_IDLE;
+	 end else begin
+             nxt_cnt = nxt_cnt+1;
+	 end
+      end
+   endcase
+end
 
 
-  always_ff @(posedge clk, negedge rstn)
-  begin
-    if (rstn == 1'b0)
-    begin
-      state       <= IDLE;
-      en_quad_int <= 1'b0;
-      do_rx       <= 1'b0;
-      do_tx       <= 1'b0;
-      spi_mode    <= SPI_QUAD_RX;
-    end
-    else
-    begin
-       state <= state_next;
-       spi_mode <= s_spi_mode;
-      if (spi_qrd || spi_qwr)
-        en_quad_int <= 1'b1;
-      else if (state_next == IDLE)
-        en_quad_int <= 1'b0;
 
-      if (spi_rd || spi_qrd)
-      begin
-        do_rx <= 1'b1;
-        do_tx <= 1'b0;
-      end
-      else if (spi_wr || spi_qwr)
-      begin
-        do_rx <= 1'b0;
-        do_tx <= 1'b1;
-      end
-      else if (state_next == IDLE)
-      begin
-        do_rx <= 1'b0;
-        do_tx <= 1'b0;
-      end
+
+  always @(posedge clk or negedge rstn) begin
+    if (rstn == 1'b0) begin
+      state       <= FSM_IDLE;
+      cnt         <= 'h0;
+    end else begin
+       state <= next_state;
+       cnt   <= nxt_cnt;
     end
   end
 
-  assign spi_csn0 = ~spi_csreg[0] | spi_cs;
-  assign spi_csn1 = ~spi_csreg[1] | spi_cs;
-  assign spi_csn2 = ~spi_csreg[2] | spi_cs;
-  assign spi_csn3 = ~spi_csreg[3] | spi_cs;
+  //---------------------------------------------------------------------
+  //  Grant Generation Based on FIFO empty, priority given to Master 0
+  //  Grant switch happens only at FSM IDLE State
+  // ---------------------------------------------------------------------
+
+  always @(posedge clk or negedge rstn) begin
+    if (rstn == 1'b0) begin
+      gnt             <= 0;
+      spi_mode_cmd    <= 'h0;
+      cfg_spi_seq     <= 'h0;
+      cfg_addr_cnt    <= 'h0;
+      cfg_dummy_cnt   <= 'h0;
+      cfg_data_cnt    <= 'h0;
+    end else begin
+       if(state == FSM_IDLE) begin
+           if(!m0_cmd_fifo_empty) begin
+              cfg_data_cnt    <= m0_cmd_fifo_rdata[31:24];
+              cfg_dummy_cnt   <= m0_cmd_fifo_rdata[23:22];
+              cfg_addr_cnt    <= m0_cmd_fifo_rdata[21:20];
+              cfg_spi_seq     <= m0_cmd_fifo_rdata[19:16];
+              spi_mode_cmd    <= m0_cmd_fifo_rdata[15:8];
+              gnt             <= 2'b01;
+           end
+           else if(!m1_cmd_fifo_empty ) begin
+              cfg_data_cnt    <= m1_cmd_fifo_rdata[31:24];
+              cfg_dummy_cnt   <= m1_cmd_fifo_rdata[23:22];
+              cfg_addr_cnt    <= m1_cmd_fifo_rdata[21:20];
+              cfg_spi_seq     <= m1_cmd_fifo_rdata[19:16];
+              spi_mode_cmd    <= m1_cmd_fifo_rdata[15:8];
+              gnt             <= 2'b10;
+           end
+        end
+      end
+   end
+
+
+  //-----------------------------------------------------------------------
+  // SPI Mode Switch Control Logic
+  // Note: SPI Protocl Start with SPI_STD Mode (Sigle Bit Mode) Base on the
+  // Command, Type it Switch the mode at ADDRESS/DUMMY/DATA Phase
+  // QIOR(0xEB) -> Mode switch at Address Phase
+  // DIOR(0xBB) -> Mode Switch at Address Phase
+  // QOR (0x6B) -> Mode Switch at Data Phase
+  // DOR (0x3B) -> Mode Switch at Data Phase
+  // QPP (0x32) -> Mode Switch at Data Phase 
+  // ----------------------------------------------------------------------
+  always @(posedge clk or negedge rstn) begin
+     if (rstn == 1'b0) begin
+        s_spi_mode <= SPI_STD;
+     end else begin
+	if(state == FSM_IDLE) begin // Reset the Mode at IDLE State
+            s_spi_mode <= SPI_STD;
+	end else if(state == FSM_ADR_PHASE && cfg_spi_switch == P_MODE_SWITCH_AT_ADDR) begin
+            s_spi_mode <= cfg_spi_mode;
+	end else if(state == FSM_DUMMY_PHASE && cfg_spi_switch == P_MODE_SWITCH_AT_DATA) begin
+            s_spi_mode <= cfg_spi_mode;
+	end
+     end
+  end
+
+  // SPI Chip Select Logic
+  always @(posedge clk or negedge rstn) begin
+     if (rstn == 1'b0) begin
+        spi_csn0 <= 1'b1;
+        spi_csn1 <= 1'b1;
+        spi_csn2 <= 1'b1;
+        spi_csn3 <= 1'b1;
+     end else begin
+	if(state != FSM_IDLE) begin
+           spi_csn0 <= ~cfg_cs_reg[0];
+           spi_csn1 <= ~cfg_cs_reg[1];
+           spi_csn2 <= ~cfg_cs_reg[2];
+           spi_csn3 <= ~cfg_cs_reg[3];
+	end else begin
+           spi_csn0 <= 1'b1;
+           spi_csn1 <= 1'b1;
+           spi_csn2 <= 1'b1;
+           spi_csn3 <= 1'b1;
+	end
+     end
+  end
 
 endmodule
 
diff --git a/verilog/rtl/spi_master/src/spim_fifo.sv b/verilog/rtl/spi_master/src/spim_fifo.sv
index bbe3c1a..b16a1b3 100644
--- a/verilog/rtl/spi_master/src/spim_fifo.sv
+++ b/verilog/rtl/spi_master/src/spim_fifo.sv
@@ -15,160 +15,213 @@
 // SPDX-License-Identifier: Apache-2.0
 // SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org>
 //
-//////////////////////////////////////////////////////////////////////
-////                                                              ////
-////  YiFive cores common library Module                          ////
-////                                                              ////
-////  This file is part of the YIFive cores project               ////
-////  https://github.com/dineshannayya/yifive_r0.git              ////
-////  http://www.opencores.org/cores/yifive/                      ////
-////                                                              ////
-////  Description                                                 ////
-////     Sync Fifo with full and empty                            ////
-////                                                              ////
-////  To Do:                                                      ////
-////    nothing                                                   ////
-////                                                              ////
-////  Author(s):                                                  ////
-////      - Dinesh Annayya, dinesha@opencores.org                 ////
-////                                                              ////
-////  Revision : June 7, 2021                                     //// 
-////                                                              ////
-//////////////////////////////////////////////////////////////////////
-////                                                              ////
-//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
-////                                                              ////
-//// This source file may be used and distributed without         ////
-//// restriction provided that this copyright statement is not    ////
-//// removed from the file and that any derivative work contains  ////
-//// the original copyright notice and the associated disclaimer. ////
-////                                                              ////
-//// This source file is free software; you can redistribute it   ////
-//// and/or modify it under the terms of the GNU Lesser General   ////
-//// Public License as published by the Free Software Foundation; ////
-//// either version 2.1 of the License, or (at your option) any   ////
-//// later version.                                               ////
-////                                                              ////
-//// This source is distributed in the hope that it will be       ////
-//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
-//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
-//// PURPOSE.  See the GNU Lesser General Public License for more ////
-//// details.                                                     ////
-////                                                              ////
-//// You should have received a copy of the GNU Lesser General    ////
-//// Public License along with this source; if not, download it   ////
-//// from http://www.opencores.org/lgpl.shtml                     ////
-////                                                              ////
-//////////////////////////////////////////////////////////////////////
+/*********************************************************************
+                                                              
+  SYNC FIFO
+                                                              
+  This file is part of the yifive project
+  https://github.com/dineshannayya/yifive_r0.git           
+                                                              
+  Description: SYNC FIFO 
+                                                              
+  To Do:                                                      
+    nothing                                                   
+                                                              
+  Author(s):  Dinesh Annayya, dinesha@opencores.org                 
+                                                             
+ Copyright (C) 2000 Authors and OPENCORES.ORG                
+                                                             
+ This source file may be used and distributed without         
+ restriction provided that this copyright statement is not    
+ removed from the file and that any derivative work contains  
+ the original copyright notice and the associated disclaimer. 
+                                                              
+ This source file is free software; you can redistribute it   
+ and/or modify it under the terms of the GNU Lesser General   
+ Public License as published by the Free Software Foundation; 
+ either version 2.1 of the License, or (at your option) any   
+later version.                                               
+                                                              
+ This source is distributed in the hope that it will be       
+ useful, but WITHOUT ANY WARRANTY; without even the implied   
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      
+ PURPOSE.  See the GNU Lesser General Public License for more 
+ details.                                                     
+                                                              
+ You should have received a copy of the GNU Lesser General    
+ Public License along with this source; if not, download it   
+ from http://www.opencores.org/lgpl.shtml                     
+                                                              
+*******************************************************************/
 
-module spim_fifo #(
-      parameter  DATA_WIDTH  = 32, // Data Width
-      parameter  ADDR_WIDTH   = 1, // Address Width
-      parameter  FIFO_DEPTH   = 2  // FIFO DEPTH
-	
-)(
-       input                   rstn,
-       input                   srst,
-       input                   clk,
-       input                   wr_en, // Write
-       input [DATA_WIDTH-1:0]  din,
-       output                  ready_o,
+//-------------------------------------------
+// sync FIFO
+//-----------------------------------------------
+//`timescale  1ns/1ps
 
-       input                   rd_en, // Read
-       output [DATA_WIDTH-1:0] dout,
-       output                  valid_o
-);
+module spim_fifo (clk,
+                   reset_n,
+		   flush,
+                   wr_en,
+                   wr_data,
+                   full,                 
+                   afull,                 
+                   rd_en,
+                   empty,                
+                   aempty,                
+                   rd_data);
+
+   parameter W = 4'd8;
+   parameter DP = 3'd4;
+   parameter WR_FAST = 1'b1;
+   parameter RD_FAST = 1'b1;
+   parameter FULL_DP = DP;
+   parameter EMPTY_DP = 1'b0;
+
+   parameter AW = (DP == 2)   ? 1 : 
+		  (DP == 4)   ? 2 :
+                  (DP == 8)   ? 3 :
+                  (DP == 16)  ? 4 :
+                  (DP == 32)  ? 5 :
+                  (DP == 64)  ? 6 :
+                  (DP == 128) ? 7 :
+                  (DP == 256) ? 8 : 0;
+
+   output [W-1 : 0]  rd_data;
+   input [W-1 : 0]   wr_data;
+   input             clk, reset_n, wr_en,flush,
+                     rd_en;
+   output            full, empty;
+   output            afull, aempty;       // about full and about to empty
 
 
-reg [DATA_WIDTH-1:0]  ram [FIFO_DEPTH-1:0];
-reg [ADDR_WIDTH-1:0]  wptr; // write ptr
-reg [ADDR_WIDTH-1:0]  rptr; // write ptr
-reg [ADDR_WIDTH:0]    status_cnt; // status counter
-reg                   empty;
-reg                   full;
+   // synopsys translate_off
 
- wire ready_o = ! full;
- wire valid_o = ! empty;
+   initial begin
+      if (AW == 0) begin
+         $display ("%m : ERROR!!! Fifo depth %d not in range 2 to 256", DP);
+      end // if (AW == 0)
+   end // initial begin
 
- //-----------Code Start---------------------------
- always @ (negedge rstn or posedge clk)
- begin : WRITE_POINTER
-   if (rstn==1'b0) begin
-     wptr <= 0;
-   end else if (srst ) begin
-     wptr <= 0;
-   end else if (wr_en ) begin
-     wptr <= wptr + 1;
+   // synopsys translate_on
+
+   reg [W-1 : 0]    mem[DP-1 : 0];
+
+   /*********************** write side ************************/
+   reg [AW:0] wr_ptr;
+   reg full_q;
+   wire full_c;
+   wire afull_c;
+   wire [AW:0] wr_ptr_inc = wr_ptr + 1'b1;
+   wire [AW:0] wr_cnt = get_cnt(wr_ptr, rd_ptr);
+
+   assign full_c  = (wr_cnt == FULL_DP) ? 1'b1 : 1'b0;
+   assign afull_c = (wr_cnt == FULL_DP-1) ? 1'b1 : 1'b0;
+
+
+   always @(posedge clk or negedge reset_n) begin
+	if (!reset_n) begin
+	   wr_ptr <= 0;
+	   full_q <= 0;	
+	end
+	else begin
+	   if(flush) begin
+		wr_ptr <= 0;
+		full_q <= 0;	
+	   end else if (wr_en) begin
+	   	wr_ptr <= wr_ptr_inc;
+	   	if (wr_cnt == (FULL_DP-1)) begin
+	   		full_q <= 1'b1;
+	   	end
+	   end else begin
+	       	if (full_q && (wr_cnt<FULL_DP)) begin
+	   		full_q <= 1'b0;
+	        end
+	   end
+       end
+    end
+
+    assign full  = (WR_FAST == 1) ? full_c : full_q;
+    assign afull = afull_c;
+
+    always @(posedge clk) begin
+        if (wr_en) begin
+           mem[wr_ptr[AW-1:0]] <= wr_data;
+        end
+    end
+
+
+   /************************ read side *****************************/
+   reg [AW:0] rd_ptr;
+   reg empty_q;
+   wire empty_c;
+   wire aempty_c;
+   wire [AW:0] rd_ptr_inc = rd_ptr + 1'b1;
+   wire [AW:0] rd_cnt = get_cnt(wr_ptr, rd_ptr);
+ 
+   assign empty_c  = (rd_cnt == 0) ? 1'b1 : 1'b0;
+   assign aempty_c = (rd_cnt == 1) ? 1'b1 : 1'b0;
+
+   always @(posedge clk or negedge reset_n) begin
+      if (!reset_n) begin
+            rd_ptr <= 0;
+            empty_q <= 1'b1;
+      end
+      else begin
+	 if(flush) begin
+           rd_ptr <= 0;
+	   empty_q <= 1'b1;
+	 end else if (rd_en) begin
+               rd_ptr <= rd_ptr_inc;
+               if (rd_cnt==(EMPTY_DP+1)) begin
+                  empty_q <= 1'b1;
+               end
+         end else begin
+            if (empty_q && (rd_cnt!=EMPTY_DP)) begin
+	      empty_q <= 1'b0;
+	    end
+         end
+       end
+    end
+
+    assign empty  = (RD_FAST == 1) ? empty_c : empty_q;
+    assign aempty = aempty_c;
+
+    reg [W-1 : 0]  rd_data_q;
+
+   wire [W-1 : 0] rd_data_c = mem[rd_ptr[AW-1:0]];
+   always @(posedge clk) begin
+	rd_data_q <= rd_data_c;
    end
- end
+   assign rd_data  = (RD_FAST == 1) ? rd_data_c : rd_data_q;
 
-always @ (negedge rstn or posedge clk)
-begin : READ_POINTER
-  if (rstn==1'b0) begin
-    rptr <= 0;
-   end else if (srst ) begin
-     rptr <= 0;
-  end else if (rd_en) begin
-    rptr <= rptr + 1;
-  end
-end
 
-always @ (negedge rstn or posedge clk)
-begin : STATUS_COUNTER
-  if (rstn==1'b0) begin
-       status_cnt <= 0;
-  end else if (srst ) begin
-       status_cnt <= 0;
-  // Read but no write.
-  end else if (rd_en &&   (!wr_en) && (status_cnt  != 0)) begin
-    status_cnt <= status_cnt - 1;
-  // Write but no read.
-  end else if (wr_en &&  (!rd_en) && (status_cnt  != FIFO_DEPTH)) begin
-    status_cnt <= status_cnt + 1;
-  end
-end
-
-// underflow is not handled
-always @ (negedge rstn or posedge clk)
-begin : EMPTY_FLAG
-  if (rstn==1'b0) begin
-       empty <= 1;
-  end else if (srst ) begin
-       empty <= 1;
-  // Read but no write.
-  end else if (rd_en &&   (!wr_en) && (status_cnt  == 1)) begin
-    empty <= 1;
-  // Write 
-  end else if (wr_en) begin
-    empty <= 0;
-  end else if (status_cnt  == 0) begin
-     empty <= 1;
-  end
-end
-
-// overflow is not handled
-always @ (negedge rstn or posedge clk)
-begin : FULL_FLAG
-  if (rstn==1'b0) begin
-       full <= 0;
-  end else if (srst ) begin
-       full <= 0;
-  // Write but no read.
-  end else if (wr_en &&  (!rd_en) && (status_cnt  == (FIFO_DEPTH-1))) begin
-    full <= 1;
-  // Read 
-  end else if (rd_en &&  (!wr_en) ) begin
-    full <= 0;
-  end else if (status_cnt  == FIFO_DEPTH) begin
-     full <= 1;
-  end
-end
-assign dout = ram[rptr];
-
-always @ (posedge clk)
+function [AW:0] get_cnt;
+input [AW:0] wr_ptr, rd_ptr;
 begin
-  if (wr_en) ram[wptr] <= din;
+	if (wr_ptr >= rd_ptr) begin
+		get_cnt = (wr_ptr - rd_ptr);	
+	end
+	else begin
+		get_cnt = DP*2 - (rd_ptr - wr_ptr);
+	end
+end
+endfunction
+
+// synopsys translate_off
+always @(posedge clk) begin
+   if (wr_en && full) begin
+      $display($time, "%m Error! afifo overflow!");
+      $stop;
+   end
 end
 
+always @(posedge clk) begin
+   if (rd_en && empty) begin
+      $display($time, "%m error! afifo underflow!");
+      $stop;
+   end
+end
+// synopsys translate_on
 
 endmodule
diff --git a/verilog/rtl/spi_master/src/spim_if.sv b/verilog/rtl/spi_master/src/spim_if.sv
new file mode 100644
index 0000000..e8c85e0
--- /dev/null
+++ b/verilog/rtl/spi_master/src/spim_if.sv
@@ -0,0 +1,295 @@
+//////////////////////////////////////////////////////////////////////////////
+// SPDX-FileCopyrightText: 2021 , Dinesh Annayya                          
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org>
+//
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  SPI WishBone I/F Module                                     ////
+////                                                              ////
+////  This file is part of the YIFive cores project               ////
+////  https://github.com/dineshannayya/yifive_r0.git              ////
+////  http://www.opencores.org/cores/yifive/                      ////
+////                                                              ////
+////  Description                                                 ////
+////     SPI WishBone I/F module                                  ////
+////     This block support following functionality               ////
+////        1. This block Response to Direct Memory Read and      ////
+////           Register Write and Read Command                    ////
+////        2. In case of Direct Memory Read, It check send the   ////
+////           SPI Read command to SPI Ctrl logic and wait for    ////
+////           Read data through Response                         ////
+////                                                              ////
+////  To Do:                                                      ////
+////    1. Add 4 Word Memory Fetch for better Through Put         ////
+////                                                              ////
+////  Author(s):                                                  ////
+////      - Dinesh Annayya, dinesha@opencores.org                 ////
+////                                                              ////
+////  Revision :                                                  ////
+////     V.0  -  June 30, 2021                                    //// 
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+
+
+module spim_if #( parameter WB_WIDTH = 32) (
+    input  logic                         mclk,
+    input  logic                         rst_n,
+
+    input  logic                         wbd_stb_i, // strobe/request
+    input  logic   [WB_WIDTH-1:0]        wbd_adr_i, // address
+    input  logic                         wbd_we_i,  // write
+    input  logic   [WB_WIDTH-1:0]        wbd_dat_i, // data output
+    input  logic   [3:0]                 wbd_sel_i, // byte enable
+    output logic   [WB_WIDTH-1:0]        wbd_dat_o, // data input
+    output logic                         wbd_ack_o, // acknowlegement
+    output logic                         wbd_err_o,  // error
+
+
+    // Configuration
+    input logic                          cfg_fsm_reset,
+    input logic [3:0]                    cfg_mem_seq,    // SPI MEM SEQUENCE
+    input logic [1:0]                    cfg_addr_cnt,   // SPI Addr Count
+    input logic [1:0]                    cfg_dummy_cnt,  // SPI Dummy Count
+    input logic [7:0]                    cfg_data_cnt,   // SPI Read Count
+    input logic [7:0]                    cfg_cmd_reg,    // SPI MEM COMMAND
+    input logic [7:0]                    cfg_mode_reg,   // SPI MODE REG
+    input logic                          spi_init_done,  // SPI internal Init completed
+
+    // Towards Reg I/F
+    output logic                         spim_reg_req,     // Reg Request
+    output logic [3:0]                   spim_reg_addr,    // Reg Address
+    output logic                         spim_reg_we,      // Reg Write/Read Command
+    output logic [3:0]                   spim_reg_be,      // Reg Byte Enable
+    output logic [31:0]                  spim_reg_wdata,    // Reg Write Data
+    input  logic                         spim_reg_ack,     // Read Ack
+    input  logic [31:0]                  spim_reg_rdata,    // Read Read Data
+
+    // Towards Command FIFO
+    input  logic                         cmd_fifo_empty,   // Command FIFO empty
+    output logic                         cmd_fifo_wr,      // Command FIFO Write
+    output logic [33:0]                  cmd_fifo_wdata,   // Command FIFO WData
+    
+    // Towards Response FIFO
+    input  logic                         res_fifo_empty,   // Response FIFO Empty
+    output logic                         res_fifo_rd,      // Response FIFO Read
+    input  logic [31:0]                  res_fifo_rdata,    // Response FIFO Data
+
+    output  logic [3:0]                  state         
+    );
+
+//------------------------------------------------
+// Parameter Decleration
+// -----------------------------------------------
+parameter SOC = 1'b1;    // START of COMMAND
+parameter EOC = 1'b1;    // END of COMMAND
+parameter NOC = 1'b0;    // NORMAL COMMAND
+
+// State Machine state
+parameter IDLE       = 4'b000;
+parameter ADR_PHASE  = 4'b001;
+parameter READ_DATA  = 4'b010;
+
+/*************************************************************
+*  SPI FSM State Control
+*
+*   OPERATION   COMMAND                   SEQUENCE 
+*
+*    ERASE       P4E(0x20)           ->  COMMAND + ADDRESS
+*    ERASE       P8E(0x40)           ->  COMMAND + ADDRESS
+*    ERASE       SE(0xD8)            ->  COMMAND + ADDRESS
+*    ERASE       BE(0x60)            ->  COMMAND + ADDRESS
+*    ERASE       BE(0xC7)            ->  COMMAND 
+*    PROGRAM     PP(0x02)            ->  COMMAND + ADDRESS + Write DATA
+*    PROGRAM     QPP(0x32)           ->  COMMAND + ADDRESS + Write DATA
+*    READ        READ(0x3)           ->  COMMAND + ADDRESS + READ DATA
+*    READ        FAST_READ(0xB)      ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        DOR (0x3B)          ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        QOR (0x6B)          ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        DIOR (0xBB)         ->  COMMAND + ADDRESS + MODE  + READ DATA
+*    READ        QIOR (0xEB)         ->  COMMAND + ADDRESS + MODE  + DUMMY + READ DATA
+*    READ        RDID (0x9F)         ->  COMMAND + READ DATA
+*    READ        READ_ID (0x90)      ->  COMMAND + ADDRESS + READ DATA
+*    WRITE       WREN(0x6)           ->  COMMAND
+*    WRITE       WRDI                ->  COMMAND
+*    STATUS      RDSR(0x05)          ->  COMMAND + READ DATA
+*    STATUS      RCR(0x35)           ->  COMMAND + READ DATA
+*    CONFIG      WRR(0x01)           ->  COMMAND + WRITE DATA
+*    CONFIG      CLSR(0x30)          ->  COMMAND
+*    Power Saving DP(0xB9)           ->  COMMAND
+*    Power Saving RES(0xAB)          ->  COMMAND + READ DATA
+*    OTP          OTPP(0x42)         ->  COMMAND + ADDR+ WRITE DATA
+*    OTP          OTPR(0x4B)         ->  COMMAND + ADDR + DUMMY + READ DATA
+*    ********************************************************************/
+
+parameter P_FSM_C      = 4'b0000; // Command Phase Only
+parameter P_FSM_CA     = 4'b0001; // Command -> Address Phase Only
+
+parameter P_FSM_CAR    = 4'b0010; // Command -> Address -> Read Data
+parameter P_FSM_CADR   = 4'b0011; // Command -> Address -> Dummy -> Read Data
+parameter P_FSM_CAMR   = 4'b0100; // Command -> Address -> Mode -> Read Data
+parameter P_FSM_CAMDR  = 4'b0101; // Command -> Address -> Mode -> Dummy -> Read Data
+
+parameter P_FSM_CAW    = 4'b0110; // Command -> Address ->Write Data
+parameter P_FSM_CADW   = 4'b0111; // Command -> Address -> DUMMY + Write Data
+//---------------------------------------------------------
+// Variable declartion
+// -------------------------------------------------------
+logic                 spim_mem_req   ;  // Current Request is Direct Memory Read
+
+
+logic                 spim_wb_req    ;
+logic [WB_WIDTH-1:0]  spim_wb_wdata  ;
+logic [WB_WIDTH-1:0]  spim_wb_addr   ;
+logic                 spim_wb_ack    ;
+logic                 spim_wb_we     ;
+logic [3:0]           spim_wb_be     ;
+logic [WB_WIDTH-1:0]  spi_mem_rdata  ;
+logic [WB_WIDTH-1:0]  spim_wb_rdata  ;
+
+logic                 spim_mem_ack   ;
+logic [3:0]           next_state     ;
+
+
+
+  //---------------------------------------------------------------
+  // Address Decoding
+  // 0x0000_0000 - 0x0FFF_FFFF  - SPI FLASH MEMORY ACCESS - 256MB
+  // 0x1000_0000 -              - SPI Register Access
+  // 
+  //
+  // Note: Only Bit[28] is decoding done here, other Bit decoding 
+  // will be done inside the wishbone inter-connect 
+  // --------------------------------------------------------------
+
+  assign spim_mem_req = ((spim_wb_req) && spim_wb_addr[28] == 1'b0);
+  assign spim_reg_req = ((spim_wb_req) && spim_wb_addr[28] == 1'b1);
+
+  assign spim_reg_addr = spim_wb_addr[5:2];
+  assign spim_reg_wdata = spim_wb_wdata;
+  assign spim_reg_we   = spim_wb_we;
+  assign spim_reg_be   = spim_wb_be;
+
+  assign wbd_dat_o  =  spim_wb_rdata;
+  assign wbd_ack_o  =  spim_wb_ack;
+  assign wbd_err_o  =  1'b0;
+
+  // To reduce the load/Timing Wishbone I/F, all the variable are registered
+always_ff @(negedge rst_n or posedge mclk) begin
+    if ( rst_n == 1'b0 ) begin
+        spim_wb_req   <= '0;
+        spim_wb_wdata <= '0;
+        spim_wb_rdata <= '0;
+        spim_wb_addr  <= '0;
+        spim_wb_be    <= '0;
+        spim_wb_we    <= '0;
+        spim_wb_ack   <= '0;
+   end else begin
+	if(spi_init_done) begin // Wait for internal SPI Init Done
+            spim_wb_req   <= wbd_stb_i && ((spim_wb_ack == 0) && (spim_mem_ack ==0) && (spim_reg_ack == 0));
+            spim_wb_wdata <= wbd_dat_i;
+            spim_wb_addr  <= wbd_adr_i;
+            spim_wb_be    <= wbd_sel_i;
+            spim_wb_we    <= wbd_we_i;
+    
+    
+    	    if(!spim_wb_we && spim_mem_req && spim_mem_ack) 
+                   spim_wb_rdata <= spi_mem_rdata;
+            else if (spim_reg_req && spim_reg_ack)
+                   spim_wb_rdata <= spim_reg_rdata;
+    
+            spim_wb_ack   <= (spim_mem_req) ? spim_mem_ack :
+		             (spim_reg_req) ? spim_reg_ack : 1'b0;
+       end
+   end
+end
+
+
+always_ff @(negedge rst_n or posedge mclk) begin
+    if ( rst_n == 1'b0 ) begin
+	state <= IDLE;
+    end else begin
+	if(cfg_fsm_reset) state <= IDLE;
+	else state <= next_state;
+    end
+end
+
+/***********************************************************************************
+* This block interface with WishBone Request and Write Command & Read Response FIFO
+* **********************************************************************************/
+
+always_comb
+begin
+   cmd_fifo_wr    = '0;
+   cmd_fifo_wdata = '0;
+   res_fifo_rd    = 0;
+   spi_mem_rdata = '0;
+
+   spim_mem_ack   = 0;
+   next_state     = state;
+   case(state)
+   IDLE:  begin
+	if(spim_mem_req && cmd_fifo_empty) begin
+	   cmd_fifo_wdata = {SOC,NOC,cfg_data_cnt[7:0],cfg_dummy_cnt[1:0],cfg_addr_cnt[1:0],cfg_mem_seq[3:0],cfg_mode_reg[7:0],cfg_cmd_reg[7:0]};
+	   cmd_fifo_wr    = 1;
+	   next_state = ADR_PHASE;
+	end
+   end
+   ADR_PHASE: begin
+          cmd_fifo_wdata = {NOC,EOC,spim_wb_addr[31:0]};
+          cmd_fifo_wr      = 1;
+          next_state = READ_DATA;
+   end
+
+
+   READ_DATA: begin
+	if(res_fifo_empty != 1) begin
+           spi_mem_rdata = res_fifo_rdata;
+	   res_fifo_rd   = 1;
+           spim_mem_ack  = 1;
+           next_state    = IDLE;
+	end
+   end
+   endcase
+end
+    
+
+
+endmodule
diff --git a/verilog/rtl/spi_master/src/spim_regs.sv b/verilog/rtl/spi_master/src/spim_regs.sv
index 64cb6f7..f3fa7e1 100644
--- a/verilog/rtl/spi_master/src/spim_regs.sv
+++ b/verilog/rtl/spi_master/src/spim_regs.sv
@@ -70,349 +70,472 @@
 
 
 module spim_regs #( parameter WB_WIDTH = 32) (
-    input  logic                         mclk,
-    input  logic                         rst_n,
+    input  logic                         mclk             ,
+    input  logic                         rst_n            ,
+    input logic                          fast_sim_mode    , // Set 1 for simulation
 
-    input  logic                         wbd_stb_i, // strobe/request
-    input  logic   [WB_WIDTH-1:0]        wbd_adr_i, // address
-    input  logic                         wbd_we_i,  // write
-    input  logic   [WB_WIDTH-1:0]        wbd_dat_i, // data output
-    input  logic   [3:0]                 wbd_sel_i, // byte enable
-    output logic   [WB_WIDTH-1:0]        wbd_dat_o, // data input
-    output logic                         wbd_ack_o, // acknowlegement
-    output logic                         wbd_err_o,  // error
+    output logic                   [7:0] spi_clk_div      ,
+    output logic                         spi_init_done    , // SPI internal Init completed
 
-    output logic                   [7:0] spi_clk_div,
-    input logic                    [8:0] spi_status,
+    // Status Monitoring
+    input logic                    [31:0] spi_debug       ,
 
-    // Towards SPI TX/RX FSM
+    // Master 0 Configuration
+    output logic                         cfg_m0_fsm_reset ,
+    output logic [3:0]                   cfg_m0_cs_reg    ,  // Chip select
+    output logic [1:0]                   cfg_m0_spi_mode  ,  // Final SPI Mode 
+    output logic [1:0]                   cfg_m0_spi_switch,  // SPI Mode Switching Place
+    output logic [3:0]                   cfg_m0_spi_seq   ,  // SPI SEQUENCE
+    output logic [1:0]                   cfg_m0_addr_cnt  ,  // SPI Addr Count
+    output logic [1:0]                   cfg_m0_dummy_cnt ,  // SPI Dummy Count
+    output logic [7:0]                   cfg_m0_data_cnt  ,  // SPI Read Count
+    output logic [7:0]                   cfg_m0_cmd_reg   ,  // SPI MEM COMMAND
+    output logic [7:0]                   cfg_m0_mode_reg  ,  // SPI MODE REG
 
+    output logic [3:0]                   cfg_m1_cs_reg    ,  // Chip select
+    output logic [1:0]                   cfg_m1_spi_mode  ,  // Final SPI Mode 
+    output logic [1:0]                   cfg_m1_spi_switch,  // SPI Mode Switching Place
 
-    output logic                          spi_req,
-    output logic                   [31:0] spi_addr,
-    output logic                    [5:0] spi_addr_len,
-    output logic                   [7:0]  spi_cmd,
-    output logic                    [5:0] spi_cmd_len,
-    output logic                   [7:0]  spi_mode_cmd,
-    output logic                          spi_mode_cmd_enb,
-    output logic                    [3:0] spi_csreg,
-    output logic                   [15:0] spi_data_len,
-    output logic                   [15:0] spi_dummy_rd_len,
-    output logic                   [15:0] spi_dummy_wr_len,
-    output logic                          spi_swrst,
-    output logic                          spi_rd,
-    output logic                          spi_wr,
-    output logic                          spi_qrd,
-    output logic                          spi_qwr,
-    output logic                   [31:0] spi_wdata,
-    input logic                   [31:0]  spi_rdata,
-    input logic                           spi_ack
+    output logic [1:0]                   cfg_cs_early     ,  // Amount of cycle early CS asserted
+    output logic [1:0]                   cfg_cs_late      ,  // Amount of cycle late CS de-asserted
 
+    // Towards Reg I/F
+    input  logic                         spim_reg_req     ,   // Reg Request
+    input  logic [3:0]                   spim_reg_addr    ,   // Reg Address
+    input  logic                         spim_reg_we      ,   // Reg Write/Read Command
+    input  logic [3:0]                   spim_reg_be      ,   // Reg Byte Enable
+    input  logic [31:0]                  spim_reg_wdata   ,   // Reg Write Data
+    output  logic                        spim_reg_ack     ,   // Read Ack
+    output  logic [31:0]                 spim_reg_rdata    ,   // Read Read Data
+
+    // Towards Command FIFO
+    input  logic                         cmd_fifo_full    ,   // Command FIFO full
+    input  logic                         cmd_fifo_empty   ,   // Command FIFO empty
+    output logic                         cmd_fifo_wr      ,   // Command FIFO Write
+    output logic [33:0]                  cmd_fifo_wdata   ,   // Command FIFO WData
+    
+    // Towards Response FIFO
+    input  logic                         res_fifo_full    ,   // Response FIFO Empty
+    input  logic                         res_fifo_empty   ,   // Response FIFO Empty
+    output logic                         res_fifo_rd      ,   // Response FIFO Read
+    input  logic [31:0]                  res_fifo_rdata   ,   // Response FIFO Data
+
+    output logic [3:0]                   state           
     );
+//------------------------------------------------
+// Parameter Decleration
+// -----------------------------------------------
+parameter SOC = 1'b1;    // START of COMMAND
+parameter EOC = 1'b1;    // END of COMMAND
+parameter NOC = 1'b0;    // NORMAL COMMAND
+
+parameter BTYPE = 1'b0;  // Count is Byte Type
+parameter WTYPE = 1'b1;  // Count is Word Type
+
+parameter CNT1 = 2'b00; // BYTE/WORD Count1
+parameter CNT2 = 2'b01; // BYTE/WORD Count2
+parameter CNT3 = 2'b10; // BYTE/WORD Count3
+parameter CNT4 = 2'b11; // BYTE/WORD Count4
+
+
+// Type of command
+parameter NWRITE = 2'b00; // Normal Write
+parameter NREAD  = 2'b01; // Normal Read
+parameter DWRITE = 2'b10; // Dummy Write
+parameter DREAD  = 2'b11; // Dummy Read
+
+// State Machine state
+parameter FSM_IDLE        = 3'b000;
+parameter FSM_ADR_PHASE   = 3'b001;
+parameter FSM_WRITE_PHASE = 3'b010;
+parameter FSM_READ_PHASE  = 3'b011;
+parameter FSM_READ_BUSY   = 3'b100;
+parameter FSM_WRITE_BUSY  = 3'b101;
+parameter FSM_ACK_PHASE   = 3'b110;
 
 //----------------------------
 // Register Decoding
 // ---------------------------
-parameter REG_CTRL     = 4'b0000;
-parameter REG_CLKDIV   = 4'b0001;
-parameter REG_SPICMD   = 4'b0010;
-parameter REG_SPIADR   = 4'b0011;
-parameter REG_SPILEN   = 4'b0100;
-parameter REG_SPIDUM   = 4'b0101;
+parameter GLBL_CTRL    = 4'b0000;
+parameter MEM_CTRL1    = 4'b0001;
+parameter MEM_CTRL2    = 4'b0010;
+parameter REG_CTRL1    = 4'b0011;
+parameter REG_CTRL2    = 4'b0100;
+parameter REG_SPIADR   = 4'b0101;
 parameter REG_SPIWDATA = 4'b0110;
 parameter REG_SPIRDATA = 4'b0111;
 parameter REG_STATUS   = 4'b1000;
 
 // Init FSM
-parameter SPI_INIT_IDLE      = 3'b000;
-parameter SPI_INIT_CMD_WAIT  = 3'b001;
-parameter SPI_INIT_WREN_CMD  = 3'b010;
-parameter SPI_INIT_WREN_WAIT = 3'b011;
-parameter SPI_INIT_WRR_CMD   = 3'b100;
-parameter SPI_INIT_WRR_WAIT  = 3'b101;
+parameter SPI_INIT_PWUP      = 3'b000;
+parameter SPI_INIT_IDLE      = 3'b001;
+parameter SPI_INIT_CMD_WAIT  = 3'b010;
+parameter SPI_INIT_WREN_CMD  = 3'b011;
+parameter SPI_INIT_WREN_WAIT = 3'b100;
+parameter SPI_INIT_WRR_CMD   = 3'b101;
+parameter SPI_INIT_WRR_WAIT  = 3'b110;
+parameter SPI_INIT_WAIT      = 3'b111;
 
+/*************************************************************
+*  SPI FSM State Control
+*
+*   OPERATION   COMMAND                   SEQUENCE 
+*
+*    ERASE       P4E(0x20)           ->  COMMAND + ADDRESS
+*    ERASE       P8E(0x40)           ->  COMMAND + ADDRESS
+*    ERASE       SE(0xD8)            ->  COMMAND + ADDRESS
+*    ERASE       BE(0x60)            ->  COMMAND + ADDRESS
+*    ERASE       BE(0xC7)            ->  COMMAND 
+*    PROGRAM     PP(0x02)            ->  COMMAND + ADDRESS + Write DATA
+*    PROGRAM     QPP(0x32)           ->  COMMAND + ADDRESS + Write DATA
+*    READ        READ(0x3)           ->  COMMAND + ADDRESS + READ DATA
+*    READ        FAST_READ(0xB)      ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        DOR (0x3B)          ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        QOR (0x6B)          ->  COMMAND + ADDRESS + DUMMY + READ DATA
+*    READ        DIOR (0xBB)         ->  COMMAND + ADDRESS + MODE  + READ DATA
+*    READ        QIOR (0xEB)         ->  COMMAND + ADDRESS + MODE  + DUMMY + READ DATA
+*    READ        RDID (0x9F)         ->  COMMAND + READ DATA
+*    READ        READ_ID (0x90)      ->  COMMAND + ADDRESS + READ DATA
+*    WRITE       WREN(0x6)           ->  COMMAND
+*    WRITE       WRDI                ->  COMMAND
+*    STATUS      RDSR(0x05)          ->  COMMAND + READ DATA
+*    STATUS      RCR(0x35)           ->  COMMAND + READ DATA
+*    CONFIG      WRR(0x01)           ->  COMMAND + WRITE DATA
+*    CONFIG      CLSR(0x30)          ->  COMMAND
+*    Power Saving DP(0xB9)           ->  COMMAND
+*    Power Saving RES(0xAB)          ->  COMMAND + READ DATA
+*    OTP          OTPP(0x42)         ->  COMMAND + ADDR+ WRITE DATA
+*    OTP          OTPR(0x4B)         ->  COMMAND + ADDR + DUMMY + READ DATA
+*    ********************************************************************/
+parameter P_FSM_C      = 4'b0000; // Command Phase Only
+parameter P_FSM_CW     = 4'b0001; // Command + Write DATA Phase Only
+parameter P_FSM_CA     = 4'b0010; // Command -> Address Phase Only
+
+parameter P_FSM_CAR    = 4'b0011; // Command -> Address -> Read Data
+parameter P_FSM_CADR   = 4'b0100; // Command -> Address -> Dummy -> Read Data
+parameter P_FSM_CAMR   = 4'b0101; // Command -> Address -> Mode -> Read Data
+parameter P_FSM_CAMDR  = 4'b0110; // Command -> Address -> Mode -> Dummy -> Read Data
+
+parameter P_FSM_CAW    = 4'b0111; // Command -> Address ->Write Data
+parameter P_FSM_CADW   = 4'b1000; // Command -> Address -> DUMMY + Write Data
+
+parameter P_FSM_CDR    = 4'b1001; // COMMAND -> DUMMY -> READ
+parameter P_FSM_CDW    = 4'b1010; // COMMAND -> DUMMY -> WRITE
+//---------------------------------------------------------
+  parameter P_CS0 = 4'b0001;
+  parameter P_CS1 = 4'b0010;
+  parameter P_CS2 = 4'b0100;
+  parameter P_CS3 = 4'b1000;
+
+  parameter P_SINGLE = 2'b00;
+  parameter P_DOUBLE = 2'b01;
+  parameter P_QUAD   = 2'b10;
+
+  parameter P_MODE_SWITCH_IDLE     = 2'b00;
+  parameter P_MODE_SWITCH_AT_ADDR  = 2'b01;
+  parameter P_MODE_SWITCH_AT_DATA  = 2'b10;
+
+  parameter P_QOR = 8'h6B;
+  parameter P_QIOR = 8'hEB;
+  parameter P_RES = 8'hAB;
+  parameter P_WEN = 8'h06;
+  parameter P_WRR = 8'h01;
+
+  parameter P_8BIT   = 2'b00;
+  parameter P_16BIT  = 2'b01;
+  parameter P_24BIT  = 2'b10;
+  parameter P_32BIT  = 2'b11;
 //---------------------------------------------------------
 // Variable declartion
 // -------------------------------------------------------
-logic                 spi_init_done  ;
-logic   [2:0]         spi_init_state ;
-logic                spim_mem_req   ;
-logic                spim_reg_req   ;
+logic   [2:0]        spi_init_state ;
+logic                spim_reg_req_f ; 
+
+logic [1:0]          cfg_m1_fsm_reset ;
+logic [3:0]          cfg_m1_spi_seq   ; // SPI SEQUENCE
+logic [1:0]          cfg_m1_addr_cnt  ; // SPI Addr Count
+logic [1:0]          cfg_m1_dummy_cnt ; // SPI Dummy Count
+logic [7:0]          cfg_m1_data_cnt  ; // SPI Read Count
+logic [7:0]          cfg_m1_cmd_reg   ; // SPI MEM COMMAND
+logic [7:0]          cfg_m1_mode_reg  ; // SPI MODE REG
+logic [31:0]         cfg_m1_addr      ;
+logic [31:0]         cfg_m1_wdata     ;
+logic [31:0]         cfg_m1_rdata     ;
+logic                cfg_m1_wrdy      ;
+logic                cfg_m1_req       ;
+
+logic [31:0]         reg_rdata        ;
 
 
-logic                 spim_wb_req    ;
-logic                 spim_wb_req_l  ;
-logic [WB_WIDTH-1:0]  spim_wb_wdata  ;
-logic [WB_WIDTH-1:0]  spim_wb_addr   ;
-logic                 spim_wb_ack    ;
-logic                 spim_wb_we     ;
-logic [3:0]           spim_wb_be     ;
-logic [WB_WIDTH-1:0]  spim_reg_rdata ;
-logic [WB_WIDTH-1:0]  spim_wb_rdata  ;
-logic  [WB_WIDTH-1:0] reg_rdata      ;
-
-// Control Signal Generated from Reg to SPI Access
-logic                 reg2spi_req;
-logic         [31:0]  reg2spi_addr;
-logic          [5:0]  reg2spi_addr_len;
-logic         [31:0]  reg2spi_cmd;
-logic          [5:0]  reg2spi_cmd_len;
-logic          [3:0]  reg2spi_csreg;
-logic         [15:0]  reg2spi_data_len;
-logic                 reg2spi_mode_enb; // mode enable
-logic         [7:0]   reg2spi_mode;     // mode 
-logic         [15:0]  reg2spi_dummy_rd_len;
-logic         [15:0]  reg2spi_dummy_wr_len;
-logic                 reg2spi_swrst;
-logic                 reg2spi_rd;
-logic                 reg2spi_wr;
-logic                 reg2spi_qrd;
-logic                 reg2spi_qwr;
-logic         [31:0]  reg2spi_wdata;
-//------------------------------------------------------------------   
-// Priority given to mem2spi request over Reg2Spi
-
-    assign  spi_req           =  (spim_mem_req && !spim_wb_we) ? 1'b1                           : reg2spi_req;      
-    assign  spi_addr          =  (spim_mem_req && !spim_wb_we) ? {spim_wb_addr[23:0],8'h0}      : reg2spi_addr;      
-    assign  spi_addr_len      =  (spim_mem_req && !spim_wb_we) ? 24                             : reg2spi_addr_len;  
-    assign  spi_cmd           =  (spim_mem_req && !spim_wb_we) ? 8'hEB                          : reg2spi_cmd;       
-    assign  spi_cmd_len       =  (spim_mem_req && !spim_wb_we) ? 8                              : reg2spi_cmd_len;   
-    assign  spi_mode_cmd      =  (spim_mem_req && !spim_wb_we) ? 8'h00                          : reg2spi_mode;       
-    assign  spi_mode_cmd_enb  =  (spim_mem_req && !spim_wb_we) ? 1                              : reg2spi_mode_enb;   
-    assign  spi_csreg         =  (spim_mem_req && !spim_wb_we) ? '1                             : reg2spi_csreg;     
-    assign  spi_data_len      =  (spim_mem_req && !spim_wb_we) ? 'h20                           : reg2spi_data_len;  
-    assign  spi_dummy_rd_len  =  (spim_mem_req && !spim_wb_we) ? 'h20                           : reg2spi_dummy_rd_len;  
-    assign  spi_dummy_wr_len  =  (spim_mem_req && !spim_wb_we) ? 0                              : reg2spi_dummy_wr_len;  
-    assign  spi_swrst         =  (spim_mem_req && !spim_wb_we) ? 0                              : reg2spi_swrst;     
-    assign  spi_rd            =  (spim_mem_req && !spim_wb_we) ? 0                              : reg2spi_rd;        
-    assign  spi_wr            =  (spim_mem_req && !spim_wb_we) ? 0                              : reg2spi_wr;        
-    assign  spi_qrd           =  (spim_mem_req && !spim_wb_we) ? 1                              : reg2spi_qrd;       
-    assign  spi_qwr           =  (spim_mem_req && !spim_wb_we) ? 0                              : reg2spi_qwr;       
-    assign  spi_wdata         =  (spim_mem_req && !spim_wb_we) ? 0                              : reg2spi_wdata;       
+logic [5:0]           cur_cnt         ;
+logic [5:0]           next_cnt        ;
+logic [3:0]           next_state      ;
 
 
+logic [31:0]          spim_m1_rdata   ;
+logic                 spim_m1_ack     ;
+logic                 spim_m1_rrdy    ;
+logic                 spim_m1_wrdy    ;
+logic  [9:0]          spi_delay_cnt  ;
+logic                 spim_fifo_rdata_req  ;
+logic                 spim_fifo_wdata_req  ;
 
 
-  //---------------------------------------------------------------
-  // Address Decoding
-  // 0x0000_0000 - 0x0FFF_FFFF  - SPI FLASH MEMORY ACCESS - 256MB
-  // 0x1000_0000 -              - SPI Register Access
-  // --------------------------------------------------------------
+//----------------------------------------------
+// Consolidated Register Ack handling
+//   1. Handles Normal Register Read
+//   2. Indirect Memory Write
+//   3. Indirect Memory Read
+//----------------------------------------------
+//
+assign spim_fifo_rdata_req = spim_reg_req && spim_reg_we == 0 && (spim_reg_addr== REG_SPIRDATA);
+assign spim_fifo_wdata_req = spim_reg_req && spim_reg_we == 1 && (spim_reg_addr== REG_SPIWDATA);
 
-  assign spim_mem_req = ((spim_wb_req) && spim_wb_addr[31:28] == 4'b0000);
-  assign spim_reg_req = ((spim_wb_req) && spim_wb_addr[31:28] == 4'b0001);
-
-
-  assign wbd_dat_o  =  spim_wb_rdata;
-  assign wbd_ack_o  =  spim_wb_ack;
-  assign wbd_err_o  =  1'b0;
-
-  // To reduce the load/Timing Wishbone I/F, all the variable are registered
 always_ff @(negedge rst_n or posedge mclk) begin
-    if ( rst_n == 1'b0 ) begin
-        spim_wb_req   <= '0;
-        spim_wb_req_l <= '0;
-        spim_wb_wdata <= '0;
-        spim_wb_rdata <= '0;
-        spim_wb_addr  <= '0;
-        spim_wb_be    <= '0;
-        spim_wb_we    <= '0;
-        spim_wb_ack   <= '0;
+   if ( rst_n == 1'b0 ) begin
+       spim_reg_ack  <= 1'b0;
+       spim_reg_rdata <= 'h0;
    end else begin
-	if(spi_init_done) begin // Wait for internal SPI Init Done
-            spim_wb_req   <= wbd_stb_i && (spi_ack == 0) && (spim_wb_ack==0);
-            spim_wb_req_l <= spim_wb_req;
-            spim_wb_wdata <= wbd_dat_i;
-            spim_wb_addr  <= wbd_adr_i;
-            spim_wb_be    <= wbd_sel_i;
-            spim_wb_we    <= wbd_we_i;
-    
-    
-    	// If there is Reg2Spi read Access, Register the Read Data
-    	if(reg2spi_req && (reg2spi_rd || reg2spi_qrd ) && spi_ack) 
-                 spim_reg_rdata <= spi_rdata;
-    
-    	if(!spim_wb_we && spim_wb_req && spi_ack) 
-               spim_wb_rdata <= spi_rdata;
-            else if (spim_reg_req)
-               spim_wb_rdata <= reg_rdata;
-    
-        // For safer design, we have generated ack after 2 cycle latter to 
-    	// cross-check current request is towards SPI or not
-            spim_wb_ack   <= (spi_req && spim_wb_req) ? spi_ack :
-    		         ((spim_wb_ack==0) && spim_wb_req && spim_wb_req_l) ;
-       end
+      if(spi_init_done && spim_reg_ack == 0) begin
+         if (spim_fifo_wdata_req && (spim_m1_wrdy == 1)) begin // Indirect Memory Write
+	     // If FIFO Write DATA case, Make sure that there no previous pending
+	     // need to processed
+             spim_reg_ack  <= 1'b1;
+	 end else if (spim_reg_req && spim_reg_we && (spim_reg_addr != REG_SPIWDATA)) begin // Indirect memory Write
+             spim_reg_ack  <= 1'b1;
+	 end else if (spim_fifo_rdata_req && (spim_m1_rrdy == 1)) begin // Indirect mem Read
+	     // If FIFO Read DATA case, Make sure that there Data is read from
+             // External SPI Memory
+             spim_reg_ack  <= 1'b1;
+             spim_reg_rdata <= reg_rdata;
+	end else if (spim_reg_req && spim_reg_we == 0 && (spim_reg_addr != REG_SPIRDATA)) begin // Normal Read
+	     // Read other than FIFO Read Data case
+             spim_reg_ack  <= 1'b1;
+             spim_reg_rdata <= reg_rdata;
+	end
+      end else begin
+         spim_reg_ack <= 1'b0;
+      end
    end
 end
 
-  wire [3:0] reg_addr = spim_wb_addr[5:2];
+  //---------------------------------------------
+  // Manges the initial Config Phase of SPI Memory
+  // 1. Power Up Command -  RES(0xAB) 
+  // 2. Write Enable Command - WEN (0x06)
+  // 3. WRITE CONFIG Reg - WRR (0x01) - Set Qaud Mode
+  // --------------------------------------------
+  
+  logic  [9:0]          cfg_exit_cnt  ;
+  assign cfg_exit_cnt = (fast_sim_mode) ? 100: 1000;
+
   integer byte_index;
   always_ff @(negedge rst_n or posedge mclk) begin
     if ( rst_n == 1'b0 ) begin
-      reg2spi_swrst         <= 1'b0;
-      reg2spi_rd            <= 1'b0;
-      reg2spi_wr            <= 1'b0;
-      reg2spi_qrd           <= 1'b0;
-      reg2spi_qwr           <= 1'b0;
-      reg2spi_cmd           <=  'h0;
-      reg2spi_addr          <=  'h0;
-      reg2spi_cmd_len       <=  'h0;
-      reg2spi_addr_len      <=  'h0;
-      reg2spi_data_len      <=  'h0;
-      reg2spi_wdata         <=  'h0;
-      reg2spi_mode_enb      <=  'h0;
-      reg2spi_mode          <=  'h0;
-      reg2spi_dummy_rd_len  <=  'h0;
-      reg2spi_dummy_wr_len  <=  'h0;
-      reg2spi_csreg         <=  'h0;
-      reg2spi_req           <=  'h0;
-      spi_clk_div           <=  'h2;
+      cfg_m0_fsm_reset      <= 'h0;
+      cfg_m0_cs_reg         <= P_CS0;
+      cfg_m0_spi_mode       <= P_QUAD;
+      cfg_m0_spi_switch     <= P_MODE_SWITCH_AT_ADDR;
+      cfg_m0_cmd_reg        <= P_QIOR;
+      cfg_m0_mode_reg       <= 'h0;
+      cfg_m0_spi_seq[3:0]   <= P_FSM_CAMDR;
+      cfg_m0_addr_cnt[1:0]  <= P_24BIT;
+      cfg_m0_dummy_cnt[1:0] <= P_16BIT;
+      cfg_m0_data_cnt[7:0]  <= 4; // 4 Byte
+
+      cfg_m1_fsm_reset      <= 'h0;
+      cfg_m1_cs_reg         <= P_CS0;
+      cfg_m1_spi_mode       <= P_QUAD;
+      cfg_m1_spi_switch     <= P_MODE_SWITCH_AT_DATA;
+      cfg_m1_cmd_reg        <= P_QOR;
+      cfg_m1_mode_reg       <= 'h0;
+      cfg_m1_spi_seq[3:0]   <= P_FSM_CADR;
+      cfg_m1_addr_cnt[1:0]  <= P_24BIT;
+      cfg_m1_dummy_cnt[1:0] <= P_8BIT;
+      cfg_m1_data_cnt[7:0]  <= 0;
+      cfg_m1_req            <= 0; 
+      cfg_m1_wrdy           <= 1'b0;
+      cfg_m1_wdata          <= 'h0; // Not Used
+
+      cfg_cs_early         <= 'h1;
+      cfg_cs_late          <= 'h1;
+      spi_clk_div          <= 'h2;
+
       spi_init_done         <=  'h0;
-      spi_init_state        <=  SPI_INIT_IDLE;
-    end
-    else if (spi_init_done == 0) begin
-       case(spi_init_state)
-	   SPI_INIT_IDLE:
-	   begin
-              reg2spi_rd        <= 'h0;
-              reg2spi_wr        <= 'h1; // SPI Write Req
-              reg2spi_qrd       <= 'h0;
-              reg2spi_qwr       <= 'h0;
-              reg2spi_swrst     <= 'h0;
-              reg2spi_csreg     <= 'h1;
-              reg2spi_cmd[7:0]  <= 'hAB; // POWER UP command
-              reg2spi_mode[7:0] <= 'h0;
-              reg2spi_cmd_len   <= 'h8;
-              reg2spi_addr_len  <= 'h0;
-              reg2spi_data_len  <= 'h0;
-              reg2spi_wdata     <= 'h0;
-	      reg2spi_req       <= 'h1;
-              spi_init_state    <=  SPI_INIT_CMD_WAIT;
-	   end
-	   SPI_INIT_CMD_WAIT:
-	   begin
-	      if(spi_ack)   begin
-	         reg2spi_req      <= 1'b0;
-                 spi_init_state    <=  SPI_INIT_WREN_CMD;
-	      end
-           end
-	   SPI_INIT_WREN_CMD:
-	   begin
-              reg2spi_rd        <= 'h0;
-              reg2spi_wr        <= 'h1; // SPI Write Req
-              reg2spi_qrd       <= 'h0;
-              reg2spi_qwr       <= 'h0;
-              reg2spi_swrst     <= 'h0;
-              reg2spi_csreg     <= 'h1;
-              reg2spi_cmd[7:0]  <= 'h6; // WREN command
-              reg2spi_mode[7:0] <= 'h0;
-              reg2spi_cmd_len   <= 'h8;
-              reg2spi_addr_len  <= 'h0;
-              reg2spi_data_len  <= 'h0;
-              reg2spi_wdata     <= 'h0;
-	      reg2spi_req       <= 'h1;
-              spi_init_state    <=  SPI_INIT_WREN_WAIT;
-	   end
-	   SPI_INIT_WREN_WAIT:
-	   begin
-	      if(spi_ack)   begin
-	         reg2spi_req      <= 1'b0;
-                 spi_init_state    <=  SPI_INIT_WRR_CMD;
-	      end
-	   end
-	   SPI_INIT_WRR_CMD:
-	   begin
-              reg2spi_rd        <= 'h0;
-              reg2spi_wr        <= 'h1; // SPI Write Req
-              reg2spi_qrd       <= 'h0;
-              reg2spi_qwr       <= 'h0;
-              reg2spi_swrst     <= 'h0;
-              reg2spi_csreg     <= 'h1;
-              reg2spi_cmd[7:0]  <= 'h1; // WRR command
-              reg2spi_mode[7:0] <= 'h0;
-              reg2spi_cmd_len   <= 'h8;
-              reg2spi_addr_len  <= 'h0;
-              reg2spi_data_len  <= 'h10;
-              reg2spi_wdata     <= {8'h0,8'h2,16'h0}; // <sr1[7:0]><<cr1[7:0]><16'h0> cr1[1] = 1 indicate quad mode
-	      reg2spi_req       <= 'h1;
-              spi_init_state    <=  SPI_INIT_WRR_WAIT;
-	   end
-	   SPI_INIT_WRR_WAIT:
-	   begin
-	      if(spi_ack)   begin
-	         reg2spi_req      <= 1'b0;
-                 spi_init_done    <=  'h1;
-	      end
-	   end
-       endcase
-    end else if (spim_reg_req & spim_wb_we )
-    begin
-      case(reg_addr)
-        REG_CTRL:
-        begin
-          if ( spim_wb_be[0] == 1 )
-          begin
-            reg2spi_rd    <= spim_wb_wdata[0];
-            reg2spi_wr    <= spim_wb_wdata[1];
-            reg2spi_qrd   <= spim_wb_wdata[2];
-            reg2spi_qwr   <= spim_wb_wdata[3];
-            reg2spi_swrst <= spim_wb_wdata[4];
-	    reg2spi_req   <= 1'b1;
-          end
-          if ( spim_wb_be[1] == 1 )
-          begin
-            reg2spi_csreg <= spim_wb_wdata[11:8];
-          end
-        end
-        REG_CLKDIV:
-          if ( spim_wb_be[0] == 1 )
-          begin
-            spi_clk_div <= spim_wb_wdata[7:0];
-          end
-        REG_SPICMD: begin
-          if ( spim_wb_be[0] == 1 )
-              reg2spi_cmd[7:0] <= spim_wb_wdata[7:0];
-          if ( spim_wb_be[1] == 1 )
-              reg2spi_mode[7:0] <= spim_wb_wdata[15:8];
-          end
-        REG_SPIADR:
-          for (byte_index = 0; byte_index < 4; byte_index = byte_index+1 )
-            if ( spim_wb_be[byte_index] == 1 )
-              reg2spi_addr[byte_index*8 +: 8] <= spim_wb_wdata[(byte_index*8) +: 8];
-        REG_SPILEN:
-        begin
-          if ( spim_wb_be[0] == 1 ) begin
-               reg2spi_mode_enb <= spim_wb_wdata[6];
-               reg2spi_cmd_len  <= spim_wb_wdata[5:0];
-          end
-          if ( spim_wb_be[1] == 1 )
-            reg2spi_addr_len <= spim_wb_wdata[13:8];
-          if ( spim_wb_be[2] == 1 )
-            reg2spi_data_len[7:0] <= spim_wb_wdata[23:16];
-          if ( spim_wb_be[3] == 1 )
-            reg2spi_data_len[15:8] <= spim_wb_wdata[31:24];
-        end
-        REG_SPIDUM:
-        begin
-          if ( spim_wb_be[0] == 1 )
-            reg2spi_dummy_rd_len[7:0]  <= spim_wb_wdata[7:0];
-          if ( spim_wb_be[1] == 1 )
-            reg2spi_dummy_rd_len[15:8] <= spim_wb_wdata[15:8];
-          if ( spim_wb_be[2] == 1 )
-            reg2spi_dummy_wr_len[7:0]  <= spim_wb_wdata[23:16];
-          if ( spim_wb_be[3] == 1 )
-            reg2spi_dummy_wr_len[15:8] <= spim_wb_wdata[31:24];
-        end
-	REG_SPIWDATA: begin
-           reg2spi_wdata     <= spim_wb_wdata;
-	end
-      endcase
-    end
-    else
-    begin
-      if(spi_ack && spim_reg_req)   
-	 reg2spi_req <= 1'b0;
-    end
+      spi_delay_cnt         <= 'h0;
+      spim_reg_req_f        <= 1'b0;
+      spi_init_state        <=  SPI_INIT_PWUP;
+    end else begin 
+        spim_reg_req_f        <= spim_reg_req; // Needed for finding Req Edge
+        if (spi_init_done == 0) begin
+          case(spi_init_state)
+
+              //----------------------------------------------
+              // SPI MEMORY Need minimum 5Us after power up
+              // With 100Mhz, 10ns translated to 500 cycle
+              // We are waiting 1000 cycle
+              // ---------------------------------------------
+              SPI_INIT_PWUP:begin
+                   if(spi_delay_cnt == cfg_exit_cnt) begin
+                       spi_init_state   <=  SPI_INIT_IDLE;
+           	end else begin
+           	    spi_delay_cnt <= spi_delay_cnt+1;
+           	end
+              end
+
+              SPI_INIT_IDLE:
+              begin
+                 cfg_m1_cs_reg        <= P_CS0;
+                 cfg_m1_spi_mode      <= P_SINGLE;
+                 cfg_m1_spi_seq[3:0]  <= P_FSM_C;
+                 cfg_m1_spi_switch    <= '0;
+                 cfg_m1_cmd_reg       <= P_RES;
+                 cfg_m1_mode_reg      <= 'h0; // Not Used
+                 cfg_m1_addr_cnt[1:0] <= 'h0; // Not Used
+                 cfg_m1_dummy_cnt[1:0]<= 'h0; // Not Used
+                 cfg_m1_data_cnt[7:0] <= 'h0; // Not Used
+                 cfg_m1_addr          <= 'h0; // Not Used
+                 cfg_m1_wdata         <= 'h0; // Not Used
+                 cfg_m1_req           <= 'h1;
+                 spi_init_state       <=  SPI_INIT_CMD_WAIT;
+              end
+              SPI_INIT_CMD_WAIT:
+              begin
+                 if(spim_m1_ack)   begin
+                    cfg_m1_req       <= 1'b0;
+                    spi_init_state   <=  SPI_INIT_WREN_CMD;
+                 end
+              end
+              SPI_INIT_WREN_CMD:
+              begin
+                 cfg_m1_cs_reg        <= P_CS0;
+                 cfg_m1_spi_mode      <= P_SINGLE;
+                 cfg_m1_spi_seq[3:0]  <= P_FSM_C;
+                 cfg_m1_spi_switch    <= '0;
+                 cfg_m1_cmd_reg       <= P_WEN;
+                 cfg_m1_mode_reg      <= 'h0; // Not Used
+                 cfg_m1_addr_cnt[1:0] <= 'h0; // Not Used
+                 cfg_m1_dummy_cnt[1:0]<= 'h0; // Not Used
+                 cfg_m1_data_cnt[7:0] <= 'h0; // Not Used
+                 cfg_m1_addr          <= 'h0; // Not Used
+                 cfg_m1_wdata         <= 'h0; // Not Used
+                 cfg_m1_req           <= 'h1;
+                 spi_init_state       <=  SPI_INIT_WREN_WAIT;
+              end
+              SPI_INIT_WREN_WAIT:
+              begin
+                 if(spim_m1_ack)   begin
+                    cfg_m1_req      <= 1'b0;
+                    spi_init_state    <=  SPI_INIT_WRR_CMD;
+                 end
+              end
+              SPI_INIT_WRR_CMD:
+              begin
+                 cfg_m1_cs_reg        <= P_CS0;
+                 cfg_m1_spi_mode      <= P_SINGLE;
+                 cfg_m1_spi_seq[3:0]  <= P_FSM_CW;
+                 cfg_m1_spi_switch    <= '0;
+                 cfg_m1_cmd_reg       <= P_WRR;
+                 cfg_m1_mode_reg      <= 'h0; 
+                 cfg_m1_addr_cnt[1:0] <= 'h0; 
+                 cfg_m1_dummy_cnt[1:0]<= 'h0; 
+                 cfg_m1_data_cnt[7:0] <= 'h2; // 2 Bytes
+                 cfg_m1_addr          <= 'h0; 
+                 cfg_m1_wrdy          <= 1'b1;
+                 cfg_m1_wdata         <= {16'h0,8'h2,8'h0}; // <<cr1[7:0]><sr1[7:0]>> cr1[1] = 1 indicate quad mode
+                 cfg_m1_req           <= 'h1;
+                 spi_init_state       <=  SPI_INIT_WRR_WAIT;
+              end
+              SPI_INIT_WRR_WAIT:
+              begin
+                 if(spim_m1_ack)   begin
+		    spi_delay_cnt    <= 'h0;
+                    cfg_m1_wrdy      <= 1'b0;
+                    cfg_m1_req       <= 1'b0;
+                    spi_init_state   <=  SPI_INIT_WAIT;
+                 end
+              end
+              SPI_INIT_WAIT:
+              begin // SPI MEMORY need 5us after WRR Command
+                   if(spi_delay_cnt == cfg_exit_cnt) begin
+                       spi_init_done    <=  'h1;
+           	end else begin
+           	    spi_delay_cnt <= spi_delay_cnt+1;
+           	end
+              end
+          endcase
+       end else if (spim_reg_req && spim_reg_we && spi_init_done )
+       begin
+         case(spim_reg_addr)
+         GLBL_CTRL: begin
+             if ( spim_reg_be[0] == 1 ) begin
+                cfg_cs_early  <= spim_reg_wdata[1:0];
+                cfg_cs_late   <= spim_reg_wdata[3:2];
+             end
+             if ( spim_reg_be[1] == 1 ) begin
+                spi_clk_div <= spim_reg_wdata[15:8];
+             end
+         end
+        MEM_CTRL1: begin // This register control Direct Memory Access Type
+             if ( spim_reg_be[0] == 1 ) begin
+               cfg_m0_cs_reg    <= spim_reg_wdata[3:0]; // Chip Select for Memory Interface
+               cfg_m0_spi_mode  <= spim_reg_wdata[5:4]; // SPI Mode, 0 - Normal, 1- Double, 2 - Qard
+               cfg_m0_spi_switch<= spim_reg_wdata[7:6]; // Phase where to switch the SPI Mode
+             end
+             if ( spim_reg_be[1] == 1 ) begin
+               cfg_m0_fsm_reset <= spim_reg_wdata[8];
+             end
+         end
+         MEM_CTRL2: begin // This register control Direct Memory Access Type
+             if ( spim_reg_be[0] == 1 ) begin
+                cfg_m0_cmd_reg <= spim_reg_wdata[7:0];
+             end
+             if ( spim_reg_be[1] == 1 ) begin
+                cfg_m0_mode_reg <= spim_reg_wdata[15:8];
+             end
+             if ( spim_reg_be[2] == 1 ) begin
+                cfg_m0_spi_seq[3:0]  <= spim_reg_wdata[19:16];
+                cfg_m0_addr_cnt[1:0] <= spim_reg_wdata[21:20];
+                cfg_m0_dummy_cnt[1:0]<= spim_reg_wdata[23:22];
+             end
+             if ( spim_reg_be[3] == 1 ) begin
+               cfg_m0_data_cnt[7:0]  <= spim_reg_wdata[31:24];
+             end
+         end
+         REG_CTRL1: begin
+             if ( spim_reg_be[0] == 1 ) begin
+               cfg_m1_cs_reg    <= spim_reg_wdata[3:0]; // Chip Select for Memory Interface
+               cfg_m1_spi_mode  <= spim_reg_wdata[5:4]; // SPI Mode, 0 - Normal, 1- Double, 2 - Qard
+               cfg_m1_spi_switch<= spim_reg_wdata[7:6]; // Phase where to switch the SPI Mode
+             end
+             if ( spim_reg_be[0] == 1 ) begin
+               cfg_m1_fsm_reset <= spim_reg_wdata[8];
+             end
+         end
+         REG_CTRL2: begin // This register control Direct Memory Access Type
+             if ( spim_reg_be[0] == 1 ) begin
+                cfg_m1_cmd_reg <= spim_reg_wdata[7:0];
+             end
+             if ( spim_reg_be[1] == 1 ) begin
+                cfg_m1_mode_reg <= spim_reg_wdata[15:8];
+             end
+             if ( spim_reg_be[2] == 1 ) begin
+                cfg_m1_spi_seq[3:0]  <= spim_reg_wdata[19:16];
+                cfg_m1_addr_cnt[1:0] <= spim_reg_wdata[21:20];
+                cfg_m1_dummy_cnt[1:0]<= spim_reg_wdata[23:22];
+             end
+             if ( spim_reg_be[3] == 1 ) begin
+                cfg_m1_data_cnt[7:0]  <= spim_reg_wdata[31:24];
+             end
+         end
+         REG_SPIADR: begin
+           for (byte_index = 0; byte_index < 4; byte_index = byte_index+1 )
+               if ( spim_reg_be[byte_index] == 1 )
+                 cfg_m1_addr[byte_index*8 +: 8] <= spim_reg_wdata[(byte_index*8) +: 8];
+         end
+         endcase
+         end 
+     end 
   end 
 
 
@@ -422,36 +545,254 @@
     begin
       reg_rdata = '0;
       if(spim_reg_req) begin
-          case(reg_addr)
-            REG_CTRL:
-                    reg_rdata[31:0] =  { 20'h0, 
-            	                     reg2spi_csreg,
-            	                     3'b0,
-            	                     reg2spi_swrst,
-            	                     reg2spi_qwr,
-            	                     reg2spi_qrd,
-            	                     reg2spi_wr,
-            	                     reg2spi_rd};
-
-            REG_CLKDIV:
-                    reg_rdata[31:0] = {24'h0,spi_clk_div};
-            REG_SPICMD:
-                    reg_rdata[31:0] = {16'h0,reg2spi_mode,reg2spi_cmd};
-            REG_SPIADR:
-                    reg_rdata[31:0] = reg2spi_addr;
-            REG_SPILEN:
-                    reg_rdata[31:0] = {reg2spi_data_len,2'b00,reg2spi_addr_len,1'b0,reg2spi_mode_enb,reg2spi_cmd_len};
-            REG_SPIDUM:
-                    reg_rdata[31:0] = {reg2spi_dummy_wr_len,reg2spi_dummy_rd_len};
-            REG_SPIWDATA:
-                    reg_rdata[31:0] = reg2spi_wdata;
-            REG_SPIRDATA:
-                    reg_rdata[31:0] = spim_reg_rdata;
-            REG_STATUS:
-                    reg_rdata[31:0] = {23'h0,spi_status};
+          case(spim_reg_addr)
+            GLBL_CTRL:   reg_rdata[31:0] = {16'h0,spi_clk_div,4'h0,cfg_cs_late,cfg_cs_early};
+	    MEM_CTRL1:    reg_rdata[31:0] =  {23'h0,cfg_m0_fsm_reset,cfg_m0_spi_switch,cfg_m0_spi_mode,cfg_m0_cs_reg};
+	    MEM_CTRL2:    reg_rdata[31:0] =  {cfg_m0_data_cnt,cfg_m0_dummy_cnt,cfg_m0_addr_cnt,cfg_m0_spi_seq,cfg_m0_mode_reg,cfg_m0_cmd_reg};
+            REG_CTRL1:    reg_rdata[31:0] =  {23'h0, cfg_m1_fsm_reset,cfg_m1_spi_switch,cfg_m1_spi_mode,cfg_m1_cs_reg};
+	    REG_CTRL2:    reg_rdata[31:0] =  {cfg_m1_data_cnt,cfg_m1_dummy_cnt,cfg_m1_addr_cnt,cfg_m1_spi_seq,cfg_m1_mode_reg,cfg_m1_cmd_reg};
+            REG_SPIADR:   reg_rdata[31:0] = cfg_m1_addr;
+            REG_SPIWDATA: reg_rdata[31:0] = cfg_m1_wdata;
+            REG_SPIRDATA: reg_rdata[31:0] = cfg_m1_rdata;
+            REG_STATUS:   reg_rdata[31:0] = spi_debug;
           endcase
        end
     end 
 
+// FSM
+
+always_ff @(negedge rst_n or posedge mclk) begin
+    if ( rst_n == 1'b0 ) begin
+	cur_cnt <= 'h0;
+	state    <= FSM_IDLE;
+    end else begin
+       if(cfg_m1_fsm_reset) begin
+          cur_cnt <= 'h0;
+	  state    <= FSM_IDLE;
+       end else begin
+           cur_cnt <= next_cnt;
+       	   state <= next_state;
+       end
+    end
+end
+
+/***********************************************************************************
+* This block interface with WishBone Request and Write Command & Read Response FIFO
+* **********************************************************************************/
+
+logic [7:0] cfg_data_cnt;
+logic [31:0] spim_fifo_wdata;
+logic       spim_fifo_req;
+assign cfg_data_cnt = cfg_m1_data_cnt-1;
+
+assign spim_fifo_req = cfg_m1_req || spim_fifo_rdata_req || spim_fifo_wdata_req;
+
+assign spim_fifo_wdata = (cfg_m1_req) ?  cfg_m1_wdata :  spim_reg_wdata;
+
+always_comb
+begin
+   cmd_fifo_wr    = '0;
+   cmd_fifo_wdata = '0;
+
+   res_fifo_rd    = 0;
+   spim_m1_rdata   = '0;
+
+   spim_m1_ack    = 0;
+   spim_m1_rrdy   = 0;
+   next_cnt      = cur_cnt;
+   next_state    = state;
+   spim_m1_rrdy  = 0;
+   spim_m1_wrdy  = 0;
+   cfg_m1_rdata  = 0;
+
+   case(state)
+   FSM_IDLE:  begin
+	if(spim_fifo_req && cmd_fifo_empty) begin
+	   case(cfg_m1_spi_seq)
+	      P_FSM_C: begin
+	              cmd_fifo_wdata = {SOC,EOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+		                        cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+					cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	              next_state = FSM_ACK_PHASE;
+	      end
+	      P_FSM_CW: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_WRITE_PHASE;
+	      end
+	      P_FSM_CA: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_ADR_PHASE;
+	      end
+	      P_FSM_CAR: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_ADR_PHASE;
+	      end
+              P_FSM_CADR: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_ADR_PHASE;
+	      end
+	      P_FSM_CAMR: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_ADR_PHASE;
+	      end
+	      P_FSM_CAMDR: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_ADR_PHASE;
+	      end
+	      P_FSM_CAW: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_ADR_PHASE;
+	      end
+	      P_FSM_CADW: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_ADR_PHASE;
+	      end
+	       P_FSM_CDR: begin
+	          cmd_fifo_wdata = {SOC,EOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_READ_PHASE;
+	       end
+	       P_FSM_CDW: begin
+	          cmd_fifo_wdata = {SOC,NOC, cfg_m1_data_cnt[7:0],cfg_m1_dummy_cnt[1:0],
+			            cfg_m1_addr_cnt[1:0],cfg_m1_spi_seq[3:0],
+				    cfg_m1_mode_reg[7:0],cfg_m1_cmd_reg[7:0]};
+	          next_state = FSM_WRITE_PHASE;
+	       end
+
+
+	   endcase
+	   cmd_fifo_wr    = 1;
+	end
+   end
+   // ADDRESS PHASE
+   FSM_ADR_PHASE: begin
+	  if(!cmd_fifo_full) begin
+	      case(cfg_m1_spi_seq)
+	         P_FSM_CA:   // COMMAND + ADDRESS PHASE
+	         begin
+                       cmd_fifo_wdata = {NOC,EOC,cfg_m1_addr[31:0]};
+	               next_state = FSM_ACK_PHASE;
+	         end
+	         P_FSM_CAR:  // COMMAND + ADDRESS + READ PHASE
+		 begin
+                    cmd_fifo_wdata = {NOC,EOC,cfg_m1_addr[31:0]};
+	            next_cnt  = 'h0;
+	            next_state = FSM_READ_PHASE;
+	         end
+                 P_FSM_CADR: // COMMAND + ADDRESS + DUMMY + READ PHASE
+		 begin
+                    cmd_fifo_wdata = {NOC,EOC,cfg_m1_addr[31:0]};
+	            next_cnt  = 'h0;
+	            next_state = FSM_READ_PHASE;
+	         end
+	         P_FSM_CAMR: // COMMAND + ADDRESS + MODE + READ PHASE
+		 begin
+                    cmd_fifo_wdata = {NOC,EOC,cfg_m1_addr[31:0]};
+	            next_cnt  = 'h0;
+	            next_state = FSM_READ_PHASE;
+	         end
+	         P_FSM_CAMDR: // COMMAND + ADDRESS + MODE + DUMMY + READ PHASE
+		 begin
+                    cmd_fifo_wdata = {NOC,EOC,cfg_m1_addr[31:0]};
+	            next_cnt  = 'h0;
+	            next_state = FSM_READ_PHASE;
+	         end
+
+		 P_FSM_CAW:begin
+                    cmd_fifo_wdata = {NOC,NOC,cfg_m1_addr[31:0]};
+	            next_cnt  = 'h0;
+	            next_state = FSM_WRITE_PHASE;
+	         end
+		 P_FSM_CADW: begin
+                    cmd_fifo_wdata = {NOC,NOC,cfg_m1_addr[31:0]};
+	            next_cnt  = 'h0;
+	            next_state = FSM_WRITE_PHASE;
+	         end
+	      endcase
+              cmd_fifo_wr      = 1;
+	  end
+   end
+
+   //----------------------------------------------------------
+   // Check Resonse FIFO is not empty then read the data from response fifo
+   // ---------------------------------------------------------
+   FSM_READ_PHASE: begin
+	if(res_fifo_empty != 1 && spim_fifo_rdata_req) begin
+	   spim_m1_rrdy = 1;
+           cfg_m1_rdata = res_fifo_rdata;
+	   res_fifo_rd  = 1;
+	   if(cfg_data_cnt[7:2] == cur_cnt) begin
+	      next_state = FSM_ACK_PHASE;
+	   end else begin
+	      next_state = FSM_READ_BUSY;
+	      next_cnt  = cur_cnt+1;
+	    end
+	 end
+   end
+   //----------------------------------------------
+   // Wait for Previous Read Data Read
+   // ---------------------------------------------
+   FSM_READ_BUSY: begin
+        spim_m1_rrdy = 0;
+	if(spim_fifo_rdata_req == 0) begin
+           next_state    = FSM_READ_PHASE;
+	end
+   end
+
+   //----------------------------------------------------------
+   // Check command FIFO is not full and Write Data is available
+   // ---------------------------------------------------------
+   FSM_WRITE_PHASE: begin
+        if(cmd_fifo_full != 1 && spim_fifo_req) begin
+	   // If this a single word config cycle or 
+           // in crrent spim_fifo_wr request
+	   spim_m1_wrdy = 1;
+	   if(cfg_data_cnt[7:2] == cur_cnt) begin
+              cmd_fifo_wdata = {NOC,EOC,spim_fifo_wdata[31:0]};
+	      next_state     = FSM_ACK_PHASE;
+	   end else begin
+              cmd_fifo_wdata = {NOC,NOC,spim_fifo_wdata[31:0]};
+	      next_state     = FSM_WRITE_BUSY;
+	      next_cnt      = cur_cnt+1;
+	    end
+	   cmd_fifo_wr  = 1;
+	 end
+   end
+   //----------------------------------------------
+   // Wait for NEXT Data Ready
+   // ---------------------------------------------
+   FSM_WRITE_BUSY: begin
+	spim_m1_wrdy = 0;
+	if(spim_fifo_wdata_req == 0) begin
+           next_state    = FSM_WRITE_PHASE;
+	end
+   end
+
+   FSM_ACK_PHASE: begin
+	   spim_m1_ack = 1;
+	   next_state = FSM_IDLE;
+	end
+
+   endcase
+
+
+end
 
 endmodule
diff --git a/verilog/rtl/spi_master/src/spim_rx.sv b/verilog/rtl/spi_master/src/spim_rx.sv
index 7832a8e..6e183de 100644
--- a/verilog/rtl/spi_master/src/spim_rx.sv
+++ b/verilog/rtl/spi_master/src/spim_rx.sv
@@ -69,6 +69,7 @@
 (
     input  logic        clk,
     input  logic        rstn,
+    input  logic        flush,
     input  logic        en,
     input  logic        rx_edge,
     output logic        rx_done,
@@ -91,20 +92,19 @@
   logic [15:0] counter_trgt;
   logic [15:0] counter_next;
   logic        reg_done;
+  logic        data_valid_i;
   enum logic [1:0] { IDLE, RECEIVE, WAIT_FIFO, WAIT_FIFO_DONE } rx_CS, rx_NS;
 
 
   assign reg_done  = (!en_quad_in && (counter[4:0] == 5'b11111)) || (en_quad_in && (counter[2:0] == 3'b111));
 
-  // RISV is little endian, so data is converted to little endian format
-  assign data = (ENDIEAN) ? data_int_next : {data_int_next[7:0],data_int_next[15:8],data_int_next[23:16],data_int_next[31:24]};
 
 
   always_comb
   begin
     rx_NS         = rx_CS;
     data_int_next = data_int;
-    data_valid    = 1'b0;
+    data_valid_i    = 1'b0;
     counter_next  = counter;
 
     case (rx_CS)
@@ -127,14 +127,14 @@
 
           if (rx_done) begin
             counter_next = 0;
-            data_valid   = 1'b1;
+            data_valid_i   = 1'b1;
 
             if (data_ready)
               rx_NS = IDLE;
             else
               rx_NS = WAIT_FIFO_DONE;
           end else if (reg_done) begin
-            data_valid = 1'b1;
+            data_valid_i = 1'b1;
 
             if (~data_ready) begin
               // no space in the FIFO, wait for free space
@@ -145,13 +145,13 @@
       end
 
       WAIT_FIFO_DONE: begin
-        data_valid = 1'b1;
+        data_valid_i = 1'b1;
         if (data_ready)
           rx_NS = IDLE;
       end
 
       WAIT_FIFO: begin
-        data_valid = 1'b1;
+        data_valid_i = 1'b1;
         if (data_ready)
           rx_NS = RECEIVE;
       end
@@ -168,20 +168,31 @@
       data_int     <= '0;
       rx_done      <= '0;
       clk_en_o     <= '0;
+      data         <= 'b0;
+      data_valid   <= 1'b0;
       rx_CS        <= IDLE;
-    end
-    else
-    begin
-      if (rx_edge) begin
-         counter      <= counter_next;
-         data_int     <= data_int_next;
-         rx_CS        <= rx_NS;
-         rx_done      <= (counter_next == (counter_trgt-1)) && (rx_NS == RECEIVE);
-         clk_en_o     <= (rx_NS == RECEIVE);
-      end
+    end else if(flush) begin
+        counter      <= 0;
+        counter_trgt <= 'h8;
+        data_int     <= '0;
+        rx_done      <= '0;
+        clk_en_o     <= '0;
+        data         <= 'b0;
+        data_valid   <= 1'b0;
+        rx_CS        <= IDLE;
+    end else begin
+       data_valid <= data_valid_i;
+       data <= (ENDIEAN) ? data_int_next : {data_int_next[7:0],data_int_next[15:8],data_int_next[23:16],data_int_next[31:24]};
+       if (rx_edge) begin
+          counter      <= counter_next;
+          data_int     <= data_int_next;
+          rx_CS        <= rx_NS;
+          rx_done      <= (counter_next == (counter_trgt-1)) && (rx_NS == RECEIVE);
+          clk_en_o     <= (rx_NS == RECEIVE);
+       end
        if (en && counter_in_upd) begin
-          counter_trgt <= (en_quad_in) ? {2'b00,counter_in[15:2]} : counter_in;
-	end
+           counter_trgt <= (en_quad_in) ? {2'b00,counter_in[15:2]} : counter_in;
+       end
     end
   end
 
diff --git a/verilog/rtl/spi_master/src/spim_top.sv b/verilog/rtl/spi_master/src/spim_top.sv
index 98c7a66..fbb25b8 100644
--- a/verilog/rtl/spi_master/src/spim_top.sv
+++ b/verilog/rtl/spi_master/src/spim_top.sv
@@ -25,9 +25,23 @@
 ////                                                              ////
 ////  Description                                                 ////
 ////     SPI Master Top module                                    ////
+////     There are two seperate Data path managed here            ////
+////     with seperate command and response memory                ////
+////     Master-0 : This is targetted for CORE IMEM request       ////
+////                and expect only Read access                   ////
+////     Master-1: This is targetted to CORE DMEM or              ////
+////               Indirect Memory access, Both Write and Read    ////
+////               accesss are supported.                         ////
+////               Upto 255 Byte Read/Write Burst supported       ////
+////    Limitation:                                               ////
+////       1.  Write/Read FIFO Abort case not managed, expect     ////
+////               user to clearly close the busrt request        ////
+////       2.  Wishbone Request abort not yet supported.          ////
+////       3.  Write access through M0 Port not supported         ////
 ////                                                              ////
 ////  To Do:                                                      ////
-////    nothing                                                   ////
+////    1. Add support for WishBone request timout                ////
+////    2. Add Pre-fetch feature for M0 Port                      ////
 ////                                                              ////
 ////  Author(s):                                                  ////
 ////      - Dinesh Annayya, dinesha@opencores.org                 ////
@@ -83,54 +97,95 @@
     output logic                         wbd_ack_o, // acknowlegement
     output logic                         wbd_err_o,  // error
 
-    output logic                   [1:0] events_o,
+    output logic                 [31:0]  spi_debug,
 
     // PAD I/f
-    input  [5:0]                         io_in    ,
-    output  [5:0]                        io_out   ,
-    output  [5:0]                        io_oeb
+    input  logic [5:0]                   io_in    ,
+    output logic  [5:0]                  io_out   ,
+    output logic  [5:0]                  io_oeb
 
 );
 
 
+   
+    logic                   [7:0] spi_clk_div      ;
 
-    logic   [5:0] spi_clk_div;
-    logic         spi_req;
-    logic         spi_ack;
-    logic  [31:0] spi_addr;
-    logic   [5:0] spi_addr_len;
-    logic  [7:0]  spi_cmd;
-    logic   [5:0] spi_cmd_len;
-    logic  [7:0]  spi_mode_cmd;
-    logic         spi_mode_cmd_enb;
-    logic  [15:0] spi_data_len;
-    logic  [15:0] spi_dummy_rd_len;
-    logic  [15:0] spi_dummy_wr_len;
-    logic         spi_swrst;
-    logic         spi_rd;
-    logic         spi_wr;
-    logic         spi_qrd;
-    logic         spi_qwr;
-    logic [31:0]  spi_wdata;
-    logic [31:0]  spi_rdata;
-    logic   [3:0] spi_csreg;
-    logic  [31:0] spi_data_tx;
-    logic         spi_data_tx_valid;
-    logic         spi_data_tx_ready;
-    logic  [31:0] spi_data_rx;
-    logic         spi_data_rx_valid;
-    logic         spi_data_rx_ready;
-    logic   [8:0] spi_ctrl_status;
-    logic  [31:0] spi_ctrl_data_tx;
-    logic         spi_ctrl_data_tx_valid;
-    logic         spi_ctrl_data_tx_ready;
-    logic  [31:0] spi_ctrl_data_rx;
-    logic         spi_ctrl_data_rx_valid;
-    logic         spi_ctrl_data_rx_ready;
-    logic  [31:0] reg2spi_wdata;
+    // Master 0 Configuration
+    logic                         cfg_m0_fsm_reset ;
+    logic [3:0]                   cfg_m0_cs_reg    ;  // Chip select
+    logic [1:0]                   cfg_m0_spi_mode  ;  // Final SPI Mode 
+    logic [1:0]                   cfg_m0_spi_switch;  // SPI Mode Switching Place
+    logic [3:0]                   cfg_m0_spi_seq   ;  // SPI SEQUENCE
+    logic [1:0]                   cfg_m0_addr_cnt  ;  // SPI Addr Count
+    logic [1:0]                   cfg_m0_dummy_cnt ;  // SPI Dummy Count
+    logic [7:0]                   cfg_m0_data_cnt  ;  // SPI Read Count
+    logic [7:0]                   cfg_m0_cmd_reg   ;  // SPI MEM COMMAND
+    logic [7:0]                   cfg_m0_mode_reg  ;  // SPI MODE REG
 
-    logic         s_eot;
+    logic [3:0]                   cfg_m1_cs_reg    ;  // Chip select
+    logic [1:0]                   cfg_m1_spi_mode  ;  // Final SPI Mode 
+    logic [1:0]                   cfg_m1_spi_switch;  // SPI Mode Switching Place
 
+    logic [1:0]                   cfg_cs_early     ;  // Amount of cycle early CS asserted
+    logic [1:0]                   cfg_cs_late      ;  // Amount of cycle late CS de-asserted
+
+    // Towards Reg I/F
+    logic                         spim_reg_req     ;   // Reg Request
+    logic [3:0]                   spim_reg_addr    ;   // Reg Address
+    logic                         spim_reg_we      ;   // Reg Write/Read Command
+    logic [3:0]                   spim_reg_be      ;   // Reg Byte Enable
+    logic [31:0]                  spim_reg_wdata   ;   // Reg Write Data
+    logic                         spim_reg_ack     ;   // Read Ack
+    logic [31:0]                  spim_reg_rdata   ;   // Read Read Data
+
+    // Towards m0 Command FIFO
+    logic                         m0_cmd_fifo_full    ;   // Command FIFO full
+    logic                         m0_cmd_fifo_empty   ;   // Command FIFO empty
+    logic                         m0_cmd_fifo_wr      ;   // Command FIFO Write
+    logic                         m0_cmd_fifo_rd      ;   // Command FIFO read
+    logic [33:0]                  m0_cmd_fifo_wdata   ;   // Command FIFO WData
+    logic [33:0]                  m0_cmd_fifo_rdata   ;   // Command FIFO RData
+    
+    // Towards m0 Response FIFO
+    logic                         m0_res_fifo_full    ;   // Response FIFO Empty
+    logic                         m0_res_fifo_empty   ;   // Response FIFO Empty
+    logic                         m0_res_fifo_wr      ;   // Response FIFO Write
+    logic                         m0_res_fifo_rd      ;   // Response FIFO Read
+    logic [31:0]                  m0_res_fifo_wdata   ;   // Response FIFO WData
+    logic [31:0]                  m0_res_fifo_rdata   ;   // Response FIFO RData
+
+    // Towards m1 Command FIFO
+    logic                         m1_cmd_fifo_full    ;   // Command FIFO full
+    logic                         m1_cmd_fifo_empty   ;   // Command FIFO empty
+    logic                         m1_cmd_fifo_wr      ;   // Command FIFO Write
+    logic                         m1_cmd_fifo_rd      ;   // Command FIFO Write
+    logic [33:0]                  m1_cmd_fifo_wdata   ;   // Command FIFO WData
+    logic [33:0]                  m1_cmd_fifo_rdata   ;   // Command FIFO RData
+    
+    // Towards m0 Response FIFO
+    logic                         m1_res_fifo_full    ;   // Response FIFO Empty
+    logic                         m1_res_fifo_empty   ;   // Response FIFO Empty
+    logic                         m1_res_fifo_wr      ;   // Response FIFO Read
+    logic                         m1_res_fifo_rd      ;   // Response FIFO Read
+    logic [31:0]                  m1_res_fifo_wdata   ;   // Response FIFO WData
+    logic [31:0]                  m1_res_fifo_rdata   ;   // Response FIFO RData
+
+    logic                         m0_res_fifo_flush   ;   // m0 response fifo flush
+    logic                         m1_res_fifo_flush   ;   // m0 response fifo flush
+
+//-----------------------------------------------------
+// SPI Debug monitoring
+// ----------------------------------------------------
+    logic [8:0]   spi_ctrl_status       ;
+    logic [3:0]   m0_state         ;
+    logic [3:0]   m1_state         ;
+    logic [3:0]   ctrl_state        ;
+
+
+    assign spi_debug  =   {3'h0,
+		          m0_cmd_fifo_full,m0_cmd_fifo_empty,m0_res_fifo_full,m0_res_fifo_empty,
+		          m1_cmd_fifo_full,m1_cmd_fifo_empty,m1_res_fifo_full,m1_res_fifo_empty,
+		          ctrl_state[3:0], m0_state[3:0],m1_state[3:0],spi_ctrl_status};
 
 //-------------------------------------------------------
 // SPI Interface moved inside to support carvel IO pad 
@@ -151,6 +206,7 @@
 logic                          spi_sdi2;
 logic                          spi_sdi3;
 logic                          spi_en_tx;
+logic                          spi_init_done;
 
 
 assign  spi_sdi0  =  io_in[2];
@@ -169,17 +225,10 @@
 assign  io_oeb[1] =  1'b0;         // spi_csn
 assign  io_oeb[2] =  !spi_en_tx;   // spi_dio0
 assign  io_oeb[3] =  !spi_en_tx;   // spi_dio1
-assign  io_oeb[4] =  !spi_en_tx;   // spi_dio2
-assign  io_oeb[5] =  !spi_en_tx;   // spi_dio3
+assign  io_oeb[4] =  (spi_mode == 0) ? 1 'b0 : !spi_en_tx;   // spi_dio2
+assign  io_oeb[5] =  (spi_mode == 0) ? 1 'b0 : !spi_en_tx;   // spi_dio3
 
-
-
-    spim_regs
-    #(
-        .WB_WIDTH(WB_WIDTH)
-    )
-    u_spim_regs
-    (
+spim_if #( .WB_WIDTH(WB_WIDTH)) u_wb_if(
         .mclk                           (mclk                         ),
         .rst_n                          (rst_n                        ),
 
@@ -192,59 +241,199 @@
         .wbd_ack_o                      (wbd_ack_o                    ), // acknowlegement
         .wbd_err_o                      (wbd_err_o                    ),  // error
 
-        .spi_clk_div                    (spi_clk_div                  ),
-        .spi_status                     (spi_ctrl_status              ),
+    // Configuration
+        .cfg_fsm_reset                  (cfg_m0_fsm_reset             ),
+        .cfg_mem_seq                    (cfg_m0_spi_seq               ), // SPI MEM SEQUENCE
+        .cfg_addr_cnt                   (cfg_m0_addr_cnt              ), // SPI Addr Count
+        .cfg_dummy_cnt                  (cfg_m0_dummy_cnt             ), // SPI Dummy Count
+        .cfg_data_cnt                   (cfg_m0_data_cnt              ), // SPI Read Count
+        .cfg_cmd_reg                    (cfg_m0_cmd_reg               ), // SPI MEM COMMAND
+        .cfg_mode_reg                   (cfg_m0_mode_reg              ), // SPI MODE REG
 
+        .spi_init_done                  (spi_init_done                ), // SPI internal Init completed
 
-        .spi_req                        (spi_req                     ),
-        .spi_addr                       (spi_addr                     ),
-        .spi_addr_len                   (spi_addr_len                 ),
-        .spi_cmd                        (spi_cmd                      ),
-        .spi_cmd_len                    (spi_cmd_len                  ),
-        .spi_mode_cmd                   (spi_mode_cmd                 ),
-        .spi_mode_cmd_enb               (spi_mode_cmd_enb             ),
-        .spi_csreg                      (spi_csreg                    ),
-        .spi_data_len                   (spi_data_len                 ),
-        .spi_dummy_rd_len               (spi_dummy_rd_len             ),
-        .spi_dummy_wr_len               (spi_dummy_wr_len             ),
-        .spi_swrst                      (spi_swrst                    ),
-        .spi_rd                         (spi_rd                       ),
-        .spi_wr                         (spi_wr                       ),
-        .spi_qrd                        (spi_qrd                      ),
-        .spi_qwr                        (spi_qwr                      ),
-        .spi_wdata                      (spi_wdata                    ),
-        .spi_rdata                      (spi_rdata                    ),
-        .spi_ack                        (spi_ack                      )
+    // Towards Reg I/F
+        .spim_reg_req                   (spim_reg_req                 ), // Reg Request
+        .spim_reg_addr                  (spim_reg_addr                ), // Reg Address
+        .spim_reg_we                    (spim_reg_we                  ), // Reg Write/Read Command
+        .spim_reg_be                    (spim_reg_be                  ), // Reg Byte Enable
+        .spim_reg_wdata                 (spim_reg_wdata               ), // Reg Write Data
+        .spim_reg_ack                   (spim_reg_ack                 ), // Read Ack
+        .spim_reg_rdata                 (spim_reg_rdata               ), // Read Read Data
+
+    // Towards Command FIFO
+        .cmd_fifo_empty                 (m0_cmd_fifo_empty            ), // Command FIFO empty
+        .cmd_fifo_wr                    (m0_cmd_fifo_wr               ), // Command FIFO Write
+        .cmd_fifo_wdata                 (m0_cmd_fifo_wdata            ), // Command FIFO WData
+    
+    // Towards Response FIFO
+        .res_fifo_empty                 (m0_res_fifo_empty            ), // Response FIFO Empty
+        .res_fifo_rd                    (m0_res_fifo_rd               ), // Response FIFO Read
+        .res_fifo_rdata                 (m0_res_fifo_rdata            ), // Response FIFO Data
+
+	.state                          (m0_state                     )
+
     );
 
+
+    spim_regs
+    #(
+        .WB_WIDTH(WB_WIDTH)
+    )
+    u_spim_regs
+    (
+        .mclk                           (mclk                         ),
+        .rst_n                          (rst_n                        ),
+	.fast_sim_mode                  (1'b0                         ),
+
+        .spi_clk_div                    (spi_clk_div                  ),
+	.spi_init_done                  (spi_init_done                ),
+
+        .spi_debug                      (spi_debug                    ),
+
+        .cfg_m0_fsm_reset               (cfg_m0_fsm_reset             ),
+        .cfg_m0_cs_reg                  (cfg_m0_cs_reg                ), // Chip select
+        .cfg_m0_spi_mode                (cfg_m0_spi_mode              ), // Final SPI Mode 
+        .cfg_m0_spi_switch              (cfg_m0_spi_switch            ), // SPI Mode Switching Place
+        .cfg_m0_spi_seq                 (cfg_m0_spi_seq               ), // SPI SEQUENCE
+        .cfg_m0_addr_cnt                (cfg_m0_addr_cnt              ), // SPI Addr Count
+        .cfg_m0_dummy_cnt               (cfg_m0_dummy_cnt             ), // SPI Dummy Count
+        .cfg_m0_data_cnt                (cfg_m0_data_cnt              ), // SPI Read Count
+        .cfg_m0_cmd_reg                 (cfg_m0_cmd_reg               ), // SPI MEM COMMAND
+        .cfg_m0_mode_reg                (cfg_m0_mode_reg              ), // SPI MODE REG
+
+        .cfg_m1_cs_reg                  (cfg_m1_cs_reg                ), // Chip select
+        .cfg_m1_spi_mode                (cfg_m1_spi_mode              ), // Final SPI Mode 
+        .cfg_m1_spi_switch              (cfg_m1_spi_switch            ), // SPI Mode Switching Place
+
+	.cfg_cs_early                   (cfg_cs_early                 ),
+	.cfg_cs_late                    (cfg_cs_late                  ),
+
+    // Towards Reg I/F
+        .spim_reg_req                   (spim_reg_req                 ), // Reg Request
+        .spim_reg_addr                  (spim_reg_addr                ), // Reg Address
+        .spim_reg_we                    (spim_reg_we                  ), // Reg Write/Read Command
+        .spim_reg_be                    (spim_reg_be                  ), // Reg Byte Enable
+        .spim_reg_wdata                 (spim_reg_wdata               ), // Reg Write Data
+        .spim_reg_ack                   (spim_reg_ack                 ), // Read Ack
+        .spim_reg_rdata                 (spim_reg_rdata               ), // Read Read Data
+
+    // Towards Command FIFO
+        .cmd_fifo_full                  (m1_cmd_fifo_full             ), // Command FIFO empty
+        .cmd_fifo_empty                 (m1_cmd_fifo_empty            ), // Command FIFO empty
+        .cmd_fifo_wr                    (m1_cmd_fifo_wr               ), // Command FIFO Write
+        .cmd_fifo_wdata                 (m1_cmd_fifo_wdata            ), // Command FIFO WData
+    
+    // Towards Response FIFO
+        .res_fifo_full                  (m1_res_fifo_full             ), // Response FIFO Empty
+        .res_fifo_empty                 (m1_res_fifo_empty            ), // Response FIFO Empty
+        .res_fifo_rd                    (m1_res_fifo_rd               ), // Response FIFO Read
+        .res_fifo_rdata                 (m1_res_fifo_rdata            ),  // Response FIFO Data
+
+	.state                          (m1_state                     )
+
+    );
+
+ // Master 0 Command FIFO
+ spim_fifo #(.W(34), .DP(2)) u_m0_cmd_fifo (
+	 .clk                           (mclk                        ),
+         .reset_n                       (rst_n                       ),
+	 .flush                         (1'b0                        ),
+         .wr_en                         (m0_cmd_fifo_wr              ),
+         .wr_data                       (m0_cmd_fifo_wdata           ),
+         .full                          (m0_cmd_fifo_full            ),                 
+         .afull                         (                            ),                 
+         .rd_en                         (m0_cmd_fifo_rd              ),
+         .empty                         (m0_cmd_fifo_empty           ),                
+         .aempty                        (                            ),                
+         .rd_data                       (m0_cmd_fifo_rdata           )
+   );
+
+ // Master 0 Response FIFO
+ spim_fifo #(.W(32), .DP(4)) u_m0_res_fifo (
+	 .clk                           (mclk                        ),
+         .reset_n                       (rst_n                       ),
+	 .flush                         (m0_res_fifo_flush           ),
+         .wr_en                         (m0_res_fifo_wr              ),
+         .wr_data                       (m0_res_fifo_wdata           ),
+         .full                          (m0_res_fifo_full            ),                 
+         .afull                         (                            ),                 
+         .rd_en                         (m0_res_fifo_rd              ),
+         .empty                         (m0_res_fifo_empty           ),                
+         .aempty                        (                            ),                
+         .rd_data                       (m0_res_fifo_rdata           )
+   );
+
+ // Master 1 Command FIFO
+ spim_fifo #(.W(34), .DP(4)) u_m1_cmd_fifo (
+	 .clk                           (mclk                        ),
+         .reset_n                       (rst_n                       ),
+	 .flush                         (1'b0                        ),
+         .wr_en                         (m1_cmd_fifo_wr              ),
+         .wr_data                       (m1_cmd_fifo_wdata           ),
+         .full                          (m1_cmd_fifo_full            ),                 
+         .afull                         (                            ),                 
+         .rd_en                         (m1_cmd_fifo_rd              ),
+         .empty                         (m1_cmd_fifo_empty           ),                
+         .aempty                        (                            ),                
+         .rd_data                       (m1_cmd_fifo_rdata           )
+   );
+ // Master 1 Response FIFO
+ spim_fifo #(.W(32), .DP(2)) u_m1_res_fifo (
+	 .clk                           (mclk                        ),
+         .reset_n                       (rst_n                       ),
+	 .flush                         (m1_res_fifo_flush           ),
+         .wr_en                         (m1_res_fifo_wr              ),
+         .wr_data                       (m1_res_fifo_wdata           ),
+         .full                          (m1_res_fifo_full            ),                 
+         .afull                         (                            ),                 
+         .rd_en                         (m1_res_fifo_rd              ),
+         .empty                         (m1_res_fifo_empty           ),                
+         .aempty                        (                            ),                
+         .rd_data                       (m1_res_fifo_rdata           )
+   );
+
+
     spim_ctrl u_spictrl
     (
         .clk                            (mclk                         ),
         .rstn                           (rst_n                        ),
-        .eot                            (                             ),
 
         .spi_clk_div                    (spi_clk_div                  ),
         .spi_status                     (spi_ctrl_status              ),
 
-        .spi_req                        (spi_req                      ),
-        .spi_addr                       (spi_addr                     ),
-        .spi_addr_len                   (spi_addr_len                 ),
-        .spi_cmd                        (spi_cmd                      ),
-        .spi_cmd_len                    (spi_cmd_len                  ),
-        .spi_mode_cmd                   (spi_mode_cmd                 ),
-        .spi_mode_cmd_enb               (spi_mode_cmd_enb             ),
-        .spi_csreg                      (spi_csreg                    ),
-        .spi_data_len                   (spi_data_len                 ),
-        .spi_dummy_rd_len               (spi_dummy_rd_len             ),
-        .spi_dummy_wr_len               (spi_dummy_wr_len             ),
-        .spi_swrst                      (spi_swrst                    ),
-        .spi_rd                         (spi_rd                       ),
-        .spi_wr                         (spi_wr                       ),
-        .spi_qrd                        (spi_qrd                      ),
-        .spi_qwr                        (spi_qwr                      ),
-        .spi_wdata                      (spi_wdata                    ),
-        .spi_rdata                      (spi_rdata                    ),
-        .spi_ack                        (spi_ack                      ),
+        .cfg_m0_cs_reg                  (cfg_m0_cs_reg                ), // Chip select
+        .cfg_m0_spi_mode                (cfg_m0_spi_mode              ), // Final SPI Mode 
+        .cfg_m0_spi_switch              (cfg_m0_spi_switch            ), // SPI Mode Switching Place
+
+        .cfg_m1_cs_reg                  (cfg_m1_cs_reg                ), // Chip select
+        .cfg_m1_spi_mode                (cfg_m1_spi_mode              ), // Final SPI Mode 
+        .cfg_m1_spi_switch              (cfg_m1_spi_switch            ), // SPI Mode Switching Place
+
+	.cfg_cs_early                   (cfg_cs_early                 ),
+	.cfg_cs_late                    (cfg_cs_late                  ),
+
+	.m0_cmd_fifo_empty              (m0_cmd_fifo_empty            ),
+        .m0_cmd_fifo_rd                 (m0_cmd_fifo_rd               ),
+	.m0_cmd_fifo_rdata              (m0_cmd_fifo_rdata            ),
+
+	.m0_res_fifo_flush              (m0_res_fifo_flush            ),
+	.m0_res_fifo_empty              (m0_res_fifo_empty            ),
+	.m0_res_fifo_full               (m0_res_fifo_full             ),
+	.m0_res_fifo_wr                 (m0_res_fifo_wr               ),
+	.m0_res_fifo_wdata              (m0_res_fifo_wdata            ),
+
+	.m1_cmd_fifo_empty              (m1_cmd_fifo_empty            ),
+        .m1_cmd_fifo_rd                 (m1_cmd_fifo_rd               ),
+	.m1_cmd_fifo_rdata              (m1_cmd_fifo_rdata            ),
+
+	.m1_res_fifo_flush              (m1_res_fifo_flush            ),
+	.m1_res_fifo_empty              (m1_res_fifo_empty            ),
+	.m1_res_fifo_full               (m1_res_fifo_full             ),
+	.m1_res_fifo_wr                 (m1_res_fifo_wr               ),
+	.m1_res_fifo_wdata              (m1_res_fifo_wdata            ),
+
+	.ctrl_state                     (ctrl_state                   ),
 
         .spi_clk                        (spi_clk                      ),
         .spi_csn0                       (spi_csn0                     ),
diff --git a/verilog/rtl/spi_master/src/spim_tx.sv b/verilog/rtl/spi_master/src/spim_tx.sv
index 7a9284c..b904d33 100644
--- a/verilog/rtl/spi_master/src/spim_tx.sv
+++ b/verilog/rtl/spi_master/src/spim_tx.sv
@@ -73,6 +73,7 @@
     // General Input
     input  logic        clk,            // SPI clock
     input  logic        rstn,           // Active low Reset
+    input  logic        flush,          // init the state
     input  logic        en,             // Transmit Enable
     input  logic        tx_edge,        // Transmiting Edge
     output logic        tx_done,        // Transmission completion
@@ -95,21 +96,26 @@
   logic [15:0]          counter_trgt   ; // counter exit counter
   logic                 tx32b_done     ;  // 32 bit Transmit done
   logic                 en_quad;
+  logic                 en_quad_next;
 
+  logic                 data_ready_i;     // Data in acepted, this for txfifo
   enum logic [0:0] { IDLE, TRANSMIT } tx_CS, tx_NS;
 
 
   // Indicate 32 bit data done, usefull for readining next 32b from txfifo
-  assign tx32b_done  = (!en_quad && (counter[4:0] == 5'b11111)) || (en_quad && (counter[2:0] == 3'b111)) && tx_edge;
+  assign tx32b_done  = (!en_quad && (counter[4:0] == 5'b11111)) || (en_quad && (counter[2:0] == 3'b111));
 
+  assign tx_done    = (counter == (counter_trgt-1)) && (tx_CS == TRANSMIT);
 
+  assign   clk_en_o  = (tx_NS == TRANSMIT);
 
   always_comb
   begin
     tx_NS         = tx_CS;
     data_int_next = data_int;
-    data_ready    = 1'b0;
+    data_ready_i    = 1'b0;
     counter_next  = counter;
+    en_quad_next  =  en_quad;
 
     case (tx_CS)
       IDLE: begin
@@ -117,37 +123,43 @@
         counter_next  = '0;
 
         if (en && data_valid) begin
-          data_ready    = 1'b1;
+	  en_quad_next    = en_quad_in;
+          data_ready_i    = 1'b1;
           tx_NS         = TRANSMIT;
         end
       end
 
       TRANSMIT: begin
-       counter_next = counter + 1;
-       data_int_next = (en_quad) ? {data_int[27:0],4'b0000} : {data_int[30:0],1'b0};
-
-      if (tx_done) begin
-            counter_next = 0;
-            // Check if there is next data
-            if (en && data_valid) begin 
-              data_int_next = txdata;
-              data_ready    = 1'b1;
-              tx_NS         = TRANSMIT;
-            end else begin
-              tx_NS    = IDLE;
-            end
-      end else if (tx32b_done) begin
-            if (data_valid) begin
-              data_int_next = txdata;
-              data_ready    = 1'b1;
-            end else begin
-              tx_NS    = IDLE;
-            end
-        end
+         if ((counter + 1) ==counter_trgt) begin
+               counter_next = 0;
+               // Check if there is next data
+               if (en && data_valid) begin 
+	         en_quad_next    = en_quad_in;
+                 data_int_next = txdata;
+                 data_ready_i    = 1'b1;
+                 tx_NS         = TRANSMIT;
+               end else begin
+                 tx_NS    = IDLE;
+               end
+         end else if (tx32b_done) begin
+               if (en && data_valid) begin
+	         en_quad_next    = en_quad_in;
+                 data_int_next = txdata;
+                 data_ready_i    = 1'b1;
+                 tx_NS         = TRANSMIT;
+               end else begin
+                 tx_NS    = IDLE;
+               end
+           end else begin
+              counter_next = counter + 1;
+              data_int_next = (en_quad) ? {data_int[27:0],4'b0000} : {data_int[30:0],1'b0};
+           end
       end
     endcase
   end
 
+  logic data_ready_f;
+
   always_ff @(posedge clk, negedge rstn)
   begin
     if (~rstn)
@@ -156,32 +168,45 @@
       data_int     <= 'h0;
       tx_CS        <= IDLE;
       en_quad      <= 0;
-      tx_done      <= '0;
-      clk_en_o     <= '0;
       sdo0         <= '0;
       sdo1         <= '0;
-      sdo2         <= '0;
-      sdo3         <= '0;
+      sdo2         <= '1;
+      sdo3         <= '1;
       counter_trgt <= '0;
+      data_ready   <= '0;
+      data_ready_f <= 0;
     end
-    else
-    begin
+    else if(flush) begin
+       counter      <= 0;
+       data_int     <= 'h0;
+       tx_CS        <= IDLE;
+       en_quad      <= 0;
+       sdo0         <= '0;
+       sdo1         <= '0;
+       sdo2         <= '1;
+       sdo3         <= '1;
+       counter_trgt <= '0;
+       data_ready   <= '0;
+       data_ready_f <= 0;
+    end else begin
+       data_ready_f <= data_ready_i;
+       data_ready   <= data_ready_f && !data_ready_i; // Generate Pulse at falling edge
        if(tx_edge) begin
+          tx_CS        <= tx_NS;
           counter      <= counter_next;
           data_int     <= data_int_next;
-          sdo0         <= (en_quad_in) ? data_int_next[28] : data_int_next[31];
-          sdo1         <= (en_quad_in) ? data_int_next[29] : 1'b0;
-          sdo2         <= (en_quad_in) ? data_int_next[30] : 1'b0;
-          sdo3         <= (en_quad_in) ? data_int_next[31] : 1'b0;
-          tx_CS        <= tx_NS;
-	  en_quad      <= en_quad_in;
-          tx_done      <= (counter_next == (counter_trgt -1)) && (tx_NS == TRANSMIT);
-          clk_en_o     <= (tx_NS == TRANSMIT);
        end
        // Counter Exit condition, quad mode div-4 , else actual counter
-       if (en && data_valid) begin
+       if (en && data_ready_i && tx_edge) begin
+	  en_quad      <= en_quad_in;
           counter_trgt <= (en_quad_in) ? {2'b00,counter_in[15:2]} : counter_in;
        end
+       if(tx_edge && tx_NS == TRANSMIT) begin
+          sdo0         <= (en_quad_next) ? data_int_next[28] : data_int_next[31];
+          sdo1         <= (en_quad_next) ? data_int_next[29] : 1'b0;
+          sdo2         <= (en_quad_next) ? data_int_next[30] : 1'b1; // Protect
+          sdo3         <= (en_quad_next) ? data_int_next[31] : 1'b1; // Hold need to '1'
+       end
     end      
   end
 endmodule
diff --git a/verilog/rtl/uprj_netlists.v b/verilog/rtl/uprj_netlists.v
index 8445819..ae6502e 100644
--- a/verilog/rtl/uprj_netlists.v
+++ b/verilog/rtl/uprj_netlists.v
@@ -16,28 +16,50 @@
 // Include caravel global defines for the number of the user project IO pads 
 `include "defines.v"
 `define USE_POWER_PINS
-`define UNIT_DELAY #1
+`define UNIT_DELAY #0.1
 
 `ifdef GL
-    // Assume default net type to be wire because GL netlists don't have the wire definitions
-    `include "gl/user_project_wrapper.v"
-    `include "gl/user_proj_example.v"
-`else
-    `include "user_project_wrapper.v"
-    `include "spi_master/src/spim_top.sv"
-    `include "spi_master/src/spim_regs.sv"
-    `include "spi_master/src/spim_clkgen.sv"
-    `include "spi_master/src/spim_ctrl.sv"
-    `include "spi_master/src/spim_rx.sv"
-    `include "spi_master/src/spim_tx.sv"
 
-    `include "uart/src/uart_core.sv"
-    `include "uart/src/uart_cfg.sv"
-    `include "uart/src/uart_rxfsm.sv"
-    `include "uart/src/uart_txfsm.sv"
-    `include "lib/async_fifo_th.sv"  
-    `include "lib/reset_sync.sv"  
-    `include "lib/double_sync_low.v"  
+       `include "libs.ref/sky130_fd_sc_hd/verilog/primitives.v"
+       `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
+       `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
+       `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
+       `include "libs.ref//sky130_fd_sc_hd/verilog/sky130_ef_sc_hd__fakediode_2.v"
+
+        `include "glbl_cfg.v"
+        `include "sdram.v"
+        `include "spi_master.v"
+        `include "uart.v"
+        `include "wb_interconnect.v"
+        `include "user_project_wrapper.v"
+        `include "syntacore.v"
+        `include "wb_host.v"
+	`include "clk_skew_adjust.v"
+
+`else
+
+     `include "libs.ref/sky130_fd_sc_hd/verilog/primitives.v"
+     `include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
+     `include "libs.ref/sky130_fd_sc_hvl/verilog/primitives.v"
+     `include "libs.ref/sky130_fd_sc_hvl/verilog/sky130_fd_sc_hvl.v"
+
+
+     `include "spi_master/src/spim_top.sv"
+     `include "spi_master/src/spim_if.sv"
+     `include "spi_master/src/spim_fifo.sv"
+     `include "spi_master/src/spim_regs.sv"
+     `include "spi_master/src/spim_clkgen.sv"
+     `include "spi_master/src/spim_ctrl.sv"
+     `include "spi_master/src/spim_rx.sv"
+     `include "spi_master/src/spim_tx.sv"
+
+     `include "uart/src/uart_core.sv"
+     `include "uart/src/uart_cfg.sv"
+     `include "uart/src/uart_rxfsm.sv"
+     `include "uart/src/uart_txfsm.sv"
+     `include "lib/async_fifo_th.sv"  
+     `include "lib/reset_sync.sv"  
+     `include "lib/double_sync_low.v"  
 
      `include "sdram_ctrl/src/top/sdrc_top.v" 
      `include "sdram_ctrl/src/wb2sdrc/wb2sdrc.v" 
@@ -52,7 +74,6 @@
      `include "lib/registers.v"
      `include "lib/clk_ctl.v"
      `include "digital_core/src/glbl_cfg.sv"
-     `include "digital_core/src/digital_core.sv"
 
      `include "wb_host/src/wb_host.sv"
      `include "lib/async_wb.sv"
@@ -61,6 +82,7 @@
      `include "wb_interconnect/src/wb_arb.sv"
      `include "wb_interconnect/src/wb_interconnect.sv"
 
+
      `include "syntacore/scr1/src/core/pipeline/scr1_pipe_hdu.sv"
      `include "syntacore/scr1/src/core/pipeline/scr1_pipe_tdu.sv"
      `include "syntacore/scr1/src/core/pipeline/scr1_ipic.sv"
@@ -91,8 +113,9 @@
      `include "syntacore/scr1/src/top/scr1_imem_wb.sv"
      `include "syntacore/scr1/src/top/scr1_top_wb.sv"
      `include "lib/sync_fifo.sv"
+
+     `include "user_project_wrapper.v"
      // we are using netlist file for clk_skew_adjust as it has 
      // standard cell + power pin
      `include "gl/clk_skew_adjust.v"
 `endif
-
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 404711c..1b2d6b2 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -1,5 +1,6 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
+//////////////////////////////////////////////////////////////////////////////
+// SPDX-FileCopyrightText: 2021 , Dinesh Annayya                          
+// 
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
@@ -12,26 +13,106 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 // SPDX-License-Identifier: Apache-2.0
+// SPDX-FileContributor: Created by Dinesh Annayya <dinesha@opencores.org>
+//
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  Digital core                                                ////
+////                                                              ////
+////  This file is part of the YIFive cores project               ////
+////  https://github.com/dineshannayya/yifive_r0.git              ////
+////  http://www.opencores.org/cores/yifive/                      ////
+////                                                              ////
+////  Description                                                 ////
+////      This is digital core and integrate all the main block   ////
+////      here.  Following block are integrated here              ////
+////      1. Risc V Core                                          ////
+////      2. SPI Master                                           ////
+////      3. Wishbone Cross Bar                                   ////
+////                                                              ////
+////  To Do:                                                      ////
+////    nothing                                                   ////
+////                                                              ////
+////  Author(s):                                                  ////
+////      - Dinesh Annayya, dinesha@opencores.org                 ////
+////                                                              ////
+////  Revision :                                                  ////
+////    0.1 - 16th Feb 2021, Dinesh A                             ////
+////          Initial integration with Risc-V core +              ////
+////          Wishbone Cross Bar + SPI  Master                    ////
+////    0.2 - 17th June 2021, Dinesh A                            ////
+////        1. In risc core, wishbone and core domain is          ////
+////           created                                            ////
+////        2. cpu and rtc clock are generated in glbl reg block  ////
+////        3. in wishbone interconnect:- Stagging flop are added ////
+////           at interface to break wishbone timing path         ////
+////        4. buswidth warning are fixed inside spi_master       ////
+////        modified rtl files are                                ////
+////           verilog/rtl/digital_core/src/digital_core.sv       ////
+////           verilog/rtl/digital_core/src/glbl_cfg.sv           ////
+////           verilog/rtl/lib/wb_stagging.sv                     ////
+////           verilog/rtl/syntacore/scr1/src/top/scr1_dmem_wb.sv ////
+////           verilog/rtl/syntacore/scr1/src/top/scr1_imem_wb.sv ////
+////           verilog/rtl/syntacore/scr1/src/top/scr1_top_wb.sv  ////
+////           verilog/rtl/user_project_wrapper.v                 ////
+////           verilog/rtl/wb_interconnect/src/wb_interconnect.sv ////
+////           verilog/rtl/spi_master/src/spim_clkgen.sv          ////
+////           verilog/rtl/spi_master/src/spim_ctrl.sv            ////
+////    0.3 - 20th June 2021, Dinesh A                            ////
+////           1. uart core is integrated                         ////
+////           2. 3rd Slave ported added to wishbone interconnect ////
+////    0.4 - 25th June 2021, Dinesh A                            ////
+////          Moved the pad logic inside sdram,spi,uart block to  ////
+////          avoid logic at digital core level                   ////
+////    0.5 - 25th June 2021, Dinesh A                            ////
+////          Since carvel gives only 16MB address space for user ////
+////          space, we have implemented indirect address select  ////
+////          with 8 bit bank select given inside wb_host         ////
+////          core Address = {Bank_Sel[7:0], Wb_Address[23:0]     ////
+////          caravel user address space is                       ////
+////          0x3000_0000 to 0x30FF_FFFF                          ////
+////    0.6 - 27th June 2021, Dinesh A                            ////
+////          Digital core level tie are moved inside IP to avoid ////
+////          power hook up at core level                         ////
+////          u_risc_top - test_mode & test_rst_n                 ////
+////          u_intercon - s*_wbd_err_i                           ////
+////          unused wb_cti_i is removed from u_sdram_ctrl        ////
+////    0.7 - 28th June 2021, Dinesh A                            ////
+////          wb_interconnect master port are interchanged for    ////
+////          better physical placement.                          ////
+////          m0 - External HOST                                  ////
+////          m1 - RISC IMEM                                      ////
+////          m2 - RISC DMEM                                      ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
 
-`default_nettype none
-/*
- *-------------------------------------------------------------
- *
- * user_project_wrapper
- *
- * This wrapper enumerates all of the pins available to the
- * user for the user project.
- *
- * An example user project is provided in this wrapper.  The
- * example should be removed and replaced with the actual
- * user project.
- *
- *-------------------------------------------------------------
- */
-`default_nettype wire
-module user_project_wrapper #(
-    parameter BITS = 32
-) (
+
+module user_project_wrapper (
 `ifdef USE_POWER_PINS
     inout vdda1,	// User area 1 3.3V supply
     inout vdda2,	// User area 2 3.3V supply
@@ -42,90 +123,678 @@
     inout vssd1,	// User area 1 digital ground
     inout vssd2,	// User area 2 digital ground
 `endif
+    input   wire                       wb_clk_i        ,  // System clock
+    input   wire                       user_clock2     ,  // user Clock
+    input   wire                       wb_rst_i        ,  // Regular Reset signal
 
-    // Wishbone Slave ports (WB MI A)
-    input wb_clk_i,
-    input wb_rst_i,
-    input wbs_stb_i,
-    input wbs_cyc_i,
-    input wbs_we_i,
-    input [3:0] wbs_sel_i,
-    input [31:0] wbs_dat_i,
-    input [31:0] wbs_adr_i,
-    output wbs_ack_o,
-    output [31:0] wbs_dat_o,
-
-    // Logic Analyzer Signals
-    input  [127:0] la_data_in,
-    output [127:0] la_data_out,
-    input  [127:0] la_oenb,
-
-    // IOs
-    input  [`MPRJ_IO_PADS-1:0] io_in,
-    output [`MPRJ_IO_PADS-1:0] io_out,
-    output [`MPRJ_IO_PADS-1:0] io_oeb,
+    input   wire                       wbs_cyc_i       ,  // strobe/request
+    input   wire                       wbs_stb_i       ,  // strobe/request
+    input   wire [WB_WIDTH-1:0]        wbs_adr_i       ,  // address
+    input   wire                       wbs_we_i        ,  // write
+    input   wire [WB_WIDTH-1:0]        wbs_dat_i       ,  // data output
+    input   wire [3:0]                 wbs_sel_i       ,  // byte enable
+    output  wire [WB_WIDTH-1:0]        wbs_dat_o       ,  // data input
+    output  wire                       wbs_ack_o       ,  // acknowlegement
 
     // Analog (direct connection to GPIO pad---use with caution)
     // Note that analog I/O is not available on the 7 lowest-numbered
     // GPIO pads, and so the analog_io indexing is offset from the
     // GPIO indexing by 7 (also upper 2 GPIOs do not have analog_io).
     inout [`MPRJ_IO_PADS-10:0] analog_io,
+ 
+    // Logic Analyzer Signals
+    input  wire [127:0]                la_data_in      ,
+    output wire [127:0]                la_data_out     ,
+    input  wire [127:0]                la_oenb         ,
+ 
 
-    // Independent clock (on independent integer divider)
-    input   user_clock2,
+    // IOs
+    input  wire  [37:0]                io_in           ,
+    output wire  [37:0]                io_out          ,
+    output wire  [37:0]                io_oeb          ,
 
-    // User maskable interrupt signals
-    output [2:0] user_irq
+    output wire  [2:0]                 user_irq             
+
 );
 
+//---------------------------------------------------
+// Local Parameter Declaration
+// --------------------------------------------------
 
-/*--------------------------------------*/
-/* User project is instantiated  here   */
-/*--------------------------------------*/
+parameter      SDR_DW   = 8;  // SDR Data Width 
+parameter      SDR_BW   = 1;  // SDR Byte Width
+parameter      WB_WIDTH = 32; // WB ADDRESS/DARA WIDTH
 
-digital_core u_core (
-    `ifdef USE_POWER_PINS
-        .vdda1(vdda1),	// User area 1 3.3V supply
-        .vdda2(vdda2),	// User area 2 3.3V supply
-        .vssa1(vssa1),	// User area 1 analog ground
-        .vssa2(vssa2),	// User area 2 analog ground
-        .vccd1(vccd1),	// User area 1 1.8V supply
-        .vccd2(vccd2),	// User area 2 1.8v supply
-        .vssd1(vssd1),	// User area 1 digital ground
-        .vssd2(vssd2),	// User area 2 digital ground
-    `endif
+//---------------------------------------------------------------------
+// Wishbone Risc V Instruction Memory Interface
+//---------------------------------------------------------------------
+wire                           wbd_riscv_imem_stb_i; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_riscv_imem_adr_i; // address
+wire                           wbd_riscv_imem_we_i;  // write
+wire   [WB_WIDTH-1:0]          wbd_riscv_imem_dat_i; // data output
+wire   [3:0]                   wbd_riscv_imem_sel_i; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_riscv_imem_dat_o; // data input
+wire                           wbd_riscv_imem_ack_o; // acknowlegement
+wire                           wbd_riscv_imem_err_o;  // error
 
-    .wb_clk_i(wb_clk_i),
-    .wb_rst_i(wb_rst_i),
-    .user_clock2(user_clock2),
+//---------------------------------------------------------------------
+// RISC V Wishbone Data Memory Interface
+//---------------------------------------------------------------------
+wire                           wbd_riscv_dmem_stb_i; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_adr_i; // address
+wire                           wbd_riscv_dmem_we_i;  // write
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_i; // data output
+wire   [3:0]                   wbd_riscv_dmem_sel_i; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_riscv_dmem_dat_o; // data input
+wire                           wbd_riscv_dmem_ack_o; // acknowlegement
+wire                           wbd_riscv_dmem_err_o; // error
 
-    // MGMT SoC Wishbone Slave
+//---------------------------------------------------------------------
+// WB HOST Interface
+//---------------------------------------------------------------------
+wire                           wbd_int_cyc_i; // strobe/request
+wire                           wbd_int_stb_i; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_int_adr_i; // address
+wire                           wbd_int_we_i;  // write
+wire   [WB_WIDTH-1:0]          wbd_int_dat_i; // data output
+wire   [3:0]                   wbd_int_sel_i; // byte enable
+wire   [WB_WIDTH-1:0]          wbd_int_dat_o; // data input
+wire                           wbd_int_ack_o; // acknowlegement
+wire                           wbd_int_err_o; // error
+//---------------------------------------------------------------------
+//    SPI Master Wishbone Interface
+//---------------------------------------------------------------------
+wire                           wbd_spim_stb_o; // strobe/request
+wire   [WB_WIDTH-1:0]          wbd_spim_adr_o; // address
+wire                           wbd_spim_we_o;  // write
+wire   [WB_WIDTH-1:0]          wbd_spim_dat_o; // data output
+wire   [3:0]                   wbd_spim_sel_o; // byte enable
+wire                           wbd_spim_cyc_o ;
+wire   [WB_WIDTH-1:0]          wbd_spim_dat_i; // data input
+wire                           wbd_spim_ack_i; // acknowlegement
+wire                           wbd_spim_err_i;  // error
 
-    .wbs_cyc_i(wbs_cyc_i),
-    .wbs_stb_i(wbs_stb_i),
-    .wbs_we_i(wbs_we_i),
-    .wbs_sel_i(wbs_sel_i),
-    .wbs_adr_i(wbs_adr_i),
-    .wbs_dat_i(wbs_dat_i),
-    .wbs_ack_o(wbs_ack_o),
-    .wbs_dat_o(wbs_dat_o),
+//---------------------------------------------------------------------
+//    SPI Master Wishbone Interface
+//---------------------------------------------------------------------
+wire                           wbd_sdram_stb_o ;
+wire [WB_WIDTH-1:0]            wbd_sdram_adr_o ;
+wire                           wbd_sdram_we_o  ; // 1 - Write, 0 - Read
+wire [WB_WIDTH-1:0]            wbd_sdram_dat_o ;
+wire [WB_WIDTH/8-1:0]          wbd_sdram_sel_o ; // Byte enable
+wire                           wbd_sdram_cyc_o ;
+wire  [2:0]                    wbd_sdram_cti_o ;
+wire  [WB_WIDTH-1:0]           wbd_sdram_dat_i ;
+wire                           wbd_sdram_ack_i ;
 
-    // Logic Analyzer
+//---------------------------------------------------------------------
+//    Global Register Wishbone Interface
+//---------------------------------------------------------------------
+wire                           wbd_glbl_stb_o; // strobe/request
+wire   [7:0]                   wbd_glbl_adr_o; // address
+wire                           wbd_glbl_we_o;  // write
+wire   [WB_WIDTH-1:0]          wbd_glbl_dat_o; // data output
+wire   [3:0]                   wbd_glbl_sel_o; // byte enable
+wire                           wbd_glbl_cyc_o ;
+wire   [WB_WIDTH-1:0]          wbd_glbl_dat_i; // data input
+wire                           wbd_glbl_ack_i; // acknowlegement
+wire                           wbd_glbl_err_i;  // error
 
-    .la_data_in(la_data_in),
-    .la_data_out(la_data_out),
-    .la_oenb (la_oenb),
+//---------------------------------------------------------------------
+//    Global Register Wishbone Interface
+//---------------------------------------------------------------------
+wire                           wbd_uart_stb_o; // strobe/request
+wire   [7:0]                   wbd_uart_adr_o; // address
+wire                           wbd_uart_we_o;  // write
+wire   [7:0]                   wbd_uart_dat_o; // data output
+wire                           wbd_uart_sel_o; // byte enable
+wire                           wbd_uart_cyc_o ;
+wire   [7:0]                   wbd_uart_dat_i; // data input
+wire                           wbd_uart_ack_i; // acknowlegement
+wire                           wbd_uart_err_i;  // error
 
-    // IO Pads
+//----------------------------------------------------
+//  CPU Configuration
+//----------------------------------------------------
+wire                              cpu_rst_n     ;
+wire                              spi_rst_n     ;
+wire                              sdram_rst_n   ;
+wire                              sdram_clk           ;
+wire                              cpu_clk       ;
+wire                              rtc_clk       ;
+wire                              wbd_clk_int   ;
+wire                              wbd_int_rst_n ;
 
-    .io_in (io_in),
-    .io_out(io_out),
-    .io_oeb(io_oeb),
+wire [31:0]                       fuse_mhartid  ;
+wire [15:0]                       irq_lines     ;
+wire                              soft_irq      ;
+
+wire [7:0]                        cfg_glb_ctrl  ;
+wire [31:0]                       cfg_clk_ctrl1 ;
+wire [31:0]                       cfg_clk_ctrl2 ;
+wire [3:0]                        cfg_cska_wi   ; // clock skew adjust for wishbone interconnect
+wire [3:0]                        cfg_cska_riscv; // clock skew adjust for riscv
+wire [3:0]                        cfg_cska_uart ; // clock skew adjust for uart
+wire [3:0]                        cfg_cska_spi  ; // clock skew adjust for spi
+wire [3:0]                        cfg_cska_sdram; // clock skew adjust for sdram
+wire [3:0]                        cfg_cska_glbl ; // clock skew adjust for global reg
+wire [3:0]                        cfg_cska_wh   ; // clock skew adjust for web host
+
+
+wire                              wbd_clk_wi    ; // clock for wishbone interconnect
+wire                              wbd_clk_riscv ; // clock for riscv
+wire                              wbd_clk_uart  ; // clock for uart
+wire                              wbd_clk_spi   ; // clock for spi
+wire                              wbd_clk_sdram ; // clock for sdram
+wire                              wbd_clk_glbl  ; // clock for global reg
+wire                              wbd_clk_wh    ; // clock for global reg
+
+wire [3:0]                        cfg_cska_sd_co; // clock skew adjust for sdram clock out
+wire [3:0]                        cfg_cska_sd_ci; // clock skew adjust for sdram clock input
+wire [3:0]                        cfg_cska_sp_co; // clock skew adjust for SPI clock out
+
+wire                              io_out_29_    ; // Internally tapped SDRAM clock
+wire                              io_in_29_     ; // Clock Skewed Pad SDRAM clock
+wire                              io_in_30_     ; // SPI clock out
+
+//------------------------------------------------
+// Configuration Parameter
+//------------------------------------------------
+wire [1:0]                        cfg_sdr_width       ; // 2'b00 - 32 Bit SDR, 2'b01 - 16 Bit SDR, 2'b1x - 8 Bit
+wire [1:0]                        cfg_colbits         ; // 2'b00 - 8 Bit column address, 
+wire                              sdr_init_done       ; // Indicate SDRAM Initialisation Done
+wire [3:0] 		          cfg_sdr_tras_d      ; // Active to precharge delay
+wire [3:0]                        cfg_sdr_trp_d       ; // Precharge to active delay
+wire [3:0]                        cfg_sdr_trcd_d      ; // Active to R/W delay
+wire 			          cfg_sdr_en          ; // Enable SDRAM controller
+wire [1:0] 		          cfg_req_depth       ; // Maximum Request accepted by SDRAM controller
+wire [12:0] 		          cfg_sdr_mode_reg    ;
+wire [2:0] 		          cfg_sdr_cas         ; // SDRAM CAS Latency
+wire [3:0] 		          cfg_sdr_trcar_d     ; // Auto-refresh period
+wire [3:0]                        cfg_sdr_twr_d       ; // Write recovery delay
+wire [11: 0]                      cfg_sdr_rfsh        ;
+wire [2 : 0]                      cfg_sdr_rfmax       ;
+
+
+
+
+
+/////////////////////////////////////////////////////////
+// Generating acive low wishbone reset                 
+// //////////////////////////////////////////////////////
+assign wbd_int_rst_n  = cfg_glb_ctrl[0];
+assign cpu_rst_n      = cfg_glb_ctrl[1];
+assign spi_rst_n      = cfg_glb_ctrl[2];
+assign sdram_rst_n    = cfg_glb_ctrl[3];
+
+assign cfg_cska_wi    = cfg_clk_ctrl1[3:0];
+assign cfg_cska_riscv = cfg_clk_ctrl1[7:4];
+assign cfg_cska_uart  = cfg_clk_ctrl1[11:8];
+assign cfg_cska_spi   = cfg_clk_ctrl1[15:12];
+assign cfg_cska_sdram = cfg_clk_ctrl1[19:16];
+assign cfg_cska_glbl  = cfg_clk_ctrl1[23:20];
+assign cfg_cska_wh    = cfg_clk_ctrl1[27:24];
+
+assign cfg_cska_sd_co = cfg_clk_ctrl2[3:0]; // SDRAM clock out control
+assign cfg_cska_sd_ci = cfg_clk_ctrl2[7:4]; // SDRAM clock in control
+assign cfg_cska_sp_co = cfg_clk_ctrl2[11:8];// SPI clock out control
+
+
+wb_host u_wb_host(
+
+    // Master Port
+       .wbm_rst_i        (wb_rst_i             ),  
+       .wbm_clk_i        (wb_clk_i             ),  
+       .wbm_cyc_i        (wbs_cyc_i            ),  
+       .wbm_stb_i        (wbs_stb_i            ),  
+       .wbm_adr_i        (wbs_adr_i            ),  
+       .wbm_we_i         (wbs_we_i             ),  
+       .wbm_dat_i        (wbs_dat_i            ),  
+       .wbm_sel_i        (wbs_sel_i            ),  
+       .wbm_dat_o        (wbs_dat_o            ),  
+       .wbm_ack_o        (wbs_ack_o            ),  
+       .wbm_err_o        (                     ),  
+
+    // Slave Port
+       .wbs_clk_out      (wbd_clk_int          ),  
+       .wbs_clk_i        (wbd_clk_wh           ),  
+       .wbs_cyc_o        (wbd_int_cyc_i        ),  
+       .wbs_stb_o        (wbd_int_stb_i        ),  
+       .wbs_adr_o        (wbd_int_adr_i        ),  
+       .wbs_we_o         (wbd_int_we_i         ),  
+       .wbs_dat_o        (wbd_int_dat_i        ),  
+       .wbs_sel_o        (wbd_int_sel_i        ),  
+       .wbs_dat_i        (wbd_int_dat_o        ),  
+       .wbs_ack_i        (wbd_int_ack_o        ),  
+       .wbs_err_i        (wbd_int_err_o        ),  
+
+       .cfg_glb_ctrl     (cfg_glb_ctrl         ),
+       .cfg_clk_ctrl1    (cfg_clk_ctrl1        ),
+       .cfg_clk_ctrl2    (cfg_clk_ctrl2        ),
+
+    // Logic Analyzer Signals
+       .la_data_in       (la_data_in           ),
+       .la_data_out      (la_data_out          ),
+       .la_oenb          (la_oenb              )
+    );
+
+
+
+
+//------------------------------------------------------------------------------
+// RISC V Core instance
+//------------------------------------------------------------------------------
+scr1_top_wb u_riscv_top (
+    // Reset
+    .pwrup_rst_n            (wbd_int_rst_n             ),
+    .rst_n                  (wbd_int_rst_n             ),
+    .cpu_rst_n              (cpu_rst_n                 ),
+
+    // Clock
+    .core_clk               (cpu_clk                   ),
+    .rtc_clk                (rtc_clk                   ),
+
+    // Fuses
+    .fuse_mhartid           (fuse_mhartid              ),
 
     // IRQ
-    .user_irq(user_irq)
+    .irq_lines              (irq_lines                 ), 
+    .soft_irq               (soft_irq                  ), // TODO - Interrupts
+
+    // DFT
+    // .test_mode           (1'b0                      ), // Moved inside IP
+    // .test_rst_n          (1'b1                      ), // Moved inside IP
+
+    
+    .wb_rst_n               (wbd_int_rst_n             ),
+    .wb_clk                 (wbd_clk_riscv             ),
+    // Instruction memory interface
+    .wbd_imem_stb_o         (wbd_riscv_imem_stb_i      ),
+    .wbd_imem_adr_o         (wbd_riscv_imem_adr_i      ),
+    .wbd_imem_we_o          (wbd_riscv_imem_we_i       ), 
+    .wbd_imem_dat_o         (wbd_riscv_imem_dat_i      ),
+    .wbd_imem_sel_o         (wbd_riscv_imem_sel_i      ),
+    .wbd_imem_dat_i         (wbd_riscv_imem_dat_o      ),
+    .wbd_imem_ack_i         (wbd_riscv_imem_ack_o      ),
+    .wbd_imem_err_i         (wbd_riscv_imem_err_o      ),
+
+    // Data memory interface
+    .wbd_dmem_stb_o         (wbd_riscv_dmem_stb_i      ),
+    .wbd_dmem_adr_o         (wbd_riscv_dmem_adr_i      ),
+    .wbd_dmem_we_o          (wbd_riscv_dmem_we_i       ), 
+    .wbd_dmem_dat_o         (wbd_riscv_dmem_dat_i      ),
+    .wbd_dmem_sel_o         (wbd_riscv_dmem_sel_i      ),
+    .wbd_dmem_dat_i         (wbd_riscv_dmem_dat_o      ),
+    .wbd_dmem_ack_i         (wbd_riscv_dmem_ack_o      ),
+    .wbd_dmem_err_i         (wbd_riscv_dmem_err_o      ) 
 );
 
-endmodule	// user_project_wrapper
+/*********************************************************
+* SPI Master
+* This is an implementation of an SPI master that is controlled via an AXI bus. 
+* It has FIFOs for transmitting and receiving data. 
+* It supports both the normal SPI mode and QPI mode with 4 data lines.
+* *******************************************************/
 
-`default_nettype wire
+spim_top
+#(
+`ifndef SYNTHESIS
+    .WB_WIDTH  (WB_WIDTH)
+`endif
+) u_spi_master
+(
+    .mclk                   (wbd_clk_spi               ),
+    .rst_n                  (spi_rst_n                 ),
+
+    .wbd_stb_i              (wbd_spim_stb_o            ),
+    .wbd_adr_i              (wbd_spim_adr_o            ),
+    .wbd_we_i               (wbd_spim_we_o             ), 
+    .wbd_dat_i              (wbd_spim_dat_o            ),
+    .wbd_sel_i              (wbd_spim_sel_o            ),
+    .wbd_dat_o              (wbd_spim_dat_i            ),
+    .wbd_ack_o              (wbd_spim_ack_i            ),
+    .wbd_err_o              (wbd_spim_err_i            ),
+
+    .spi_debug              (spi_debug                 ),
+
+    // Pad Interface
+    .io_in                  (io_in[35:30]              ),
+    .io_out                 ({io_out[35:31],io_in_30_} ),
+    .io_oeb                 (io_oeb[35:30]             )
+
+);
+
+
+sdrc_top  
+    `ifndef SYNTHESIS
+    #(.APP_AW(WB_WIDTH), 
+	    .APP_DW(WB_WIDTH), 
+	    .APP_BW(4),
+	    .SDR_DW(8), 
+	    .SDR_BW(1))
+      `endif
+     u_sdram_ctrl (
+    .cfg_sdr_width          (cfg_sdr_width              ),
+    .cfg_colbits            (cfg_colbits                ),
+                    
+    // WB bus
+    .wb_rst_n               (wbd_int_rst_n              ),
+    .wb_clk_i               (wbd_clk_sdram              ),
+    
+    .wb_stb_i               (wbd_sdram_stb_o            ),
+    .wb_addr_i              (wbd_sdram_adr_o            ),
+    .wb_we_i                (wbd_sdram_we_o             ),
+    .wb_dat_i               (wbd_sdram_dat_o            ),
+    .wb_sel_i               (wbd_sdram_sel_o            ),
+    .wb_cyc_i               (wbd_sdram_cyc_o            ),
+    .wb_ack_o               (wbd_sdram_ack_i            ),
+    .wb_dat_o               (wbd_sdram_dat_i            ),
+
+		
+    /* Interface to SDRAMs */
+    .sdram_clk              (sdram_clk                 ),
+    .sdram_resetn           (sdram_rst_n               ),
+
+    /** Pad Interface       **/
+    .io_in                  ({io_in_29_,io_in[28:0]}   ),
+    .io_oeb                 (io_oeb[29:0]              ),
+    .io_out                 ({io_out_29_,io_out[28:0]} ),
+                    
+    /* Parameters */
+    .sdr_init_done          (sdr_init_done             ),
+    .cfg_req_depth          (cfg_req_depth             ), //how many req. buffer should hold
+    .cfg_sdr_en             (cfg_sdr_en                ),
+    .cfg_sdr_mode_reg       (cfg_sdr_mode_reg          ),
+    .cfg_sdr_tras_d         (cfg_sdr_tras_d            ),
+    .cfg_sdr_trp_d          (cfg_sdr_trp_d             ),
+    .cfg_sdr_trcd_d         (cfg_sdr_trcd_d            ),
+    .cfg_sdr_cas            (cfg_sdr_cas               ),
+    .cfg_sdr_trcar_d        (cfg_sdr_trcar_d           ),
+    .cfg_sdr_twr_d          (cfg_sdr_twr_d             ),
+    .cfg_sdr_rfsh           (cfg_sdr_rfsh              ),
+    .cfg_sdr_rfmax          (cfg_sdr_rfmax             )
+   );
+
+
+wb_interconnect  u_intercon (
+         .clk_i         (wbd_clk_wi            ), 
+         .rst_n         (wbd_int_rst_n         ),
+
+         // Master 0 Interface
+         .m0_wbd_dat_i  (wbd_int_dat_i         ),
+         .m0_wbd_adr_i  (wbd_int_adr_i         ),
+         .m0_wbd_sel_i  (wbd_int_sel_i         ),
+         .m0_wbd_we_i   (wbd_int_we_i          ),
+         .m0_wbd_cyc_i  (wbd_int_cyc_i         ),
+         .m0_wbd_stb_i  (wbd_int_stb_i         ),
+         .m0_wbd_dat_o  (wbd_int_dat_o         ),
+         .m0_wbd_ack_o  (wbd_int_ack_o         ),
+         .m0_wbd_err_o  (wbd_int_err_o         ),
+         
+         // Master 0 Interface
+         .m1_wbd_dat_i  (wbd_riscv_imem_dat_i  ),
+         .m1_wbd_adr_i  (wbd_riscv_imem_adr_i  ),
+         .m1_wbd_sel_i  (wbd_riscv_imem_sel_i  ),
+         .m1_wbd_we_i   (wbd_riscv_imem_we_i   ),
+         .m1_wbd_cyc_i  (wbd_riscv_imem_stb_i  ),
+         .m1_wbd_stb_i  (wbd_riscv_imem_stb_i  ),
+         .m1_wbd_dat_o  (wbd_riscv_imem_dat_o  ),
+         .m1_wbd_ack_o  (wbd_riscv_imem_ack_o  ),
+         .m1_wbd_err_o  (wbd_riscv_imem_err_o  ),
+         
+         // Master 1 Interface
+         .m2_wbd_dat_i  (wbd_riscv_dmem_dat_i  ),
+         .m2_wbd_adr_i  (wbd_riscv_dmem_adr_i  ),
+         .m2_wbd_sel_i  (wbd_riscv_dmem_sel_i  ),
+         .m2_wbd_we_i   (wbd_riscv_dmem_we_i   ),
+         .m2_wbd_cyc_i  (wbd_riscv_dmem_stb_i  ),
+         .m2_wbd_stb_i  (wbd_riscv_dmem_stb_i  ),
+         .m2_wbd_dat_o  (wbd_riscv_dmem_dat_o  ),
+         .m2_wbd_ack_o  (wbd_riscv_dmem_ack_o  ),
+         .m2_wbd_err_o  (wbd_riscv_dmem_err_o  ),
+         
+         
+         // Slave 0 Interface
+         // .s0_wbd_err_i  (1'b0           ), - Moved inside IP
+         .s0_wbd_dat_i  (wbd_spim_dat_i ),
+         .s0_wbd_ack_i  (wbd_spim_ack_i ),
+         .s0_wbd_dat_o  (wbd_spim_dat_o ),
+         .s0_wbd_adr_o  (wbd_spim_adr_o ),
+         .s0_wbd_sel_o  (wbd_spim_sel_o ),
+         .s0_wbd_we_o   (wbd_spim_we_o  ),  
+         .s0_wbd_cyc_o  (wbd_spim_cyc_o ),
+         .s0_wbd_stb_o  (wbd_spim_stb_o ),
+         
+         // Slave 1 Interface
+         // .s1_wbd_err_i  (1'b0           ), - Moved inside IP
+         .s1_wbd_dat_i  (wbd_sdram_dat_i ),
+         .s1_wbd_ack_i  (wbd_sdram_ack_i ),
+         .s1_wbd_dat_o  (wbd_sdram_dat_o ),
+         .s1_wbd_adr_o  (wbd_sdram_adr_o ),
+         .s1_wbd_sel_o  (wbd_sdram_sel_o ),
+         .s1_wbd_we_o   (wbd_sdram_we_o  ),  
+         .s1_wbd_cyc_o  (wbd_sdram_cyc_o ),
+         .s1_wbd_stb_o  (wbd_sdram_stb_o ),
+         
+         // Slave 2 Interface
+         // .s2_wbd_err_i  (1'b0           ), - Moved inside IP
+         .s2_wbd_dat_i  (wbd_glbl_dat_i ),
+         .s2_wbd_ack_i  (wbd_glbl_ack_i ),
+         .s2_wbd_dat_o  (wbd_glbl_dat_o ),
+         .s2_wbd_adr_o  (wbd_glbl_adr_o ),
+         .s2_wbd_sel_o  (wbd_glbl_sel_o ),
+         .s2_wbd_we_o   (wbd_glbl_we_o  ),  
+         .s2_wbd_cyc_o  (wbd_glbl_cyc_o ),
+         .s2_wbd_stb_o  (wbd_glbl_stb_o ),
+
+         // Slave 3 Interface
+         // .s3_wbd_err_i  (1'b0           ), - Moved inside IP
+         .s3_wbd_dat_i  (wbd_uart_dat_i ),
+         .s3_wbd_ack_i  (wbd_uart_ack_i ),
+         .s3_wbd_dat_o  (wbd_uart_dat_o ),
+         .s3_wbd_adr_o  (wbd_uart_adr_o ),
+         .s3_wbd_sel_o  (wbd_uart_sel_o ),
+         .s3_wbd_we_o   (wbd_uart_we_o  ),  
+         .s3_wbd_cyc_o  (wbd_uart_cyc_o ),
+         .s3_wbd_stb_o  (wbd_uart_stb_o )
+	);
+
+glbl_cfg   u_glbl_cfg (
+
+       .mclk                   (wbd_clk_glbl              ),
+       .reset_n                (wbd_int_rst_n             ),
+       .user_clock1            (wb_clk_i                  ),
+       .user_clock2            (user_clock2               ),
+       .device_idcode          (                          ),
+
+        // Reg Bus Interface Signal
+       .reg_cs                 (wbd_glbl_stb_o            ),
+       .reg_wr                 (wbd_glbl_we_o             ),
+       .reg_addr               (wbd_glbl_adr_o            ),
+       .reg_wdata              (wbd_glbl_dat_o            ),
+       .reg_be                 (wbd_glbl_sel_o            ),
+
+       // Outputs
+       .reg_rdata              (wbd_glbl_dat_i            ),
+       .reg_ack                (wbd_glbl_ack_i            ),
+
+       // SDRAM Clock
+
+       .sdram_clk              (sdram_clk                 ),
+       .cpu_clk                (cpu_clk                   ),
+       .rtc_clk                (rtc_clk                   ),
+
+       // Risc configuration
+       .fuse_mhartid           (fuse_mhartid              ),
+       .irq_lines              (irq_lines                 ), 
+       .soft_irq               (soft_irq                  ),
+       .user_irq               (user_irq                  ),
+
+       // SDRAM Config
+       .cfg_sdr_width          (cfg_sdr_width             ),
+       .cfg_colbits            (cfg_colbits               ),
+
+	/* Parameters */
+       .sdr_init_done          (sdr_init_done             ),
+       .cfg_req_depth          (cfg_req_depth             ), //how many req. buffer should hold
+       .cfg_sdr_en             (cfg_sdr_en                ),
+       .cfg_sdr_mode_reg       (cfg_sdr_mode_reg          ),
+       .cfg_sdr_tras_d         (cfg_sdr_tras_d            ),
+       .cfg_sdr_trp_d          (cfg_sdr_trp_d             ),
+       .cfg_sdr_trcd_d         (cfg_sdr_trcd_d            ),
+       .cfg_sdr_cas            (cfg_sdr_cas               ),
+       .cfg_sdr_trcar_d        (cfg_sdr_trcar_d           ),
+       .cfg_sdr_twr_d          (cfg_sdr_twr_d             ),
+       .cfg_sdr_rfsh           (cfg_sdr_rfsh              ),
+       .cfg_sdr_rfmax          (cfg_sdr_rfmax             )
+
+
+        );
+
+uart_core   u_uart_core (
+        .arst_n                 (wbd_int_rst_n            ), // async reset
+        .app_clk                (wbd_clk_uart             ),
+
+        // Reg Bus Interface Signal
+       .reg_cs                 (wbd_uart_stb_o            ),
+       .reg_wr                 (wbd_uart_we_o             ),
+       .reg_addr               (wbd_uart_adr_o[5:2]       ),
+       .reg_wdata              (wbd_uart_dat_o[7:0]       ),
+       .reg_be                 (wbd_uart_sel_o            ),
+
+       // Outputs
+       .reg_rdata              (wbd_uart_dat_i[7:0]       ),
+       .reg_ack                (wbd_uart_ack_i            ),
+
+       // Pad interface
+       .io_in                  (io_in [37:36]              ),
+       .io_oeb                 (io_oeb[37:36]              ),
+       .io_out                 (io_out[37:36]              )
+
+     );
+
+////////////////////////////////////////////////////////////////
+// Clock Skew adjust module
+// ///////////////////////////////////////////////////////////
+
+// Wishbone interconnect clock skew control
+clk_skew_adjust u_skew_wi
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (wbd_clk_int                 ), 
+	       .sel        (cfg_cska_wi                 ), 
+	       .clk_out    (wbd_clk_wi                  ) 
+       );
+
+// riscv clock skew control
+clk_skew_adjust u_skew_riscv
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (wbd_clk_int                 ), 
+	       .sel        (cfg_cska_riscv              ), 
+	       .clk_out    (wbd_clk_riscv               ) 
+       );
+
+// uart clock skew control
+clk_skew_adjust u_skew_uart
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (wbd_clk_int                 ), 
+	       .sel        (cfg_cska_uart               ), 
+	       .clk_out    (wbd_clk_uart                ) 
+       );
+
+// spi clock skew control
+clk_skew_adjust u_skew_spi
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (wbd_clk_int                ), 
+	       .sel        (cfg_cska_spi               ), 
+	       .clk_out    (wbd_clk_spi                ) 
+       );
+
+// sdram clock skew control
+clk_skew_adjust u_skew_sdram
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (wbd_clk_int                ), 
+	       .sel        (cfg_cska_sdram             ), 
+	       .clk_out    (wbd_clk_sdram              ) 
+       );
+
+// global clock skew control
+clk_skew_adjust u_skew_glbl
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (wbd_clk_int               ), 
+	       .sel        (cfg_cska_glbl             ), 
+	       .clk_out    (wbd_clk_glbl              ) 
+       );
+
+// wb_host clock skew control
+clk_skew_adjust u_skew_wh
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (wbd_clk_int               ), 
+	       .sel        (cfg_cska_wh               ), 
+	       .clk_out    (wbd_clk_wh                ) 
+       );
+
+// SDRAM clock out clock skew control
+clk_skew_adjust u_skew_sd_co
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (io_out_29_                ), 
+	       .sel        (cfg_cska_sd_co            ), 
+	       .clk_out    (io_out[29]                ) 
+       );
+
+// Clock Skey for PAD SDRAM clock
+clk_skew_adjust u_skew_sd_ci
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (io_in[29]                 ), 
+	       .sel        (cfg_cska_sd_ci            ), 
+	       .clk_out    (io_in_29_                 ) 
+       );
+
+// Clock Skey for SPI clock out
+clk_skew_adjust u_skew_sp_co
+       (
+`ifdef USE_POWER_PINS
+               .vccd1      (vccd1                      ),// User area 1 1.8V supply
+               .vssd1      (vssd1                      ),// User area 1 digital ground
+`endif
+	       .clk_in     (io_in_30_                 ), 
+	       .sel        (cfg_cska_sp_co            ), 
+	       .clk_out    (io_out[30]                ) 
+       );
+
+endmodule : user_project_wrapper
diff --git a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
index e710cfb..def88d3 100644
--- a/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
+++ b/verilog/rtl/wb_interconnect/src/wb_interconnect.sv
@@ -308,7 +308,7 @@
  assign  s0_wbd_stb_o =  s0_wb_wr.wbd_stb ;
                       
  assign  s1_wbd_dat_o =  s1_wb_wr.wbd_dat ;
- assign  s1_wbd_adr_o =  s1_wb_wr.wbd_adr ;
+ assign  s1_wbd_adr_o =  {4'b0,s1_wb_wr.wbd_adr[27:0]} ;
  assign  s1_wbd_sel_o =  s1_wb_wr.wbd_sel ;
  assign  s1_wbd_we_o  =  s1_wb_wr.wbd_we  ;
  assign  s1_wbd_cyc_o =  s1_wb_wr.wbd_cyc ;
