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_port.h -- Base classes of all port 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 IS AT THE END OF THE FILE 2712027Sjungma@eit.uni-kl.de *****************************************************************************/ 2812027Sjungma@eit.uni-kl.de 2912027Sjungma@eit.uni-kl.de#ifndef SC_PORT_H 3012027Sjungma@eit.uni-kl.de#define SC_PORT_H 3112027Sjungma@eit.uni-kl.de 3212027Sjungma@eit.uni-kl.de 3312027Sjungma@eit.uni-kl.de#include "sysc/communication/sc_communication_ids.h" 3412027Sjungma@eit.uni-kl.de#include "sysc/communication/sc_interface.h" 3512027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_event.h" 3612027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_object.h" 3712027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_process.h" 3812027Sjungma@eit.uni-kl.de#include <typeinfo> 3912027Sjungma@eit.uni-kl.de 4012027Sjungma@eit.uni-kl.de#if ! defined( SC_DISABLE_VIRTUAL_BIND ) 4112027Sjungma@eit.uni-kl.de# define SC_VIRTUAL_ virtual 4212027Sjungma@eit.uni-kl.de#else 4312027Sjungma@eit.uni-kl.de# define SC_VIRTUAL_ /* non-virtual */ 4412027Sjungma@eit.uni-kl.de#endif 4512027Sjungma@eit.uni-kl.de 4612027Sjungma@eit.uni-kl.denamespace sc_core { 4712027Sjungma@eit.uni-kl.de 4812027Sjungma@eit.uni-kl.declass sc_event_finder; 4912027Sjungma@eit.uni-kl.de 5012027Sjungma@eit.uni-kl.destruct sc_bind_info; 5112027Sjungma@eit.uni-kl.de 5212027Sjungma@eit.uni-kl.deenum sc_port_policy 5312027Sjungma@eit.uni-kl.de{ 5412027Sjungma@eit.uni-kl.de SC_ONE_OR_MORE_BOUND, // Default 5512027Sjungma@eit.uni-kl.de SC_ZERO_OR_MORE_BOUND, 5612027Sjungma@eit.uni-kl.de SC_ALL_BOUND 5712027Sjungma@eit.uni-kl.de}; 5812027Sjungma@eit.uni-kl.de 5912027Sjungma@eit.uni-kl.de 6012027Sjungma@eit.uni-kl.de// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6112027Sjungma@eit.uni-kl.de// BEWARE: Ports can only be created and bound during elaboration. 6212027Sjungma@eit.uni-kl.de// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6312027Sjungma@eit.uni-kl.de 6412027Sjungma@eit.uni-kl.de 6512027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 6612027Sjungma@eit.uni-kl.de// CLASS : sc_port_base 6712027Sjungma@eit.uni-kl.de// 6812027Sjungma@eit.uni-kl.de// Abstract base class for class sc_port_b. 6912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 7012027Sjungma@eit.uni-kl.de 7112027Sjungma@eit.uni-kl.declass sc_port_base 7212027Sjungma@eit.uni-kl.de: public sc_object 7312027Sjungma@eit.uni-kl.de{ 7412027Sjungma@eit.uni-kl.de friend class sc_module; 7512027Sjungma@eit.uni-kl.de friend class sc_port_registry; 7612027Sjungma@eit.uni-kl.de friend class sc_sensitive; 7712027Sjungma@eit.uni-kl.de friend class sc_sensitive_pos; 7812027Sjungma@eit.uni-kl.de friend class sc_sensitive_neg; 7912027Sjungma@eit.uni-kl.de 8012027Sjungma@eit.uni-kl.depublic: 8112027Sjungma@eit.uni-kl.de 8212027Sjungma@eit.uni-kl.de // typedefs 8312027Sjungma@eit.uni-kl.de 8412027Sjungma@eit.uni-kl.de typedef sc_port_base this_type; 8512027Sjungma@eit.uni-kl.de 8612027Sjungma@eit.uni-kl.depublic: 8712027Sjungma@eit.uni-kl.de 8812027Sjungma@eit.uni-kl.de int bind_count(); 8912027Sjungma@eit.uni-kl.de 9012027Sjungma@eit.uni-kl.de // get the first interface without checking for nil 9112027Sjungma@eit.uni-kl.de virtual sc_interface* get_interface() = 0; 9212027Sjungma@eit.uni-kl.de virtual const sc_interface* get_interface() const = 0; 9312027Sjungma@eit.uni-kl.de 9412027Sjungma@eit.uni-kl.de virtual const char* kind() const 9512027Sjungma@eit.uni-kl.de { return "sc_port_base"; } 9612027Sjungma@eit.uni-kl.de 9712027Sjungma@eit.uni-kl.deprotected: 9812027Sjungma@eit.uni-kl.de 9912027Sjungma@eit.uni-kl.de // constructors 10012027Sjungma@eit.uni-kl.de explicit sc_port_base( int max_size_, 10112027Sjungma@eit.uni-kl.de sc_port_policy policy=SC_ONE_OR_MORE_BOUND ); 10212027Sjungma@eit.uni-kl.de sc_port_base( const char* name_, int max_size_, 10312027Sjungma@eit.uni-kl.de sc_port_policy policy=SC_ONE_OR_MORE_BOUND ); 10412027Sjungma@eit.uni-kl.de 10512027Sjungma@eit.uni-kl.de // destructor 10612027Sjungma@eit.uni-kl.de virtual ~sc_port_base(); 10712027Sjungma@eit.uni-kl.de 10812027Sjungma@eit.uni-kl.de // bind interface to this port 10912027Sjungma@eit.uni-kl.de void bind( sc_interface& interface_ ); 11012027Sjungma@eit.uni-kl.de 11112027Sjungma@eit.uni-kl.de // bind parent port to this port 11212027Sjungma@eit.uni-kl.de void bind( this_type& parent_ ); 11312027Sjungma@eit.uni-kl.de 11412027Sjungma@eit.uni-kl.de // called by pbind (for internal use only) 11512027Sjungma@eit.uni-kl.de virtual int vbind( sc_interface& ) = 0; 11612027Sjungma@eit.uni-kl.de virtual int vbind( sc_port_base& ) = 0; 11712027Sjungma@eit.uni-kl.de 11812027Sjungma@eit.uni-kl.de // called by complete_binding (for internal use only) 11912027Sjungma@eit.uni-kl.de virtual void add_interface( sc_interface* ) = 0; 12012027Sjungma@eit.uni-kl.de virtual int interface_count() = 0; 12112027Sjungma@eit.uni-kl.de virtual const char* if_typename() const = 0; 12212027Sjungma@eit.uni-kl.de 12312027Sjungma@eit.uni-kl.de // called by construction_done (does nothing by default) 12412027Sjungma@eit.uni-kl.de virtual void before_end_of_elaboration(); 12512027Sjungma@eit.uni-kl.de 12612027Sjungma@eit.uni-kl.de // called by elaboration_done (does nothing) 12712027Sjungma@eit.uni-kl.de virtual void end_of_elaboration(); 12812027Sjungma@eit.uni-kl.de 12912027Sjungma@eit.uni-kl.de // called by start_simulation (does nothing by default) 13012027Sjungma@eit.uni-kl.de virtual void start_of_simulation(); 13112027Sjungma@eit.uni-kl.de 13212027Sjungma@eit.uni-kl.de // called by simulation_done (does nothing by default) 13312027Sjungma@eit.uni-kl.de virtual void end_of_simulation(); 13412027Sjungma@eit.uni-kl.de 13512027Sjungma@eit.uni-kl.de // error reporting 13612027Sjungma@eit.uni-kl.de void report_error( const char* id, const char* add_msg = 0) const; 13712027Sjungma@eit.uni-kl.de 13812027Sjungma@eit.uni-kl.deprotected: 13912027Sjungma@eit.uni-kl.de // called by the sc_sensitive* classes 14012027Sjungma@eit.uni-kl.de virtual void make_sensitive( sc_thread_handle, sc_event_finder* = 0 ) const; 14112027Sjungma@eit.uni-kl.de virtual void make_sensitive( sc_method_handle, sc_event_finder* = 0 ) const; 14212027Sjungma@eit.uni-kl.de void add_static_event( 14312027Sjungma@eit.uni-kl.de sc_method_handle process_p, const sc_event& event) const; 14412027Sjungma@eit.uni-kl.de void add_static_event( 14512027Sjungma@eit.uni-kl.de sc_thread_handle process_p, const sc_event& event) const; 14612027Sjungma@eit.uni-kl.de 14712027Sjungma@eit.uni-kl.deprivate: 14812027Sjungma@eit.uni-kl.de 14912027Sjungma@eit.uni-kl.de // called by class sc_module for positional binding 15012027Sjungma@eit.uni-kl.de int pbind( sc_interface& ); 15112027Sjungma@eit.uni-kl.de int pbind( sc_port_base& ); 15212027Sjungma@eit.uni-kl.de 15312027Sjungma@eit.uni-kl.de 15412027Sjungma@eit.uni-kl.de // support methods 15512027Sjungma@eit.uni-kl.de int first_parent(); 15612027Sjungma@eit.uni-kl.de void insert_parent( int ); 15712027Sjungma@eit.uni-kl.de 15812027Sjungma@eit.uni-kl.de // called when construction is done 15912027Sjungma@eit.uni-kl.de void construction_done(); 16012027Sjungma@eit.uni-kl.de 16112027Sjungma@eit.uni-kl.de // called when elaboration is done 16212027Sjungma@eit.uni-kl.de void complete_binding(); 16312027Sjungma@eit.uni-kl.de void elaboration_done(); 16412027Sjungma@eit.uni-kl.de 16512027Sjungma@eit.uni-kl.de // called before simulation starts 16612027Sjungma@eit.uni-kl.de void start_simulation(); 16712027Sjungma@eit.uni-kl.de 16812027Sjungma@eit.uni-kl.de // called after simulation ends 16912027Sjungma@eit.uni-kl.de void simulation_done(); 17012027Sjungma@eit.uni-kl.de 17112027Sjungma@eit.uni-kl.deprotected: 17212027Sjungma@eit.uni-kl.de 17312027Sjungma@eit.uni-kl.de sc_bind_info* m_bind_info; 17412027Sjungma@eit.uni-kl.de 17512027Sjungma@eit.uni-kl.deprivate: 17612027Sjungma@eit.uni-kl.de 17712027Sjungma@eit.uni-kl.de // disabled 17812027Sjungma@eit.uni-kl.de sc_port_base(); 17912027Sjungma@eit.uni-kl.de sc_port_base( const this_type& ); 18012027Sjungma@eit.uni-kl.de this_type& operator = ( const this_type& ); 18112027Sjungma@eit.uni-kl.de}; 18212027Sjungma@eit.uni-kl.de 18312027Sjungma@eit.uni-kl.de 18412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 18512027Sjungma@eit.uni-kl.de// CLASS : sc_port_registry 18612027Sjungma@eit.uni-kl.de// 18712027Sjungma@eit.uni-kl.de// Registry for all ports. 18812027Sjungma@eit.uni-kl.de// FOR INTERNAL USE ONLY! 18912027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 19012027Sjungma@eit.uni-kl.de 19112027Sjungma@eit.uni-kl.declass sc_port_registry 19212027Sjungma@eit.uni-kl.de{ 19312027Sjungma@eit.uni-kl.de friend class sc_simcontext; 19412027Sjungma@eit.uni-kl.de 19512027Sjungma@eit.uni-kl.depublic: 19612027Sjungma@eit.uni-kl.de 19712027Sjungma@eit.uni-kl.de void insert( sc_port_base* ); 19812027Sjungma@eit.uni-kl.de void remove( sc_port_base* ); 19912027Sjungma@eit.uni-kl.de 20012027Sjungma@eit.uni-kl.de int size() const 20112027Sjungma@eit.uni-kl.de { return m_port_vec.size(); } 20212027Sjungma@eit.uni-kl.de 20312027Sjungma@eit.uni-kl.deprivate: 20412027Sjungma@eit.uni-kl.de 20512027Sjungma@eit.uni-kl.de // constructor 20612027Sjungma@eit.uni-kl.de explicit sc_port_registry( sc_simcontext& simc_ ); 20712027Sjungma@eit.uni-kl.de 20812027Sjungma@eit.uni-kl.de // destructor 20912027Sjungma@eit.uni-kl.de ~sc_port_registry(); 21012027Sjungma@eit.uni-kl.de 21112027Sjungma@eit.uni-kl.de // called when by construction_done and elaboration done 21212027Sjungma@eit.uni-kl.de void complete_binding(); 21312027Sjungma@eit.uni-kl.de 21412027Sjungma@eit.uni-kl.de // called when construction is done 21512027Sjungma@eit.uni-kl.de bool construction_done(); 21612027Sjungma@eit.uni-kl.de 21712027Sjungma@eit.uni-kl.de // called when elaboration is done 21812027Sjungma@eit.uni-kl.de void elaboration_done(); 21912027Sjungma@eit.uni-kl.de 22012027Sjungma@eit.uni-kl.de // called before simulation starts 22112027Sjungma@eit.uni-kl.de void start_simulation(); 22212027Sjungma@eit.uni-kl.de 22312027Sjungma@eit.uni-kl.de // called after simulation ends 22412027Sjungma@eit.uni-kl.de void simulation_done(); 22512027Sjungma@eit.uni-kl.de 22612027Sjungma@eit.uni-kl.de static void replace_port( sc_port_registry* ); 22712027Sjungma@eit.uni-kl.de 22812027Sjungma@eit.uni-kl.deprivate: 22912027Sjungma@eit.uni-kl.de 23012027Sjungma@eit.uni-kl.de int m_construction_done; 23112027Sjungma@eit.uni-kl.de std::vector<sc_port_base*> m_port_vec; 23212027Sjungma@eit.uni-kl.de sc_simcontext* m_simc; 23312027Sjungma@eit.uni-kl.de 23412027Sjungma@eit.uni-kl.deprivate: 23512027Sjungma@eit.uni-kl.de 23612027Sjungma@eit.uni-kl.de // disabled 23712027Sjungma@eit.uni-kl.de sc_port_registry(); 23812027Sjungma@eit.uni-kl.de sc_port_registry( const sc_port_registry& ); 23912027Sjungma@eit.uni-kl.de sc_port_registry& operator = ( const sc_port_registry& ); 24012027Sjungma@eit.uni-kl.de}; 24112027Sjungma@eit.uni-kl.de 24212027Sjungma@eit.uni-kl.de 24312027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 24412027Sjungma@eit.uni-kl.de// CLASS : sc_port_b 24512027Sjungma@eit.uni-kl.de// 24612027Sjungma@eit.uni-kl.de// Abstract base class for class sc_port. 24712027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 24812027Sjungma@eit.uni-kl.de 24912027Sjungma@eit.uni-kl.detemplate <class IF> 25012027Sjungma@eit.uni-kl.declass sc_port_b 25112027Sjungma@eit.uni-kl.de: public sc_port_base 25212027Sjungma@eit.uni-kl.de{ 25312027Sjungma@eit.uni-kl.depublic: 25412027Sjungma@eit.uni-kl.de 25512027Sjungma@eit.uni-kl.de friend class sc_sensitive; 25612027Sjungma@eit.uni-kl.de friend class sc_sensitive_neg; 25712027Sjungma@eit.uni-kl.de friend class sc_sensitive_pos; 25812027Sjungma@eit.uni-kl.de 25912027Sjungma@eit.uni-kl.de // typedefs 26012027Sjungma@eit.uni-kl.de 26112027Sjungma@eit.uni-kl.de typedef sc_port_base base_type; 26212027Sjungma@eit.uni-kl.de typedef sc_port_b<IF> this_type; 26312027Sjungma@eit.uni-kl.de typedef this_type port_type; 26412027Sjungma@eit.uni-kl.de 26512027Sjungma@eit.uni-kl.depublic: 26612027Sjungma@eit.uni-kl.de 26712027Sjungma@eit.uni-kl.de // bind an interface of type IF to this port 26812027Sjungma@eit.uni-kl.de 26912027Sjungma@eit.uni-kl.de SC_VIRTUAL_ void bind( IF& interface_ ) 27012027Sjungma@eit.uni-kl.de { base_type::bind( interface_ ); } 27112027Sjungma@eit.uni-kl.de 27212027Sjungma@eit.uni-kl.de void operator () ( IF& interface_ ) 27312027Sjungma@eit.uni-kl.de { this->bind( interface_ ); } 27412027Sjungma@eit.uni-kl.de 27512027Sjungma@eit.uni-kl.de 27612027Sjungma@eit.uni-kl.de // bind a parent port with type IF to this port 27712027Sjungma@eit.uni-kl.de 27812027Sjungma@eit.uni-kl.de SC_VIRTUAL_ void bind( port_type& parent_ ) 27912027Sjungma@eit.uni-kl.de { base_type::bind( parent_ ); } 28012027Sjungma@eit.uni-kl.de 28112027Sjungma@eit.uni-kl.de void operator () ( port_type& parent_ ) 28212027Sjungma@eit.uni-kl.de { this->bind( parent_ ); } 28312027Sjungma@eit.uni-kl.de 28412027Sjungma@eit.uni-kl.de 28512027Sjungma@eit.uni-kl.de // number of connected interfaces 28612027Sjungma@eit.uni-kl.de 28712027Sjungma@eit.uni-kl.de int size() const 28812027Sjungma@eit.uni-kl.de { return m_interface_vec.size(); } 28912027Sjungma@eit.uni-kl.de 29012027Sjungma@eit.uni-kl.de 29112027Sjungma@eit.uni-kl.de // allow to call methods provided by the first interface 29212027Sjungma@eit.uni-kl.de IF* operator -> (); 29312027Sjungma@eit.uni-kl.de const IF* operator -> () const; 29412027Sjungma@eit.uni-kl.de 29512027Sjungma@eit.uni-kl.de 29612027Sjungma@eit.uni-kl.de // allow to call methods provided by interface at index 29712027Sjungma@eit.uni-kl.de inline const IF* get_interface( int iface_i ) const; 29812027Sjungma@eit.uni-kl.de inline IF* get_interface( int iface_i ); 29912027Sjungma@eit.uni-kl.de IF* operator [] ( int index_ ) 30012027Sjungma@eit.uni-kl.de { return get_interface( index_ ); } 30112027Sjungma@eit.uni-kl.de const IF* operator [] ( int index_ ) const 30212027Sjungma@eit.uni-kl.de { return get_interface( index_ ); } 30312027Sjungma@eit.uni-kl.de 30412027Sjungma@eit.uni-kl.de 30512027Sjungma@eit.uni-kl.de // get the first interface without checking for nil 30612027Sjungma@eit.uni-kl.de 30712027Sjungma@eit.uni-kl.de virtual sc_interface* get_interface() 30812027Sjungma@eit.uni-kl.de { return m_interface; } 30912027Sjungma@eit.uni-kl.de 31012027Sjungma@eit.uni-kl.de virtual const sc_interface* get_interface() const 31112027Sjungma@eit.uni-kl.de { return m_interface; } 31212027Sjungma@eit.uni-kl.de 31312027Sjungma@eit.uni-kl.deprotected: 31412027Sjungma@eit.uni-kl.de 31512027Sjungma@eit.uni-kl.de // constructors 31612027Sjungma@eit.uni-kl.de 31712027Sjungma@eit.uni-kl.de explicit sc_port_b( int max_size_, 31812027Sjungma@eit.uni-kl.de sc_port_policy policy=SC_ONE_OR_MORE_BOUND ) : 31912027Sjungma@eit.uni-kl.de base_type( max_size_, policy ), m_interface( 0 ), m_interface_vec() 32012027Sjungma@eit.uni-kl.de {} 32112027Sjungma@eit.uni-kl.de 32212027Sjungma@eit.uni-kl.de sc_port_b( const char* name_, int max_size_, 32312027Sjungma@eit.uni-kl.de sc_port_policy policy=SC_ONE_OR_MORE_BOUND ) : 32412027Sjungma@eit.uni-kl.de base_type( name_, max_size_, policy ), m_interface( 0 ), 32512027Sjungma@eit.uni-kl.de m_interface_vec() 32612027Sjungma@eit.uni-kl.de {} 32712027Sjungma@eit.uni-kl.de 32812027Sjungma@eit.uni-kl.de 32912027Sjungma@eit.uni-kl.de // destructor (does nothing) 33012027Sjungma@eit.uni-kl.de 33112027Sjungma@eit.uni-kl.de virtual ~sc_port_b() 33212027Sjungma@eit.uni-kl.de {} 33312027Sjungma@eit.uni-kl.de 33412027Sjungma@eit.uni-kl.de 33512027Sjungma@eit.uni-kl.de // called by pbind (for internal use only) 33612027Sjungma@eit.uni-kl.de virtual int vbind( sc_interface& ); 33712027Sjungma@eit.uni-kl.de virtual int vbind( sc_port_base& ); 33812027Sjungma@eit.uni-kl.de 33912027Sjungma@eit.uni-kl.deprotected: 34012027Sjungma@eit.uni-kl.de 34112027Sjungma@eit.uni-kl.de // called by the sc_sensitive* classes 34212027Sjungma@eit.uni-kl.de virtual void make_sensitive( sc_thread_handle, sc_event_finder* = 0 ) const; 34312027Sjungma@eit.uni-kl.de virtual void make_sensitive( sc_method_handle, sc_event_finder* = 0 ) const; 34412027Sjungma@eit.uni-kl.de 34512027Sjungma@eit.uni-kl.deprivate: 34612027Sjungma@eit.uni-kl.de 34712027Sjungma@eit.uni-kl.de // called by complete_binding (for internal use only) 34812027Sjungma@eit.uni-kl.de virtual void add_interface( sc_interface* ); 34912027Sjungma@eit.uni-kl.de virtual const char* if_typename() const; 35012027Sjungma@eit.uni-kl.de virtual int interface_count(); 35112027Sjungma@eit.uni-kl.de 35212027Sjungma@eit.uni-kl.de // disabled 35312027Sjungma@eit.uni-kl.de sc_port_b(); 35412027Sjungma@eit.uni-kl.de sc_port_b( const this_type& ); 35512027Sjungma@eit.uni-kl.de this_type& operator = ( const this_type& ); 35612027Sjungma@eit.uni-kl.de 35712027Sjungma@eit.uni-kl.deprivate: 35812027Sjungma@eit.uni-kl.de 35912027Sjungma@eit.uni-kl.de IF* m_interface; // first interface in interface vec 36012027Sjungma@eit.uni-kl.de std::vector<IF*> m_interface_vec; 36112027Sjungma@eit.uni-kl.de}; 36212027Sjungma@eit.uni-kl.de 36312027Sjungma@eit.uni-kl.de 36412027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 36512027Sjungma@eit.uni-kl.de// CLASS : sc_port 36612027Sjungma@eit.uni-kl.de// 36712027Sjungma@eit.uni-kl.de// Generic port class and base class for other port classes. 36812027Sjungma@eit.uni-kl.de// N is the maximum number of channels (with interface IF) that can be bound 36912027Sjungma@eit.uni-kl.de// to this port. N <= 0 means no maximum. 37012027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 37112027Sjungma@eit.uni-kl.de 37212027Sjungma@eit.uni-kl.deextern void sc_warn_port_constructor(); 37312027Sjungma@eit.uni-kl.de 37412027Sjungma@eit.uni-kl.detemplate <class IF, int N = 1, sc_port_policy P=SC_ONE_OR_MORE_BOUND> 37512027Sjungma@eit.uni-kl.declass sc_port 37612027Sjungma@eit.uni-kl.de: public sc_port_b<IF> 37712027Sjungma@eit.uni-kl.de{ 37812027Sjungma@eit.uni-kl.de // typdefs 37912027Sjungma@eit.uni-kl.de 38012027Sjungma@eit.uni-kl.de typedef sc_port_b<IF> base_type; 38112027Sjungma@eit.uni-kl.de typedef sc_port<IF,N,P> this_type; 38212027Sjungma@eit.uni-kl.de 38312027Sjungma@eit.uni-kl.depublic: 38412027Sjungma@eit.uni-kl.de 38512027Sjungma@eit.uni-kl.de // constructors 38612027Sjungma@eit.uni-kl.de 38712027Sjungma@eit.uni-kl.de sc_port() 38812027Sjungma@eit.uni-kl.de : base_type( N, P ) 38912027Sjungma@eit.uni-kl.de {} 39012027Sjungma@eit.uni-kl.de 39112027Sjungma@eit.uni-kl.de explicit sc_port( const char* name_ ) 39212027Sjungma@eit.uni-kl.de : base_type( name_, N, P ) 39312027Sjungma@eit.uni-kl.de {} 39412027Sjungma@eit.uni-kl.de 39512027Sjungma@eit.uni-kl.de explicit sc_port( IF& interface_ ) 39612027Sjungma@eit.uni-kl.de : base_type( N, P ) 39712027Sjungma@eit.uni-kl.de { sc_warn_port_constructor(); base_type::bind( interface_ ); } 39812027Sjungma@eit.uni-kl.de 39912027Sjungma@eit.uni-kl.de sc_port( const char* name_, IF& interface_ ) 40012027Sjungma@eit.uni-kl.de : base_type( name_, N, P ) 40112027Sjungma@eit.uni-kl.de { sc_warn_port_constructor(); base_type::bind( interface_ ); } 40212027Sjungma@eit.uni-kl.de 40312027Sjungma@eit.uni-kl.de explicit sc_port( base_type& parent_ ) 40412027Sjungma@eit.uni-kl.de : base_type( N, P ) 40512027Sjungma@eit.uni-kl.de { sc_warn_port_constructor(); base_type::bind( parent_ ); } 40612027Sjungma@eit.uni-kl.de 40712027Sjungma@eit.uni-kl.de sc_port( const char* name_, base_type& parent_ ) 40812027Sjungma@eit.uni-kl.de : base_type( name_, N, P ) 40912027Sjungma@eit.uni-kl.de { sc_warn_port_constructor(); base_type::bind( parent_ ); } 41012027Sjungma@eit.uni-kl.de 41112027Sjungma@eit.uni-kl.de sc_port( this_type& parent_ ) 41212027Sjungma@eit.uni-kl.de : base_type( N, P ) 41312027Sjungma@eit.uni-kl.de { sc_warn_port_constructor(); base_type::bind( parent_ ); } 41412027Sjungma@eit.uni-kl.de 41512027Sjungma@eit.uni-kl.de sc_port( const char* name_, this_type& parent_ ) 41612027Sjungma@eit.uni-kl.de : base_type( name_, N, P ) 41712027Sjungma@eit.uni-kl.de { sc_warn_port_constructor(); base_type::bind( parent_ ); } 41812027Sjungma@eit.uni-kl.de 41912027Sjungma@eit.uni-kl.de 42012027Sjungma@eit.uni-kl.de // destructor (does nothing) 42112027Sjungma@eit.uni-kl.de 42212027Sjungma@eit.uni-kl.de virtual ~sc_port() 42312027Sjungma@eit.uni-kl.de {} 42412027Sjungma@eit.uni-kl.de 42512027Sjungma@eit.uni-kl.de virtual const char* kind() const 42612027Sjungma@eit.uni-kl.de { return "sc_port"; } 42712027Sjungma@eit.uni-kl.de 42812027Sjungma@eit.uni-kl.deprivate: 42912027Sjungma@eit.uni-kl.de 43012027Sjungma@eit.uni-kl.de // disabled 43112027Sjungma@eit.uni-kl.de sc_port( const this_type& ); 43212027Sjungma@eit.uni-kl.de this_type& operator = ( const this_type& ); 43312027Sjungma@eit.uni-kl.de}; 43412027Sjungma@eit.uni-kl.de 43512027Sjungma@eit.uni-kl.de 43612027Sjungma@eit.uni-kl.de// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 43712027Sjungma@eit.uni-kl.de 43812027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 43912027Sjungma@eit.uni-kl.de// CLASS : sc_port_b 44012027Sjungma@eit.uni-kl.de// 44112027Sjungma@eit.uni-kl.de// Abstract base class for class sc_port. 44212027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 44312027Sjungma@eit.uni-kl.de 44412027Sjungma@eit.uni-kl.de// allow to call methods provided by the first interface 44512027Sjungma@eit.uni-kl.de 44612027Sjungma@eit.uni-kl.detemplate <class IF> 44712027Sjungma@eit.uni-kl.deinline 44812027Sjungma@eit.uni-kl.deIF* 44912027Sjungma@eit.uni-kl.desc_port_b<IF>::operator -> () 45012027Sjungma@eit.uni-kl.de{ 45112027Sjungma@eit.uni-kl.de if( m_interface == 0 ) { 45212027Sjungma@eit.uni-kl.de report_error( SC_ID_GET_IF_, "port is not bound" ); 45312027Sjungma@eit.uni-kl.de } 45412027Sjungma@eit.uni-kl.de return m_interface; 45512027Sjungma@eit.uni-kl.de} 45612027Sjungma@eit.uni-kl.de 45712027Sjungma@eit.uni-kl.detemplate <class IF> 45812027Sjungma@eit.uni-kl.deinline 45912027Sjungma@eit.uni-kl.deconst IF* 46012027Sjungma@eit.uni-kl.desc_port_b<IF>::operator -> () const 46112027Sjungma@eit.uni-kl.de{ 46212027Sjungma@eit.uni-kl.de if( m_interface == 0 ) { 46312027Sjungma@eit.uni-kl.de report_error( SC_ID_GET_IF_, "port is not bound" ); 46412027Sjungma@eit.uni-kl.de } 46512027Sjungma@eit.uni-kl.de return m_interface; 46612027Sjungma@eit.uni-kl.de} 46712027Sjungma@eit.uni-kl.de 46812027Sjungma@eit.uni-kl.de 46912027Sjungma@eit.uni-kl.de// allow to call methods provided by interface at index 47012027Sjungma@eit.uni-kl.de// 47112027Sjungma@eit.uni-kl.de// note that we special-case index of zero, since the method may be 47212027Sjungma@eit.uni-kl.de// called before binding has occurred, and we need to return a zero 47312027Sjungma@eit.uni-kl.de// in that case not an error. 47412027Sjungma@eit.uni-kl.de 47512027Sjungma@eit.uni-kl.detemplate <class IF> 47612027Sjungma@eit.uni-kl.deinline 47712027Sjungma@eit.uni-kl.deIF* 47812027Sjungma@eit.uni-kl.desc_port_b<IF>::get_interface( int index_ ) 47912027Sjungma@eit.uni-kl.de{ 48012027Sjungma@eit.uni-kl.de if ( index_ == 0 ) { 48112027Sjungma@eit.uni-kl.de return m_interface; 48212027Sjungma@eit.uni-kl.de } 48312027Sjungma@eit.uni-kl.de else if( index_ < 0 || index_ >= size() ) { 48412027Sjungma@eit.uni-kl.de report_error( SC_ID_GET_IF_, "index out of range" ); 48512027Sjungma@eit.uni-kl.de } 48612027Sjungma@eit.uni-kl.de return m_interface_vec[index_]; 48712027Sjungma@eit.uni-kl.de} 48812027Sjungma@eit.uni-kl.de 48912027Sjungma@eit.uni-kl.detemplate <class IF> 49012027Sjungma@eit.uni-kl.deinline 49112027Sjungma@eit.uni-kl.deconst IF* 49212027Sjungma@eit.uni-kl.desc_port_b<IF>::get_interface( int index_ ) const 49312027Sjungma@eit.uni-kl.de{ 49412027Sjungma@eit.uni-kl.de if ( index_ == 0 ) { 49512027Sjungma@eit.uni-kl.de return m_interface; 49612027Sjungma@eit.uni-kl.de } 49712027Sjungma@eit.uni-kl.de else if( index_ < 0 || index_ >= size() ) { 49812027Sjungma@eit.uni-kl.de report_error( SC_ID_GET_IF_, "index out of range" ); 49912027Sjungma@eit.uni-kl.de } 50012027Sjungma@eit.uni-kl.de return m_interface_vec[index_]; 50112027Sjungma@eit.uni-kl.de} 50212027Sjungma@eit.uni-kl.de 50312027Sjungma@eit.uni-kl.de 50412027Sjungma@eit.uni-kl.de// called by pbind (for internal use only) 50512027Sjungma@eit.uni-kl.de 50612027Sjungma@eit.uni-kl.detemplate <class IF> 50712027Sjungma@eit.uni-kl.deinline 50812027Sjungma@eit.uni-kl.deint 50912027Sjungma@eit.uni-kl.desc_port_b<IF>::vbind( sc_interface& interface_ ) 51012027Sjungma@eit.uni-kl.de{ 51112027Sjungma@eit.uni-kl.de IF* iface = DCAST<IF*>( &interface_ ); 51212027Sjungma@eit.uni-kl.de if( iface == 0 ) { 51312027Sjungma@eit.uni-kl.de // type mismatch 51412027Sjungma@eit.uni-kl.de return 2; 51512027Sjungma@eit.uni-kl.de } 51612027Sjungma@eit.uni-kl.de base_type::bind( *iface ); 51712027Sjungma@eit.uni-kl.de return 0; 51812027Sjungma@eit.uni-kl.de} 51912027Sjungma@eit.uni-kl.de 52012027Sjungma@eit.uni-kl.detemplate <class IF> 52112027Sjungma@eit.uni-kl.deinline 52212027Sjungma@eit.uni-kl.deint 52312027Sjungma@eit.uni-kl.desc_port_b<IF>::vbind( sc_port_base& parent_ ) 52412027Sjungma@eit.uni-kl.de{ 52512027Sjungma@eit.uni-kl.de this_type* parent = DCAST<this_type*>( &parent_ ); 52612027Sjungma@eit.uni-kl.de if( parent == 0 ) { 52712027Sjungma@eit.uni-kl.de // type mismatch 52812027Sjungma@eit.uni-kl.de return 2; 52912027Sjungma@eit.uni-kl.de } 53012027Sjungma@eit.uni-kl.de base_type::bind( *parent ); 53112027Sjungma@eit.uni-kl.de return 0; 53212027Sjungma@eit.uni-kl.de} 53312027Sjungma@eit.uni-kl.de 53412027Sjungma@eit.uni-kl.de 53512027Sjungma@eit.uni-kl.de// called by complete_binding (for internal use only) 53612027Sjungma@eit.uni-kl.de 53712027Sjungma@eit.uni-kl.detemplate <class IF> 53812027Sjungma@eit.uni-kl.deinline 53912027Sjungma@eit.uni-kl.devoid 54012027Sjungma@eit.uni-kl.desc_port_b<IF>::add_interface( sc_interface* interface_ ) 54112027Sjungma@eit.uni-kl.de{ 54212027Sjungma@eit.uni-kl.de IF* iface = DCAST<IF*>( interface_ ); 54312027Sjungma@eit.uni-kl.de assert( iface != 0 ); 54412027Sjungma@eit.uni-kl.de 54512027Sjungma@eit.uni-kl.de // make sure that the interface is not already bound: 54612027Sjungma@eit.uni-kl.de 54712027Sjungma@eit.uni-kl.de int size = m_interface_vec.size(); 54812027Sjungma@eit.uni-kl.de for ( int i = 0; i < size; i++ ) 54912027Sjungma@eit.uni-kl.de { 55012027Sjungma@eit.uni-kl.de if ( iface == m_interface_vec[i] ) 55112027Sjungma@eit.uni-kl.de { 55212027Sjungma@eit.uni-kl.de report_error( SC_ID_BIND_IF_TO_PORT_, 55312027Sjungma@eit.uni-kl.de "interface already bound to port" ); 55412027Sjungma@eit.uni-kl.de } 55512027Sjungma@eit.uni-kl.de } 55612027Sjungma@eit.uni-kl.de 55712027Sjungma@eit.uni-kl.de // "bind" the interface and make sure our short cut for 0 is set up. 55812027Sjungma@eit.uni-kl.de 55912027Sjungma@eit.uni-kl.de m_interface_vec.push_back( iface ); 56012027Sjungma@eit.uni-kl.de m_interface = m_interface_vec[0]; 56112027Sjungma@eit.uni-kl.de} 56212027Sjungma@eit.uni-kl.de 56312027Sjungma@eit.uni-kl.detemplate <class IF> 56412027Sjungma@eit.uni-kl.deinline 56512027Sjungma@eit.uni-kl.deconst char* 56612027Sjungma@eit.uni-kl.desc_port_b<IF>::if_typename() const 56712027Sjungma@eit.uni-kl.de{ 56812027Sjungma@eit.uni-kl.de return typeid( IF ).name(); 56912027Sjungma@eit.uni-kl.de} 57012027Sjungma@eit.uni-kl.de 57112027Sjungma@eit.uni-kl.detemplate <class IF> 57212027Sjungma@eit.uni-kl.deinline 57312027Sjungma@eit.uni-kl.deint 57412027Sjungma@eit.uni-kl.desc_port_b<IF>::interface_count() 57512027Sjungma@eit.uni-kl.de{ 57612027Sjungma@eit.uni-kl.de return m_interface_vec.size(); 57712027Sjungma@eit.uni-kl.de} 57812027Sjungma@eit.uni-kl.de 57912027Sjungma@eit.uni-kl.detemplate <class IF> 58012027Sjungma@eit.uni-kl.devoid 58112027Sjungma@eit.uni-kl.desc_port_b<IF>::make_sensitive( sc_thread_handle handle_p, 58212027Sjungma@eit.uni-kl.de sc_event_finder* event_finder_ ) const 58312027Sjungma@eit.uni-kl.de{ 58412027Sjungma@eit.uni-kl.de if ( m_bind_info == 0 ) 58512027Sjungma@eit.uni-kl.de { 58612027Sjungma@eit.uni-kl.de int if_n = m_interface_vec.size(); 58712027Sjungma@eit.uni-kl.de for ( int if_i = 0; if_i < if_n; if_i++ ) 58812027Sjungma@eit.uni-kl.de { 58912027Sjungma@eit.uni-kl.de IF* iface_p = m_interface_vec[if_i]; 59012027Sjungma@eit.uni-kl.de assert( iface_p != 0 ); 59112027Sjungma@eit.uni-kl.de add_static_event( handle_p, iface_p->default_event() ); 59212027Sjungma@eit.uni-kl.de } 59312027Sjungma@eit.uni-kl.de } 59412027Sjungma@eit.uni-kl.de else 59512027Sjungma@eit.uni-kl.de { 59612027Sjungma@eit.uni-kl.de sc_port_base::make_sensitive( handle_p, event_finder_ ); 59712027Sjungma@eit.uni-kl.de } 59812027Sjungma@eit.uni-kl.de} 59912027Sjungma@eit.uni-kl.de 60012027Sjungma@eit.uni-kl.detemplate <class IF> 60112027Sjungma@eit.uni-kl.devoid 60212027Sjungma@eit.uni-kl.desc_port_b<IF>::make_sensitive( sc_method_handle handle_p, 60312027Sjungma@eit.uni-kl.de sc_event_finder* event_finder_ ) const 60412027Sjungma@eit.uni-kl.de{ 60512027Sjungma@eit.uni-kl.de if ( m_bind_info == 0 ) 60612027Sjungma@eit.uni-kl.de { 60712027Sjungma@eit.uni-kl.de int if_n = m_interface_vec.size(); 60812027Sjungma@eit.uni-kl.de for ( int if_i = 0; if_i < if_n; if_i++ ) 60912027Sjungma@eit.uni-kl.de { 61012027Sjungma@eit.uni-kl.de IF* iface_p = m_interface_vec[if_i]; 61112027Sjungma@eit.uni-kl.de assert( iface_p != 0 ); 61212027Sjungma@eit.uni-kl.de add_static_event( handle_p, iface_p->default_event() ); 61312027Sjungma@eit.uni-kl.de } 61412027Sjungma@eit.uni-kl.de } 61512027Sjungma@eit.uni-kl.de else 61612027Sjungma@eit.uni-kl.de { 61712027Sjungma@eit.uni-kl.de sc_port_base::make_sensitive( handle_p, event_finder_ ); 61812027Sjungma@eit.uni-kl.de } 61912027Sjungma@eit.uni-kl.de} 62012027Sjungma@eit.uni-kl.de 62112027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 62212027Sjungma@eit.uni-kl.de// CLASS : sc_port 62312027Sjungma@eit.uni-kl.de// 62412027Sjungma@eit.uni-kl.de// Generic port class and base class for other port classes. 62512027Sjungma@eit.uni-kl.de// N is the maximum number of channels (with interface IF) that can be bound 62612027Sjungma@eit.uni-kl.de// to this port. N <= 0 means no maximum. 62712027Sjungma@eit.uni-kl.de// ---------------------------------------------------------------------------- 62812027Sjungma@eit.uni-kl.de 62912027Sjungma@eit.uni-kl.de} // namespace sc_core 63012027Sjungma@eit.uni-kl.de 63112027Sjungma@eit.uni-kl.de#undef SC_VIRTUAL_ 63212027Sjungma@eit.uni-kl.de 63312027Sjungma@eit.uni-kl.de/***************************************************************************** 63412027Sjungma@eit.uni-kl.de 63512027Sjungma@eit.uni-kl.de MODIFICATION LOG - modifiers, enter your name, affiliation, date and 63612027Sjungma@eit.uni-kl.de changes you are making here. 63712027Sjungma@eit.uni-kl.de 63812027Sjungma@eit.uni-kl.de Name, Affiliation, Date: Andy Goodrich, Forte, 63912027Sjungma@eit.uni-kl.de Bishnupriya Bhattacharya, Cadence Design Systems, 64012027Sjungma@eit.uni-kl.de 25 August, 2003 64112027Sjungma@eit.uni-kl.de Description of Modification: phase callbacks 64212027Sjungma@eit.uni-kl.de 64312027Sjungma@eit.uni-kl.de Name, Affiliation, Date: Andy Goodrich, Forte Design Systems 64412027Sjungma@eit.uni-kl.de 12 December, 2005 64512027Sjungma@eit.uni-kl.de Description of Modification: multiport binding policy changes 64612027Sjungma@eit.uni-kl.de 64712027Sjungma@eit.uni-kl.de 64812027Sjungma@eit.uni-kl.de *****************************************************************************/ 64912027Sjungma@eit.uni-kl.de 65012027Sjungma@eit.uni-kl.de/* 65112027Sjungma@eit.uni-kl.de$Log: sc_port.h,v $ 65212027Sjungma@eit.uni-kl.deRevision 1.10 2011/08/26 20:45:41 acg 65312027Sjungma@eit.uni-kl.de Andy Goodrich: moved the modification log to the end of the file to 65412027Sjungma@eit.uni-kl.de eliminate source line number skew when check-ins are done. 65512027Sjungma@eit.uni-kl.de 65612027Sjungma@eit.uni-kl.deRevision 1.9 2011/08/24 22:05:36 acg 65712027Sjungma@eit.uni-kl.de Torsten Maehne: initialization changes to remove warnings. 65812027Sjungma@eit.uni-kl.de 65912027Sjungma@eit.uni-kl.deRevision 1.8 2011/08/07 19:08:01 acg 66012027Sjungma@eit.uni-kl.de Andy Goodrich: moved logs to end of file so line number synching works 66112027Sjungma@eit.uni-kl.de better between versions. 66212027Sjungma@eit.uni-kl.de 66312027Sjungma@eit.uni-kl.deRevision 1.7 2011/08/07 18:53:09 acg 66412027Sjungma@eit.uni-kl.de Philipp A. Hartmann: add virtual instances of the bind function for 66512027Sjungma@eit.uni-kl.de base classes to eliminate warning messages for clang platforms. 66612027Sjungma@eit.uni-kl.de 66712027Sjungma@eit.uni-kl.deRevision 1.6 2011/05/09 04:07:37 acg 66812027Sjungma@eit.uni-kl.de Philipp A. Hartmann: 66912027Sjungma@eit.uni-kl.de (1) Restore hierarchy in all phase callbacks. 67012027Sjungma@eit.uni-kl.de (2) Ensure calls to before_end_of_elaboration. 67112027Sjungma@eit.uni-kl.de 67212027Sjungma@eit.uni-kl.deRevision 1.5 2011/03/30 16:46:10 acg 67312027Sjungma@eit.uni-kl.de Andy Goodrich: added a signature and removed a virtual specification 67412027Sjungma@eit.uni-kl.de to eliminate warnings with certain compilers. 67512027Sjungma@eit.uni-kl.de 67612027Sjungma@eit.uni-kl.deRevision 1.4 2011/02/18 20:23:45 acg 67712027Sjungma@eit.uni-kl.de Andy Goodrich: Copyright update. 67812027Sjungma@eit.uni-kl.de 67912027Sjungma@eit.uni-kl.deRevision 1.3 2011/01/20 16:52:15 acg 68012027Sjungma@eit.uni-kl.de Andy Goodrich: changes for IEEE 1666 2011. 68112027Sjungma@eit.uni-kl.de 68212027Sjungma@eit.uni-kl.deRevision 1.2 2010/08/03 18:01:11 acg 68312027Sjungma@eit.uni-kl.de Andy Goodrich: formatting. 68412027Sjungma@eit.uni-kl.de 68512027Sjungma@eit.uni-kl.deRevision 1.1.1.1 2006/12/15 20:20:04 acg 68612027Sjungma@eit.uni-kl.deSystemC 2.3 68712027Sjungma@eit.uni-kl.de 68812027Sjungma@eit.uni-kl.deRevision 1.5 2006/08/29 23:35:00 acg 68912027Sjungma@eit.uni-kl.de Andy Goodrich: added bind_count() method to allow users to determine which 69012027Sjungma@eit.uni-kl.de ports are connected in before_end_of_elaboration(). 69112027Sjungma@eit.uni-kl.de 69212027Sjungma@eit.uni-kl.deRevision 1.4 2006/05/08 17:52:47 acg 69312027Sjungma@eit.uni-kl.de Andy Goodrich: 69412027Sjungma@eit.uni-kl.de (1) added David Long's forward declarations for friend functions, 69512027Sjungma@eit.uni-kl.de methods, and operators to keep the Microsoft compiler happy. 69612027Sjungma@eit.uni-kl.de (2) Added delta_count() method to sc_prim_channel for use by 69712027Sjungma@eit.uni-kl.de sc_signal so that the friend declaration in sc_simcontext.h 69812027Sjungma@eit.uni-kl.de can be for a non-templated class (i.e., sc_prim_channel.) 69912027Sjungma@eit.uni-kl.de 70012027Sjungma@eit.uni-kl.deRevision 1.3 2006/01/24 20:46:31 acg 70112027Sjungma@eit.uni-kl.deAndy Goodrich: changes to eliminate use of deprecated features. For instance, 70212027Sjungma@eit.uni-kl.deusing notify(SC_ZERO_TIME) in place of notify_delayed(). 70312027Sjungma@eit.uni-kl.de 70412027Sjungma@eit.uni-kl.deRevision 1.2 2006/01/03 23:18:26 acg 70512027Sjungma@eit.uni-kl.deChanged copyright to include 2006. 70612027Sjungma@eit.uni-kl.de 70712027Sjungma@eit.uni-kl.deRevision 1.1.1.1 2005/12/19 23:16:43 acg 70812027Sjungma@eit.uni-kl.deFirst check in of SystemC 2.1 into its own archive. 70912027Sjungma@eit.uni-kl.de 71012027Sjungma@eit.uni-kl.deRevision 1.10 2005/09/15 23:01:51 acg 71112027Sjungma@eit.uni-kl.deAdded std:: prefix to appropriate methods and types to get around 71212027Sjungma@eit.uni-kl.deissues with the Edison Front End. 71312027Sjungma@eit.uni-kl.de 71412027Sjungma@eit.uni-kl.deRevision 1.9 2005/08/10 01:35:59 acg 71512027Sjungma@eit.uni-kl.deChanges for 64-bit support. 71612027Sjungma@eit.uni-kl.de 71712027Sjungma@eit.uni-kl.deRevision 1.8 2005/04/03 22:52:51 acg 71812027Sjungma@eit.uni-kl.deNamespace changes. 71912027Sjungma@eit.uni-kl.de 72012027Sjungma@eit.uni-kl.deRevision 1.7 2005/03/21 22:31:32 acg 72112027Sjungma@eit.uni-kl.deChanges to sc_core namespace. 72212027Sjungma@eit.uni-kl.de 72312027Sjungma@eit.uni-kl.deRevision 1.6 2004/09/27 21:02:54 acg 72412027Sjungma@eit.uni-kl.deAndy Goodrich - Forte Design Systems, Inc. 72512027Sjungma@eit.uni-kl.de - Added a $Log comment so that CVS checkin comments will appear in 72612027Sjungma@eit.uni-kl.de checked out source. 72712027Sjungma@eit.uni-kl.de 72812027Sjungma@eit.uni-kl.de*/ 72912027Sjungma@eit.uni-kl.de 73012027Sjungma@eit.uni-kl.de#endif 73112027Sjungma@eit.uni-kl.de 73212027Sjungma@eit.uni-kl.de// Taf! 733