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