亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? at_target_1_phase.cpp

?? SystemC Transaction Level Modelling. 是基于SystemC之上的總線互聯(lián)協(xié)議
?? CPP
字號:
/**********************************************************************    The following code is derived, directly or indirectly, from the SystemC    source code Copyright (c) 1996-2008 by all Contributors.    All Rights reserved.     The contents of this file are subject to the restrictions and limitations    set forth in the SystemC Open Source License Version 3.0 (the "License");    You may not use this file except in compliance with such restrictions and    limitations. You may obtain instructions on how to receive a copy of the    License at http://www.systemc.org/. Software distributed by Contributors    under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF    ANY KIND, either express or implied. See the License for the specific    language governing rights and limitations under the License. *********************************************************************///=====================================================================/// @file at_target_1_phase.cpp///// @brief Implements single phase AT target////=====================================================================//  Original Authors://    Charles Wilson, ESLX//    Bill Bunton, ESLX//    Jack Donovan, ESLX//=====================================================================#include "at_target_1_phase.h"                        // our header#include "reporting.h"                                // reporting macros//#include <stdio.h>                    using namespace  std;static const char *filename = "at_target_1_phase.cpp";	///< filename for reportingSC_HAS_PROCESS(at_target_1_phase);///Constructorat_target_1_phase::at_target_1_phase                      ( sc_core::sc_module_name module_name               // module name, const unsigned int        ID                      // target ID, const char                *memory_socket          // socket name, sc_dt::uint64             memory_size             // memory size (bytes), unsigned int              memory_width            // memory width (bytes), const sc_core::sc_time    accept_delay            // accept delay (SC_TIME), const sc_core::sc_time    read_response_delay     // read response delay (SC_TIME), const sc_core::sc_time    write_response_delay    // write response delay (SC_TIME)): sc_module               (module_name)             /// init module name, m_memory_socket         (memory_socket)           /// init socket name, m_ID                    (ID)                      /// init target ID, m_memory_size           (memory_size)             /// init memory size (bytes), m_memory_width          (memory_width)            /// init memory width (bytes), m_accept_delay          (accept_delay)            /// init accept delay, m_read_response_delay   (read_response_delay)     /// init read response delay, m_write_response_delay  (write_response_delay)    /// init write response delay, m_request_count         (1)                       /// init request count, m_nb_trans_fw_prev_warning(false), m_begin_resp_method_prev_warning(false), m_trans_dbg_prev_warning(false), m_get_dm_ptr_prev_warning(false), m_response_PEQ          ("response_PEQ"), m_target_memory                                   /// init target's memory   ( m_ID                          // initiator ID for messaging  , m_read_response_delay         // delay for reads  , m_write_response_delay        // delay for writes  , m_memory_size                 // memory size (bytes)  , m_memory_width                // memory width (bytes)        )    {        /// Bind the socket's export to the interface  m_memory_socket(*this);  /// Register begin_reponse as an SC_METHOD  /// Used to implement force synchronization multiple timing points  SC_METHOD(begin_response_method);  sensitive << m_response_PEQ.get_event();  dont_initialize();}//==============================================================================//  b_transport implementation calls from initiators ////=============================================================================void                                        at_target_1_phase::b_transport( tlm::tlm_generic_payload  &payload                // ref to  Generic Payload , sc_core::sc_time          &delay_time             // delay time ){   std::ostringstream  msg;                            msg.str("");  sc_core::sc_time      mem_op_time;    m_target_memory.operation(payload, mem_op_time);  msg << "Target: " << m_ID                     << " returned delay of " << delay_time       << " + " << m_accept_delay << " + " << mem_op_time;  delay_time = delay_time + m_accept_delay + mem_op_time;    msg << " = " << delay_time;  REPORT_INFO(filename,  __FUNCTION__, msg.str());    return;     }//=============================================================================// nb_transport_fw implementation calls from initiators ////=============================================================================tlm::tlm_sync_enum                                  // synchronization stateat_target_1_phase::nb_transport_fw                  // non-blocking transport call through Bus( tlm::tlm_generic_payload &gp                      // generic payoad pointer, tlm::tlm_phase           &phase                   // transaction phase, sc_core::sc_time         &delay_time)             // time it should take for transport{  std::ostringstream  msg;                          // log message    msg.str("");  msg << "Target: " << m_ID                     << " nb_transport_fw (GP, "       << report::print(phase) << ", "      << delay_time << ")";   tlm::tlm_sync_enum  return_status = tlm::TLM_COMPLETED;  //-----------------------------------------------------------------------------// decode phase argument //-----------------------------------------------------------------------------  switch (phase)  {//=============================================================================    case tlm::BEGIN_REQ: 	      {     /// Generate frorced synchronization response every 20th request    if(m_request_count++ % 20)//-----------------------------------------------------------------------------//  AT single timing point forced by returning TLM_COMPLETED //-----------------------------------------------------------------------------      {        REPORT_INFO(filename,  __FUNCTION__, msg.str());                m_target_memory.operation(gp, delay_time); // perform memory operation now                delay_time += m_accept_delay;        return_status = tlm::TLM_COMPLETED;       // indicate end of transaction                 msg.str("");        msg << "Target: " << m_ID            << " " << report::print(return_status) <<  " (GP, "          << report::print(phase) << ", "          << delay_time << ")" ;        REPORT_INFO(filename,  __FUNCTION__, msg.str());              } // end AT single timing point       //-----------------------------------------------------------------------------// Force synchronization multiple timing points by returning TLM_ACCEPTED // use a payload event queue to schedule BEGIN_RESP timing point  //-----------------------------------------------------------------------------      else      {         m_target_memory.get_delay(gp, delay_time);  // get memory operation delay                delay_time += m_accept_delay;                m_response_PEQ.notify(gp, delay_time);      // put transaction in the PEQ                delay_time = m_accept_delay;        phase = tlm::END_REQ;                       // advance txn state to end request             return_status = tlm::TLM_UPDATED;           // force synchronization                  msg << endl << "      "          << "Target: " << m_ID            << " " << report::print(return_status) <<  " (GP, "          << report::print(phase) << ", "          << delay_time << ")" ;        REPORT_INFO(filename,  __FUNCTION__, msg.str());       }             break;    } // end BEGIN_REQ//=============================================================================    case tlm::END_RESP:    {      m_end_resp_rcvd_event.notify (sc_core::SC_ZERO_TIME);      return_status = tlm::TLM_COMPLETED;         // indicate end of transaction           break;          }    //=============================================================================    case tlm::END_REQ:    case tlm::BEGIN_RESP:    {       msg << "Target: " << m_ID           << " Illegal phase received by target -- END_REQ or BEGIN_RESP";      REPORT_FATAL(filename, __FUNCTION__, msg.str());       return_status = tlm::TLM_ACCEPTED;      break;    }   //=============================================================================    default:    {       return_status = tlm::TLM_ACCEPTED;       if(!m_nb_trans_fw_prev_warning)        {        msg << "Target: " << m_ID             << " default phase encountered";        REPORT_WARNING(filename, __FUNCTION__, msg.str());         }      else m_nb_trans_fw_prev_warning = true;      break;    }  }    return return_status;  } //end nb_transport_fw//=============================================================================/// begin_response method function implementation//// This method is statically sensitive to m_response_PEQ.get_event ////=============================================================================void at_target_1_phase::begin_response_method (void){  std::ostringstream        msg;                    // log message  tlm::tlm_generic_payload  *transaction_ptr;       // generic payload pointer  msg.str("");  tlm::tlm_sync_enum        status = tlm::TLM_COMPLETED;//-----------------------------------------------------------------------------  //  Process all transactions scheduled for current time a return value of NULL //  indicates that the PEQ is empty at this time//-----------------------------------------------------------------------------   while ((transaction_ptr = m_response_PEQ.get_next_transaction()) != NULL)  {     sc_core::sc_time dummy_t  = sc_core::SC_ZERO_TIME;    /// perform memory operation now    m_target_memory.operation(*transaction_ptr, dummy_t);     tlm::tlm_phase phase    = tlm::BEGIN_RESP;     sc_core::sc_time delay  = sc_core::SC_ZERO_TIME;    msg << "Target: " << m_ID       << " nb_transport_bw(GP, BEGIN_RESP, SC_ZERO_TIME)"      << endl << "      ";    REPORT_INFO(filename,  __FUNCTION__, msg.str());//-----------------------------------------------------------------------------// Call nb_transport_bw with phase BEGIN_RESP check the returned status //-----------------------------------------------------------------------------    status = m_memory_socket->nb_transport_bw(*transaction_ptr, phase, delay);        msg << "Target: " << m_ID        << " " << report::print(status) << "(GP, "        << report::print(phase) << ", "        << delay << ")";     REPORT_INFO(filename,  __FUNCTION__, msg.str());    switch (status)    {     //=============================================================================    case tlm::TLM_COMPLETED:          {                  next_trigger (delay);     // add comments ???         return;         break;      }      //=============================================================================    case tlm::TLM_ACCEPTED:      {             next_trigger (m_end_resp_rcvd_event); // add comments ???         return;         break;      }//=============================================================================    case tlm::TLM_UPDATED:         {      if(!m_begin_resp_method_prev_warning)        {          msg << "Target: " << m_ID               << " TLM_UPDATED invalid response to BEGIN_RESP";          REPORT_WARNING(filename, __FUNCTION__, msg.str());         }      else m_begin_resp_method_prev_warning = true;      break;      } //=============================================================================    default:                        {        if(!m_begin_resp_method_prev_warning)          {            msg << "Target: " << m_ID                 << " undefined return status ";           REPORT_WARNING(filename, __FUNCTION__, msg.str());           }        else m_begin_resp_method_prev_warning = true;        break;      }    }// end switch        } // end while    next_trigger (m_response_PEQ.get_event()); } //end begin_response_queue_active//==============================================================================// Methods Required by Target Interface but not Implemented for this Example// Not implemented for this example but required by interfacebool                                            at_target_1_phase::get_direct_mem_ptr      (tlm::tlm_generic_payload   &payload,             ///< address + extensions   tlm::tlm_dmi               &data                 ///< dmi data  ){  // THis is not a fatal, print first as warning  std::ostringstream  msg;  msg.str("");  if(!m_get_dm_ptr_prev_warning)    {      msg << "Target: " << m_ID           << " DMI not implemented for this example";      REPORT_WARNING(filename, __FUNCTION__, msg.str());      }  else m_get_dm_ptr_prev_warning = true;	        return false;}// Not implemented for this example but required by interfaceunsigned int                                        // resultat_target_1_phase::transport_dbg            ( tlm::tlm_generic_payload   &payload               ///< debug payload){  std::ostringstream  msg;   msg.str("");  if(!m_trans_dbg_prev_warning)  {    msg << "Target: " << m_ID         << " DBG(debug) not implemented for this example";    REPORT_WARNING(filename, __FUNCTION__, msg.str());   }  else m_trans_dbg_prev_warning = true;                return false;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区五区视频在线观看 | 91久久人澡人人添人人爽欧美| 亚洲国产精品一区二区www在线| 精品sm捆绑视频| 欧美无砖专区一中文字| 成人精品小蝌蚪| 久久不见久久见中文字幕免费| 亚洲综合视频在线观看| 国产女人水真多18毛片18精品视频| 欧美疯狂做受xxxx富婆| 91麻豆免费看片| 91精品国产手机| 91美女片黄在线观看91美女| 国产精品1024| 精品一区二区三区免费视频| 日韩精品福利网| 亚洲成人tv网| 亚洲一区二区中文在线| 亚洲欧美激情小说另类| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美精品乱码久久久久久按摩| 91亚洲国产成人精品一区二区三| 国产精品一区免费视频| 国产一区二区在线看| 美女视频一区二区三区| 免费成人美女在线观看.| 亚洲高清不卡在线观看| 亚洲激情六月丁香| 亚洲精品免费播放| 亚洲激情成人在线| 一区二区三区欧美久久| 亚洲一区欧美一区| 亚洲午夜视频在线| 亚洲国产精品久久久男人的天堂| 一区二区三区国产精品| 一区二区久久久久久| 亚洲黄色av一区| 亚洲精品乱码久久久久久黑人| 亚洲色图丝袜美腿| 亚洲欧美日韩电影| 亚洲一区二区在线观看视频| 亚洲午夜久久久久久久久久久| 亚洲午夜在线观看视频在线| 亚洲成a人片综合在线| 亚洲国产精品久久人人爱蜜臀| 五月综合激情网| 人人超碰91尤物精品国产| 久久爱www久久做| 国产精品911| www.综合网.com| 在线精品视频免费观看| 欧美日韩你懂得| 欧美一区二区三区四区久久| 欧美成人一区二区三区在线观看| 欧美电影免费提供在线观看| 久久精品一区四区| 亚洲三级在线免费观看| 亚洲高清三级视频| 狠狠v欧美v日韩v亚洲ⅴ| 成人一级黄色片| 欧亚一区二区三区| 日韩一区二区三区在线观看| 国产香蕉久久精品综合网| 欧美国产欧美综合| 亚洲一区影音先锋| 精品一区二区日韩| 97超碰欧美中文字幕| 欧美猛男男办公室激情| 国产午夜亚洲精品不卡| 一区二区三区在线免费观看| 日韩高清一级片| 国产成人在线观看| 欧美影院一区二区| 精品国产百合女同互慰| 亚洲欧美二区三区| 精品一区二区久久| 色噜噜狠狠色综合中国| 日韩视频在线观看一区二区| 欧美激情中文不卡| 日韩在线观看一区二区| 懂色av中文一区二区三区| 欧美日韩在线免费视频| 国产婷婷色一区二区三区| 亚洲国产视频一区| 成人免费黄色大片| 3atv在线一区二区三区| 国产精品久久久久四虎| 免费看精品久久片| 色悠悠亚洲一区二区| 久久免费视频一区| 天天影视涩香欲综合网| 99re成人精品视频| 国产午夜一区二区三区| 日本成人在线看| 在线观看亚洲a| 中文字幕欧美国产| 久久国产三级精品| 色偷偷一区二区三区| 国产欧美视频一区二区三区| 蜜臀av一区二区在线免费观看| av爱爱亚洲一区| 精品国产91九色蝌蚪| 亚洲成人中文在线| 色香色香欲天天天影视综合网| 精品成人私密视频| 亚洲成人777| 日本精品裸体写真集在线观看| 国产三区在线成人av| 精一区二区三区| 91精品国产色综合久久不卡蜜臀 | 国产真实乱偷精品视频免| 欧美三级三级三级爽爽爽| 日韩美女啊v在线免费观看| 久久 天天综合| 在线综合+亚洲+欧美中文字幕| 《视频一区视频二区| 国产成人精品免费视频网站| 欧美大片日本大片免费观看| 日韩av一级电影| 欧美日韩一区二区三区不卡| 一区二区三区四区蜜桃| av亚洲精华国产精华精| 国产精品美女www爽爽爽| 国产传媒日韩欧美成人| 国产视频一区二区在线| 国产剧情一区二区| 久久久久国产精品麻豆ai换脸| 激情小说亚洲一区| 久久久不卡影院| 国产成人精品综合在线观看| 欧美极品美女视频| 成人高清免费观看| 国产精品护士白丝一区av| 不卡视频一二三四| 亚洲日本电影在线| 91视频国产观看| 亚洲综合小说图片| 欧美日韩精品免费| 美女一区二区三区| 久久青草欧美一区二区三区| 国产老肥熟一区二区三区| 国产日韩欧美精品一区| www.亚洲色图| 亚洲欧美日韩国产综合在线| 91成人在线观看喷潮| 亚洲成av人片一区二区三区| 91精品国产aⅴ一区二区| 日本不卡免费在线视频| 久久综合色之久久综合| 成人听书哪个软件好| 中文字幕综合网| 欧美日本精品一区二区三区| 青草国产精品久久久久久| 久久久天堂av| 99久久精品免费看| 亚洲成人免费视| 日韩精品一区二区三区蜜臀| 国产91精品精华液一区二区三区| 综合久久久久久久| 欧美日本免费一区二区三区| 国产原创一区二区三区| 亚洲欧洲精品一区二区三区| 欧美日韩国产中文| 国产一区二区三区美女| 中文字幕在线观看一区二区| 欧美中文字幕亚洲一区二区va在线| 日韩精品高清不卡| 国产精品青草久久| 欧美日本韩国一区| 国产高清一区日本| 亚洲成人免费视| 日本一区二区三区在线不卡| 精品视频1区2区| 国产成人午夜片在线观看高清观看| 亚洲欧美一区二区久久| 日韩一区二区精品葵司在线| 成人性生交大片免费看中文| 亚洲.国产.中文慕字在线| 久久老女人爱爱| 欧美亚洲尤物久久| 国产福利一区二区三区视频在线 | 最新久久zyz资源站| 欧美高清视频www夜色资源网| 国产精品77777竹菊影视小说| 洋洋av久久久久久久一区| 久久久九九九九| 在线成人免费视频| 91麻豆视频网站| 国产一区二区主播在线| 午夜国产精品一区| 亚洲欧美日韩系列| 久久精品日产第一区二区三区高清版| 91福利精品视频| 丰满白嫩尤物一区二区| 日本不卡高清视频| 亚洲一区二区高清| 中文字幕欧美国产| 久久色在线观看| 欧美一区二区视频观看视频| 91视频国产资源|