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