112027Sjungma@eit.uni-kl.de/***************************************************************************** 212027Sjungma@eit.uni-kl.de 312027Sjungma@eit.uni-kl.de Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 412027Sjungma@eit.uni-kl.de more contributor license agreements. See the NOTICE file distributed 512027Sjungma@eit.uni-kl.de with this work for additional information regarding copyright ownership. 612027Sjungma@eit.uni-kl.de Accellera licenses this file to you under the Apache License, Version 2.0 712027Sjungma@eit.uni-kl.de (the "License"); you may not use this file except in compliance with the 812027Sjungma@eit.uni-kl.de License. You may obtain a copy of the License at 912027Sjungma@eit.uni-kl.de 1012027Sjungma@eit.uni-kl.de http://www.apache.org/licenses/LICENSE-2.0 1112027Sjungma@eit.uni-kl.de 1212027Sjungma@eit.uni-kl.de Unless required by applicable law or agreed to in writing, software 1312027Sjungma@eit.uni-kl.de distributed under the License is distributed on an "AS IS" BASIS, 1412027Sjungma@eit.uni-kl.de WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1512027Sjungma@eit.uni-kl.de implied. See the License for the specific language governing 1612027Sjungma@eit.uni-kl.de permissions and limitations under the License. 1712027Sjungma@eit.uni-kl.de 1812027Sjungma@eit.uni-kl.de *****************************************************************************/ 1912027Sjungma@eit.uni-kl.de 2012027Sjungma@eit.uni-kl.de/***************************************************************************** 2112027Sjungma@eit.uni-kl.de 2212027Sjungma@eit.uni-kl.de sc_prim_channel.h -- Abstract base class of all primitive channel classes. 2312027Sjungma@eit.uni-kl.de 2412027Sjungma@eit.uni-kl.de Original Author: Martin Janssen, Synopsys, Inc., 2001-05-21 2512027Sjungma@eit.uni-kl.de 2612027Sjungma@eit.uni-kl.de CHANGE LOG AT THE END OF THE FILE 2712027Sjungma@eit.uni-kl.de *****************************************************************************/ 2812027Sjungma@eit.uni-kl.de 2912027Sjungma@eit.uni-kl.de#ifndef SC_PRIM_CHANNEL_H 3012027Sjungma@eit.uni-kl.de#define SC_PRIM_CHANNEL_H 3112027Sjungma@eit.uni-kl.de 3212027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_object.h" 3312027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_wait.h" 3412027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_wait_cthread.h" 3512027Sjungma@eit.uni-kl.de 3612027Sjungma@eit.uni-kl.denamespace sc_core { 3712027Sjungma@eit.uni-kl.de 3812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 3912027Sjungma@eit.uni-kl.de// CLASS : sc_prim_channel 4012027Sjungma@eit.uni-kl.de// 4112027Sjungma@eit.uni-kl.de// Abstract base class of all primitive channel classes. 4212027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 4312027Sjungma@eit.uni-kl.de 4412027Sjungma@eit.uni-kl.declass sc_prim_channel 4512027Sjungma@eit.uni-kl.de: public sc_object 4612027Sjungma@eit.uni-kl.de{ 4712027Sjungma@eit.uni-kl.de friend class sc_prim_channel_registry; 4812027Sjungma@eit.uni-kl.de 4912027Sjungma@eit.uni-kl.depublic: 5012027Sjungma@eit.uni-kl.de enum { list_end = 0xdb }; 5112027Sjungma@eit.uni-kl.depublic: 5212027Sjungma@eit.uni-kl.de virtual const char* kind() const 5312027Sjungma@eit.uni-kl.de { return "sc_prim_channel"; } 5412027Sjungma@eit.uni-kl.de 5512027Sjungma@eit.uni-kl.de inline bool update_requested() 5612027Sjungma@eit.uni-kl.de { return m_update_next_p != (sc_prim_channel*)list_end; } 5712027Sjungma@eit.uni-kl.de 5812027Sjungma@eit.uni-kl.de // request the update method to be executed during the update phase 5912027Sjungma@eit.uni-kl.de inline void request_update(); 6012027Sjungma@eit.uni-kl.de 6112027Sjungma@eit.uni-kl.de // request the update method to be executed during the update phase 6212027Sjungma@eit.uni-kl.de // from a process external to the simulator. 6312027Sjungma@eit.uni-kl.de void async_request_update(); 6412027Sjungma@eit.uni-kl.de 6512027Sjungma@eit.uni-kl.deprotected: 6612027Sjungma@eit.uni-kl.de 6712027Sjungma@eit.uni-kl.de // constructors 6812027Sjungma@eit.uni-kl.de sc_prim_channel(); 6912027Sjungma@eit.uni-kl.de explicit sc_prim_channel( const char* ); 7012027Sjungma@eit.uni-kl.de 7112027Sjungma@eit.uni-kl.de // destructor 7212027Sjungma@eit.uni-kl.de virtual ~sc_prim_channel(); 7312027Sjungma@eit.uni-kl.de 7412027Sjungma@eit.uni-kl.de // the update method (does nothing by default) 7512027Sjungma@eit.uni-kl.de virtual void update(); 7612027Sjungma@eit.uni-kl.de 7712027Sjungma@eit.uni-kl.de // called by construction_done (does nothing by default) 7812027Sjungma@eit.uni-kl.de virtual void before_end_of_elaboration(); 7912027Sjungma@eit.uni-kl.de 8012027Sjungma@eit.uni-kl.de // called by elaboration_done (does nothing by default) 8112027Sjungma@eit.uni-kl.de virtual void end_of_elaboration(); 8212027Sjungma@eit.uni-kl.de 8312027Sjungma@eit.uni-kl.de // called by start_simulation (does nothing by default) 8412027Sjungma@eit.uni-kl.de virtual void start_of_simulation(); 8512027Sjungma@eit.uni-kl.de 8612027Sjungma@eit.uni-kl.de // called by simulation_done (does nothing by default) 8712027Sjungma@eit.uni-kl.de virtual void end_of_simulation(); 8812027Sjungma@eit.uni-kl.de 8912027Sjungma@eit.uni-kl.deprotected: 9012027Sjungma@eit.uni-kl.de 9112027Sjungma@eit.uni-kl.de // to avoid calling sc_get_curr_simcontext() 9212027Sjungma@eit.uni-kl.de 9312027Sjungma@eit.uni-kl.de // static sensitivity for SC_THREADs and SC_CTHREADs 9412027Sjungma@eit.uni-kl.de 9512027Sjungma@eit.uni-kl.de void wait() 9612027Sjungma@eit.uni-kl.de { sc_core::wait( simcontext() ); } 9712027Sjungma@eit.uni-kl.de 9812027Sjungma@eit.uni-kl.de 9912027Sjungma@eit.uni-kl.de // dynamic sensitivity for SC_THREADs and SC_CTHREADs 10012027Sjungma@eit.uni-kl.de 10112027Sjungma@eit.uni-kl.de void wait( const sc_event& e ) 10212027Sjungma@eit.uni-kl.de { sc_core::wait( e, simcontext() ); } 10312027Sjungma@eit.uni-kl.de 10412027Sjungma@eit.uni-kl.de void wait( const sc_event_or_list& el ) 10512027Sjungma@eit.uni-kl.de { sc_core::wait( el, simcontext() ); } 10612027Sjungma@eit.uni-kl.de 10712027Sjungma@eit.uni-kl.de void wait( const sc_event_and_list& el ) 10812027Sjungma@eit.uni-kl.de { sc_core::wait( el, simcontext() ); } 10912027Sjungma@eit.uni-kl.de 11012027Sjungma@eit.uni-kl.de void wait( const sc_time& t ) 11112027Sjungma@eit.uni-kl.de { sc_core::wait( t, simcontext() ); } 11212027Sjungma@eit.uni-kl.de 11312027Sjungma@eit.uni-kl.de void wait( double v, sc_time_unit tu ) 11412027Sjungma@eit.uni-kl.de { sc_core::wait( sc_time( v, tu, simcontext() ), simcontext() ); } 11512027Sjungma@eit.uni-kl.de 11612027Sjungma@eit.uni-kl.de void wait( const sc_time& t, const sc_event& e ) 11712027Sjungma@eit.uni-kl.de { sc_core::wait( t, e, simcontext() ); } 11812027Sjungma@eit.uni-kl.de 11912027Sjungma@eit.uni-kl.de void wait( double v, sc_time_unit tu, const sc_event& e ) 12012027Sjungma@eit.uni-kl.de { sc_core::wait( sc_time( v, tu, simcontext() ), e, simcontext() ); } 12112027Sjungma@eit.uni-kl.de 12212027Sjungma@eit.uni-kl.de void wait( const sc_time& t, const sc_event_or_list& el ) 12312027Sjungma@eit.uni-kl.de { sc_core::wait( t, el, simcontext() ); } 12412027Sjungma@eit.uni-kl.de 12512027Sjungma@eit.uni-kl.de void wait( double v, sc_time_unit tu, const sc_event_or_list& el ) 12612027Sjungma@eit.uni-kl.de { sc_core::wait( sc_time( v, tu, simcontext() ), el, simcontext() ); } 12712027Sjungma@eit.uni-kl.de 12812027Sjungma@eit.uni-kl.de void wait( const sc_time& t, const sc_event_and_list& el ) 12912027Sjungma@eit.uni-kl.de { sc_core::wait( t, el, simcontext() ); } 13012027Sjungma@eit.uni-kl.de 13112027Sjungma@eit.uni-kl.de void wait( double v, sc_time_unit tu, const sc_event_and_list& el ) 13212027Sjungma@eit.uni-kl.de { sc_core::wait( sc_time( v, tu, simcontext() ), el, simcontext() ); } 13312027Sjungma@eit.uni-kl.de 13412027Sjungma@eit.uni-kl.de void wait( int n ) 13512027Sjungma@eit.uni-kl.de { sc_core::wait( n, simcontext() ); } 13612027Sjungma@eit.uni-kl.de 13712027Sjungma@eit.uni-kl.de 13812027Sjungma@eit.uni-kl.de // static sensitivity for SC_METHODs 13912027Sjungma@eit.uni-kl.de 14012027Sjungma@eit.uni-kl.de void next_trigger() 14112027Sjungma@eit.uni-kl.de { sc_core::next_trigger( simcontext() ); } 14212027Sjungma@eit.uni-kl.de 14312027Sjungma@eit.uni-kl.de 14412027Sjungma@eit.uni-kl.de // dynamic sensitivity for SC_METHODs 14512027Sjungma@eit.uni-kl.de 14612027Sjungma@eit.uni-kl.de void next_trigger( const sc_event& e ) 14712027Sjungma@eit.uni-kl.de { sc_core::next_trigger( e, simcontext() ); } 14812027Sjungma@eit.uni-kl.de 14912027Sjungma@eit.uni-kl.de void next_trigger( const sc_event_or_list& el ) 15012027Sjungma@eit.uni-kl.de { sc_core::next_trigger( el, simcontext() ); } 15112027Sjungma@eit.uni-kl.de 15212027Sjungma@eit.uni-kl.de void next_trigger( const sc_event_and_list& el ) 15312027Sjungma@eit.uni-kl.de { sc_core::next_trigger( el, simcontext() ); } 15412027Sjungma@eit.uni-kl.de 15512027Sjungma@eit.uni-kl.de void next_trigger( const sc_time& t ) 15612027Sjungma@eit.uni-kl.de { sc_core::next_trigger( t, simcontext() ); } 15712027Sjungma@eit.uni-kl.de 15812027Sjungma@eit.uni-kl.de void next_trigger( double v, sc_time_unit tu ) 15912027Sjungma@eit.uni-kl.de {sc_core::next_trigger( sc_time( v, tu, simcontext() ), simcontext() );} 16012027Sjungma@eit.uni-kl.de 16112027Sjungma@eit.uni-kl.de void next_trigger( const sc_time& t, const sc_event& e ) 16212027Sjungma@eit.uni-kl.de { sc_core::next_trigger( t, e, simcontext() ); } 16312027Sjungma@eit.uni-kl.de 16412027Sjungma@eit.uni-kl.de void next_trigger( double v, sc_time_unit tu, const sc_event& e ) 16512027Sjungma@eit.uni-kl.de { sc_core::next_trigger( 16612027Sjungma@eit.uni-kl.de sc_time( v, tu, simcontext() ), e, simcontext() ); } 16712027Sjungma@eit.uni-kl.de 16812027Sjungma@eit.uni-kl.de void next_trigger( const sc_time& t, const sc_event_or_list& el ) 16912027Sjungma@eit.uni-kl.de { sc_core::next_trigger( t, el, simcontext() ); } 17012027Sjungma@eit.uni-kl.de 17112027Sjungma@eit.uni-kl.de void next_trigger( double v, sc_time_unit tu, const sc_event_or_list& el ) 17212027Sjungma@eit.uni-kl.de { sc_core::next_trigger( 17312027Sjungma@eit.uni-kl.de sc_time( v, tu, simcontext() ), el, simcontext() ); } 17412027Sjungma@eit.uni-kl.de 17512027Sjungma@eit.uni-kl.de void next_trigger( const sc_time& t, const sc_event_and_list& el ) 17612027Sjungma@eit.uni-kl.de { sc_core::next_trigger( t, el, simcontext() ); } 17712027Sjungma@eit.uni-kl.de 17812027Sjungma@eit.uni-kl.de void next_trigger( double v, sc_time_unit tu, const sc_event_and_list& el ) 17912027Sjungma@eit.uni-kl.de { sc_core::next_trigger( 18012027Sjungma@eit.uni-kl.de sc_time( v, tu, simcontext() ), el, simcontext() ); } 18112027Sjungma@eit.uni-kl.de 18212027Sjungma@eit.uni-kl.de 18312027Sjungma@eit.uni-kl.de // for SC_METHODs and SC_THREADs and SC_CTHREADs 18412027Sjungma@eit.uni-kl.de 18512027Sjungma@eit.uni-kl.de bool timed_out() 18612027Sjungma@eit.uni-kl.de { return sc_core::timed_out( simcontext() ); } 18712027Sjungma@eit.uni-kl.de 18812027Sjungma@eit.uni-kl.de 18912027Sjungma@eit.uni-kl.de#if 0 // @@@@#### 19012027Sjungma@eit.uni-kl.de // delta count maintenance 19112027Sjungma@eit.uni-kl.de sc_dt::uint64 delta_count() 19212027Sjungma@eit.uni-kl.de { return simcontext()->m_delta_count; } 19312027Sjungma@eit.uni-kl.de#endif 19412027Sjungma@eit.uni-kl.de 19512027Sjungma@eit.uni-kl.deprivate: 19612027Sjungma@eit.uni-kl.de 19712027Sjungma@eit.uni-kl.de // called during the update phase of a delta cycle (if requested) 19812027Sjungma@eit.uni-kl.de void perform_update(); 19912027Sjungma@eit.uni-kl.de 20012027Sjungma@eit.uni-kl.de // called when construction is done 20112027Sjungma@eit.uni-kl.de void construction_done(); 20212027Sjungma@eit.uni-kl.de 20312027Sjungma@eit.uni-kl.de // called when elaboration is done 20412027Sjungma@eit.uni-kl.de void elaboration_done(); 20512027Sjungma@eit.uni-kl.de 20612027Sjungma@eit.uni-kl.de // called before simulation starts 20712027Sjungma@eit.uni-kl.de void start_simulation(); 20812027Sjungma@eit.uni-kl.de 20912027Sjungma@eit.uni-kl.de // called after simulation ends 21012027Sjungma@eit.uni-kl.de void simulation_done(); 21112027Sjungma@eit.uni-kl.de 21212027Sjungma@eit.uni-kl.de // disabled 21312027Sjungma@eit.uni-kl.de sc_prim_channel( const sc_prim_channel& ); 21412027Sjungma@eit.uni-kl.de sc_prim_channel& operator = ( const sc_prim_channel& ); 21512027Sjungma@eit.uni-kl.de 21612027Sjungma@eit.uni-kl.deprivate: 21712027Sjungma@eit.uni-kl.de 21812027Sjungma@eit.uni-kl.de sc_prim_channel_registry* m_registry; // Update list manager. 21912027Sjungma@eit.uni-kl.de sc_prim_channel* m_update_next_p; // Next entry in update list. 22012027Sjungma@eit.uni-kl.de}; 22112027Sjungma@eit.uni-kl.de 22212027Sjungma@eit.uni-kl.de 22312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 22412027Sjungma@eit.uni-kl.de// CLASS : sc_prim_channel_registry 22512027Sjungma@eit.uni-kl.de// 22612027Sjungma@eit.uni-kl.de// Registry for all primitive channels. 22712027Sjungma@eit.uni-kl.de// FOR INTERNAL USE ONLY! 22812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 22912027Sjungma@eit.uni-kl.de 23012027Sjungma@eit.uni-kl.declass sc_prim_channel_registry 23112027Sjungma@eit.uni-kl.de{ 23212027Sjungma@eit.uni-kl.de friend class sc_simcontext; 23312027Sjungma@eit.uni-kl.de 23412027Sjungma@eit.uni-kl.depublic: 23512027Sjungma@eit.uni-kl.de 23612027Sjungma@eit.uni-kl.de void insert( sc_prim_channel& ); 23712027Sjungma@eit.uni-kl.de void remove( sc_prim_channel& ); 23812027Sjungma@eit.uni-kl.de 23912027Sjungma@eit.uni-kl.de 24012027Sjungma@eit.uni-kl.de int size() const 24112027Sjungma@eit.uni-kl.de { return m_prim_channel_vec.size(); } 24212027Sjungma@eit.uni-kl.de 24312027Sjungma@eit.uni-kl.de inline void request_update( sc_prim_channel& ); 24412027Sjungma@eit.uni-kl.de void async_request_update( sc_prim_channel& ); 24512027Sjungma@eit.uni-kl.de 24612027Sjungma@eit.uni-kl.de bool pending_updates() const 24712027Sjungma@eit.uni-kl.de { 24812027Sjungma@eit.uni-kl.de return m_update_list_p != (sc_prim_channel*)sc_prim_channel::list_end 24912027Sjungma@eit.uni-kl.de || pending_async_updates(); 25012027Sjungma@eit.uni-kl.de } 25112027Sjungma@eit.uni-kl.de 25212027Sjungma@eit.uni-kl.de bool pending_async_updates() const; 25312027Sjungma@eit.uni-kl.de 25412027Sjungma@eit.uni-kl.deprivate: 25512027Sjungma@eit.uni-kl.de 25612027Sjungma@eit.uni-kl.de // constructor 25712027Sjungma@eit.uni-kl.de explicit sc_prim_channel_registry( sc_simcontext& simc_ ); 25812027Sjungma@eit.uni-kl.de 25912027Sjungma@eit.uni-kl.de // destructor 26012027Sjungma@eit.uni-kl.de ~sc_prim_channel_registry(); 26112027Sjungma@eit.uni-kl.de 26212027Sjungma@eit.uni-kl.de // called during the update phase of a delta cycle 26312027Sjungma@eit.uni-kl.de void perform_update(); 26412027Sjungma@eit.uni-kl.de 26512027Sjungma@eit.uni-kl.de // called when construction is done 26612027Sjungma@eit.uni-kl.de bool construction_done(); 26712027Sjungma@eit.uni-kl.de 26812027Sjungma@eit.uni-kl.de // called when elaboration is done 26912027Sjungma@eit.uni-kl.de void elaboration_done(); 27012027Sjungma@eit.uni-kl.de 27112027Sjungma@eit.uni-kl.de // called before simulation starts 27212027Sjungma@eit.uni-kl.de void start_simulation(); 27312027Sjungma@eit.uni-kl.de 27412027Sjungma@eit.uni-kl.de // called after simulation ends 27512027Sjungma@eit.uni-kl.de void simulation_done(); 27612027Sjungma@eit.uni-kl.de 27712027Sjungma@eit.uni-kl.de // disabled 27812027Sjungma@eit.uni-kl.de sc_prim_channel_registry(); 27912027Sjungma@eit.uni-kl.de sc_prim_channel_registry( const sc_prim_channel_registry& ); 28012027Sjungma@eit.uni-kl.de sc_prim_channel_registry& operator = ( const sc_prim_channel_registry& ); 28112027Sjungma@eit.uni-kl.de 28212027Sjungma@eit.uni-kl.deprivate: 28312027Sjungma@eit.uni-kl.de class async_update_list; 28412027Sjungma@eit.uni-kl.de 28512027Sjungma@eit.uni-kl.de async_update_list* m_async_update_list_p; // external updates. 28612027Sjungma@eit.uni-kl.de int m_construction_done; // # of constructs. 28712027Sjungma@eit.uni-kl.de std::vector<sc_prim_channel*> m_prim_channel_vec; // existing channels. 28812027Sjungma@eit.uni-kl.de sc_simcontext* m_simc; // simulator context. 28912027Sjungma@eit.uni-kl.de sc_prim_channel* m_update_list_p; // internal updates. 29012027Sjungma@eit.uni-kl.de}; 29112027Sjungma@eit.uni-kl.de 29212027Sjungma@eit.uni-kl.de 29312027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 29412027Sjungma@eit.uni-kl.de 29512027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 29612027Sjungma@eit.uni-kl.de// CLASS : sc_prim_channel_registry 29712027Sjungma@eit.uni-kl.de// 29812027Sjungma@eit.uni-kl.de// Registry for all primitive channels. 29912027Sjungma@eit.uni-kl.de// FOR INTERNAL USE ONLY! 30012027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 30112027Sjungma@eit.uni-kl.de 30212027Sjungma@eit.uni-kl.deinline 30312027Sjungma@eit.uni-kl.devoid 30412027Sjungma@eit.uni-kl.desc_prim_channel_registry::request_update( sc_prim_channel& prim_channel_ ) 30512027Sjungma@eit.uni-kl.de{ 30612027Sjungma@eit.uni-kl.de prim_channel_.m_update_next_p = m_update_list_p; 30712027Sjungma@eit.uni-kl.de m_update_list_p = &prim_channel_; 30812027Sjungma@eit.uni-kl.de} 30912027Sjungma@eit.uni-kl.de 31012027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 31112027Sjungma@eit.uni-kl.de// CLASS : sc_prim_channel 31212027Sjungma@eit.uni-kl.de// 31312027Sjungma@eit.uni-kl.de// Abstract base class of all primitive channel classes. 31412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 31512027Sjungma@eit.uni-kl.de 31612027Sjungma@eit.uni-kl.de// request the update method (to be executed during the update phase) 31712027Sjungma@eit.uni-kl.de 31812027Sjungma@eit.uni-kl.deinline 31912027Sjungma@eit.uni-kl.devoid 32012027Sjungma@eit.uni-kl.desc_prim_channel::request_update() 32112027Sjungma@eit.uni-kl.de{ 32212027Sjungma@eit.uni-kl.de if( ! m_update_next_p ) { 32312027Sjungma@eit.uni-kl.de m_registry->request_update( *this ); 32412027Sjungma@eit.uni-kl.de } 32512027Sjungma@eit.uni-kl.de} 32612027Sjungma@eit.uni-kl.de 32712027Sjungma@eit.uni-kl.de// request the update method from external to the simulator (to be executed 32812027Sjungma@eit.uni-kl.de// during the update phase) 32912027Sjungma@eit.uni-kl.de 33012027Sjungma@eit.uni-kl.deinline 33112027Sjungma@eit.uni-kl.devoid 33212027Sjungma@eit.uni-kl.desc_prim_channel::async_request_update() 33312027Sjungma@eit.uni-kl.de{ 33412027Sjungma@eit.uni-kl.de m_registry->async_request_update(*this); 33512027Sjungma@eit.uni-kl.de} 33612027Sjungma@eit.uni-kl.de 33712027Sjungma@eit.uni-kl.de 33812027Sjungma@eit.uni-kl.de// called during the update phase of a delta cycle (if requested) 33912027Sjungma@eit.uni-kl.de 34012027Sjungma@eit.uni-kl.deinline 34112027Sjungma@eit.uni-kl.devoid 34212027Sjungma@eit.uni-kl.desc_prim_channel::perform_update() 34312027Sjungma@eit.uni-kl.de{ 34412027Sjungma@eit.uni-kl.de update(); 34512027Sjungma@eit.uni-kl.de m_update_next_p = 0; 34612027Sjungma@eit.uni-kl.de} 34712027Sjungma@eit.uni-kl.de 34812027Sjungma@eit.uni-kl.de 34912027Sjungma@eit.uni-kl.de} // namespace sc_core 35012027Sjungma@eit.uni-kl.de 35112027Sjungma@eit.uni-kl.de 35212027Sjungma@eit.uni-kl.de/***************************************************************************** 35312027Sjungma@eit.uni-kl.de 35412027Sjungma@eit.uni-kl.de MODIFICATION LOG - modifiers, enter your name, affiliation, date and 35512027Sjungma@eit.uni-kl.de changes you are making here. 35612027Sjungma@eit.uni-kl.de 35712027Sjungma@eit.uni-kl.de Name, Affiliation, Date: Andy Goodrich, Forte, 35812027Sjungma@eit.uni-kl.de Bishnupriya Bhattacharya, Cadence Design Systems, 35912027Sjungma@eit.uni-kl.de 25 August, 2003 36012027Sjungma@eit.uni-kl.de Description of Modification: phase callbacks 36112027Sjungma@eit.uni-kl.de 36212027Sjungma@eit.uni-kl.de *****************************************************************************/ 36312027Sjungma@eit.uni-kl.de//$Log: sc_prim_channel.h,v $ 36412027Sjungma@eit.uni-kl.de//Revision 1.10 2011/08/26 21:38:32 acg 36512027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: removed unused switch m_construction_done. 36612027Sjungma@eit.uni-kl.de// 36712027Sjungma@eit.uni-kl.de//Revision 1.9 2011/08/07 19:08:01 acg 36812027Sjungma@eit.uni-kl.de// Andy Goodrich: moved logs to end of file so line number synching works 36912027Sjungma@eit.uni-kl.de// better between versions. 37012027Sjungma@eit.uni-kl.de// 37112027Sjungma@eit.uni-kl.de//Revision 1.8 2011/05/09 04:07:37 acg 37212027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: 37312027Sjungma@eit.uni-kl.de// (1) Restore hierarchy in all phase callbacks. 37412027Sjungma@eit.uni-kl.de// (2) Ensure calls to before_end_of_elaboration. 37512027Sjungma@eit.uni-kl.de// 37612027Sjungma@eit.uni-kl.de//Revision 1.7 2011/05/05 17:44:01 acg 37712027Sjungma@eit.uni-kl.de// Philip A. Hartmann: change in the name of pending_async_updates. 37812027Sjungma@eit.uni-kl.de// 37912027Sjungma@eit.uni-kl.de//Revision 1.6 2011/04/19 15:03:48 acg 38012027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: remove ASYNC_UPDATE preprocessor check from header. 38112027Sjungma@eit.uni-kl.de// 38212027Sjungma@eit.uni-kl.de//Revision 1.5 2011/04/19 02:36:26 acg 38312027Sjungma@eit.uni-kl.de// Philipp A. Hartmann: new aysnc_update and mutex support. 38412027Sjungma@eit.uni-kl.de// 38512027Sjungma@eit.uni-kl.de//Revision 1.4 2011/04/05 20:48:09 acg 38612027Sjungma@eit.uni-kl.de// Andy Goodrich: changes to make sure that event(), posedge() and negedge() 38712027Sjungma@eit.uni-kl.de// only return true if the clock has not moved. 38812027Sjungma@eit.uni-kl.de// 38912027Sjungma@eit.uni-kl.de//Revision 1.3 2011/02/18 20:23:45 acg 39012027Sjungma@eit.uni-kl.de// Andy Goodrich: Copyright update. 39112027Sjungma@eit.uni-kl.de// 39212027Sjungma@eit.uni-kl.de//Revision 1.2 2011/01/20 16:52:15 acg 39312027Sjungma@eit.uni-kl.de// Andy Goodrich: changes for IEEE 1666 2011. 39412027Sjungma@eit.uni-kl.de// 39512027Sjungma@eit.uni-kl.de//Revision 1.1.1.1 2006/12/15 20:20:04 acg 39612027Sjungma@eit.uni-kl.de//SystemC 2.3 39712027Sjungma@eit.uni-kl.de// 39812027Sjungma@eit.uni-kl.de//Revision 1.3 2006/05/08 17:52:47 acg 39912027Sjungma@eit.uni-kl.de// Andy Goodrich: 40012027Sjungma@eit.uni-kl.de// (1) added David Long's forward declarations for friend functions, 40112027Sjungma@eit.uni-kl.de// methods, and operators to keep the Microsoft compiler happy. 40212027Sjungma@eit.uni-kl.de// (2) Added delta_count() method to sc_prim_channel for use by 40312027Sjungma@eit.uni-kl.de// sc_signal so that the friend declaration in sc_simcontext.h 40412027Sjungma@eit.uni-kl.de// can be for a non-templated class (i.e., sc_prim_channel.) 40512027Sjungma@eit.uni-kl.de// 40612027Sjungma@eit.uni-kl.de//Revision 1.2 2006/01/03 23:18:26 acg 40712027Sjungma@eit.uni-kl.de//Changed copyright to include 2006. 40812027Sjungma@eit.uni-kl.de// 40912027Sjungma@eit.uni-kl.de//Revision 1.1.1.1 2005/12/19 23:16:43 acg 41012027Sjungma@eit.uni-kl.de//First check in of SystemC 2.1 into its own archive. 41112027Sjungma@eit.uni-kl.de// 41212027Sjungma@eit.uni-kl.de//Revision 1.10 2005/07/30 03:44:11 acg 41312027Sjungma@eit.uni-kl.de//Changes from 2.1. 41412027Sjungma@eit.uni-kl.de// 41512027Sjungma@eit.uni-kl.de//Revision 1.9 2005/06/10 22:43:55 acg 41612027Sjungma@eit.uni-kl.de//Added CVS change log annotation. 41712027Sjungma@eit.uni-kl.de 41812027Sjungma@eit.uni-kl.de#endif 41912027Sjungma@eit.uni-kl.de 42012027Sjungma@eit.uni-kl.de// Taf! 421