112855Sgabeblack@google.com/*****************************************************************************
212855Sgabeblack@google.com
312855Sgabeblack@google.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
412855Sgabeblack@google.com  more contributor license agreements.  See the NOTICE file distributed
512855Sgabeblack@google.com  with this work for additional information regarding copyright ownership.
612855Sgabeblack@google.com  Accellera licenses this file to you under the Apache License, Version 2.0
712855Sgabeblack@google.com  (the "License"); you may not use this file except in compliance with the
812855Sgabeblack@google.com  License.  You may obtain a copy of the License at
912855Sgabeblack@google.com
1012855Sgabeblack@google.com    http://www.apache.org/licenses/LICENSE-2.0
1112855Sgabeblack@google.com
1212855Sgabeblack@google.com  Unless required by applicable law or agreed to in writing, software
1312855Sgabeblack@google.com  distributed under the License is distributed on an "AS IS" BASIS,
1412855Sgabeblack@google.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1512855Sgabeblack@google.com  implied.  See the License for the specific language governing
1612855Sgabeblack@google.com  permissions and limitations under the License.
1712855Sgabeblack@google.com
1812855Sgabeblack@google.com *****************************************************************************/
1912855Sgabeblack@google.com
2012855Sgabeblack@google.com/*****************************************************************************
2112855Sgabeblack@google.com
2212855Sgabeblack@google.com  pr-503.cpp --
2312855Sgabeblack@google.com
2412855Sgabeblack@google.com  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
2512855Sgabeblack@google.com
2612855Sgabeblack@google.com *****************************************************************************/
2712855Sgabeblack@google.com
2812855Sgabeblack@google.com/*****************************************************************************
2912855Sgabeblack@google.com
3012855Sgabeblack@google.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3112855Sgabeblack@google.com  changes you are making here.
3212855Sgabeblack@google.com
3312855Sgabeblack@google.com      Name, Affiliation, Date:
3412855Sgabeblack@google.com  Description of Modification:
3512855Sgabeblack@google.com
3612855Sgabeblack@google.com *****************************************************************************/
3712855Sgabeblack@google.com
3812855Sgabeblack@google.com#include "systemc.h"
3912855Sgabeblack@google.com
4012855Sgabeblack@google.comstruct EXC_CTRL : sc_module {
4112855Sgabeblack@google.com
4212855Sgabeblack@google.com    // Input ports
4312855Sgabeblack@google.com    sc_in<bool> RPHB_RESET;
4412855Sgabeblack@google.com    sc_in<bool> RPHB_REG_RST;
4512855Sgabeblack@google.com    sc_in<bool> IBC_GRANT_EXC;
4612855Sgabeblack@google.com    sc_in<sc_int<16> > IBC_DATA;
4712855Sgabeblack@google.com    sc_in<sc_int<4> > RPBI_BPA;
4812855Sgabeblack@google.com    sc_in<sc_int<2> > RPBI_APA;
4912855Sgabeblack@google.com    sc_in<bool> MODE_S_P;
5012855Sgabeblack@google.com    sc_in<sc_int<14> > RHC_ADDR_RT;
5112855Sgabeblack@google.com    sc_in<bool> RHC_OP_END;
5212855Sgabeblack@google.com    sc_in<bool> RHC_REG_RST;
5312855Sgabeblack@google.com    sc_in<sc_int<4> > TM_EXC_FIR;
5412855Sgabeblack@google.com
5512855Sgabeblack@google.com   // clock port
5612855Sgabeblack@google.com    sc_in_clk RHC_RPHB_CLK;
5712855Sgabeblack@google.com
5812855Sgabeblack@google.com    // Output ports
5912855Sgabeblack@google.com    sc_out<bool> EXC_REQ;
6012855Sgabeblack@google.com    sc_out<sc_int<14> > EXC_ADDR;
6112855Sgabeblack@google.com    sc_out<sc_int<16> > EXC_DATA;
6212855Sgabeblack@google.com    sc_out<bool> EXC_RW;
6312855Sgabeblack@google.com    sc_out<bool> EXC_IDLE0;
6412855Sgabeblack@google.com    sc_out<bool> EXC_IDLE1;
6512855Sgabeblack@google.com    sc_out<sc_int<2> > EXC_RPBH_ID;
6612855Sgabeblack@google.com    sc_out<sc_int<3> > RHC_OP_CODE;
6712855Sgabeblack@google.com    sc_out<bool> RHC_OP_START;
6812855Sgabeblack@google.com    sc_out<sc_int<7> > RHC_SIZE;
6912855Sgabeblack@google.com    sc_out<sc_int<14> > RHC_ADDR1;
7012855Sgabeblack@google.com    sc_out<sc_int<14> > RHC_ADDR2;
7112855Sgabeblack@google.com    sc_out<sc_int<3> > EXC_ERR_NO;
7212855Sgabeblack@google.com
7312855Sgabeblack@google.com    SC_HAS_PROCESS( EXC_CTRL );
7412855Sgabeblack@google.com
7512855Sgabeblack@google.com    EXC_CTRL(char *name) : sc_module(name) {
7612855Sgabeblack@google.com        SC_CTHREAD( start_always, RHC_RPHB_CLK.pos() );
7712855Sgabeblack@google.com        // reset
7812855Sgabeblack@google.com	    reset_signal_is(RPHB_RESET,true);
7912855Sgabeblack@google.com        end_module();
8012855Sgabeblack@google.com    };
8112855Sgabeblack@google.com    void start_always();
8212855Sgabeblack@google.com};
8312855Sgabeblack@google.comvoid EXC_CTRL::start_always() {
8412855Sgabeblack@google.com    sc_int<16> dt;
8512855Sgabeblack@google.com    sc_int<16> dtemp;
8612855Sgabeblack@google.com    sc_int<8> dtemp_1;
8712855Sgabeblack@google.com    sc_int<14> atemp;
8812855Sgabeblack@google.com    sc_int<14> atemp_1;
8912855Sgabeblack@google.com    sc_int<14> atemp_2;
9012855Sgabeblack@google.com    sc_int<14> atemp_3;
9112855Sgabeblack@google.com    sc_int<14> atemp_4;
9212855Sgabeblack@google.com    sc_int<8> timer;
9312855Sgabeblack@google.com    bool V_reg;
9412855Sgabeblack@google.com    sc_int<5> DID_reg;
9512855Sgabeblack@google.com    sc_int<5> MET_reg;
9612855Sgabeblack@google.com    sc_int<6> Data_Start_reg;
9712855Sgabeblack@google.com    sc_int<12> total_data_len;
9812855Sgabeblack@google.com    sc_int<7> link_ptr;
9912855Sgabeblack@google.com    sc_int<7> index;
10012855Sgabeblack@google.com    sc_int<2> LEV_reg;
10112855Sgabeblack@google.com    sc_int<4> DT_reg;
10212855Sgabeblack@google.com    sc_int<6> NHW_reg;
10312855Sgabeblack@google.com    sc_int<8> RSN_reg;
10412855Sgabeblack@google.com    sc_int<8> RP_addr_ptr;
10512855Sgabeblack@google.com    sc_int<12> cnt;
10612855Sgabeblack@google.com    sc_int<7> sig_gen_buff_addr;
10712855Sgabeblack@google.com    sc_int<5> TS0AR;
10812855Sgabeblack@google.com    sc_int<5> TS1AR;
10912855Sgabeblack@google.com    bool GB_1_ind;
11012855Sgabeblack@google.com    bool GB_ext_flg;
11112855Sgabeblack@google.com    sc_int<2> id_reg;
11212855Sgabeblack@google.com    sc_int<3> err_no_reg;
11312855Sgabeblack@google.com    bool rb_flag;
11412855Sgabeblack@google.com    sc_int<32> _case_1021_;
11512855Sgabeblack@google.com    sc_int<32> _case_1396_;
11612855Sgabeblack@google.com    sc_int<16> _case_1934_;
11712855Sgabeblack@google.com    sc_int<16> _case_2503_;
11812855Sgabeblack@google.com
11912855Sgabeblack@google.com    sc_int<3> error;
12012855Sgabeblack@google.com    start: while(1) {
12112855Sgabeblack@google.com
12212855Sgabeblack@google.com      // reset action
12312855Sgabeblack@google.com    reset_action:
12412855Sgabeblack@google.com         {
12512855Sgabeblack@google.com	   dt = 0;
12612855Sgabeblack@google.com	   dtemp_1 = 0;
12712855Sgabeblack@google.com	   atemp = 0;
12812855Sgabeblack@google.com	   atemp_1 = 0;
12912855Sgabeblack@google.com	   atemp_2 = 0;
13012855Sgabeblack@google.com	   atemp_3 = 0;
13112855Sgabeblack@google.com	   atemp_4 = 0;
13212855Sgabeblack@google.com	   timer = 0;
13312855Sgabeblack@google.com	   V_reg = 0;
13412855Sgabeblack@google.com	   DID_reg = 0;
13512855Sgabeblack@google.com	   MET_reg = 0;
13612855Sgabeblack@google.com	   Data_Start_reg = 0;
13712855Sgabeblack@google.com	   total_data_len = 0;
13812855Sgabeblack@google.com	   link_ptr = 0;
13912855Sgabeblack@google.com	   index = 0;
14012855Sgabeblack@google.com	   LEV_reg = 0;
14112855Sgabeblack@google.com	   DT_reg = 0;
14212855Sgabeblack@google.com	   NHW_reg = 0;
14312855Sgabeblack@google.com	   RSN_reg = 0;
14412855Sgabeblack@google.com	   RP_addr_ptr = 0;
14512855Sgabeblack@google.com	   cnt = 0;
14612855Sgabeblack@google.com	   sig_gen_buff_addr = 0;
14712855Sgabeblack@google.com	   TS0AR = 0;
14812855Sgabeblack@google.com	   TS1AR = 0;
14912855Sgabeblack@google.com	   GB_1_ind = 0;
15012855Sgabeblack@google.com	   GB_ext_flg = 0;
15112855Sgabeblack@google.com	   id_reg = -1;
15212855Sgabeblack@google.com	   err_no_reg = 0;
15312855Sgabeblack@google.com	   rb_flag = 0;
15412855Sgabeblack@google.com	   EXC_IDLE0 = 1;
15512855Sgabeblack@google.com	   EXC_IDLE1 = 1;
15612855Sgabeblack@google.com	   error = 0;
15712855Sgabeblack@google.com	   EXC_REQ = 0;
15812855Sgabeblack@google.com	   RHC_OP_START = 0;
15912855Sgabeblack@google.com	 }
16012855Sgabeblack@google.com    wait();
16112855Sgabeblack@google.com
16212855Sgabeblack@google.com
16312855Sgabeblack@google.com      // continue with the normal operation
16412855Sgabeblack@google.com
16512855Sgabeblack@google.com        if(RPHB_REG_RST.read()==1) { // init_reg_op
16612855Sgabeblack@google.com	   // Initialise programmable register#10, #8, #4, #9, #7, #5 and #6 for hard reset
16712855Sgabeblack@google.com	   // Reset STATISTIC_0 register(register #10)
16812855Sgabeblack@google.com	   // `write_mem
16912855Sgabeblack@google.com            dt = 0;
17012855Sgabeblack@google.com            atemp = 0;
17112855Sgabeblack@google.com            EXC_ADDR = atemp;
17212855Sgabeblack@google.com            EXC_DATA = dt;
17312855Sgabeblack@google.com            EXC_RW = 0;
17412855Sgabeblack@google.com            EXC_REQ = 1;
17512855Sgabeblack@google.com            wait();
17612855Sgabeblack@google.com            while(1) { //wr_01
17712855Sgabeblack@google.com                EXC_REQ = 0;
17812855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
17912855Sgabeblack@google.com                    wait();
18012855Sgabeblack@google.com                    break;
18112855Sgabeblack@google.com                }
18212855Sgabeblack@google.com                wait();
18312855Sgabeblack@google.com            } //wr_01
18412855Sgabeblack@google.com
18512855Sgabeblack@google.com         // Reset STATISTIC_1 register(register #10)
18612855Sgabeblack@google.com         // 'write_mem
18712855Sgabeblack@google.com            atemp = 1;
18812855Sgabeblack@google.com            EXC_ADDR = atemp;
18912855Sgabeblack@google.com            EXC_DATA = dt;
19012855Sgabeblack@google.com            EXC_RW = 0;
19112855Sgabeblack@google.com            EXC_REQ = 1;
19212855Sgabeblack@google.com            wait();
19312855Sgabeblack@google.com            while(1) { //wr_02
19412855Sgabeblack@google.com                EXC_REQ = 0;
19512855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
19612855Sgabeblack@google.com                    wait();
19712855Sgabeblack@google.com                    break;
19812855Sgabeblack@google.com                }
19912855Sgabeblack@google.com                wait();
20012855Sgabeblack@google.com            } //wr_02
20112855Sgabeblack@google.com
20212855Sgabeblack@google.com         // Initialize SSADR_0/POLL_0 register(register #8)
20312855Sgabeblack@google.com            if(MODE_S_P.read()==1) {
20412855Sgabeblack@google.com                dt = 0;
20512855Sgabeblack@google.com            } else {
20612855Sgabeblack@google.com                dt = 16;
20712855Sgabeblack@google.com            }
20812855Sgabeblack@google.com
20912855Sgabeblack@google.com	 // 'write_mem
21012855Sgabeblack@google.com            atemp = 2;
21112855Sgabeblack@google.com            EXC_ADDR = atemp;
21212855Sgabeblack@google.com            EXC_DATA = dt;
21312855Sgabeblack@google.com            EXC_RW = 0;
21412855Sgabeblack@google.com            EXC_REQ = 1;
21512855Sgabeblack@google.com            wait();
21612855Sgabeblack@google.com            while(1) { // wr_03
21712855Sgabeblack@google.com                EXC_REQ = 0;
21812855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
21912855Sgabeblack@google.com                    wait();
22012855Sgabeblack@google.com                    break;
22112855Sgabeblack@google.com                }
22212855Sgabeblack@google.com                wait();
22312855Sgabeblack@google.com            } // wr_03
22412855Sgabeblack@google.com
22512855Sgabeblack@google.com	 // Initialize SSADR_1/POLL_1 register(register #8)
22612855Sgabeblack@google.com	 // 'write_mem
22712855Sgabeblack@google.com            atemp = 4;
22812855Sgabeblack@google.com            EXC_ADDR = atemp;
22912855Sgabeblack@google.com            EXC_DATA = dt;
23012855Sgabeblack@google.com            EXC_RW = 0;
23112855Sgabeblack@google.com            EXC_REQ = 1;
23212855Sgabeblack@google.com            wait();
23312855Sgabeblack@google.com            while(1) { //wr_04
23412855Sgabeblack@google.com                EXC_REQ = 0;
23512855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
23612855Sgabeblack@google.com                    wait();
23712855Sgabeblack@google.com                    break;
23812855Sgabeblack@google.com                }
23912855Sgabeblack@google.com                wait();
24012855Sgabeblack@google.com            } //wr_04
24112855Sgabeblack@google.com
24212855Sgabeblack@google.com	 // Reset RPHB_0 registers(register #4)
24312855Sgabeblack@google.com            RHC_ADDR1 = 8;
24412855Sgabeblack@google.com            RHC_ADDR2 = 0;
24512855Sgabeblack@google.com            RHC_SIZE = 2;
24612855Sgabeblack@google.com
24712855Sgabeblack@google.com	 // (begin)MACRO: 'set_mem
24812855Sgabeblack@google.com            RHC_OP_CODE = 2;
24912855Sgabeblack@google.com            RHC_OP_START = 1;
25012855Sgabeblack@google.com            wait();
25112855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
25212855Sgabeblack@google.com                wait();
25312855Sgabeblack@google.com                continue;
25412855Sgabeblack@google.com            }
25512855Sgabeblack@google.com            wait();
25612855Sgabeblack@google.com            RHC_OP_START = 0;
25712855Sgabeblack@google.com            wait();
25812855Sgabeblack@google.com	 // (end)MACRO: 'set_mem
25912855Sgabeblack@google.com
26012855Sgabeblack@google.com            EXC_ADDR = 10;
26112855Sgabeblack@google.com            EXC_DATA = 100;
26212855Sgabeblack@google.com            EXC_RW = 0;
26312855Sgabeblack@google.com            EXC_REQ = 1;
26412855Sgabeblack@google.com            wait();
26512855Sgabeblack@google.com
26612855Sgabeblack@google.com            while(1) { // wr_idle_delay_timer_0
26712855Sgabeblack@google.com                EXC_REQ = 0;
26812855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
26912855Sgabeblack@google.com                    wait();
27012855Sgabeblack@google.com                    break;
27112855Sgabeblack@google.com                }
27212855Sgabeblack@google.com                wait();
27312855Sgabeblack@google.com            }// wr_idle_delay_timer_0
27412855Sgabeblack@google.com
27512855Sgabeblack@google.com	  // Reset RPHB_1 registers(register #4)
27612855Sgabeblack@google.com            RHC_ADDR1 = 16;
27712855Sgabeblack@google.com
27812855Sgabeblack@google.com          // (begin)MACRO: 'set_mem
27912855Sgabeblack@google.com            RHC_OP_CODE = 2;
28012855Sgabeblack@google.com            RHC_OP_START = 1;
28112855Sgabeblack@google.com            wait();
28212855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
28312855Sgabeblack@google.com                wait();
28412855Sgabeblack@google.com                continue;
28512855Sgabeblack@google.com            }
28612855Sgabeblack@google.com            wait();
28712855Sgabeblack@google.com            RHC_OP_START = 0;
28812855Sgabeblack@google.com            wait();
28912855Sgabeblack@google.com         // (end)MACRO: 'set_mem
29012855Sgabeblack@google.com
29112855Sgabeblack@google.com	 // Initialize NOT_IDLE_TIMER register for RPBH1
29212855Sgabeblack@google.com	    EXC_ADDR = 18;
29312855Sgabeblack@google.com            EXC_DATA = 100;
29412855Sgabeblack@google.com            EXC_RW = 0;
29512855Sgabeblack@google.com            EXC_REQ = 1;
29612855Sgabeblack@google.com            wait();
29712855Sgabeblack@google.com            while(1) {// wr_idle_delay_timer_1
29812855Sgabeblack@google.com                EXC_REQ = 0;
29912855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
30012855Sgabeblack@google.com                    wait();
30112855Sgabeblack@google.com                    break;
30212855Sgabeblack@google.com                }
30312855Sgabeblack@google.com                wait();
30412855Sgabeblack@google.com            }// wr_idle_delay_timer_1
30512855Sgabeblack@google.com
30612855Sgabeblack@google.com	 // Set default value to RHC_PEQ registers(register #9)
30712855Sgabeblack@google.com            RHC_ADDR1 = 20;
30812855Sgabeblack@google.com            RHC_ADDR2 = 50;
30912855Sgabeblack@google.com            RHC_SIZE = 4;
31012855Sgabeblack@google.com
31112855Sgabeblack@google.com         // (begin)MACRO: 'set_mem
31212855Sgabeblack@google.com            RHC_OP_CODE = 2;
31312855Sgabeblack@google.com            RHC_OP_START = 1;
31412855Sgabeblack@google.com            wait();
31512855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
31612855Sgabeblack@google.com                wait();
31712855Sgabeblack@google.com                continue;
31812855Sgabeblack@google.com            }
31912855Sgabeblack@google.com            wait();
32012855Sgabeblack@google.com            RHC_OP_START = 0;
32112855Sgabeblack@google.com            wait();
32212855Sgabeblack@google.com	  // (end)MACRO: 'set_mem
32312855Sgabeblack@google.com
32412855Sgabeblack@google.com          // Reset RPB_P/RPB_S registers(register #7)
32512855Sgabeblack@google.com            if(!MODE_S_P.read()==1) {
32612855Sgabeblack@google.com                atemp = 37;
32712855Sgabeblack@google.com                atemp_1 = 53;
32812855Sgabeblack@google.com                RHC_SIZE = 5;
32912855Sgabeblack@google.com            } else {
33012855Sgabeblack@google.com                atemp = 35;
33112855Sgabeblack@google.com                atemp_1 = 51;
33212855Sgabeblack@google.com                RHC_SIZE = 3;
33312855Sgabeblack@google.com            }
33412855Sgabeblack@google.com
33512855Sgabeblack@google.com            RHC_ADDR2 = 0;
33612855Sgabeblack@google.com            RHC_ADDR1 = 32;
33712855Sgabeblack@google.com
33812855Sgabeblack@google.com	  // (begin)MACRO: 'set_mem
33912855Sgabeblack@google.com            RHC_OP_CODE = 2;
34012855Sgabeblack@google.com            RHC_OP_START = 1;
34112855Sgabeblack@google.com            wait();
34212855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
34312855Sgabeblack@google.com                wait();
34412855Sgabeblack@google.com                continue;
34512855Sgabeblack@google.com            }
34612855Sgabeblack@google.com            wait();
34712855Sgabeblack@google.com            RHC_OP_START = 0;
34812855Sgabeblack@google.com            wait();
34912855Sgabeblack@google.com	  // (end)MACRO: 'set_mem
35012855Sgabeblack@google.com
35112855Sgabeblack@google.com            dt = 30;
35212855Sgabeblack@google.com            EXC_ADDR = atemp;
35312855Sgabeblack@google.com            EXC_DATA = dt;
35412855Sgabeblack@google.com            EXC_RW = 0;
35512855Sgabeblack@google.com            EXC_REQ = 1;
35612855Sgabeblack@google.com            wait();
35712855Sgabeblack@google.com            while(1) {// wr_05
35812855Sgabeblack@google.com                EXC_REQ = 0;
35912855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
36012855Sgabeblack@google.com                    wait();
36112855Sgabeblack@google.com                    break;
36212855Sgabeblack@google.com                }
36312855Sgabeblack@google.com                wait();
36412855Sgabeblack@google.com            }// wr_05
36512855Sgabeblack@google.com
36612855Sgabeblack@google.com            RHC_ADDR1 = 48;
36712855Sgabeblack@google.com
36812855Sgabeblack@google.com          // (begin)MACRO: 'set_mem
36912855Sgabeblack@google.com            RHC_OP_CODE = 2;
37012855Sgabeblack@google.com            RHC_OP_START = 1;
37112855Sgabeblack@google.com            wait();
37212855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
37312855Sgabeblack@google.com                wait();
37412855Sgabeblack@google.com                continue;
37512855Sgabeblack@google.com            }
37612855Sgabeblack@google.com            wait();
37712855Sgabeblack@google.com            RHC_OP_START = 0;
37812855Sgabeblack@google.com            wait();
37912855Sgabeblack@google.com         // (end)MACRO: 'set_mem
38012855Sgabeblack@google.com
38112855Sgabeblack@google.com            atemp = atemp_1;
38212855Sgabeblack@google.com            EXC_ADDR = atemp;
38312855Sgabeblack@google.com            EXC_DATA = dt;
38412855Sgabeblack@google.com            EXC_RW = 0;
38512855Sgabeblack@google.com            EXC_REQ = 1;
38612855Sgabeblack@google.com            wait();
38712855Sgabeblack@google.com            while(1) {// wr_06
38812855Sgabeblack@google.com                EXC_REQ = 0;
38912855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
39012855Sgabeblack@google.com                    wait();
39112855Sgabeblack@google.com                    break;
39212855Sgabeblack@google.com                }
39312855Sgabeblack@google.com                wait();
39412855Sgabeblack@google.com            }// wr_06
39512855Sgabeblack@google.com
39612855Sgabeblack@google.com        // Reset RPBH_0/RPBH_1 RP state table(register #5)
39712855Sgabeblack@google.com            RHC_ADDR1 = 64;
39812855Sgabeblack@google.com            RHC_ADDR2 = 2;
39912855Sgabeblack@google.com            RHC_SIZE = 32;
40012855Sgabeblack@google.com
40112855Sgabeblack@google.com	  // (begin)MACRO: 'set_mem
40212855Sgabeblack@google.com            RHC_OP_CODE = 2;
40312855Sgabeblack@google.com            RHC_OP_START = 1;
40412855Sgabeblack@google.com            wait();
40512855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
40612855Sgabeblack@google.com                wait();
40712855Sgabeblack@google.com                continue;
40812855Sgabeblack@google.com            }
40912855Sgabeblack@google.com            wait();
41012855Sgabeblack@google.com            RHC_OP_START = 0;
41112855Sgabeblack@google.com            wait();
41212855Sgabeblack@google.com	  // (end)MACRO: 'set_mem
41312855Sgabeblack@google.com
41412855Sgabeblack@google.com
41512855Sgabeblack@google.com            RHC_ADDR1 = 96;
41612855Sgabeblack@google.com
41712855Sgabeblack@google.com	  // (begin)MACRO: 'set_mem
41812855Sgabeblack@google.com            RHC_OP_CODE = 2;
41912855Sgabeblack@google.com            RHC_OP_START = 1;
42012855Sgabeblack@google.com            wait();
42112855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
42212855Sgabeblack@google.com                wait();
42312855Sgabeblack@google.com                continue;
42412855Sgabeblack@google.com            }
42512855Sgabeblack@google.com            wait();
42612855Sgabeblack@google.com            RHC_OP_START = 0;
42712855Sgabeblack@google.com            wait();
42812855Sgabeblack@google.com	  // (end)MACRO: 'set_mem
42912855Sgabeblack@google.com
43012855Sgabeblack@google.com          // Reset RPBH_0/RPBH_1 EM list table(register #6)
43112855Sgabeblack@google.com            RHC_ADDR1 = 128;
43212855Sgabeblack@google.com            RHC_ADDR2 = 0;
43312855Sgabeblack@google.com
43412855Sgabeblack@google.com	  // (begin)MACRO: 'set_mem
43512855Sgabeblack@google.com            RHC_OP_CODE = 2;
43612855Sgabeblack@google.com            RHC_OP_START = 1;
43712855Sgabeblack@google.com            wait();
43812855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
43912855Sgabeblack@google.com                wait();
44012855Sgabeblack@google.com                continue;
44112855Sgabeblack@google.com            }
44212855Sgabeblack@google.com            wait();
44312855Sgabeblack@google.com            RHC_OP_START = 0;
44412855Sgabeblack@google.com            wait();
44512855Sgabeblack@google.com	  // (end)MACRO: 'set_mem
44612855Sgabeblack@google.com
44712855Sgabeblack@google.com            RHC_ADDR1 = 160;
44812855Sgabeblack@google.com
44912855Sgabeblack@google.com	  // (begin)MACRO: 'set_mem
45012855Sgabeblack@google.com            RHC_OP_CODE = 2;
45112855Sgabeblack@google.com            RHC_OP_START = 1;
45212855Sgabeblack@google.com            wait();
45312855Sgabeblack@google.com            while(!RHC_OP_END.read()) {
45412855Sgabeblack@google.com                wait();
45512855Sgabeblack@google.com                continue;
45612855Sgabeblack@google.com            }
45712855Sgabeblack@google.com            wait();
45812855Sgabeblack@google.com            RHC_OP_START = 0;
45912855Sgabeblack@google.com            wait();
46012855Sgabeblack@google.com	  // (end)MACRO: 'set_mem
46112855Sgabeblack@google.com
46212855Sgabeblack@google.com        } else {
46312855Sgabeblack@google.com	  wait();
46412855Sgabeblack@google.com        } // init_reg_op
46512855Sgabeblack@google.com
46612855Sgabeblack@google.com      // Initialise FPP/LPP in all Buffer Queues for both hard and soft reset
46712855Sgabeblack@google.com        atemp = 270;
46812855Sgabeblack@google.com        dt = 0;
46912855Sgabeblack@google.com
47012855Sgabeblack@google.com      //buf_empty_loop(begin)
47112855Sgabeblack@google.com        buf_empty_op: while(1) {
47212855Sgabeblack@google.com            EXC_ADDR = atemp;
47312855Sgabeblack@google.com            EXC_DATA = dt;
47412855Sgabeblack@google.com            EXC_RW = 0;
47512855Sgabeblack@google.com            EXC_REQ = 1;
47612855Sgabeblack@google.com            wait();
47712855Sgabeblack@google.com            while(1) {// wr_07
47812855Sgabeblack@google.com                EXC_REQ = 0;
47912855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
48012855Sgabeblack@google.com                    wait();
48112855Sgabeblack@google.com                    break;
48212855Sgabeblack@google.com                }
48312855Sgabeblack@google.com                wait();
48412855Sgabeblack@google.com            }// wr_07
48512855Sgabeblack@google.com
48612855Sgabeblack@google.com            atemp = (atemp) + 1;
48712855Sgabeblack@google.com            EXC_ADDR = atemp;
48812855Sgabeblack@google.com            EXC_DATA = dt;
48912855Sgabeblack@google.com            EXC_RW = 0;
49012855Sgabeblack@google.com            EXC_REQ = 1;
49112855Sgabeblack@google.com            wait();
49212855Sgabeblack@google.com            while(1) {// wr_08
49312855Sgabeblack@google.com                EXC_REQ = 0;
49412855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
49512855Sgabeblack@google.com                    wait();
49612855Sgabeblack@google.com                    break;
49712855Sgabeblack@google.com                }
49812855Sgabeblack@google.com                wait();
49912855Sgabeblack@google.com            }// wr_08
50012855Sgabeblack@google.com            atemp = (atemp) + 15;
50112855Sgabeblack@google.com            if((atemp.range(8,4)) >= -4) {
50212855Sgabeblack@google.com                wait();
50312855Sgabeblack@google.com                break;
50412855Sgabeblack@google.com            } else {
50512855Sgabeblack@google.com                wait();
50612855Sgabeblack@google.com            }
50712855Sgabeblack@google.com        }//buf_empty_loop(end)
50812855Sgabeblack@google.com
50912855Sgabeblack@google.com     // Initialise all Generic Buffers for both hard and soft reset
51012855Sgabeblack@google.com        atemp = 514;
51112855Sgabeblack@google.com        V_reg = 0;
51212855Sgabeblack@google.com        link_ptr = 5;
51312855Sgabeblack@google.com	dt = (((sc_int<1>(V_reg), sc_int<1>(0)), link_ptr.range(5,0)), sc_int<8>(0));
51412855Sgabeblack@google.com
51512855Sgabeblack@google.com      // GB_init_loop(begin)
51612855Sgabeblack@google.com        GB_init_op: while(1) {
51712855Sgabeblack@google.com            EXC_ADDR = atemp;
51812855Sgabeblack@google.com            EXC_DATA = dt;
51912855Sgabeblack@google.com            EXC_RW = 0;
52012855Sgabeblack@google.com            EXC_REQ = 1;
52112855Sgabeblack@google.com            wait();
52212855Sgabeblack@google.com            while(1) { // wr_09
52312855Sgabeblack@google.com                EXC_REQ = 0;
52412855Sgabeblack@google.com                if(IBC_GRANT_EXC.read()==1) {
52512855Sgabeblack@google.com                    wait();
52612855Sgabeblack@google.com                    break;
52712855Sgabeblack@google.com                }
52812855Sgabeblack@google.com                wait();
52912855Sgabeblack@google.com            } // wr_09
53012855Sgabeblack@google.com
53112855Sgabeblack@google.com            atemp = (atemp) + 128;
53212855Sgabeblack@google.com            if(((bool)atemp[13]) == 1) {
53312855Sgabeblack@google.com                wait();
53412855Sgabeblack@google.com                break;
53512855Sgabeblack@google.com            } else {
53612855Sgabeblack@google.com                wait();
53712855Sgabeblack@google.com            }
53812855Sgabeblack@google.com
53912855Sgabeblack@google.com            link_ptr = (link_ptr) + 1;
54012855Sgabeblack@google.com            if(((bool)link_ptr[6]) == 1) {
54112855Sgabeblack@google.com                link_ptr = 0;
54212855Sgabeblack@google.com            } else {
54312855Sgabeblack@google.com                link_ptr = link_ptr;
54412855Sgabeblack@google.com            }
54512855Sgabeblack@google.com	    dt = (((sc_int<1>(V_reg), sc_int<1>(0)), link_ptr.range(5,0)), sc_int<8>(0));
54612855Sgabeblack@google.com        } // GB_init_loop(end)
54712855Sgabeblack@google.com
54812855Sgabeblack@google.com        atemp = -8190;
54912855Sgabeblack@google.com        dt = 63;
55012855Sgabeblack@google.com
55112855Sgabeblack@google.com        EXC_ADDR = atemp;
55212855Sgabeblack@google.com        EXC_DATA = dt;
55312855Sgabeblack@google.com        EXC_RW = 0;
55412855Sgabeblack@google.com        EXC_REQ = 1;
55512855Sgabeblack@google.com        wait();
55612855Sgabeblack@google.com
55712855Sgabeblack@google.com        while(1) {// wr_09_1
55812855Sgabeblack@google.com            EXC_REQ = 0;
55912855Sgabeblack@google.com            if(IBC_GRANT_EXC) {
56012855Sgabeblack@google.com                wait();
56112855Sgabeblack@google.com                break;
56212855Sgabeblack@google.com            }
56312855Sgabeblack@google.com            wait();
56412855Sgabeblack@google.com        }// wr_09_1
56512855Sgabeblack@google.com
56612855Sgabeblack@google.com        wait();
56712855Sgabeblack@google.com
56812855Sgabeblack@google.com     // RPHB Signals handling part
56912855Sgabeblack@google.com        main: while(1) {
57012855Sgabeblack@google.com            wait();
57112855Sgabeblack@google.com            signal_proc: do{
57212855Sgabeblack@google.com
57312855Sgabeblack@google.com	      // Set RPBH_0/RPBH_1 ID active
57412855Sgabeblack@google.com	      // Reset internal error number and flag for return buffer
57512855Sgabeblack@google.com                id_reg = -1;
57612855Sgabeblack@google.com                err_no_reg = 0;
57712855Sgabeblack@google.com                rb_flag = 0;
57812855Sgabeblack@google.com	      //***************************************************************
57912855Sgabeblack@google.com	      /* 	#### Modified 19/2/98 EJH ####
58012855Sgabeblack@google.com			PEQ code removed from here. PEQ code now only executed if BQ
58112855Sgabeblack@google.com			is empty
58212855Sgabeblack@google.com              */
58312855Sgabeblack@google.com	      //***************************************************************
58412855Sgabeblack@google.com                wait();
58512855Sgabeblack@google.com	      // Read the queue(RPHBport -> ExecCtrl)
58612855Sgabeblack@google.com                RHC_ADDR1 = 256;
58712855Sgabeblack@google.com	      //MACRO:read_queue(begin)
58812855Sgabeblack@google.com                RHC_OP_CODE = 0;
58912855Sgabeblack@google.com                EXC_RPBH_ID = id_reg;
59012855Sgabeblack@google.com                RHC_OP_START = 1;
59112855Sgabeblack@google.com                wait();
59212855Sgabeblack@google.com                while(!RHC_OP_END.read()) {
59312855Sgabeblack@google.com                    wait();
59412855Sgabeblack@google.com                    continue;
59512855Sgabeblack@google.com                }
59612855Sgabeblack@google.com                wait();
59712855Sgabeblack@google.com                RHC_OP_START = 0;
59812855Sgabeblack@google.com                dtemp.range(13,0) = RHC_ADDR_RT;
59912855Sgabeblack@google.com                wait();
60012855Sgabeblack@google.com	      //MACRO:read_queue(end)
60112855Sgabeblack@google.com
60212855Sgabeblack@google.com                sig_gen_buff_addr = dtemp.range(13,7);
60312855Sgabeblack@google.com
60412855Sgabeblack@google.com                if((sig_gen_buff_addr.range(6,5)) == -1) { // **** If BQ empty
60512855Sgabeblack@google.com                    wait();
60612855Sgabeblack@google.com
60712855Sgabeblack@google.com		 // Show idle state for both channels
60812855Sgabeblack@google.com                    EXC_IDLE0 = 1;
60912855Sgabeblack@google.com                    EXC_IDLE1 = 1;
61012855Sgabeblack@google.com
61112855Sgabeblack@google.com                 // Read the queue poll time
61212855Sgabeblack@google.com                    atemp = 22;
61312855Sgabeblack@google.com                    EXC_ADDR = atemp;
61412855Sgabeblack@google.com                    EXC_RPBH_ID = id_reg;
61512855Sgabeblack@google.com                    EXC_RW = 1;
61612855Sgabeblack@google.com                    EXC_REQ = 1;
61712855Sgabeblack@google.com                    wait();
61812855Sgabeblack@google.com                    while(1) {// rd_01
61912855Sgabeblack@google.com                        dtemp = IBC_DATA.read();
62012855Sgabeblack@google.com                        EXC_REQ = 0;
62112855Sgabeblack@google.com                        if(IBC_GRANT_EXC) {
62212855Sgabeblack@google.com                            wait();
62312855Sgabeblack@google.com                            break;
62412855Sgabeblack@google.com                        }
62512855Sgabeblack@google.com                        wait();
62612855Sgabeblack@google.com                    }// rd_01
62712855Sgabeblack@google.com
62812855Sgabeblack@google.com		  // Set the timer accordingly and wait
62912855Sgabeblack@google.com                    timer = dtemp.range(7,0);
63012855Sgabeblack@google.com                    wait();
63112855Sgabeblack@google.com                    while(timer) {
63212855Sgabeblack@google.com                        timer = (timer) - 1;
63312855Sgabeblack@google.com                        wait();
63412855Sgabeblack@google.com                        continue;
63512855Sgabeblack@google.com                    }
63612855Sgabeblack@google.com                    continue;
63712855Sgabeblack@google.com                } else { // **** BQ contains pointers
63812855Sgabeblack@google.com                    wait();
63912855Sgabeblack@google.com                }
64012855Sgabeblack@google.com
64112855Sgabeblack@google.com	      // Read the header of Generic Buffer addressed by FPP pointer
64212855Sgabeblack@google.com                atemp = (sig_gen_buff_addr, sc_int<7>(0));
64312855Sgabeblack@google.com
64412855Sgabeblack@google.com                EXC_ADDR = atemp;
64512855Sgabeblack@google.com                EXC_RPBH_ID = id_reg;
64612855Sgabeblack@google.com                EXC_RW = 1;
64712855Sgabeblack@google.com                EXC_REQ = 1;
64812855Sgabeblack@google.com                wait();
64912855Sgabeblack@google.com                while(1) { // rd_02
65012855Sgabeblack@google.com                    dtemp = IBC_DATA.read();
65112855Sgabeblack@google.com                    EXC_REQ = 0;
65212855Sgabeblack@google.com                    if(IBC_GRANT_EXC) {
65312855Sgabeblack@google.com                        wait();
65412855Sgabeblack@google.com                        break;
65512855Sgabeblack@google.com                    }
65612855Sgabeblack@google.com                    wait();
65712855Sgabeblack@google.com                }// rd_02
65812855Sgabeblack@google.com
65912855Sgabeblack@google.com             // Combine with Fault Insertion bit
66012855Sgabeblack@google.com                DID_reg = (dtemp.range(4,0)) | (((TM_EXC_FIR.read())[1], sc_int<4>(0)));
66112855Sgabeblack@google.com                MET_reg = dtemp.range(9,5);
66212855Sgabeblack@google.com                if((DID_reg) > 2) {
66312855Sgabeblack@google.com                    err_no_reg = 1;
66412855Sgabeblack@google.com                    rb_flag = 1;
66512855Sgabeblack@google.com                    wait();
66612855Sgabeblack@google.com		 // Show idle state for both channels
66712855Sgabeblack@google.com                    EXC_IDLE0 = 1;
66812855Sgabeblack@google.com                    EXC_IDLE1 = 1;
66912855Sgabeblack@google.com                    break; //goto _signal_proc__END;
67012855Sgabeblack@google.com                } else {
67112855Sgabeblack@google.com                    err_no_reg = err_no_reg;
67212855Sgabeblack@google.com                    rb_flag = rb_flag;
67312855Sgabeblack@google.com                    wait();
67412855Sgabeblack@google.com                }
67512855Sgabeblack@google.com
67612855Sgabeblack@google.com             // Set the no. for RPBH  being handled
67712855Sgabeblack@google.com                id_reg = (!(DID_reg[0]), !(DID_reg[1]));
67812855Sgabeblack@google.com
67912855Sgabeblack@google.com	     // Set the idle outputs
68012855Sgabeblack@google.com                EXC_IDLE0 = DID_reg[1];
68112855Sgabeblack@google.com                EXC_IDLE1 = DID_reg[0];
68212855Sgabeblack@google.com
68312855Sgabeblack@google.com             // Read inf0 from the Signal being handled
68412855Sgabeblack@google.com                atemp = (sig_gen_buff_addr, sc_int<7>(8));
68512855Sgabeblack@google.com                EXC_ADDR = atemp;
68612855Sgabeblack@google.com                EXC_RPBH_ID = id_reg;
68712855Sgabeblack@google.com                EXC_RW = 1;
68812855Sgabeblack@google.com                EXC_REQ = 1;
68912855Sgabeblack@google.com                wait();
69012855Sgabeblack@google.com                while(1) {// rd_03
69112855Sgabeblack@google.com                    dtemp = IBC_DATA.read();
69212855Sgabeblack@google.com                    EXC_REQ = 0;
69312855Sgabeblack@google.com                    if(IBC_GRANT_EXC) {
69412855Sgabeblack@google.com                        wait();
69512855Sgabeblack@google.com                        break;
69612855Sgabeblack@google.com                    }
69712855Sgabeblack@google.com                    wait();
69812855Sgabeblack@google.com                }// rd_03
69912855Sgabeblack@google.com
70012855Sgabeblack@google.com             // Combine with Fault Insertion bit
70112855Sgabeblack@google.com                if((TM_EXC_FIR.read())[2]) {
70212855Sgabeblack@google.com                    dtemp = 254;
70312855Sgabeblack@google.com                } else {
70412855Sgabeblack@google.com                    dtemp = dtemp;
70512855Sgabeblack@google.com                }
70612855Sgabeblack@google.com                wait();
70712855Sgabeblack@google.com
70812855Sgabeblack@google.com                _case_1021_ = dtemp.range(7,0);
70912855Sgabeblack@google.com                switch((int)_case_1021_) {
71012855Sgabeblack@google.com		  // if(193 == _case_1021_) {
71112855Sgabeblack@google.com                case 193:
71212855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) != 0)) {
71312855Sgabeblack@google.com                        err_no_reg = 1;
71412855Sgabeblack@google.com                        rb_flag = 1;
71512855Sgabeblack@google.com                        wait();
71612855Sgabeblack@google.com                    } else {
71712855Sgabeblack@google.com                        wait();
71812855Sgabeblack@google.com                        id_reg = 1;
71912855Sgabeblack@google.com                        err_no_reg = err_no_reg;
72012855Sgabeblack@google.com                        rb_flag = rb_flag;
72112855Sgabeblack@google.com                        //RHC_ADDR1 = (((sc_int<4>(0), sig_gen_buff_addr), RPBI_BPA.read()), sc_int<1>(MODE_S_P.read()));
72212855Sgabeblack@google.com                        RHC_ADDR1 = (((sc_int<4>(0), sig_gen_buff_addr), sc_int<4>(RPBI_BPA.read())), sc_int<1>(MODE_S_P.read()));
72312855Sgabeblack@google.com                        RHC_ADDR2 = ((sc_int<8>(10), TS0AR), sc_int<1>(RHC_REG_RST.read()));
72412855Sgabeblack@google.com                        RHC_OP_CODE = -4;
72512855Sgabeblack@google.com                        RHC_OP_START = 1;
72612855Sgabeblack@google.com                        wait();
72712855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
72812855Sgabeblack@google.com                            wait();
72912855Sgabeblack@google.com                            continue;
73012855Sgabeblack@google.com                        }
73112855Sgabeblack@google.com                        wait();
73212855Sgabeblack@google.com                        RHC_OP_START = 0;
73312855Sgabeblack@google.com                        wait();
73412855Sgabeblack@google.com                        RHC_ADDR1 = 272;
73512855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(0));
73612855Sgabeblack@google.com                        RHC_OP_CODE = 1;
73712855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
73812855Sgabeblack@google.com                        RHC_OP_START = 1;
73912855Sgabeblack@google.com                        wait();
74012855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
74112855Sgabeblack@google.com                            wait();
74212855Sgabeblack@google.com                            continue;
74312855Sgabeblack@google.com                        }
74412855Sgabeblack@google.com                        wait();
74512855Sgabeblack@google.com                        RHC_OP_START = 0;
74612855Sgabeblack@google.com                        wait();
74712855Sgabeblack@google.com                        id_reg = -2;
74812855Sgabeblack@google.com                        EXC_ADDR = -8192;
74912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
75012855Sgabeblack@google.com                        EXC_RW = 1;
75112855Sgabeblack@google.com                        EXC_REQ = 1;
75212855Sgabeblack@google.com                        wait();
75312855Sgabeblack@google.com                        while(1) {
75412855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
75512855Sgabeblack@google.com                            EXC_REQ = 0;
75612855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
75712855Sgabeblack@google.com                                wait();
75812855Sgabeblack@google.com                                break;
75912855Sgabeblack@google.com                            }
76012855Sgabeblack@google.com                            wait();
76112855Sgabeblack@google.com                        }
76212855Sgabeblack@google.com                        //RHC_ADDR1 = (((sc_int<4>(0), dtemp.range(13,7)), RPBI_BPA.read()), sc_int<1>(MODE_S_P.read()));
76312855Sgabeblack@google.com                        RHC_ADDR1 = (((sc_int<4>(0), dtemp.range(13,7)), sc_int<4>(RPBI_BPA.read())), sc_int<1>(MODE_S_P.read()));
76412855Sgabeblack@google.com                        RHC_ADDR2 = ((sc_int<8>(11), TS1AR), sc_int<1>(RHC_REG_RST.read()));
76512855Sgabeblack@google.com                        RHC_OP_CODE = -4;
76612855Sgabeblack@google.com                        RHC_OP_START = 1;
76712855Sgabeblack@google.com                        wait();
76812855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
76912855Sgabeblack@google.com                            wait();
77012855Sgabeblack@google.com                            continue;
77112855Sgabeblack@google.com                        }
77212855Sgabeblack@google.com                        wait();
77312855Sgabeblack@google.com                        RHC_OP_START = 0;
77412855Sgabeblack@google.com                        wait();
77512855Sgabeblack@google.com                        RHC_ADDR1 = 288;
77612855Sgabeblack@google.com                        RHC_ADDR2 = (dtemp.range(13,7), sc_int<7>(0));
77712855Sgabeblack@google.com                        RHC_OP_CODE = 1;
77812855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
77912855Sgabeblack@google.com                        RHC_OP_START = 1;
78012855Sgabeblack@google.com                        wait();
78112855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
78212855Sgabeblack@google.com                            wait();
78312855Sgabeblack@google.com                            continue;
78412855Sgabeblack@google.com                        }
78512855Sgabeblack@google.com                        wait();
78612855Sgabeblack@google.com                        RHC_OP_START = 0;
78712855Sgabeblack@google.com                        wait();}
78812855Sgabeblack@google.com                        break;
78912855Sgabeblack@google.com		    // } else if(1 == _case_1021_) {
79012855Sgabeblack@google.com		case 1:
79112855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) != 1)) {
79212855Sgabeblack@google.com                        err_no_reg = 1;
79312855Sgabeblack@google.com                        rb_flag = 1;
79412855Sgabeblack@google.com                        wait();
79512855Sgabeblack@google.com                    } else {
79612855Sgabeblack@google.com                        wait();
79712855Sgabeblack@google.com                        err_no_reg = err_no_reg;
79812855Sgabeblack@google.com                        rb_flag = 1;
79912855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(10));
80012855Sgabeblack@google.com                        EXC_ADDR = atemp;
80112855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
80212855Sgabeblack@google.com                        EXC_RW = 1;
80312855Sgabeblack@google.com                        EXC_REQ = 1;
80412855Sgabeblack@google.com                        wait();
80512855Sgabeblack@google.com                        while(1) {
80612855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
80712855Sgabeblack@google.com                            EXC_REQ = 0;
80812855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
80912855Sgabeblack@google.com                                wait();
81012855Sgabeblack@google.com                                break;
81112855Sgabeblack@google.com                            }
81212855Sgabeblack@google.com                            wait();
81312855Sgabeblack@google.com                        }
81412855Sgabeblack@google.com                        TS0AR = dtemp.range(4,0);
81512855Sgabeblack@google.com                        TS1AR = (TS0AR) + 1;
81612855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(11));
81712855Sgabeblack@google.com                        EXC_ADDR = atemp;
81812855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
81912855Sgabeblack@google.com                        EXC_RW = 1;
82012855Sgabeblack@google.com                        EXC_REQ = 1;
82112855Sgabeblack@google.com                        wait();
82212855Sgabeblack@google.com                        while(1) {
82312855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
82412855Sgabeblack@google.com                            EXC_REQ = 0;
82512855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
82612855Sgabeblack@google.com                                wait();
82712855Sgabeblack@google.com                                break;
82812855Sgabeblack@google.com                            }
82912855Sgabeblack@google.com                            wait();
83012855Sgabeblack@google.com                        }
83112855Sgabeblack@google.com                        dt = dtemp;
83212855Sgabeblack@google.com                        atemp = 9;
83312855Sgabeblack@google.com                        EXC_ADDR = atemp;
83412855Sgabeblack@google.com                        EXC_DATA = dt;
83512855Sgabeblack@google.com                        EXC_RW = 0;
83612855Sgabeblack@google.com                        EXC_REQ = 1;
83712855Sgabeblack@google.com                        wait();
83812855Sgabeblack@google.com                        while(1) {
83912855Sgabeblack@google.com                            EXC_REQ = 0;
84012855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
84112855Sgabeblack@google.com                                wait();
84212855Sgabeblack@google.com                                break;
84312855Sgabeblack@google.com                            }
84412855Sgabeblack@google.com                            wait();
84512855Sgabeblack@google.com                        }
84612855Sgabeblack@google.com                        dt = (dt) + 32;
84712855Sgabeblack@google.com                        atemp = 17;
84812855Sgabeblack@google.com                        EXC_ADDR = atemp;
84912855Sgabeblack@google.com                        EXC_DATA = dt;
85012855Sgabeblack@google.com                        EXC_RW = 0;
85112855Sgabeblack@google.com                        EXC_REQ = 1;
85212855Sgabeblack@google.com                        wait();
85312855Sgabeblack@google.com                        while(1) {
85412855Sgabeblack@google.com                            EXC_REQ = 0;
85512855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
85612855Sgabeblack@google.com                                wait();
85712855Sgabeblack@google.com                                break;
85812855Sgabeblack@google.com                            }
85912855Sgabeblack@google.com                            wait();
86012855Sgabeblack@google.com                        }
86112855Sgabeblack@google.com                    }
86212855Sgabeblack@google.com		    break;
86312855Sgabeblack@google.com		    // } else if((((194 == _case_1021_) || (201 == _case_1021_)) || (205 == _case_1021_)) || (204 == _case_1021_)) {
86412855Sgabeblack@google.com		  case  194:;
86512855Sgabeblack@google.com		  case  201:;
86612855Sgabeblack@google.com		  case  205:;
86712855Sgabeblack@google.com
86812855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) != 0)) {
86912855Sgabeblack@google.com                        err_no_reg = 1;
87012855Sgabeblack@google.com                        rb_flag = 1;
87112855Sgabeblack@google.com                        wait();
87212855Sgabeblack@google.com                    } else {
87312855Sgabeblack@google.com                        err_no_reg = err_no_reg;
87412855Sgabeblack@google.com                        rb_flag = 1;
87512855Sgabeblack@google.com                        wait();
87612855Sgabeblack@google.com                    }
87712855Sgabeblack@google.com		  break;
87812855Sgabeblack@google.com		  // } else if(209 == _case_1021_) {
87912855Sgabeblack@google.com		  case 209:
88012855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) == 0)) {
88112855Sgabeblack@google.com                        err_no_reg = 1;
88212855Sgabeblack@google.com                        rb_flag = 1;
88312855Sgabeblack@google.com                        wait();
88412855Sgabeblack@google.com                    } else {
88512855Sgabeblack@google.com                        err_no_reg = err_no_reg;
88612855Sgabeblack@google.com                        rb_flag = 1;
88712855Sgabeblack@google.com                        wait();
88812855Sgabeblack@google.com                    }
88912855Sgabeblack@google.com		  break;
89012855Sgabeblack@google.com		 //} else if(7 == _case_1021_) {
89112855Sgabeblack@google.com	 	 case 7:
89212855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) == 0)) {
89312855Sgabeblack@google.com                        err_no_reg = 1;
89412855Sgabeblack@google.com                        rb_flag = 1;
89512855Sgabeblack@google.com                        wait();
89612855Sgabeblack@google.com                    } else {
89712855Sgabeblack@google.com                        wait();
89812855Sgabeblack@google.com                        err_no_reg = err_no_reg;
89912855Sgabeblack@google.com                        rb_flag = rb_flag;
90012855Sgabeblack@google.com                        if((DID_reg[0]) == 1) {
90112855Sgabeblack@google.com                            DID_reg = 10;
90212855Sgabeblack@google.com                            atemp_1 = 272;
90312855Sgabeblack@google.com                        } else {
90412855Sgabeblack@google.com                            DID_reg = 11;
90512855Sgabeblack@google.com                            atemp_1 = 288;
90612855Sgabeblack@google.com                        }
90712855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(0));
90812855Sgabeblack@google.com                        RHC_ADDR2 = 0;
90912855Sgabeblack@google.com                        RHC_SIZE = ((sc_int<1>(0), DID_reg), sc_int<1>(0));
91012855Sgabeblack@google.com                        RHC_OP_CODE = -3;
91112855Sgabeblack@google.com                        RHC_OP_START = 1;
91212855Sgabeblack@google.com                        wait();
91312855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
91412855Sgabeblack@google.com                            wait();
91512855Sgabeblack@google.com                            continue;
91612855Sgabeblack@google.com                        }
91712855Sgabeblack@google.com                        wait();
91812855Sgabeblack@google.com                        RHC_OP_START = 0;
91912855Sgabeblack@google.com                        wait();
92012855Sgabeblack@google.com                        RHC_ADDR1 = 451;
92112855Sgabeblack@google.com                        RHC_ADDR2 = 0;
92212855Sgabeblack@google.com                        RHC_SIZE = sig_gen_buff_addr;
92312855Sgabeblack@google.com                        RHC_OP_CODE = -2;
92412855Sgabeblack@google.com                        RHC_OP_START = 1;
92512855Sgabeblack@google.com                        wait();
92612855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
92712855Sgabeblack@google.com                            wait();
92812855Sgabeblack@google.com                            continue;
92912855Sgabeblack@google.com                        }
93012855Sgabeblack@google.com                        wait();
93112855Sgabeblack@google.com                        RHC_OP_START = 0;
93212855Sgabeblack@google.com                        wait();
93312855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(11));
93412855Sgabeblack@google.com                        dt = 1;
93512855Sgabeblack@google.com                        EXC_ADDR = atemp;
93612855Sgabeblack@google.com                        EXC_DATA = dt;
93712855Sgabeblack@google.com                        EXC_RW = 0;
93812855Sgabeblack@google.com                        EXC_REQ = 1;
93912855Sgabeblack@google.com                        wait();
94012855Sgabeblack@google.com                        while(1) {
94112855Sgabeblack@google.com                            EXC_REQ = 0;
94212855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
94312855Sgabeblack@google.com                                wait();
94412855Sgabeblack@google.com                                break;
94512855Sgabeblack@google.com                            }
94612855Sgabeblack@google.com                            wait();
94712855Sgabeblack@google.com                        }
94812855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(12));
94912855Sgabeblack@google.com                        dt = 0;
95012855Sgabeblack@google.com                        EXC_ADDR = atemp;
95112855Sgabeblack@google.com                        EXC_DATA = dt;
95212855Sgabeblack@google.com                        EXC_RW = 0;
95312855Sgabeblack@google.com                        EXC_REQ = 1;
95412855Sgabeblack@google.com                        wait();
95512855Sgabeblack@google.com                        while(1) {
95612855Sgabeblack@google.com                            EXC_REQ = 0;
95712855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
95812855Sgabeblack@google.com                                wait();
95912855Sgabeblack@google.com                                break;
96012855Sgabeblack@google.com                            }
96112855Sgabeblack@google.com                            wait();
96212855Sgabeblack@google.com                        }
96312855Sgabeblack@google.com                        RHC_ADDR1 = atemp_1;
96412855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(0));
96512855Sgabeblack@google.com                        RHC_OP_CODE = 1;
96612855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
96712855Sgabeblack@google.com                        RHC_OP_START = 1;
96812855Sgabeblack@google.com                        wait();
96912855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
97012855Sgabeblack@google.com                            wait();
97112855Sgabeblack@google.com                            continue;
97212855Sgabeblack@google.com                        }
97312855Sgabeblack@google.com                        wait();
97412855Sgabeblack@google.com                        RHC_OP_START = 0;
97512855Sgabeblack@google.com                        wait();
97612855Sgabeblack@google.com                    }
97712855Sgabeblack@google.com		    break;
97812855Sgabeblack@google.com		  //  } else if(59 == _case_1021_) {
97912855Sgabeblack@google.com		 case 59:
98012855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) == 0)) {
98112855Sgabeblack@google.com                        err_no_reg = 1;
98212855Sgabeblack@google.com                        rb_flag = 1;
98312855Sgabeblack@google.com                        wait();
98412855Sgabeblack@google.com                    } else {
98512855Sgabeblack@google.com                        wait();
98612855Sgabeblack@google.com                        err_no_reg = err_no_reg;
98712855Sgabeblack@google.com                        rb_flag = rb_flag;
98812855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(10));
98912855Sgabeblack@google.com                        EXC_ADDR = atemp;
99012855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
99112855Sgabeblack@google.com                        EXC_RW = 1;
99212855Sgabeblack@google.com                        EXC_REQ = 1;
99312855Sgabeblack@google.com                        wait();
99412855Sgabeblack@google.com                        while(1) {
99512855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
99612855Sgabeblack@google.com                            EXC_REQ = 0;
99712855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
99812855Sgabeblack@google.com                                wait();
99912855Sgabeblack@google.com                                break;
100012855Sgabeblack@google.com                            }
100112855Sgabeblack@google.com                            wait();
100212855Sgabeblack@google.com                        }
100312855Sgabeblack@google.com                        RP_addr_ptr = dtemp.range(7,0);
100412855Sgabeblack@google.com                        if((DID_reg[0]) == 1) {
100512855Sgabeblack@google.com                            RP_addr_ptr = (sc_int<3>(2), RP_addr_ptr.range(4,0));
100612855Sgabeblack@google.com                            DID_reg = 10;
100712855Sgabeblack@google.com                            atemp_1 = (sc_int<9>(4), RP_addr_ptr.range(4,0));
100812855Sgabeblack@google.com                            atemp_2 = 9;
100912855Sgabeblack@google.com                            atemp_3 = 272;
101012855Sgabeblack@google.com                        } else {
101112855Sgabeblack@google.com                            RP_addr_ptr = (sc_int<3>(3), RP_addr_ptr.range(4,0));
101212855Sgabeblack@google.com                            DID_reg = 11;
101312855Sgabeblack@google.com                            atemp_1 = (sc_int<9>(5), RP_addr_ptr.range(4,0));
101412855Sgabeblack@google.com                            atemp_2 = 17;
101512855Sgabeblack@google.com                            atemp_3 = 288;
101612855Sgabeblack@google.com                        }
101712855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(11));
101812855Sgabeblack@google.com                        EXC_ADDR = atemp;
101912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
102012855Sgabeblack@google.com                        EXC_RW = 1;
102112855Sgabeblack@google.com                        EXC_REQ = 1;
102212855Sgabeblack@google.com                        wait();
102312855Sgabeblack@google.com                        while(1) {
102412855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
102512855Sgabeblack@google.com                            EXC_REQ = 0;
102612855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
102712855Sgabeblack@google.com                                wait();
102812855Sgabeblack@google.com                                break;
102912855Sgabeblack@google.com                            }
103012855Sgabeblack@google.com                            wait();
103112855Sgabeblack@google.com                        }
103212855Sgabeblack@google.com		      }
103312855Sgabeblack@google.com                        _case_1396_ = int(dtemp);
103412855Sgabeblack@google.com			switch((int)_case_1396_) {
103512855Sgabeblack@google.com		     // if(1 == _case_1396_) {
103612855Sgabeblack@google.com			case 1:
103712855Sgabeblack@google.com                            rb_flag = 1;
103812855Sgabeblack@google.com                            atemp = (sc_int<6>(0), RP_addr_ptr);
103912855Sgabeblack@google.com                            EXC_ADDR = atemp;
104012855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
104112855Sgabeblack@google.com                            EXC_RW = 1;
104212855Sgabeblack@google.com                            EXC_REQ = 1;
104312855Sgabeblack@google.com                            wait();
104412855Sgabeblack@google.com                            while(1) {
104512855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
104612855Sgabeblack@google.com                                EXC_REQ = 0;
104712855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
104812855Sgabeblack@google.com                                    wait();
104912855Sgabeblack@google.com                                    break;
105012855Sgabeblack@google.com                                }
105112855Sgabeblack@google.com                                wait();
105212855Sgabeblack@google.com                            }
105312855Sgabeblack@google.com                            dt = dtemp | 2;
105412855Sgabeblack@google.com                            EXC_ADDR = atemp;
105512855Sgabeblack@google.com                            EXC_DATA = dt;
105612855Sgabeblack@google.com                            EXC_RW = 0;
105712855Sgabeblack@google.com                            EXC_REQ = 1;
105812855Sgabeblack@google.com                            wait();
105912855Sgabeblack@google.com                            while(1) {
106012855Sgabeblack@google.com                                EXC_REQ = 0;
106112855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
106212855Sgabeblack@google.com                                    wait();
106312855Sgabeblack@google.com                                    break;
106412855Sgabeblack@google.com                                }
106512855Sgabeblack@google.com                                wait();
106612855Sgabeblack@google.com                            }
106712855Sgabeblack@google.com			    break;
106812855Sgabeblack@google.com			    // } else if(2 == _case_1396_) {
106912855Sgabeblack@google.com			case 2:
107012855Sgabeblack@google.com                            rb_flag = 1;
107112855Sgabeblack@google.com                            atemp = (sc_int<6>(0), RP_addr_ptr);
107212855Sgabeblack@google.com                            EXC_ADDR = atemp;
107312855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
107412855Sgabeblack@google.com                            EXC_RW = 1;
107512855Sgabeblack@google.com                            EXC_REQ = 1;
107612855Sgabeblack@google.com                            wait();
107712855Sgabeblack@google.com                            while(1) {
107812855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
107912855Sgabeblack@google.com                                EXC_REQ = 0;
108012855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
108112855Sgabeblack@google.com                                    wait();
108212855Sgabeblack@google.com                                    break;
108312855Sgabeblack@google.com                                }
108412855Sgabeblack@google.com                                wait();
108512855Sgabeblack@google.com                            }
108612855Sgabeblack@google.com                            dt = dtemp & -3;
108712855Sgabeblack@google.com                            EXC_ADDR = atemp;
108812855Sgabeblack@google.com                            EXC_DATA = dt;
108912855Sgabeblack@google.com                            EXC_RW = 0;
109012855Sgabeblack@google.com                            EXC_REQ = 1;
109112855Sgabeblack@google.com                            wait();
109212855Sgabeblack@google.com                            while(1) {
109312855Sgabeblack@google.com                                EXC_REQ = 0;
109412855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
109512855Sgabeblack@google.com                                    wait();
109612855Sgabeblack@google.com                                    break;
109712855Sgabeblack@google.com                                }
109812855Sgabeblack@google.com                                wait();
109912855Sgabeblack@google.com                            }
110012855Sgabeblack@google.com			    break;
110112855Sgabeblack@google.com			  // } else if(3 == _case_1396_) {
110212855Sgabeblack@google.com			case 3:
110312855Sgabeblack@google.com                            rb_flag = 1;
110412855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(12));
110512855Sgabeblack@google.com                            EXC_ADDR = atemp;
110612855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
110712855Sgabeblack@google.com                            EXC_RW = 1;
110812855Sgabeblack@google.com                            EXC_REQ = 1;
110912855Sgabeblack@google.com                            wait();
111012855Sgabeblack@google.com                            while(1) {
111112855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
111212855Sgabeblack@google.com                                EXC_REQ = 0;
111312855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
111412855Sgabeblack@google.com                                    wait();
111512855Sgabeblack@google.com                                    break;
111612855Sgabeblack@google.com                                }
111712855Sgabeblack@google.com                                wait();
111812855Sgabeblack@google.com                            }
111912855Sgabeblack@google.com                            atemp = atemp_1;
112012855Sgabeblack@google.com                            dt = dtemp;
112112855Sgabeblack@google.com                            EXC_ADDR = atemp;
112212855Sgabeblack@google.com                            EXC_DATA = dt;
112312855Sgabeblack@google.com                            EXC_RW = 0;
112412855Sgabeblack@google.com                            EXC_REQ = 1;
112512855Sgabeblack@google.com                            wait();
112612855Sgabeblack@google.com                            while(1) {
112712855Sgabeblack@google.com                                EXC_REQ = 0;
112812855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
112912855Sgabeblack@google.com                                    wait();
113012855Sgabeblack@google.com                                    break;
113112855Sgabeblack@google.com                                }
113212855Sgabeblack@google.com                                wait();
113312855Sgabeblack@google.com                            } break;
113412855Sgabeblack@google.com			    // } else if(4 == _case_1396_) {
113512855Sgabeblack@google.com			case 4:
113612855Sgabeblack@google.com                            atemp = atemp_2;
113712855Sgabeblack@google.com                            EXC_ADDR = atemp;
113812855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
113912855Sgabeblack@google.com                            EXC_RW = 1;
114012855Sgabeblack@google.com                            EXC_REQ = 1;
114112855Sgabeblack@google.com                            wait();
114212855Sgabeblack@google.com                            while(1) {
114312855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
114412855Sgabeblack@google.com                                EXC_REQ = 0;
114512855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
114612855Sgabeblack@google.com                                    wait();
114712855Sgabeblack@google.com                                    break;
114812855Sgabeblack@google.com                                }
114912855Sgabeblack@google.com                                wait();
115012855Sgabeblack@google.com                            }
115112855Sgabeblack@google.com                            RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(0));
115212855Sgabeblack@google.com                            RHC_ADDR2 = 0;
115312855Sgabeblack@google.com                            RHC_SIZE = ((sc_int<1>(0), DID_reg), sc_int<1>(0));
115412855Sgabeblack@google.com                            RHC_OP_CODE = -3;
115512855Sgabeblack@google.com                            RHC_OP_START = 1;
115612855Sgabeblack@google.com                            wait();
115712855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
115812855Sgabeblack@google.com                                wait();
115912855Sgabeblack@google.com                                continue;
116012855Sgabeblack@google.com                            }
116112855Sgabeblack@google.com                            wait();
116212855Sgabeblack@google.com                            RHC_OP_START = 0;
116312855Sgabeblack@google.com                            wait();
116412855Sgabeblack@google.com                            RHC_ADDR1 = 3779;
116512855Sgabeblack@google.com                            RHC_ADDR2 = 0;
116612855Sgabeblack@google.com                            RHC_SIZE = sig_gen_buff_addr;
116712855Sgabeblack@google.com                            RHC_OP_CODE = -2;
116812855Sgabeblack@google.com                            RHC_OP_START = 1;
116912855Sgabeblack@google.com                            wait();
117012855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
117112855Sgabeblack@google.com                                wait();
117212855Sgabeblack@google.com                                continue;
117312855Sgabeblack@google.com                            }
117412855Sgabeblack@google.com                            wait();
117512855Sgabeblack@google.com                            RHC_OP_START = 0;
117612855Sgabeblack@google.com                            wait();
117712855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(10));
117812855Sgabeblack@google.com                            dt = (dtemp.range(15,5), RP_addr_ptr.range(4,0));
117912855Sgabeblack@google.com                            EXC_ADDR = atemp;
118012855Sgabeblack@google.com                            EXC_DATA = dt;
118112855Sgabeblack@google.com                            EXC_RW = 0;
118212855Sgabeblack@google.com                            EXC_REQ = 1;
118312855Sgabeblack@google.com                            wait();
118412855Sgabeblack@google.com                            while(1) {
118512855Sgabeblack@google.com                                EXC_REQ = 0;
118612855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
118712855Sgabeblack@google.com                                    wait();
118812855Sgabeblack@google.com                                    break;
118912855Sgabeblack@google.com                                }
119012855Sgabeblack@google.com                                wait();
119112855Sgabeblack@google.com                            }
119212855Sgabeblack@google.com                            atemp = (sc_int<6>(0), RP_addr_ptr);
119312855Sgabeblack@google.com                            EXC_ADDR = atemp;
119412855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
119512855Sgabeblack@google.com                            EXC_RW = 1;
119612855Sgabeblack@google.com                            EXC_REQ = 1;
119712855Sgabeblack@google.com                            wait();
119812855Sgabeblack@google.com                            while(1) {
119912855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
120012855Sgabeblack@google.com                                EXC_REQ = 0;
120112855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
120212855Sgabeblack@google.com                                    wait();
120312855Sgabeblack@google.com                                    break;
120412855Sgabeblack@google.com                                }
120512855Sgabeblack@google.com                                wait();
120612855Sgabeblack@google.com                            }
120712855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(11));
120812855Sgabeblack@google.com                            if(!(dtemp[1])) {
120912855Sgabeblack@google.com                                dt = 0;
121012855Sgabeblack@google.com                            } else {
121112855Sgabeblack@google.com                                dt = 1;
121212855Sgabeblack@google.com                            }
121312855Sgabeblack@google.com                            EXC_ADDR = atemp;
121412855Sgabeblack@google.com                            EXC_DATA = dt;
121512855Sgabeblack@google.com                            EXC_RW = 0;
121612855Sgabeblack@google.com                            EXC_REQ = 1;
121712855Sgabeblack@google.com                            wait();
121812855Sgabeblack@google.com                            while(1) {
121912855Sgabeblack@google.com                                EXC_REQ = 0;
122012855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
122112855Sgabeblack@google.com                                    wait();
122212855Sgabeblack@google.com                                    break;
122312855Sgabeblack@google.com                                }
122412855Sgabeblack@google.com                                wait();
122512855Sgabeblack@google.com                            }
122612855Sgabeblack@google.com                            atemp = atemp_1;
122712855Sgabeblack@google.com                            EXC_ADDR = atemp;
122812855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
122912855Sgabeblack@google.com                            EXC_RW = 1;
123012855Sgabeblack@google.com                            EXC_REQ = 1;
123112855Sgabeblack@google.com                            wait();
123212855Sgabeblack@google.com                            while(1) {
123312855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
123412855Sgabeblack@google.com                                EXC_REQ = 0;
123512855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
123612855Sgabeblack@google.com                                    wait();
123712855Sgabeblack@google.com                                    break;
123812855Sgabeblack@google.com                                }
123912855Sgabeblack@google.com                                wait();
124012855Sgabeblack@google.com                            }
124112855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(12));
124212855Sgabeblack@google.com                            dt = dtemp;
124312855Sgabeblack@google.com                            EXC_ADDR = atemp;
124412855Sgabeblack@google.com                            EXC_DATA = dt;
124512855Sgabeblack@google.com                            EXC_RW = 0;
124612855Sgabeblack@google.com                            EXC_REQ = 1;
124712855Sgabeblack@google.com                            wait();
124812855Sgabeblack@google.com                            while(1) {
124912855Sgabeblack@google.com                                EXC_REQ = 0;
125012855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
125112855Sgabeblack@google.com                                    wait();
125212855Sgabeblack@google.com                                    break;
125312855Sgabeblack@google.com                                }
125412855Sgabeblack@google.com                                wait();
125512855Sgabeblack@google.com                            }
125612855Sgabeblack@google.com                            RHC_ADDR1 = atemp_3;
125712855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(0));
125812855Sgabeblack@google.com                            RHC_OP_CODE = 1;
125912855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
126012855Sgabeblack@google.com                            RHC_OP_START = 1;
126112855Sgabeblack@google.com                            wait();
126212855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
126312855Sgabeblack@google.com                                wait();
126412855Sgabeblack@google.com                                continue;
126512855Sgabeblack@google.com                            }
126612855Sgabeblack@google.com                            wait();
126712855Sgabeblack@google.com                            RHC_OP_START = 0;
126812855Sgabeblack@google.com                            wait();
126912855Sgabeblack@google.com			    break;
127012855Sgabeblack@google.com			    // } else {
127112855Sgabeblack@google.com			default:
127212855Sgabeblack@google.com                            err_no_reg = -4;
127312855Sgabeblack@google.com                            rb_flag = 1;
127412855Sgabeblack@google.com                            wait();
127512855Sgabeblack@google.com                    } // end _case_1396_
127612855Sgabeblack@google.com
127712855Sgabeblack@google.com		  // } else if(208 == _case_1021_) {
127812855Sgabeblack@google.com		   case 208:
127912855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) == 0)) {
128012855Sgabeblack@google.com                        err_no_reg = 1;
128112855Sgabeblack@google.com                        rb_flag = 1;
128212855Sgabeblack@google.com                        wait();
128312855Sgabeblack@google.com                    } else {
128412855Sgabeblack@google.com                        wait();
128512855Sgabeblack@google.com                        err_no_reg = err_no_reg;
128612855Sgabeblack@google.com                        rb_flag = rb_flag;
128712855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(24));
128812855Sgabeblack@google.com                        EXC_ADDR = atemp;
128912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
129012855Sgabeblack@google.com                        EXC_RW = 1;
129112855Sgabeblack@google.com                        EXC_REQ = 1;
129212855Sgabeblack@google.com                        wait();
129312855Sgabeblack@google.com                        while(1) {
129412855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
129512855Sgabeblack@google.com                            EXC_REQ = 0;
129612855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
129712855Sgabeblack@google.com                                wait();
129812855Sgabeblack@google.com                                break;
129912855Sgabeblack@google.com                            }
130012855Sgabeblack@google.com                            wait();
130112855Sgabeblack@google.com                        }
130212855Sgabeblack@google.com                        NHW_reg = dtemp.range(13,8);
130312855Sgabeblack@google.com                        Data_Start_reg = (NHW_reg) + 2;
130412855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(8));
130512855Sgabeblack@google.com                        dt = dtemp;
130612855Sgabeblack@google.com                        EXC_ADDR = atemp;
130712855Sgabeblack@google.com                        EXC_DATA = dt;
130812855Sgabeblack@google.com                        EXC_RW = 0;
130912855Sgabeblack@google.com                        EXC_REQ = 1;
131012855Sgabeblack@google.com                        wait();
131112855Sgabeblack@google.com                        while(1) {
131212855Sgabeblack@google.com                            EXC_REQ = 0;
131312855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
131412855Sgabeblack@google.com                                wait();
131512855Sgabeblack@google.com                                break;
131612855Sgabeblack@google.com                            }
131712855Sgabeblack@google.com                            wait();
131812855Sgabeblack@google.com                        }
131912855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(25));
132012855Sgabeblack@google.com                        EXC_ADDR = atemp;
132112855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
132212855Sgabeblack@google.com                        EXC_RW = 1;
132312855Sgabeblack@google.com                        EXC_REQ = 1;
132412855Sgabeblack@google.com                        wait();
132512855Sgabeblack@google.com                        while(1) {
132612855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
132712855Sgabeblack@google.com                            EXC_REQ = 0;
132812855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
132912855Sgabeblack@google.com                                wait();
133012855Sgabeblack@google.com                                break;
133112855Sgabeblack@google.com                            }
133212855Sgabeblack@google.com                            wait();
133312855Sgabeblack@google.com                        }
133412855Sgabeblack@google.com                        total_data_len = dtemp.range(11,0);
133512855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(9));
133612855Sgabeblack@google.com                        dt = dtemp;
133712855Sgabeblack@google.com                        EXC_ADDR = atemp;
133812855Sgabeblack@google.com                        EXC_DATA = dt;
133912855Sgabeblack@google.com                        EXC_RW = 0;
134012855Sgabeblack@google.com                        EXC_REQ = 1;
134112855Sgabeblack@google.com                        wait();
134212855Sgabeblack@google.com                        while(1) {
134312855Sgabeblack@google.com                            EXC_REQ = 0;
134412855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
134512855Sgabeblack@google.com                                wait();
134612855Sgabeblack@google.com                                break;
134712855Sgabeblack@google.com                            }
134812855Sgabeblack@google.com                            wait();
134912855Sgabeblack@google.com                        }
135012855Sgabeblack@google.com                        Data_Start_reg = 32 + ((Data_Start_reg) << 1);
135112855Sgabeblack@google.com                        MET_reg = 6;
135212855Sgabeblack@google.com                        if(DID_reg[0]) {
135312855Sgabeblack@google.com                            DID_reg = 10;
135412855Sgabeblack@google.com                            atemp_1 = 272;
135512855Sgabeblack@google.com                        } else {
135612855Sgabeblack@google.com                            DID_reg = 11;
135712855Sgabeblack@google.com                            atemp_1 = 288;
135812855Sgabeblack@google.com                        }
135912855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(0));
136012855Sgabeblack@google.com                        dt = ((Data_Start_reg, MET_reg), DID_reg);
136112855Sgabeblack@google.com                        EXC_ADDR = atemp;
136212855Sgabeblack@google.com                        EXC_DATA = dt;
136312855Sgabeblack@google.com                        EXC_RW = 0;
136412855Sgabeblack@google.com                        EXC_REQ = 1;
136512855Sgabeblack@google.com                        wait();
136612855Sgabeblack@google.com                        while(1) {
136712855Sgabeblack@google.com                            EXC_REQ = 0;
136812855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
136912855Sgabeblack@google.com                                wait();
137012855Sgabeblack@google.com                                break;
137112855Sgabeblack@google.com                            }
137212855Sgabeblack@google.com                            wait();
137312855Sgabeblack@google.com                        }
137412855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(1));
137512855Sgabeblack@google.com                        dt = (sc_int<4>(0), total_data_len);
137612855Sgabeblack@google.com                        EXC_ADDR = atemp;
137712855Sgabeblack@google.com                        EXC_DATA = dt;
137812855Sgabeblack@google.com                        EXC_RW = 0;
137912855Sgabeblack@google.com                        EXC_REQ = 1;
138012855Sgabeblack@google.com                        wait();
138112855Sgabeblack@google.com                        while(1) {
138212855Sgabeblack@google.com                            EXC_REQ = 0;
138312855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
138412855Sgabeblack@google.com                                wait();
138512855Sgabeblack@google.com                                break;
138612855Sgabeblack@google.com                            }
138712855Sgabeblack@google.com                            wait();
138812855Sgabeblack@google.com                        }
138912855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(26));
139012855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(10));
139112855Sgabeblack@google.com                        RHC_SIZE = NHW_reg;
139212855Sgabeblack@google.com                        RHC_OP_CODE = 3;
139312855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
139412855Sgabeblack@google.com                        RHC_OP_START = 1;
139512855Sgabeblack@google.com                        wait();
139612855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
139712855Sgabeblack@google.com                            wait();
139812855Sgabeblack@google.com                            continue;
139912855Sgabeblack@google.com                        }
140012855Sgabeblack@google.com                        wait();
140112855Sgabeblack@google.com                        RHC_OP_START = 0;
140212855Sgabeblack@google.com                        wait();
140312855Sgabeblack@google.com                        RHC_ADDR1 = atemp_1;
140412855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(0));
140512855Sgabeblack@google.com                        RHC_OP_CODE = 1;
140612855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
140712855Sgabeblack@google.com                        RHC_OP_START = 1;
140812855Sgabeblack@google.com                        wait();
140912855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
141012855Sgabeblack@google.com                            wait();
141112855Sgabeblack@google.com                            continue;
141212855Sgabeblack@google.com                        }
141312855Sgabeblack@google.com                        wait();
141412855Sgabeblack@google.com                        RHC_OP_START = 0;
141512855Sgabeblack@google.com                        wait();
141612855Sgabeblack@google.com                    }
141712855Sgabeblack@google.com		    break;
141812855Sgabeblack@google.com		   // } else if(9 == _case_1021_) {
141912855Sgabeblack@google.com		   case 9:
142012855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) == 0)) {
142112855Sgabeblack@google.com                        err_no_reg = 1;
142212855Sgabeblack@google.com                        rb_flag = 1;
142312855Sgabeblack@google.com                        wait();
142412855Sgabeblack@google.com                    } else {
142512855Sgabeblack@google.com                        wait();
142612855Sgabeblack@google.com                        err_no_reg = err_no_reg;
142712855Sgabeblack@google.com                        rb_flag = rb_flag;
142812855Sgabeblack@google.com                        Data_Start_reg = -32;
142912855Sgabeblack@google.com                        MET_reg = 5;
143012855Sgabeblack@google.com                        total_data_len = 2;
143112855Sgabeblack@google.com                        LEV_reg = 0;
143212855Sgabeblack@google.com                        NHW_reg = 3;
143312855Sgabeblack@google.com                        RSN_reg = 9;
143412855Sgabeblack@google.com                        DT_reg = 0;
143512855Sgabeblack@google.com                        link_ptr = 0;
143612855Sgabeblack@google.com                        V_reg = 0;
143712855Sgabeblack@google.com                        if(DID_reg[0]) {
143812855Sgabeblack@google.com                            DID_reg = 10;
143912855Sgabeblack@google.com                            atemp_1 = 272;
144012855Sgabeblack@google.com                        } else {
144112855Sgabeblack@google.com                            DID_reg = 11;
144212855Sgabeblack@google.com                            atemp_1 = 288;
144312855Sgabeblack@google.com                        }
144412855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(10));
144512855Sgabeblack@google.com                        EXC_ADDR = atemp;
144612855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
144712855Sgabeblack@google.com                        EXC_RW = 1;
144812855Sgabeblack@google.com                        EXC_REQ = 1;
144912855Sgabeblack@google.com                        wait();
145012855Sgabeblack@google.com                        while(1) {
145112855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
145212855Sgabeblack@google.com                            EXC_REQ = 0;
145312855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
145412855Sgabeblack@google.com                                wait();
145512855Sgabeblack@google.com                                break;
145612855Sgabeblack@google.com                            }
145712855Sgabeblack@google.com                            wait();
145812855Sgabeblack@google.com                        }
145912855Sgabeblack@google.com                        if((TM_EXC_FIR.read())[3]) {
146012855Sgabeblack@google.com                            dtemp = 4096;
146112855Sgabeblack@google.com                        } else {
146212855Sgabeblack@google.com                            dtemp = dtemp;
146312855Sgabeblack@google.com                        }
146412855Sgabeblack@google.com                        wait();
146512855Sgabeblack@google.com                        _case_1934_ = dtemp;
146612855Sgabeblack@google.com			switch((int)_case_1934_) {
146712855Sgabeblack@google.com			  case 0:
146812855Sgabeblack@google.com			  // if(0 == _case_1934_) {
146912855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(24));
147012855Sgabeblack@google.com			    dt = (256, MODE_S_P.read());
147112855Sgabeblack@google.com                            EXC_ADDR = atemp;
147212855Sgabeblack@google.com                            EXC_DATA = dt;
147312855Sgabeblack@google.com                            EXC_RW = 0;
147412855Sgabeblack@google.com                            EXC_REQ = 1;
147512855Sgabeblack@google.com                            wait();
147612855Sgabeblack@google.com                            while(1) {
147712855Sgabeblack@google.com                                EXC_REQ = 0;
147812855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
147912855Sgabeblack@google.com                                    wait();
148012855Sgabeblack@google.com                                    break;
148112855Sgabeblack@google.com                                }
148212855Sgabeblack@google.com                                wait();
148312855Sgabeblack@google.com                            } break;
148412855Sgabeblack@google.com			    // } else if(1 == _case_1934_) {
148512855Sgabeblack@google.com			case 1:
148612855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(24));
148712855Sgabeblack@google.com                            dt = 3;
148812855Sgabeblack@google.com                            EXC_ADDR = atemp;
148912855Sgabeblack@google.com                            EXC_DATA = dt;
149012855Sgabeblack@google.com                            EXC_RW = 0;
149112855Sgabeblack@google.com                            EXC_REQ = 1;
149212855Sgabeblack@google.com                            wait();
149312855Sgabeblack@google.com                            while(1) {
149412855Sgabeblack@google.com                                EXC_REQ = 0;
149512855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
149612855Sgabeblack@google.com                                    wait();
149712855Sgabeblack@google.com                                    break;
149812855Sgabeblack@google.com                                }
149912855Sgabeblack@google.com                                wait();
150012855Sgabeblack@google.com                            } break;
150112855Sgabeblack@google.com			    // } else if(2 == _case_1934_) {
150212855Sgabeblack@google.com			case 2:
150312855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(24));
150412855Sgabeblack@google.com                            dt = 32;
150512855Sgabeblack@google.com                            EXC_ADDR = atemp;
150612855Sgabeblack@google.com                            EXC_DATA = dt;
150712855Sgabeblack@google.com                            EXC_RW = 0;
150812855Sgabeblack@google.com                            EXC_REQ = 1;
150912855Sgabeblack@google.com                            wait();
151012855Sgabeblack@google.com                            while(1) {
151112855Sgabeblack@google.com                                EXC_REQ = 0;
151212855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
151312855Sgabeblack@google.com                                    wait();
151412855Sgabeblack@google.com                                    break;
151512855Sgabeblack@google.com                                }
151612855Sgabeblack@google.com                                wait();
151712855Sgabeblack@google.com                            } break;
151812855Sgabeblack@google.com			  // } else if(3 == _case_1934_) {
151912855Sgabeblack@google.com			case 3:
152012855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(24));
152112855Sgabeblack@google.com                            dt = ( sc_int<10>(0), ( RPBI_BPA.read() , RPBI_APA.read() ) );
152212855Sgabeblack@google.com                            EXC_ADDR = atemp;
152312855Sgabeblack@google.com                            EXC_DATA = dt;
152412855Sgabeblack@google.com                            EXC_RW = 0;
152512855Sgabeblack@google.com                            EXC_REQ = 1;
152612855Sgabeblack@google.com                            wait();
152712855Sgabeblack@google.com                            while(1) {
152812855Sgabeblack@google.com                                EXC_REQ = 0;
152912855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
153012855Sgabeblack@google.com                                    wait();
153112855Sgabeblack@google.com                                    break;
153212855Sgabeblack@google.com                                }
153312855Sgabeblack@google.com                                wait();
153412855Sgabeblack@google.com                            } break;
153512855Sgabeblack@google.com			    // } else if(4 == _case_1934_) {
153612855Sgabeblack@google.com			case 4:
153712855Sgabeblack@google.com                            total_data_len = 6;
153812855Sgabeblack@google.com                            if(!(DID_reg[0])) {
153912855Sgabeblack@google.com                                RHC_ADDR1 = 8;
154012855Sgabeblack@google.com                            } else {
154112855Sgabeblack@google.com                                RHC_ADDR1 = 16;
154212855Sgabeblack@google.com                            }
154312855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
154412855Sgabeblack@google.com                            RHC_SIZE = 3;
154512855Sgabeblack@google.com                            RHC_OP_CODE = 3;
154612855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
154712855Sgabeblack@google.com                            RHC_OP_START = 1;
154812855Sgabeblack@google.com                            wait();
154912855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
155012855Sgabeblack@google.com                                wait();
155112855Sgabeblack@google.com                                continue;
155212855Sgabeblack@google.com                            }
155312855Sgabeblack@google.com                            wait();
155412855Sgabeblack@google.com                            RHC_OP_START = 0;
155512855Sgabeblack@google.com                            wait(); break;
155612855Sgabeblack@google.com			    //  } else if(5 == _case_1934_) {
155712855Sgabeblack@google.com			case 5:
155812855Sgabeblack@google.com                            total_data_len = 64;
155912855Sgabeblack@google.com                            if(!(DID_reg[0])) {
156012855Sgabeblack@google.com                                RHC_ADDR1 = 64;
156112855Sgabeblack@google.com                            } else {
156212855Sgabeblack@google.com                                RHC_ADDR1 = 96;
156312855Sgabeblack@google.com                            }
156412855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
156512855Sgabeblack@google.com                            RHC_SIZE = 32;
156612855Sgabeblack@google.com                            RHC_OP_CODE = 3;
156712855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
156812855Sgabeblack@google.com                            RHC_OP_START = 1;
156912855Sgabeblack@google.com                            wait();
157012855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
157112855Sgabeblack@google.com                                wait();
157212855Sgabeblack@google.com                                continue;
157312855Sgabeblack@google.com                            }
157412855Sgabeblack@google.com                            wait();
157512855Sgabeblack@google.com                            RHC_OP_START = 0;
157612855Sgabeblack@google.com                            wait(); break;
157712855Sgabeblack@google.com			    // } else if(6 == _case_1934_) {
157812855Sgabeblack@google.com			case 6:
157912855Sgabeblack@google.com                            total_data_len = 64;
158012855Sgabeblack@google.com                            if(!(DID_reg[0])) {
158112855Sgabeblack@google.com                                RHC_ADDR1 = 128;
158212855Sgabeblack@google.com                            } else {
158312855Sgabeblack@google.com                                RHC_ADDR1 = 160;
158412855Sgabeblack@google.com                            }
158512855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
158612855Sgabeblack@google.com                            RHC_SIZE = 32;
158712855Sgabeblack@google.com                            RHC_OP_CODE = 3;
158812855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
158912855Sgabeblack@google.com                            RHC_OP_START = 1;
159012855Sgabeblack@google.com                            wait();
159112855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
159212855Sgabeblack@google.com                                wait();
159312855Sgabeblack@google.com                                continue;
159412855Sgabeblack@google.com                            }
159512855Sgabeblack@google.com                            wait();
159612855Sgabeblack@google.com                            RHC_OP_START = 0;
159712855Sgabeblack@google.com                            wait(); break;
159812855Sgabeblack@google.com			    //  } else if(7 == _case_1934_) {
159912855Sgabeblack@google.com			case 7:
160012855Sgabeblack@google.com                            if(!MODE_S_P.read()) {
160112855Sgabeblack@google.com                                total_data_len = 12;
160212855Sgabeblack@google.com                                RHC_SIZE = 6;
160312855Sgabeblack@google.com                            } else {
160412855Sgabeblack@google.com                                total_data_len = 8;
160512855Sgabeblack@google.com                                RHC_SIZE = 4;
160612855Sgabeblack@google.com                            }
160712855Sgabeblack@google.com                            if(!(DID_reg[0])) {
160812855Sgabeblack@google.com                                RHC_ADDR1 = 32;
160912855Sgabeblack@google.com                            } else {
161012855Sgabeblack@google.com                                RHC_ADDR1 = 48;
161112855Sgabeblack@google.com                            }
161212855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
161312855Sgabeblack@google.com                            RHC_OP_CODE = 3;
161412855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
161512855Sgabeblack@google.com                            RHC_OP_START = 1;
161612855Sgabeblack@google.com                            wait();
161712855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
161812855Sgabeblack@google.com                                wait();
161912855Sgabeblack@google.com                                continue;
162012855Sgabeblack@google.com                            }
162112855Sgabeblack@google.com                            wait();
162212855Sgabeblack@google.com                            RHC_OP_START = 0;
162312855Sgabeblack@google.com                            wait(); break;
162412855Sgabeblack@google.com			    // } else if(8 == _case_1934_) {
162512855Sgabeblack@google.com			case 8:
162612855Sgabeblack@google.com                            total_data_len = 2;
162712855Sgabeblack@google.com                            if(!(DID_reg[0])) {
162812855Sgabeblack@google.com                                RHC_ADDR1 = 2;
162912855Sgabeblack@google.com                            } else {
163012855Sgabeblack@google.com                                RHC_ADDR1 = 4;
163112855Sgabeblack@google.com                            }
163212855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
163312855Sgabeblack@google.com                            RHC_SIZE = 1;
163412855Sgabeblack@google.com                            RHC_OP_CODE = 3;
163512855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
163612855Sgabeblack@google.com                            RHC_OP_START = 1;
163712855Sgabeblack@google.com                            wait();
163812855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
163912855Sgabeblack@google.com                                wait();
164012855Sgabeblack@google.com                                continue;
164112855Sgabeblack@google.com                            }
164212855Sgabeblack@google.com                            wait();
164312855Sgabeblack@google.com                            RHC_OP_START = 0;
164412855Sgabeblack@google.com                            wait(); break;
164512855Sgabeblack@google.com			    // } else if(9 == _case_1934_) {
164612855Sgabeblack@google.com			case 9:
164712855Sgabeblack@google.com                            total_data_len = 8;
164812855Sgabeblack@google.com                            RHC_ADDR1 = 20;
164912855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
165012855Sgabeblack@google.com                            RHC_SIZE = 4;
165112855Sgabeblack@google.com                            RHC_OP_CODE = 3;
165212855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
165312855Sgabeblack@google.com                            RHC_OP_START = 1;
165412855Sgabeblack@google.com                            wait();
165512855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
165612855Sgabeblack@google.com                                wait();
165712855Sgabeblack@google.com                                continue;
165812855Sgabeblack@google.com                            }
165912855Sgabeblack@google.com                            wait();
166012855Sgabeblack@google.com                            RHC_OP_START = 0;
166112855Sgabeblack@google.com                            wait(); break;
166212855Sgabeblack@google.com			    //  } else if(10 == _case_1934_) {
166312855Sgabeblack@google.com			case 10:
166412855Sgabeblack@google.com                            total_data_len = 2;
166512855Sgabeblack@google.com                            if(!(DID_reg[0])) {
166612855Sgabeblack@google.com                                atemp_2 = 0;
166712855Sgabeblack@google.com                            } else {
166812855Sgabeblack@google.com                                atemp_2 = 1;
166912855Sgabeblack@google.com                            }
167012855Sgabeblack@google.com                            RHC_ADDR1 = atemp_2;
167112855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
167212855Sgabeblack@google.com                            RHC_SIZE = 1;
167312855Sgabeblack@google.com                            RHC_OP_CODE = 3;
167412855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
167512855Sgabeblack@google.com                            RHC_OP_START = 1;
167612855Sgabeblack@google.com                            wait();
167712855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
167812855Sgabeblack@google.com                                wait();
167912855Sgabeblack@google.com                                continue;
168012855Sgabeblack@google.com                            }
168112855Sgabeblack@google.com                            wait();
168212855Sgabeblack@google.com                            RHC_OP_START = 0;
168312855Sgabeblack@google.com                            wait();
168412855Sgabeblack@google.com                            atemp = atemp_2;
168512855Sgabeblack@google.com                            dt = 0;
168612855Sgabeblack@google.com                            EXC_ADDR = atemp;
168712855Sgabeblack@google.com                            EXC_DATA = dt;
168812855Sgabeblack@google.com                            EXC_RW = 0;
168912855Sgabeblack@google.com                            EXC_REQ = 1;
169012855Sgabeblack@google.com                            wait();
169112855Sgabeblack@google.com                            while(1) {
169212855Sgabeblack@google.com                                EXC_REQ = 0;
169312855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
169412855Sgabeblack@google.com                                    wait();
169512855Sgabeblack@google.com                                    break;
169612855Sgabeblack@google.com                                }
169712855Sgabeblack@google.com                                wait();
169812855Sgabeblack@google.com                            } break;
169912855Sgabeblack@google.com			    // } else if(-1 == _case_1934_) {
170012855Sgabeblack@google.com			case -1:
170112855Sgabeblack@google.com                            index = 0;
170212855Sgabeblack@google.com                            GB_1_ind = 1;
170312855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(11));
170412855Sgabeblack@google.com                            EXC_ADDR = atemp;
170512855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
170612855Sgabeblack@google.com                            EXC_RW = 1;
170712855Sgabeblack@google.com                            EXC_REQ = 1;
170812855Sgabeblack@google.com                            wait();
170912855Sgabeblack@google.com                            while(1) {
171012855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
171112855Sgabeblack@google.com                                EXC_REQ = 0;
171212855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
171312855Sgabeblack@google.com                                    wait();
171412855Sgabeblack@google.com                                    break;
171512855Sgabeblack@google.com                                }
171612855Sgabeblack@google.com                                wait();
171712855Sgabeblack@google.com                            }
171812855Sgabeblack@google.com                            atemp_2 = dtemp.range(13,0);
171912855Sgabeblack@google.com                            atemp_3 = (sig_gen_buff_addr, sc_int<7>(24));
172012855Sgabeblack@google.com                            atemp = (sig_gen_buff_addr, sc_int<7>(13));
172112855Sgabeblack@google.com                            EXC_ADDR = atemp;
172212855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
172312855Sgabeblack@google.com                            EXC_RW = 1;
172412855Sgabeblack@google.com                            EXC_REQ = 1;
172512855Sgabeblack@google.com                            wait();
172612855Sgabeblack@google.com                            while(1) {
172712855Sgabeblack@google.com                                dtemp = IBC_DATA.read();
172812855Sgabeblack@google.com                                EXC_REQ = 0;
172912855Sgabeblack@google.com                                if(IBC_GRANT_EXC) {
173012855Sgabeblack@google.com                                    wait();
173112855Sgabeblack@google.com                                    break;
173212855Sgabeblack@google.com                                }
173312855Sgabeblack@google.com                                wait();
173412855Sgabeblack@google.com                            }
173512855Sgabeblack@google.com                            cnt = dtemp.range(11,0);
173612855Sgabeblack@google.com                            total_data_len = dtemp.range(11,0);
173712855Sgabeblack@google.com                            dtemp_1 = -48;
173812855Sgabeblack@google.com                            mem_copy_op_1: while(1) {
173912855Sgabeblack@google.com                                if((cnt) <= 1) {
174012855Sgabeblack@google.com                                    index = 0;
174112855Sgabeblack@google.com                                    wait();
174212855Sgabeblack@google.com                                    break;
174312855Sgabeblack@google.com                                } else {
174412855Sgabeblack@google.com                                    wait();
174512855Sgabeblack@google.com                                }
174612855Sgabeblack@google.com                                if(cnt > (dtemp_1)) {
174712855Sgabeblack@google.com                                    index = dtemp_1.range(7,1);
174812855Sgabeblack@google.com                                    GB_ext_flg = 1;
174912855Sgabeblack@google.com                                    cnt = cnt - (dtemp_1);
175012855Sgabeblack@google.com                                } else {
175112855Sgabeblack@google.com                                    index = cnt.range(7,1);
175212855Sgabeblack@google.com                                    GB_ext_flg = 0;
175312855Sgabeblack@google.com                                    cnt = cnt & 1;
175412855Sgabeblack@google.com                                }
175512855Sgabeblack@google.com                                RHC_ADDR1 = atemp_2;
175612855Sgabeblack@google.com                                RHC_ADDR2 = atemp_3;
175712855Sgabeblack@google.com                                RHC_SIZE = index;
175812855Sgabeblack@google.com                                RHC_OP_CODE = 3;
175912855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
176012855Sgabeblack@google.com                                RHC_OP_START = 1;
176112855Sgabeblack@google.com                                wait();
176212855Sgabeblack@google.com                                while(!RHC_OP_END.read()) {
176312855Sgabeblack@google.com                                    wait();
176412855Sgabeblack@google.com                                    continue;
176512855Sgabeblack@google.com                                }
176612855Sgabeblack@google.com                                wait();
176712855Sgabeblack@google.com                                RHC_OP_START = 0;
176812855Sgabeblack@google.com                                wait();
176912855Sgabeblack@google.com                                if(!GB_ext_flg) {
177012855Sgabeblack@google.com                                    wait();
177112855Sgabeblack@google.com                                    break;
177212855Sgabeblack@google.com                                } else {
177312855Sgabeblack@google.com                                    wait();
177412855Sgabeblack@google.com                                }
177512855Sgabeblack@google.com                                EXC_ADDR = -8192;
177612855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
177712855Sgabeblack@google.com                                EXC_RW = 1;
177812855Sgabeblack@google.com                                EXC_REQ = 1;
177912855Sgabeblack@google.com                                wait();
178012855Sgabeblack@google.com                                while(1) {
178112855Sgabeblack@google.com                                    dtemp = IBC_DATA.read();
178212855Sgabeblack@google.com                                    EXC_REQ = 0;
178312855Sgabeblack@google.com                                    if(IBC_GRANT_EXC) {
178412855Sgabeblack@google.com                                        wait();
178512855Sgabeblack@google.com                                        break;
178612855Sgabeblack@google.com                                    }
178712855Sgabeblack@google.com                                    wait();
178812855Sgabeblack@google.com                                }
178912855Sgabeblack@google.com                                if(GB_1_ind) {
179012855Sgabeblack@google.com                                    link_ptr = dtemp.range(13,7);
179112855Sgabeblack@google.com                                    V_reg = 1;
179212855Sgabeblack@google.com                                    atemp = atemp;
179312855Sgabeblack@google.com                                    dt = dt;
179412855Sgabeblack@google.com                                    wait();
179512855Sgabeblack@google.com                                } else {
179612855Sgabeblack@google.com                                    link_ptr = link_ptr;
179712855Sgabeblack@google.com                                    V_reg = V_reg;
179812855Sgabeblack@google.com                                    atemp = (atemp_4.range(13,7), sc_int<7>(2));
179912855Sgabeblack@google.com                                    dt = (sc_int<3>(-4), dtemp.range(12,0));
180012855Sgabeblack@google.com                                    EXC_ADDR = atemp;
180112855Sgabeblack@google.com                                    EXC_DATA = dt;
180212855Sgabeblack@google.com                                    EXC_RW = 0;
180312855Sgabeblack@google.com                                    EXC_REQ = 1;
180412855Sgabeblack@google.com                                    wait();
180512855Sgabeblack@google.com                                    while(1) {
180612855Sgabeblack@google.com                                        EXC_REQ = 0;
180712855Sgabeblack@google.com                                        if(IBC_GRANT_EXC) {
180812855Sgabeblack@google.com                                            wait();
180912855Sgabeblack@google.com                                            break;
181012855Sgabeblack@google.com                                        }
181112855Sgabeblack@google.com                                        wait();
181212855Sgabeblack@google.com                                    }
181312855Sgabeblack@google.com                                }
181412855Sgabeblack@google.com                                dtemp_1 = -16;
181512855Sgabeblack@google.com                                atemp_2 = atemp_2 + (index);
181612855Sgabeblack@google.com                                atemp_3 = (dtemp.range(13,7), sc_int<7>(8));
181712855Sgabeblack@google.com                                atemp_4 = dtemp.range(13,0);
181812855Sgabeblack@google.com                                GB_1_ind = 0;
181912855Sgabeblack@google.com                            }
182012855Sgabeblack@google.com                            if(!(cnt[0])) {
182112855Sgabeblack@google.com                                wait();
182212855Sgabeblack@google.com                            } else {
182312855Sgabeblack@google.com                                wait();
182412855Sgabeblack@google.com                                atemp = atemp_2 + (index);
182512855Sgabeblack@google.com                                EXC_ADDR = atemp;
182612855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
182712855Sgabeblack@google.com                                EXC_RW = 1;
182812855Sgabeblack@google.com                                EXC_REQ = 1;
182912855Sgabeblack@google.com                                wait();
183012855Sgabeblack@google.com                                while(1) {
183112855Sgabeblack@google.com                                    dtemp = IBC_DATA.read();
183212855Sgabeblack@google.com                                    EXC_REQ = 0;
183312855Sgabeblack@google.com                                    if(IBC_GRANT_EXC) {
183412855Sgabeblack@google.com                                        wait();
183512855Sgabeblack@google.com                                        break;
183612855Sgabeblack@google.com                                    }
183712855Sgabeblack@google.com                                    wait();
183812855Sgabeblack@google.com                                }
183912855Sgabeblack@google.com                                atemp = atemp_3 + (index);
184012855Sgabeblack@google.com                                dt = (sc_int<8>(0), dtemp.range(7,0));
184112855Sgabeblack@google.com                                EXC_ADDR = atemp;
184212855Sgabeblack@google.com                                EXC_DATA = dt;
184312855Sgabeblack@google.com                                EXC_RW = 0;
184412855Sgabeblack@google.com                                EXC_REQ = 1;
184512855Sgabeblack@google.com                                wait();
184612855Sgabeblack@google.com                                while(1) {
184712855Sgabeblack@google.com                                    EXC_REQ = 0;
184812855Sgabeblack@google.com                                    if(IBC_GRANT_EXC) {
184912855Sgabeblack@google.com                                        wait();
185012855Sgabeblack@google.com                                        break;
185112855Sgabeblack@google.com                                    }
185212855Sgabeblack@google.com                                    wait();
185312855Sgabeblack@google.com                                }
185412855Sgabeblack@google.com                            }
185512855Sgabeblack@google.com                            if(!GB_1_ind) {
185612855Sgabeblack@google.com                                atemp = (atemp_4.range(13,7), sc_int<7>(2));
185712855Sgabeblack@google.com                                dt = 0;
185812855Sgabeblack@google.com                                EXC_ADDR = atemp;
185912855Sgabeblack@google.com                                EXC_DATA = dt;
186012855Sgabeblack@google.com                                EXC_RW = 0;
186112855Sgabeblack@google.com                                EXC_REQ = 1;
186212855Sgabeblack@google.com                                wait();
186312855Sgabeblack@google.com                                while(1) {
186412855Sgabeblack@google.com                                    EXC_REQ = 0;
186512855Sgabeblack@google.com                                    if(IBC_GRANT_EXC) {
186612855Sgabeblack@google.com                                        wait();
186712855Sgabeblack@google.com                                        break;
186812855Sgabeblack@google.com                                    }
186912855Sgabeblack@google.com                                    wait();
187012855Sgabeblack@google.com                                }
187112855Sgabeblack@google.com                            } else {
187212855Sgabeblack@google.com                                wait();
187312855Sgabeblack@google.com                            } break;
187412855Sgabeblack@google.com			    // } else {
187512855Sgabeblack@google.com			default:
187612855Sgabeblack@google.com                            err_no_reg = -3;
187712855Sgabeblack@google.com                            rb_flag = 1;
187812855Sgabeblack@google.com                            wait();
187912855Sgabeblack@google.com                        } // end _case_1934_
188012855Sgabeblack@google.com                        if((rb_flag) == 0) {
188112855Sgabeblack@google.com                            wait();
188212855Sgabeblack@google.com                            RHC_ADDR1 = (sig_gen_buff_addr, link_ptr);
188312855Sgabeblack@google.com                            RHC_ADDR2 = (sc_int<2>(0), total_data_len);
188412855Sgabeblack@google.com                            RHC_SIZE = ((sc_int<1>(0), DID_reg), V_reg);
188512855Sgabeblack@google.com                            RHC_OP_CODE = -3;
188612855Sgabeblack@google.com                            RHC_OP_START = 1;
188712855Sgabeblack@google.com                            wait();
188812855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
188912855Sgabeblack@google.com                                wait();
189012855Sgabeblack@google.com                                continue;
189112855Sgabeblack@google.com                            }
189212855Sgabeblack@google.com                            wait();
189312855Sgabeblack@google.com                            RHC_OP_START = 0;
189412855Sgabeblack@google.com                            wait();
189512855Sgabeblack@google.com                            RHC_ADDR1 = (sc_int<8>(9), NHW_reg);
189612855Sgabeblack@google.com                            RHC_ADDR2 = (sc_int<2>(0), total_data_len);
189712855Sgabeblack@google.com                            RHC_SIZE = sig_gen_buff_addr;
189812855Sgabeblack@google.com                            RHC_OP_CODE = -2;
189912855Sgabeblack@google.com                            RHC_OP_START = 1;
190012855Sgabeblack@google.com                            wait();
190112855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
190212855Sgabeblack@google.com                                wait();
190312855Sgabeblack@google.com                                continue;
190412855Sgabeblack@google.com                            }
190512855Sgabeblack@google.com                            wait();
190612855Sgabeblack@google.com                            RHC_OP_START = 0;
190712855Sgabeblack@google.com                            wait();
190812855Sgabeblack@google.com                            RHC_ADDR1 = atemp_1;
190912855Sgabeblack@google.com                            RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(0));
191012855Sgabeblack@google.com                            RHC_OP_CODE = 1;
191112855Sgabeblack@google.com                            EXC_RPBH_ID = id_reg;
191212855Sgabeblack@google.com                            RHC_OP_START = 1;
191312855Sgabeblack@google.com                            wait();
191412855Sgabeblack@google.com                            while(!RHC_OP_END.read()) {
191512855Sgabeblack@google.com                                wait();
191612855Sgabeblack@google.com                                continue;
191712855Sgabeblack@google.com                            }
191812855Sgabeblack@google.com                            wait();
191912855Sgabeblack@google.com                            RHC_OP_START = 0;
192012855Sgabeblack@google.com                            wait();
192112855Sgabeblack@google.com                        } else {
192212855Sgabeblack@google.com                            wait();
192312855Sgabeblack@google.com                        }
192412855Sgabeblack@google.com                    }
192512855Sgabeblack@google.com		    break;
192612855Sgabeblack@google.com		  // } else if(210 == _case_1021_) {
192712855Sgabeblack@google.com		case 210:
192812855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) == 0)) {
192912855Sgabeblack@google.com                        err_no_reg = 1;
193012855Sgabeblack@google.com                        rb_flag = 1;
193112855Sgabeblack@google.com                        wait();
193212855Sgabeblack@google.com                    } else {
193312855Sgabeblack@google.com                        wait();
193412855Sgabeblack@google.com                        err_no_reg = err_no_reg;
193512855Sgabeblack@google.com                        rb_flag = 1;
193612855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(1));
193712855Sgabeblack@google.com                        EXC_ADDR = atemp;
193812855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
193912855Sgabeblack@google.com                        EXC_RW = 1;
194012855Sgabeblack@google.com                        EXC_REQ = 1;
194112855Sgabeblack@google.com                        wait();
194212855Sgabeblack@google.com                        while(1) {
194312855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
194412855Sgabeblack@google.com                            EXC_REQ = 0;
194512855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
194612855Sgabeblack@google.com                                wait();
194712855Sgabeblack@google.com                                break;
194812855Sgabeblack@google.com                            }
194912855Sgabeblack@google.com                            wait();
195012855Sgabeblack@google.com                        }
195112855Sgabeblack@google.com                        cnt = dtemp.range(11,0);
195212855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(10));
195312855Sgabeblack@google.com                        EXC_ADDR = atemp;
195412855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
195512855Sgabeblack@google.com                        EXC_RW = 1;
195612855Sgabeblack@google.com                        EXC_REQ = 1;
195712855Sgabeblack@google.com                        wait();
195812855Sgabeblack@google.com                        while(1) {
195912855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
196012855Sgabeblack@google.com                            EXC_REQ = 0;
196112855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
196212855Sgabeblack@google.com                                wait();
196312855Sgabeblack@google.com                                break;
196412855Sgabeblack@google.com                            }
196512855Sgabeblack@google.com                            wait();
196612855Sgabeblack@google.com                        }
196712855Sgabeblack@google.com                        if((TM_EXC_FIR.read())[3]) {
196812855Sgabeblack@google.com                            dtemp = 4096;
196912855Sgabeblack@google.com                        } else {
197012855Sgabeblack@google.com                            dtemp = dtemp;
197112855Sgabeblack@google.com                        }
197212855Sgabeblack@google.com                        wait();
197312855Sgabeblack@google.com                        _case_2503_ = dtemp;
197412855Sgabeblack@google.com			switch((int)_case_2503_) {
197512855Sgabeblack@google.com			  // if(4 == _case_2503_) {
197612855Sgabeblack@google.com			case 4:
197712855Sgabeblack@google.com                            if((cnt) != 6) {
197812855Sgabeblack@google.com                                err_no_reg = 2;
197912855Sgabeblack@google.com                                wait();
198012855Sgabeblack@google.com                            } else {
198112855Sgabeblack@google.com                                atemp = (sig_gen_buff_addr, sc_int<7>(24));
198212855Sgabeblack@google.com                                EXC_ADDR = atemp;
198312855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
198412855Sgabeblack@google.com                                EXC_RW = 1;
198512855Sgabeblack@google.com                                EXC_REQ = 1;
198612855Sgabeblack@google.com                                wait();
198712855Sgabeblack@google.com                                while(1) {
198812855Sgabeblack@google.com                                    dtemp = IBC_DATA.read();
198912855Sgabeblack@google.com                                    EXC_REQ = 0;
199012855Sgabeblack@google.com                                    if(IBC_GRANT_EXC) {
199112855Sgabeblack@google.com                                        wait();
199212855Sgabeblack@google.com                                        break;
199312855Sgabeblack@google.com                                    }
199412855Sgabeblack@google.com                                    wait();
199512855Sgabeblack@google.com                                }
199612855Sgabeblack@google.com                                dt = (sc_int<1>(1), dtemp.range(14,0));
199712855Sgabeblack@google.com                                if(DID_reg[0]) {
199812855Sgabeblack@google.com                                    atemp = 8;
199912855Sgabeblack@google.com                                    atemp_1 = 9;
200012855Sgabeblack@google.com                                } else {
200112855Sgabeblack@google.com                                    atemp = 16;
200212855Sgabeblack@google.com                                    atemp_1 = 17;
200312855Sgabeblack@google.com                                }
200412855Sgabeblack@google.com                                EXC_ADDR = atemp;
200512855Sgabeblack@google.com                                EXC_DATA = dt;
200612855Sgabeblack@google.com                                EXC_RW = 0;
200712855Sgabeblack@google.com                                EXC_REQ = 1;
200812855Sgabeblack@google.com                                wait();
200912855Sgabeblack@google.com                                while(1) {
201012855Sgabeblack@google.com                                    EXC_REQ = 0;
201112855Sgabeblack@google.com                                    if(IBC_GRANT_EXC) {
201212855Sgabeblack@google.com                                        wait();
201312855Sgabeblack@google.com                                        break;
201412855Sgabeblack@google.com                                    }
201512855Sgabeblack@google.com                                    wait();
201612855Sgabeblack@google.com                                }
201712855Sgabeblack@google.com                                RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(25));
201812855Sgabeblack@google.com                                RHC_ADDR2 = atemp_1;
201912855Sgabeblack@google.com                                RHC_SIZE = 2;
202012855Sgabeblack@google.com                                RHC_OP_CODE = 3;
202112855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
202212855Sgabeblack@google.com                                RHC_OP_START = 1;
202312855Sgabeblack@google.com                                wait();
202412855Sgabeblack@google.com                                while(!RHC_OP_END.read()) {
202512855Sgabeblack@google.com                                    wait();
202612855Sgabeblack@google.com                                    continue;
202712855Sgabeblack@google.com                                }
202812855Sgabeblack@google.com                                wait();
202912855Sgabeblack@google.com                                RHC_OP_START = 0;
203012855Sgabeblack@google.com                                wait();
203112855Sgabeblack@google.com                            } break;
203212855Sgabeblack@google.com			    // } else if(5 == _case_2503_) {
203312855Sgabeblack@google.com			case 5:
203412855Sgabeblack@google.com                            if((cnt) != 64) {
203512855Sgabeblack@google.com                                err_no_reg = 2;
203612855Sgabeblack@google.com                                wait();
203712855Sgabeblack@google.com                            } else {
203812855Sgabeblack@google.com                                RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(24));
203912855Sgabeblack@google.com                                RHC_SIZE = 32;
204012855Sgabeblack@google.com                                if(DID_reg[0]) {
204112855Sgabeblack@google.com                                    RHC_ADDR2 = 64;
204212855Sgabeblack@google.com                                } else {
204312855Sgabeblack@google.com                                    RHC_ADDR2 = 96;
204412855Sgabeblack@google.com                                }
204512855Sgabeblack@google.com                                RHC_OP_CODE = 3;
204612855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
204712855Sgabeblack@google.com                                RHC_OP_START = 1;
204812855Sgabeblack@google.com                                wait();
204912855Sgabeblack@google.com                                while(!RHC_OP_END.read()) {
205012855Sgabeblack@google.com                                    wait();
205112855Sgabeblack@google.com                                    continue;
205212855Sgabeblack@google.com                                }
205312855Sgabeblack@google.com                                wait();
205412855Sgabeblack@google.com                                RHC_OP_START = 0;
205512855Sgabeblack@google.com                                wait();
205612855Sgabeblack@google.com                            } break;
205712855Sgabeblack@google.com			    // } else if(6 == _case_2503_) {
205812855Sgabeblack@google.com			case 6:
205912855Sgabeblack@google.com                            if((cnt) != 64) {
206012855Sgabeblack@google.com                                err_no_reg = 2;
206112855Sgabeblack@google.com                                wait();
206212855Sgabeblack@google.com                            } else {
206312855Sgabeblack@google.com                                RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(24));
206412855Sgabeblack@google.com                                RHC_SIZE = 32;
206512855Sgabeblack@google.com                                if(DID_reg[0]) {
206612855Sgabeblack@google.com                                    RHC_ADDR2 = 128;
206712855Sgabeblack@google.com                                } else {
206812855Sgabeblack@google.com                                    RHC_ADDR2 = 160;
206912855Sgabeblack@google.com                                }
207012855Sgabeblack@google.com                                RHC_OP_CODE = 3;
207112855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
207212855Sgabeblack@google.com                                RHC_OP_START = 1;
207312855Sgabeblack@google.com                                wait();
207412855Sgabeblack@google.com                                while(!RHC_OP_END.read()) {
207512855Sgabeblack@google.com                                    wait();
207612855Sgabeblack@google.com                                    continue;
207712855Sgabeblack@google.com                                }
207812855Sgabeblack@google.com                                wait();
207912855Sgabeblack@google.com                                RHC_OP_START = 0;
208012855Sgabeblack@google.com                                wait();
208112855Sgabeblack@google.com                            } break;
208212855Sgabeblack@google.com			    //  } else if(7 == _case_2503_) {
208312855Sgabeblack@google.com			case 7:
208412855Sgabeblack@google.com                            if(((!MODE_S_P.read()) && ((cnt) != 12)) || (MODE_S_P.read() && ((cnt) != 8))) {
208512855Sgabeblack@google.com                                err_no_reg = 2;
208612855Sgabeblack@google.com                                wait();
208712855Sgabeblack@google.com                            } else {
208812855Sgabeblack@google.com                                RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(24));
208912855Sgabeblack@google.com                                if(!MODE_S_P.read()) {
209012855Sgabeblack@google.com                                    RHC_SIZE = 6;
209112855Sgabeblack@google.com                                } else {
209212855Sgabeblack@google.com                                    RHC_SIZE = 4;
209312855Sgabeblack@google.com                                }
209412855Sgabeblack@google.com                                if(DID_reg[0]) {
209512855Sgabeblack@google.com                                    RHC_ADDR2 = 32;
209612855Sgabeblack@google.com                                } else {
209712855Sgabeblack@google.com                                    RHC_ADDR2 = 48;
209812855Sgabeblack@google.com                                }
209912855Sgabeblack@google.com                                RHC_OP_CODE = 3;
210012855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
210112855Sgabeblack@google.com                                RHC_OP_START = 1;
210212855Sgabeblack@google.com                                wait();
210312855Sgabeblack@google.com                                while(!RHC_OP_END.read()) {
210412855Sgabeblack@google.com                                    wait();
210512855Sgabeblack@google.com                                    continue;
210612855Sgabeblack@google.com                                }
210712855Sgabeblack@google.com                                wait();
210812855Sgabeblack@google.com                                RHC_OP_START = 0;
210912855Sgabeblack@google.com                                wait();
211012855Sgabeblack@google.com                            } break;
211112855Sgabeblack@google.com			    // } else if(8 == _case_2503_) {
211212855Sgabeblack@google.com			case 8:
211312855Sgabeblack@google.com                            if((cnt) != 2) {
211412855Sgabeblack@google.com                                err_no_reg = 2;
211512855Sgabeblack@google.com                                wait();
211612855Sgabeblack@google.com                            } else {
211712855Sgabeblack@google.com                                atemp = (sig_gen_buff_addr, sc_int<7>(24));
211812855Sgabeblack@google.com                                if(DID_reg[0]) {
211912855Sgabeblack@google.com                                    atemp_1 = 2;
212012855Sgabeblack@google.com                                } else {
212112855Sgabeblack@google.com                                    atemp_1 = 4;
212212855Sgabeblack@google.com                                }
212312855Sgabeblack@google.com                                RHC_ADDR1 = atemp;
212412855Sgabeblack@google.com                                RHC_ADDR2 = atemp_1;
212512855Sgabeblack@google.com                                RHC_SIZE = 1;
212612855Sgabeblack@google.com                                RHC_OP_CODE = 3;
212712855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
212812855Sgabeblack@google.com                                RHC_OP_START = 1;
212912855Sgabeblack@google.com                                wait();
213012855Sgabeblack@google.com                                while(!RHC_OP_END.read()) {
213112855Sgabeblack@google.com                                    wait();
213212855Sgabeblack@google.com                                    continue;
213312855Sgabeblack@google.com                                }
213412855Sgabeblack@google.com                                wait();
213512855Sgabeblack@google.com                                RHC_OP_START = 0;
213612855Sgabeblack@google.com                                wait();
213712855Sgabeblack@google.com                            } break;
213812855Sgabeblack@google.com			    // } else if(9 == _case_2503_) {
213912855Sgabeblack@google.com			case 9:
214012855Sgabeblack@google.com                            if((cnt) != 8) {
214112855Sgabeblack@google.com                                err_no_reg = 2;
214212855Sgabeblack@google.com                                wait();
214312855Sgabeblack@google.com                            } else {
214412855Sgabeblack@google.com                                RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(24));
214512855Sgabeblack@google.com                                RHC_ADDR2 = 20;
214612855Sgabeblack@google.com                                RHC_SIZE = 4;
214712855Sgabeblack@google.com                                RHC_OP_CODE = 3;
214812855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
214912855Sgabeblack@google.com                                RHC_OP_START = 1;
215012855Sgabeblack@google.com                                wait();
215112855Sgabeblack@google.com                                while(!RHC_OP_END.read()) {
215212855Sgabeblack@google.com                                    wait();
215312855Sgabeblack@google.com                                    continue;
215412855Sgabeblack@google.com                                }
215512855Sgabeblack@google.com                                wait();
215612855Sgabeblack@google.com                                RHC_OP_START = 0;
215712855Sgabeblack@google.com                                wait();
215812855Sgabeblack@google.com                            } break;
215912855Sgabeblack@google.com			    // } else if(-1 == _case_2503_) {
216012855Sgabeblack@google.com			case -1:
216112855Sgabeblack@google.com                            wt_mem: do {
216212855Sgabeblack@google.com                                atemp = (sig_gen_buff_addr, sc_int<7>(11));
216312855Sgabeblack@google.com                                EXC_ADDR = atemp;
216412855Sgabeblack@google.com                                EXC_RPBH_ID = id_reg;
216512855Sgabeblack@google.com                                EXC_RW = 1;
216612855Sgabeblack@google.com                                EXC_REQ = 1;
216712855Sgabeblack@google.com                                wait();
216812855Sgabeblack@google.com                                while(1) {
216912855Sgabeblack@google.com                                    dtemp = IBC_DATA.read();
217012855Sgabeblack@google.com                                    EXC_REQ = 0;
217112855Sgabeblack@google.com                                    if(IBC_GRANT_EXC) {
217212855Sgabeblack@google.com                                        wait();
217312855Sgabeblack@google.com                                        break;
217412855Sgabeblack@google.com                                    }
217512855Sgabeblack@google.com                                    wait();
217612855Sgabeblack@google.com                                }
217712855Sgabeblack@google.com                                atemp_2 = dtemp.range(13,0);
217812855Sgabeblack@google.com                                atemp_1 = (sig_gen_buff_addr, sc_int<7>(24));
217912855Sgabeblack@google.com                                GB_copy_op_1: while(1) {
218012855Sgabeblack@google.com                                    if((cnt) <= 1) {
218112855Sgabeblack@google.com                                        wait();
218212855Sgabeblack@google.com                                        break;
218312855Sgabeblack@google.com                                    } else {
218412855Sgabeblack@google.com                                        atemp = atemp_1;
218512855Sgabeblack@google.com                                        EXC_ADDR = atemp;
218612855Sgabeblack@google.com                                        EXC_RPBH_ID = id_reg;
218712855Sgabeblack@google.com                                        EXC_RW = 1;
218812855Sgabeblack@google.com                                        EXC_REQ = 1;
218912855Sgabeblack@google.com                                        wait();
219012855Sgabeblack@google.com                                        while(1) {
219112855Sgabeblack@google.com                                            dtemp = IBC_DATA.read();
219212855Sgabeblack@google.com                                            EXC_REQ = 0;
219312855Sgabeblack@google.com                                            if(IBC_GRANT_EXC) {
219412855Sgabeblack@google.com                                                wait();
219512855Sgabeblack@google.com                                                break;
219612855Sgabeblack@google.com                                            }
219712855Sgabeblack@google.com                                            wait();
219812855Sgabeblack@google.com                                        }
219912855Sgabeblack@google.com                                        atemp = atemp_2;
220012855Sgabeblack@google.com                                        dt = dtemp;
220112855Sgabeblack@google.com                                        EXC_ADDR = atemp;
220212855Sgabeblack@google.com                                        EXC_DATA = dt;
220312855Sgabeblack@google.com                                        EXC_RW = 0;
220412855Sgabeblack@google.com                                        EXC_REQ = 1;
220512855Sgabeblack@google.com                                        wait();
220612855Sgabeblack@google.com                                        while(1) {
220712855Sgabeblack@google.com                                            EXC_REQ = 0;
220812855Sgabeblack@google.com                                            if(IBC_GRANT_EXC) {
220912855Sgabeblack@google.com                                                wait();
221012855Sgabeblack@google.com                                                break;
221112855Sgabeblack@google.com                                            }
221212855Sgabeblack@google.com                                            wait();
221312855Sgabeblack@google.com                                        }
221412855Sgabeblack@google.com                                        atemp_1 = (atemp_1) + 1;
221512855Sgabeblack@google.com                                        atemp_2 = (atemp_2) + 1;
221612855Sgabeblack@google.com                                        cnt = (cnt) - 2;
221712855Sgabeblack@google.com                                        if(atemp_1 <= ((sig_gen_buff_addr, sc_int<7>(-1)))) {
221812855Sgabeblack@google.com                                            wait();
221912855Sgabeblack@google.com                                            continue;
222012855Sgabeblack@google.com                                        } else {
222112855Sgabeblack@google.com                                            atemp = (sig_gen_buff_addr, sc_int<7>(2));
222212855Sgabeblack@google.com                                            EXC_ADDR = atemp;
222312855Sgabeblack@google.com                                            EXC_RPBH_ID = id_reg;
222412855Sgabeblack@google.com                                            EXC_RW = 1;
222512855Sgabeblack@google.com                                            EXC_REQ = 1;
222612855Sgabeblack@google.com                                            wait();
222712855Sgabeblack@google.com                                            while(1) {
222812855Sgabeblack@google.com                                                dtemp = IBC_DATA.read();
222912855Sgabeblack@google.com                                                EXC_REQ = 0;
223012855Sgabeblack@google.com                                                if(IBC_GRANT_EXC) {
223112855Sgabeblack@google.com                                                    wait();
223212855Sgabeblack@google.com                                                    break;
223312855Sgabeblack@google.com                                                }
223412855Sgabeblack@google.com                                                wait();
223512855Sgabeblack@google.com                                            }
223612855Sgabeblack@google.com                                            dt = ((sc_int<1>(0), sig_gen_buff_addr), sc_int<8>(0));
223712855Sgabeblack@google.com                                            EXC_ADDR = -8192;
223812855Sgabeblack@google.com                                            EXC_DATA = dt;
223912855Sgabeblack@google.com                                            EXC_RW = 0;
224012855Sgabeblack@google.com                                            EXC_REQ = 1;
224112855Sgabeblack@google.com                                            wait();
224212855Sgabeblack@google.com                                            while(1) {
224312855Sgabeblack@google.com                                                EXC_REQ = 0;
224412855Sgabeblack@google.com                                                if(IBC_GRANT_EXC) {
224512855Sgabeblack@google.com                                                    wait();
224612855Sgabeblack@google.com                                                    break;
224712855Sgabeblack@google.com                                                }
224812855Sgabeblack@google.com                                                wait();
224912855Sgabeblack@google.com                                            }
225012855Sgabeblack@google.com                                            sig_gen_buff_addr = dtemp.range(13,7);
225112855Sgabeblack@google.com                                            atemp_1 = (sig_gen_buff_addr, sc_int<7>(8));
225212855Sgabeblack@google.com                                        }
225312855Sgabeblack@google.com                                    }
225412855Sgabeblack@google.com                                }
225512855Sgabeblack@google.com                                if(!(cnt[0])) {
225612855Sgabeblack@google.com                                    wait();
225712855Sgabeblack@google.com                                    break; //goto _wt_mem__END;
225812855Sgabeblack@google.com                                } else {
225912855Sgabeblack@google.com                                    atemp = atemp_1;
226012855Sgabeblack@google.com                                    EXC_ADDR = atemp;
226112855Sgabeblack@google.com                                    EXC_RPBH_ID = id_reg;
226212855Sgabeblack@google.com                                    EXC_RW = 1;
226312855Sgabeblack@google.com                                    EXC_REQ = 1;
226412855Sgabeblack@google.com                                    wait();
226512855Sgabeblack@google.com                                    while(1) {
226612855Sgabeblack@google.com                                        dtemp = IBC_DATA.read();
226712855Sgabeblack@google.com                                        EXC_REQ = 0;
226812855Sgabeblack@google.com                                        if(IBC_GRANT_EXC) {
226912855Sgabeblack@google.com                                            wait();
227012855Sgabeblack@google.com                                            break;
227112855Sgabeblack@google.com                                        }
227212855Sgabeblack@google.com                                        wait();
227312855Sgabeblack@google.com                                    }
227412855Sgabeblack@google.com                                    atemp_3.range(7,0) = dtemp.range(7,0);
227512855Sgabeblack@google.com                                    atemp = atemp_2;
227612855Sgabeblack@google.com                                    EXC_ADDR = atemp;
227712855Sgabeblack@google.com                                    EXC_RPBH_ID = id_reg;
227812855Sgabeblack@google.com                                    EXC_RW = 1;
227912855Sgabeblack@google.com                                    EXC_REQ = 1;
228012855Sgabeblack@google.com                                    wait();
228112855Sgabeblack@google.com                                    while(1) {
228212855Sgabeblack@google.com                                        dtemp = IBC_DATA.read();
228312855Sgabeblack@google.com                                        EXC_REQ = 0;
228412855Sgabeblack@google.com                                        if(IBC_GRANT_EXC) {
228512855Sgabeblack@google.com                                            wait();
228612855Sgabeblack@google.com                                            break;
228712855Sgabeblack@google.com                                        }
228812855Sgabeblack@google.com                                        wait();
228912855Sgabeblack@google.com                                    }
229012855Sgabeblack@google.com                                    dt = (dtemp.range(15,8), atemp_3.range(7,0));
229112855Sgabeblack@google.com                                    EXC_ADDR = atemp;
229212855Sgabeblack@google.com                                    EXC_DATA = dt;
229312855Sgabeblack@google.com                                    EXC_RW = 0;
229412855Sgabeblack@google.com                                    EXC_REQ = 1;
229512855Sgabeblack@google.com                                    wait();
229612855Sgabeblack@google.com                                    while(1) {
229712855Sgabeblack@google.com                                        EXC_REQ = 0;
229812855Sgabeblack@google.com                                        if(IBC_GRANT_EXC) {
229912855Sgabeblack@google.com                                            wait();
230012855Sgabeblack@google.com                                            break;
230112855Sgabeblack@google.com                                        }
230212855Sgabeblack@google.com                                        wait();
230312855Sgabeblack@google.com                                    }
230412855Sgabeblack@google.com                                }
230512855Sgabeblack@google.com                            _wt_mem__END:; }while(0);
230612855Sgabeblack@google.com			    break;
230712855Sgabeblack@google.com			//  } else {
230812855Sgabeblack@google.com			default:
230912855Sgabeblack@google.com                            err_no_reg = -3;
231012855Sgabeblack@google.com                            wait();
231112855Sgabeblack@google.com                        } // end _case_2503_
231212855Sgabeblack@google.com                    }
231312855Sgabeblack@google.com		    break;
231412855Sgabeblack@google.com		    //  } else if(176 == _case_1021_) {
231512855Sgabeblack@google.com		case 176:
231612855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) != 0)) {
231712855Sgabeblack@google.com                        err_no_reg = 1;
231812855Sgabeblack@google.com                        rb_flag = 1;
231912855Sgabeblack@google.com                        wait();
232012855Sgabeblack@google.com                    } else {
232112855Sgabeblack@google.com                        wait();
232212855Sgabeblack@google.com                        rb_flag = rb_flag;
232312855Sgabeblack@google.com                        id_reg = 1;
232412855Sgabeblack@google.com                        if(!MODE_S_P.read()) {
232512855Sgabeblack@google.com                            total_data_len = 156;
232612855Sgabeblack@google.com                        } else {
232712855Sgabeblack@google.com                            total_data_len = 152;
232812855Sgabeblack@google.com                        }
232912855Sgabeblack@google.com                        RSN_reg = 10;
233012855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(0));
233112855Sgabeblack@google.com                        RHC_ADDR2 = (sc_int<2>(0), total_data_len);
233212855Sgabeblack@google.com                        RHC_SIZE = 20;
233312855Sgabeblack@google.com                        RHC_OP_CODE = -3;
233412855Sgabeblack@google.com                        RHC_OP_START = 1;
233512855Sgabeblack@google.com                        wait();
233612855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
233712855Sgabeblack@google.com                            wait();
233812855Sgabeblack@google.com                            continue;
233912855Sgabeblack@google.com                        }
234012855Sgabeblack@google.com                        wait();
234112855Sgabeblack@google.com                        RHC_OP_START = 0;
234212855Sgabeblack@google.com                        wait();
234312855Sgabeblack@google.com                        RHC_ADDR1 = (RSN_reg, sc_int<6>(1));
234412855Sgabeblack@google.com                        RHC_ADDR2 = (sc_int<2>(0), total_data_len);
234512855Sgabeblack@google.com                        RHC_SIZE = sig_gen_buff_addr;
234612855Sgabeblack@google.com                        RHC_OP_CODE = -2;
234712855Sgabeblack@google.com                        RHC_OP_START = 1;
234812855Sgabeblack@google.com                        wait();
234912855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
235012855Sgabeblack@google.com                            wait();
235112855Sgabeblack@google.com                            continue;
235212855Sgabeblack@google.com                        }
235312855Sgabeblack@google.com                        wait();
235412855Sgabeblack@google.com                        RHC_OP_START = 0;
235512855Sgabeblack@google.com                        wait();
235612855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(10));
235712855Sgabeblack@google.com                        dt = 0;
235812855Sgabeblack@google.com                        EXC_ADDR = atemp;
235912855Sgabeblack@google.com                        EXC_DATA = dt;
236012855Sgabeblack@google.com                        EXC_RW = 0;
236112855Sgabeblack@google.com                        EXC_REQ = 1;
236212855Sgabeblack@google.com                        wait();
236312855Sgabeblack@google.com                        while(1) {
236412855Sgabeblack@google.com                            EXC_REQ = 0;
236512855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
236612855Sgabeblack@google.com                                wait();
236712855Sgabeblack@google.com                                break;
236812855Sgabeblack@google.com                            }
236912855Sgabeblack@google.com                            wait();
237012855Sgabeblack@google.com                        }
237112855Sgabeblack@google.com                        RHC_ADDR1 = 8;
237212855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
237312855Sgabeblack@google.com                        RHC_SIZE = 3;
237412855Sgabeblack@google.com                        RHC_OP_CODE = 3;
237512855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
237612855Sgabeblack@google.com                        RHC_OP_START = 1;
237712855Sgabeblack@google.com                        wait();
237812855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
237912855Sgabeblack@google.com                            wait();
238012855Sgabeblack@google.com                            continue;
238112855Sgabeblack@google.com                        }
238212855Sgabeblack@google.com                        wait();
238312855Sgabeblack@google.com                        RHC_OP_START = 0;
238412855Sgabeblack@google.com                        wait();
238512855Sgabeblack@google.com                        RHC_ADDR1 = 64;
238612855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(27));
238712855Sgabeblack@google.com                        RHC_SIZE = 32;
238812855Sgabeblack@google.com                        RHC_OP_CODE = 3;
238912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
239012855Sgabeblack@google.com                        RHC_OP_START = 1;
239112855Sgabeblack@google.com                        wait();
239212855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
239312855Sgabeblack@google.com                            wait();
239412855Sgabeblack@google.com                            continue;
239512855Sgabeblack@google.com                        }
239612855Sgabeblack@google.com                        wait();
239712855Sgabeblack@google.com                        RHC_OP_START = 0;
239812855Sgabeblack@google.com                        wait();
239912855Sgabeblack@google.com                        RHC_ADDR1 = 128;
240012855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(59));
240112855Sgabeblack@google.com                        RHC_OP_CODE = 3;
240212855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
240312855Sgabeblack@google.com                        RHC_OP_START = 1;
240412855Sgabeblack@google.com                        wait();
240512855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
240612855Sgabeblack@google.com                            wait();
240712855Sgabeblack@google.com                            continue;
240812855Sgabeblack@google.com                        }
240912855Sgabeblack@google.com                        wait();
241012855Sgabeblack@google.com                        RHC_OP_START = 0;
241112855Sgabeblack@google.com                        wait();
241212855Sgabeblack@google.com                        RHC_ADDR1 = 32;
241312855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(-37));
241412855Sgabeblack@google.com                        if(!MODE_S_P.read()) {
241512855Sgabeblack@google.com                            atemp_1 = (sig_gen_buff_addr, sc_int<7>(-31));
241612855Sgabeblack@google.com                            atemp_2 = (sig_gen_buff_addr, sc_int<7>(-30));
241712855Sgabeblack@google.com                            atemp_3 = 6;
241812855Sgabeblack@google.com                            RHC_SIZE = 6;
241912855Sgabeblack@google.com                        } else {
242012855Sgabeblack@google.com                            atemp_1 = (sig_gen_buff_addr, sc_int<7>(-33));
242112855Sgabeblack@google.com                            atemp_2 = (sig_gen_buff_addr, sc_int<7>(-32));
242212855Sgabeblack@google.com                            atemp_3 = 4;
242312855Sgabeblack@google.com                            RHC_SIZE = 4;
242412855Sgabeblack@google.com                        }
242512855Sgabeblack@google.com                        RHC_OP_CODE = 3;
242612855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
242712855Sgabeblack@google.com                        RHC_OP_START = 1;
242812855Sgabeblack@google.com                        wait();
242912855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
243012855Sgabeblack@google.com                            wait();
243112855Sgabeblack@google.com                            continue;
243212855Sgabeblack@google.com                        }
243312855Sgabeblack@google.com                        wait();
243412855Sgabeblack@google.com                        RHC_OP_START = 0;
243512855Sgabeblack@google.com                        wait();
243612855Sgabeblack@google.com                        RHC_ADDR1 = 2;
243712855Sgabeblack@google.com                        RHC_ADDR2 = atemp_1;
243812855Sgabeblack@google.com                        RHC_SIZE = 1;
243912855Sgabeblack@google.com                        RHC_OP_CODE = 3;
244012855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
244112855Sgabeblack@google.com                        RHC_OP_START = 1;
244212855Sgabeblack@google.com                        wait();
244312855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
244412855Sgabeblack@google.com                            wait();
244512855Sgabeblack@google.com                            continue;
244612855Sgabeblack@google.com                        }
244712855Sgabeblack@google.com                        wait();
244812855Sgabeblack@google.com                        RHC_OP_START = 0;
244912855Sgabeblack@google.com                        wait();
245012855Sgabeblack@google.com                        RHC_ADDR1 = 20;
245112855Sgabeblack@google.com                        RHC_ADDR2 = atemp_2;
245212855Sgabeblack@google.com                        RHC_SIZE = 4;
245312855Sgabeblack@google.com                        RHC_OP_CODE = 3;
245412855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
245512855Sgabeblack@google.com                        RHC_OP_START = 1;
245612855Sgabeblack@google.com                        wait();
245712855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
245812855Sgabeblack@google.com                            wait();
245912855Sgabeblack@google.com                            continue;
246012855Sgabeblack@google.com                        }
246112855Sgabeblack@google.com                        wait();
246212855Sgabeblack@google.com                        RHC_OP_START = 0;
246312855Sgabeblack@google.com                        wait();
246412855Sgabeblack@google.com                        RHC_ADDR1 = 272;
246512855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(0));
246612855Sgabeblack@google.com                        RHC_OP_CODE = 1;
246712855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
246812855Sgabeblack@google.com                        RHC_OP_START = 1;
246912855Sgabeblack@google.com                        wait();
247012855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
247112855Sgabeblack@google.com                            wait();
247212855Sgabeblack@google.com                            continue;
247312855Sgabeblack@google.com                        }
247412855Sgabeblack@google.com                        wait();
247512855Sgabeblack@google.com                        RHC_OP_START = 0;
247612855Sgabeblack@google.com                        wait();
247712855Sgabeblack@google.com                        id_reg = -2;
247812855Sgabeblack@google.com                        EXC_ADDR = -8192;
247912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
248012855Sgabeblack@google.com                        EXC_RW = 1;
248112855Sgabeblack@google.com                        EXC_REQ = 1;
248212855Sgabeblack@google.com                        wait();
248312855Sgabeblack@google.com                        while(1) {
248412855Sgabeblack@google.com                            dtemp = IBC_DATA.read();
248512855Sgabeblack@google.com                            EXC_REQ = 0;
248612855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
248712855Sgabeblack@google.com                                wait();
248812855Sgabeblack@google.com                                break;
248912855Sgabeblack@google.com                            }
249012855Sgabeblack@google.com                            wait();
249112855Sgabeblack@google.com                        }
249212855Sgabeblack@google.com                        sig_gen_buff_addr = dtemp.range(13,7);
249312855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(0));
249412855Sgabeblack@google.com                        RHC_ADDR2 = (sc_int<2>(0), total_data_len);
249512855Sgabeblack@google.com                        RHC_SIZE = 22;
249612855Sgabeblack@google.com                        RHC_OP_CODE = -3;
249712855Sgabeblack@google.com                        RHC_OP_START = 1;
249812855Sgabeblack@google.com                        wait();
249912855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
250012855Sgabeblack@google.com                            wait();
250112855Sgabeblack@google.com                            continue;
250212855Sgabeblack@google.com                        }
250312855Sgabeblack@google.com                        wait();
250412855Sgabeblack@google.com                        RHC_OP_START = 0;
250512855Sgabeblack@google.com                        wait();
250612855Sgabeblack@google.com                        RHC_ADDR1 = (RSN_reg, sc_int<6>(1));
250712855Sgabeblack@google.com                        RHC_ADDR2 = (sc_int<2>(0), total_data_len);
250812855Sgabeblack@google.com                        RHC_SIZE = sig_gen_buff_addr;
250912855Sgabeblack@google.com                        RHC_OP_CODE = -2;
251012855Sgabeblack@google.com                        RHC_OP_START = 1;
251112855Sgabeblack@google.com                        wait();
251212855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
251312855Sgabeblack@google.com                            wait();
251412855Sgabeblack@google.com                            continue;
251512855Sgabeblack@google.com                        }
251612855Sgabeblack@google.com                        wait();
251712855Sgabeblack@google.com                        RHC_OP_START = 0;
251812855Sgabeblack@google.com                        wait();
251912855Sgabeblack@google.com                        atemp = (sig_gen_buff_addr, sc_int<7>(10));
252012855Sgabeblack@google.com                        dt = 0;
252112855Sgabeblack@google.com                        EXC_ADDR = atemp;
252212855Sgabeblack@google.com                        EXC_DATA = dt;
252312855Sgabeblack@google.com                        EXC_RW = 0;
252412855Sgabeblack@google.com                        EXC_REQ = 1;
252512855Sgabeblack@google.com                        wait();
252612855Sgabeblack@google.com                        while(1) {
252712855Sgabeblack@google.com                            EXC_REQ = 0;
252812855Sgabeblack@google.com                            if(IBC_GRANT_EXC) {
252912855Sgabeblack@google.com                                wait();
253012855Sgabeblack@google.com                                break;
253112855Sgabeblack@google.com                            }
253212855Sgabeblack@google.com                            wait();
253312855Sgabeblack@google.com                        }
253412855Sgabeblack@google.com                        RHC_ADDR1 = 16;
253512855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(24));
253612855Sgabeblack@google.com                        RHC_SIZE = 3;
253712855Sgabeblack@google.com                        RHC_OP_CODE = 3;
253812855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
253912855Sgabeblack@google.com                        RHC_OP_START = 1;
254012855Sgabeblack@google.com                        wait();
254112855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
254212855Sgabeblack@google.com                            wait();
254312855Sgabeblack@google.com                            continue;
254412855Sgabeblack@google.com                        }
254512855Sgabeblack@google.com                        wait();
254612855Sgabeblack@google.com                        RHC_OP_START = 0;
254712855Sgabeblack@google.com                        wait();
254812855Sgabeblack@google.com                        RHC_ADDR1 = 96;
254912855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(27));
255012855Sgabeblack@google.com                        RHC_SIZE = 32;
255112855Sgabeblack@google.com                        RHC_OP_CODE = 3;
255212855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
255312855Sgabeblack@google.com                        RHC_OP_START = 1;
255412855Sgabeblack@google.com                        wait();
255512855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
255612855Sgabeblack@google.com                            wait();
255712855Sgabeblack@google.com                            continue;
255812855Sgabeblack@google.com                        }
255912855Sgabeblack@google.com                        wait();
256012855Sgabeblack@google.com                        RHC_OP_START = 0;
256112855Sgabeblack@google.com                        wait();
256212855Sgabeblack@google.com                        RHC_ADDR1 = 160;
256312855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(59));
256412855Sgabeblack@google.com                        RHC_OP_CODE = 3;
256512855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
256612855Sgabeblack@google.com                        RHC_OP_START = 1;
256712855Sgabeblack@google.com                        wait();
256812855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
256912855Sgabeblack@google.com                            wait();
257012855Sgabeblack@google.com                            continue;
257112855Sgabeblack@google.com                        }
257212855Sgabeblack@google.com                        wait();
257312855Sgabeblack@google.com                        RHC_OP_START = 0;
257412855Sgabeblack@google.com                        wait();
257512855Sgabeblack@google.com                        RHC_ADDR1 = 48;
257612855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(-37));
257712855Sgabeblack@google.com                        RHC_SIZE = atemp_3.range(6,0);
257812855Sgabeblack@google.com                        RHC_OP_CODE = 3;
257912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
258012855Sgabeblack@google.com                        RHC_OP_START = 1;
258112855Sgabeblack@google.com                        wait();
258212855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
258312855Sgabeblack@google.com                            wait();
258412855Sgabeblack@google.com                            continue;
258512855Sgabeblack@google.com                        }
258612855Sgabeblack@google.com                        wait();
258712855Sgabeblack@google.com                        RHC_OP_START = 0;
258812855Sgabeblack@google.com                        wait();
258912855Sgabeblack@google.com                        RHC_ADDR1 = 4;
259012855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr.range(6,0), atemp_1.range(6,0));
259112855Sgabeblack@google.com                        RHC_SIZE = 1;
259212855Sgabeblack@google.com                        RHC_OP_CODE = 3;
259312855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
259412855Sgabeblack@google.com                        RHC_OP_START = 1;
259512855Sgabeblack@google.com                        wait();
259612855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
259712855Sgabeblack@google.com                            wait();
259812855Sgabeblack@google.com                            continue;
259912855Sgabeblack@google.com                        }
260012855Sgabeblack@google.com                        wait();
260112855Sgabeblack@google.com                        RHC_OP_START = 0;
260212855Sgabeblack@google.com                        wait();
260312855Sgabeblack@google.com                        RHC_ADDR1 = 20;
260412855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr.range(6,0), atemp_2.range(6,0));
260512855Sgabeblack@google.com                        RHC_SIZE = 4;
260612855Sgabeblack@google.com                        RHC_OP_CODE = 3;
260712855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
260812855Sgabeblack@google.com                        RHC_OP_START = 1;
260912855Sgabeblack@google.com                        wait();
261012855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
261112855Sgabeblack@google.com                            wait();
261212855Sgabeblack@google.com                            continue;
261312855Sgabeblack@google.com                        }
261412855Sgabeblack@google.com                        wait();
261512855Sgabeblack@google.com                        RHC_OP_START = 0;
261612855Sgabeblack@google.com                        wait();
261712855Sgabeblack@google.com                        RHC_ADDR1 = 288;
261812855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr.range(6,0), sc_int<7>(0));
261912855Sgabeblack@google.com                        RHC_OP_CODE = 1;
262012855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
262112855Sgabeblack@google.com                        RHC_OP_START = 1;
262212855Sgabeblack@google.com                        wait();
262312855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
262412855Sgabeblack@google.com                            wait();
262512855Sgabeblack@google.com                            continue;
262612855Sgabeblack@google.com                        }
262712855Sgabeblack@google.com                        wait();
262812855Sgabeblack@google.com                        RHC_OP_START = 0;
262912855Sgabeblack@google.com                        wait();
263012855Sgabeblack@google.com                    }
263112855Sgabeblack@google.com		  break;
263212855Sgabeblack@google.com		  // } else if(10 == _case_1021_) {
263312855Sgabeblack@google.com		case 10:
263412855Sgabeblack@google.com                    if(((MET_reg) != 3) || ((DID_reg) == 0)) {
263512855Sgabeblack@google.com                        err_no_reg = 1;
263612855Sgabeblack@google.com                        rb_flag = 1;
263712855Sgabeblack@google.com                        wait();
263812855Sgabeblack@google.com                    } else {
263912855Sgabeblack@google.com                        err_no_reg = err_no_reg;
264012855Sgabeblack@google.com                        rb_flag = rb_flag;
264112855Sgabeblack@google.com                        wait();
264212855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(24));
264312855Sgabeblack@google.com                        if(DID_reg[0]) {
264412855Sgabeblack@google.com                            atemp_1 = 128;
264512855Sgabeblack@google.com                            atemp_2 = 32;
264612855Sgabeblack@google.com                            atemp_3 = 2;
264712855Sgabeblack@google.com                            atemp_4 = 272;
264812855Sgabeblack@google.com                            atemp = 64;
264912855Sgabeblack@google.com                            DID_reg = 10;
265012855Sgabeblack@google.com                            RHC_ADDR2 = 8;
265112855Sgabeblack@google.com                        } else {
265212855Sgabeblack@google.com                            atemp_1 = 160;
265312855Sgabeblack@google.com                            atemp_2 = 48;
265412855Sgabeblack@google.com                            atemp_3 = 4;
265512855Sgabeblack@google.com                            atemp_4 = 288;
265612855Sgabeblack@google.com                            atemp = 96;
265712855Sgabeblack@google.com                            DID_reg = 11;
265812855Sgabeblack@google.com                            RHC_ADDR2 = 16;
265912855Sgabeblack@google.com                        }
266012855Sgabeblack@google.com                        RHC_SIZE = 3;
266112855Sgabeblack@google.com                        RHC_OP_CODE = 3;
266212855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
266312855Sgabeblack@google.com                        RHC_OP_START = 1;
266412855Sgabeblack@google.com                        wait();
266512855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
266612855Sgabeblack@google.com                            wait();
266712855Sgabeblack@google.com                            continue;
266812855Sgabeblack@google.com                        }
266912855Sgabeblack@google.com                        wait();
267012855Sgabeblack@google.com                        RHC_OP_START = 0;
267112855Sgabeblack@google.com                        wait();
267212855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(27));
267312855Sgabeblack@google.com                        RHC_ADDR2 = atemp;
267412855Sgabeblack@google.com                        RHC_SIZE = 32;
267512855Sgabeblack@google.com                        RHC_OP_CODE = 3;
267612855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
267712855Sgabeblack@google.com                        RHC_OP_START = 1;
267812855Sgabeblack@google.com                        wait();
267912855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
268012855Sgabeblack@google.com                            wait();
268112855Sgabeblack@google.com                            continue;
268212855Sgabeblack@google.com                        }
268312855Sgabeblack@google.com                        wait();
268412855Sgabeblack@google.com                        RHC_OP_START = 0;
268512855Sgabeblack@google.com                        wait();
268612855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(59));
268712855Sgabeblack@google.com                        RHC_ADDR2 = atemp_1;
268812855Sgabeblack@google.com                        RHC_OP_CODE = 3;
268912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
269012855Sgabeblack@google.com                        RHC_OP_START = 1;
269112855Sgabeblack@google.com                        wait();
269212855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
269312855Sgabeblack@google.com                            wait();
269412855Sgabeblack@google.com                            continue;
269512855Sgabeblack@google.com                        }
269612855Sgabeblack@google.com                        wait();
269712855Sgabeblack@google.com                        RHC_OP_START = 0;
269812855Sgabeblack@google.com                        wait();
269912855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(-37));
270012855Sgabeblack@google.com                        RHC_ADDR2 = atemp_2;
270112855Sgabeblack@google.com                        if(!MODE_S_P.read()) {
270212855Sgabeblack@google.com                            atemp_1 = -3743;
270312855Sgabeblack@google.com                            RHC_SIZE = 6;
270412855Sgabeblack@google.com                        } else {
270512855Sgabeblack@google.com                            atemp_1 = -4001;
270612855Sgabeblack@google.com                            RHC_SIZE = 4;
270712855Sgabeblack@google.com                        }
270812855Sgabeblack@google.com                        RHC_OP_CODE = 3;
270912855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
271012855Sgabeblack@google.com                        RHC_OP_START = 1;
271112855Sgabeblack@google.com                        wait();
271212855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
271312855Sgabeblack@google.com                            wait();
271412855Sgabeblack@google.com                            continue;
271512855Sgabeblack@google.com                        }
271612855Sgabeblack@google.com                        wait();
271712855Sgabeblack@google.com                        RHC_OP_START = 0;
271812855Sgabeblack@google.com                        wait();
271912855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr.range(6,0), atemp_1.range(6,0));
272012855Sgabeblack@google.com                        RHC_ADDR2 = atemp_3;
272112855Sgabeblack@google.com                        RHC_SIZE = 1;
272212855Sgabeblack@google.com                        RHC_OP_CODE = 3;
272312855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
272412855Sgabeblack@google.com                        RHC_OP_START = 1;
272512855Sgabeblack@google.com                        wait();
272612855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
272712855Sgabeblack@google.com                            wait();
272812855Sgabeblack@google.com                            continue;
272912855Sgabeblack@google.com                        }
273012855Sgabeblack@google.com                        wait();
273112855Sgabeblack@google.com                        RHC_OP_START = 0;
273212855Sgabeblack@google.com                        wait();
273312855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr.range(6,0), atemp_1.range(13,7));
273412855Sgabeblack@google.com                        RHC_ADDR2 = 20;
273512855Sgabeblack@google.com                        RHC_SIZE = 4;
273612855Sgabeblack@google.com                        RHC_OP_CODE = 3;
273712855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
273812855Sgabeblack@google.com                        RHC_OP_START = 1;
273912855Sgabeblack@google.com                        wait();
274012855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
274112855Sgabeblack@google.com                            wait();
274212855Sgabeblack@google.com                            continue;
274312855Sgabeblack@google.com                        }
274412855Sgabeblack@google.com                        wait();
274512855Sgabeblack@google.com                        RHC_OP_START = 0;
274612855Sgabeblack@google.com                        wait();
274712855Sgabeblack@google.com                        RHC_ADDR1 = (sig_gen_buff_addr, sc_int<7>(0));
274812855Sgabeblack@google.com                        RHC_ADDR2 = 0;
274912855Sgabeblack@google.com                        RHC_SIZE = ((sc_int<1>(0), DID_reg), sc_int<1>(0));
275012855Sgabeblack@google.com                        RHC_OP_CODE = -3;
275112855Sgabeblack@google.com                        RHC_OP_START = 1;
275212855Sgabeblack@google.com                        wait();
275312855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
275412855Sgabeblack@google.com                            wait();
275512855Sgabeblack@google.com                            continue;
275612855Sgabeblack@google.com                        }
275712855Sgabeblack@google.com                        wait();
275812855Sgabeblack@google.com                        RHC_OP_START = 0;
275912855Sgabeblack@google.com                        wait();
276012855Sgabeblack@google.com                        RHC_ADDR1 = 768;
276112855Sgabeblack@google.com                        RHC_ADDR2 = 0;
276212855Sgabeblack@google.com                        RHC_SIZE = sig_gen_buff_addr;
276312855Sgabeblack@google.com                        RHC_OP_CODE = -2;
276412855Sgabeblack@google.com                        RHC_OP_START = 1;
276512855Sgabeblack@google.com                        wait();
276612855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
276712855Sgabeblack@google.com                            wait();
276812855Sgabeblack@google.com                            continue;
276912855Sgabeblack@google.com                        }
277012855Sgabeblack@google.com                        wait();
277112855Sgabeblack@google.com                        RHC_OP_START = 0;
277212855Sgabeblack@google.com                        wait();
277312855Sgabeblack@google.com
277412855Sgabeblack@google.com		     //Write Buffer Queue
277512855Sgabeblack@google.com                        RHC_ADDR1 = atemp_4;
277612855Sgabeblack@google.com                        RHC_ADDR2 = (sig_gen_buff_addr, sc_int<7>(0));
277712855Sgabeblack@google.com
277812855Sgabeblack@google.com		     //Macro:write_queue(begin)
277912855Sgabeblack@google.com                        RHC_OP_CODE = 1;
278012855Sgabeblack@google.com                        EXC_RPBH_ID = id_reg;
278112855Sgabeblack@google.com                        RHC_OP_START = 1;
278212855Sgabeblack@google.com                        wait();
278312855Sgabeblack@google.com                        while(!RHC_OP_END.read()) {
278412855Sgabeblack@google.com                            wait();
278512855Sgabeblack@google.com                            continue;
278612855Sgabeblack@google.com                        }
278712855Sgabeblack@google.com                        wait();
278812855Sgabeblack@google.com		     //Macro:write_queue(end)
278912855Sgabeblack@google.com                        RHC_OP_START = 0;
279012855Sgabeblack@google.com                        wait();
279112855Sgabeblack@google.com		         }
279212855Sgabeblack@google.com		  break;
279312855Sgabeblack@google.com	       // } else {
279412855Sgabeblack@google.com		default:
279512855Sgabeblack@google.com                    err_no_reg = 3;
279612855Sgabeblack@google.com                    rb_flag = 1;
279712855Sgabeblack@google.com                    wait();
279812855Sgabeblack@google.com
279912855Sgabeblack@google.com	    } // end  _case_1021_
280012855Sgabeblack@google.com
280112855Sgabeblack@google.com            _signal_proc__END:; } while(0);
280212855Sgabeblack@google.com            if((err_no_reg) != 0) {
280312855Sgabeblack@google.com                error = err_no_reg;
280412855Sgabeblack@google.com                wait();
280512855Sgabeblack@google.com                error = 0;
280612855Sgabeblack@google.com                wait();
280712855Sgabeblack@google.com            } else {
280812855Sgabeblack@google.com                wait();
280912855Sgabeblack@google.com            }
281012855Sgabeblack@google.com            if((rb_flag) != 0) {
281112855Sgabeblack@google.com                dt = ((sc_int<1>(0), sig_gen_buff_addr), sc_int<8>(0));
281212855Sgabeblack@google.com                EXC_ADDR = -8192;
281312855Sgabeblack@google.com                EXC_DATA = dt;
281412855Sgabeblack@google.com                EXC_RW = 0;
281512855Sgabeblack@google.com                EXC_REQ = 1;
281612855Sgabeblack@google.com                wait();
281712855Sgabeblack@google.com                while(1) {
281812855Sgabeblack@google.com                    EXC_REQ = 0;
281912855Sgabeblack@google.com                    if(IBC_GRANT_EXC) {
282012855Sgabeblack@google.com                        wait();
282112855Sgabeblack@google.com                        break;
282212855Sgabeblack@google.com                    }
282312855Sgabeblack@google.com                    wait();
282412855Sgabeblack@google.com                }
282512855Sgabeblack@google.com            } else {
282612855Sgabeblack@google.com                wait();
282712855Sgabeblack@google.com            }
282812855Sgabeblack@google.com		} // end start
282912855Sgabeblack@google.com	    } // end main
283012855Sgabeblack@google.com	} // main entry
283112855Sgabeblack@google.com
283212855Sgabeblack@google.comint
283312855Sgabeblack@google.comsc_main( int argc, char* argv[] )
283412855Sgabeblack@google.com{
283512855Sgabeblack@google.com    return 0;
283612855Sgabeblack@google.com}
2837