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_wait.cpp -- Wait() and related functions.
2312027Sjungma@eit.uni-kl.de
2412027Sjungma@eit.uni-kl.de  Original Author: Stan Y. Liao, Synopsys, Inc.
2512027Sjungma@eit.uni-kl.de                   Martin Janssen, Synopsys, Inc.
2612027Sjungma@eit.uni-kl.de
2712027Sjungma@eit.uni-kl.de  CHANGE LOG AT THE END OF THE FILE
2812027Sjungma@eit.uni-kl.de *****************************************************************************/
2912027Sjungma@eit.uni-kl.de
3012027Sjungma@eit.uni-kl.de
3112027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_except.h"
3212027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_kernel_ids.h"
3312027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_cthread_process.h"
3412027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_thread_process.h"
3512027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_simcontext_int.h"
3612027Sjungma@eit.uni-kl.de#include "sysc/kernel/sc_wait.h"
3712027Sjungma@eit.uni-kl.de#include "sysc/utils/sc_utils_ids.h"
3812027Sjungma@eit.uni-kl.de
3912027Sjungma@eit.uni-kl.denamespace sc_core {
4012027Sjungma@eit.uni-kl.de
4112027Sjungma@eit.uni-kl.de// static sensitivity for SC_THREADs and SC_CTHREADs
4212027Sjungma@eit.uni-kl.de
4312027Sjungma@eit.uni-kl.devoid warn_cthread_wait()
4412027Sjungma@eit.uni-kl.de{
4512027Sjungma@eit.uni-kl.de    static bool warn_wait = true;
4612027Sjungma@eit.uni-kl.de    if ( warn_wait )
4712027Sjungma@eit.uni-kl.de    {
4812027Sjungma@eit.uni-kl.de        warn_wait = false;
4912027Sjungma@eit.uni-kl.de        SC_REPORT_INFO(SC_ID_IEEE_1666_DEPRECATION_,
5012027Sjungma@eit.uni-kl.de	    "all waits except wait() and wait(N)\n" \
5112027Sjungma@eit.uni-kl.de	    "             are deprecated for SC_CTHREAD, " \
5212027Sjungma@eit.uni-kl.de	    "use an SC_THREAD instead");
5312027Sjungma@eit.uni-kl.de    }
5412027Sjungma@eit.uni-kl.de}
5512027Sjungma@eit.uni-kl.de
5612027Sjungma@eit.uni-kl.devoid
5712027Sjungma@eit.uni-kl.dewait( sc_simcontext* simc )
5812027Sjungma@eit.uni-kl.de{
5912027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
6012027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
6112027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_:
6212027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
6312027Sjungma@eit.uni-kl.de	RCAST<sc_cthread_handle>( cpi->process_handle )->wait_cycles();
6412027Sjungma@eit.uni-kl.de        break;
6512027Sjungma@eit.uni-kl.de    }
6612027Sjungma@eit.uni-kl.de    default:
6712027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
6812027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
6912027Sjungma@eit.uni-kl.de        break;
7012027Sjungma@eit.uni-kl.de    }
7112027Sjungma@eit.uni-kl.de}
7212027Sjungma@eit.uni-kl.de
7312027Sjungma@eit.uni-kl.de// dynamic sensitivity for SC_THREADs and SC_CTHREADs
7412027Sjungma@eit.uni-kl.de
7512027Sjungma@eit.uni-kl.devoid
7612027Sjungma@eit.uni-kl.dewait( const sc_event& e, sc_simcontext* simc )
7712027Sjungma@eit.uni-kl.de{
7812027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
7912027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
8012027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_: {
8112027Sjungma@eit.uni-kl.de	RCAST<sc_thread_handle>( cpi->process_handle )->wait( e );
8212027Sjungma@eit.uni-kl.de	break;
8312027Sjungma@eit.uni-kl.de    }
8412027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
8512027Sjungma@eit.uni-kl.de        warn_cthread_wait();
8612027Sjungma@eit.uni-kl.de	sc_cthread_handle cthread_h =
8712027Sjungma@eit.uni-kl.de            RCAST<sc_cthread_handle>( cpi->process_handle );
8812027Sjungma@eit.uni-kl.de	cthread_h->wait( e );
8912027Sjungma@eit.uni-kl.de	cthread_h->wait_cycles();
9012027Sjungma@eit.uni-kl.de	break;
9112027Sjungma@eit.uni-kl.de    }
9212027Sjungma@eit.uni-kl.de    default:
9312027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
9412027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
9512027Sjungma@eit.uni-kl.de        break;
9612027Sjungma@eit.uni-kl.de    }
9712027Sjungma@eit.uni-kl.de}
9812027Sjungma@eit.uni-kl.de
9912027Sjungma@eit.uni-kl.devoid
10012027Sjungma@eit.uni-kl.dewait( const sc_event_or_list& el, sc_simcontext* simc )
10112027Sjungma@eit.uni-kl.de{
10212027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
10312027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
10412027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_: {
10512027Sjungma@eit.uni-kl.de	RCAST<sc_thread_handle>( cpi->process_handle )->wait( el );
10612027Sjungma@eit.uni-kl.de	break;
10712027Sjungma@eit.uni-kl.de    }
10812027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
10912027Sjungma@eit.uni-kl.de        warn_cthread_wait();
11012027Sjungma@eit.uni-kl.de        SC_REPORT_INFO(SC_ID_IEEE_1666_DEPRECATION_,
11112027Sjungma@eit.uni-kl.de	    "wait(event_list) is deprecated for SC_CTHREAD, use SC_THREAD");
11212027Sjungma@eit.uni-kl.de	sc_cthread_handle cthread_h =
11312027Sjungma@eit.uni-kl.de            RCAST<sc_cthread_handle>( cpi->process_handle );
11412027Sjungma@eit.uni-kl.de	cthread_h->wait( el );
11512027Sjungma@eit.uni-kl.de	cthread_h->wait_cycles();
11612027Sjungma@eit.uni-kl.de	break;
11712027Sjungma@eit.uni-kl.de    }
11812027Sjungma@eit.uni-kl.de    default:
11912027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
12012027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
12112027Sjungma@eit.uni-kl.de        break;
12212027Sjungma@eit.uni-kl.de    }
12312027Sjungma@eit.uni-kl.de}
12412027Sjungma@eit.uni-kl.de
12512027Sjungma@eit.uni-kl.devoid
12612027Sjungma@eit.uni-kl.dewait( const sc_event_and_list& el, sc_simcontext* simc )
12712027Sjungma@eit.uni-kl.de{
12812027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
12912027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
13012027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_: {
13112027Sjungma@eit.uni-kl.de	RCAST<sc_thread_handle>( cpi->process_handle )->wait( el );
13212027Sjungma@eit.uni-kl.de	break;
13312027Sjungma@eit.uni-kl.de    }
13412027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
13512027Sjungma@eit.uni-kl.de        warn_cthread_wait();
13612027Sjungma@eit.uni-kl.de	sc_cthread_handle cthread_h =
13712027Sjungma@eit.uni-kl.de            RCAST<sc_cthread_handle>( cpi->process_handle );
13812027Sjungma@eit.uni-kl.de	cthread_h->wait( el );
13912027Sjungma@eit.uni-kl.de	cthread_h->wait_cycles();
14012027Sjungma@eit.uni-kl.de	break;
14112027Sjungma@eit.uni-kl.de    }
14212027Sjungma@eit.uni-kl.de    default:
14312027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
14412027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
14512027Sjungma@eit.uni-kl.de        break;
14612027Sjungma@eit.uni-kl.de    }
14712027Sjungma@eit.uni-kl.de}
14812027Sjungma@eit.uni-kl.de
14912027Sjungma@eit.uni-kl.devoid
15012027Sjungma@eit.uni-kl.dewait( const sc_time& t, sc_simcontext* simc )
15112027Sjungma@eit.uni-kl.de{
15212027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
15312027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
15412027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_: {
15512027Sjungma@eit.uni-kl.de	RCAST<sc_thread_handle>( cpi->process_handle )->wait( t );
15612027Sjungma@eit.uni-kl.de	break;
15712027Sjungma@eit.uni-kl.de    }
15812027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
15912027Sjungma@eit.uni-kl.de        warn_cthread_wait();
16012027Sjungma@eit.uni-kl.de	sc_cthread_handle cthread_h =
16112027Sjungma@eit.uni-kl.de            RCAST<sc_cthread_handle>( cpi->process_handle );
16212027Sjungma@eit.uni-kl.de	cthread_h->wait( t );
16312027Sjungma@eit.uni-kl.de	cthread_h->wait_cycles();
16412027Sjungma@eit.uni-kl.de	break;
16512027Sjungma@eit.uni-kl.de    }
16612027Sjungma@eit.uni-kl.de    default:
16712027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
16812027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
16912027Sjungma@eit.uni-kl.de        break;
17012027Sjungma@eit.uni-kl.de    }
17112027Sjungma@eit.uni-kl.de}
17212027Sjungma@eit.uni-kl.de
17312027Sjungma@eit.uni-kl.devoid
17412027Sjungma@eit.uni-kl.dewait( const sc_time& t, const sc_event& e, sc_simcontext* simc )
17512027Sjungma@eit.uni-kl.de{
17612027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
17712027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
17812027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_: {
17912027Sjungma@eit.uni-kl.de	RCAST<sc_thread_handle>( cpi->process_handle )->wait( t, e );
18012027Sjungma@eit.uni-kl.de	break;
18112027Sjungma@eit.uni-kl.de    }
18212027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
18312027Sjungma@eit.uni-kl.de        warn_cthread_wait();
18412027Sjungma@eit.uni-kl.de	sc_cthread_handle cthread_h =
18512027Sjungma@eit.uni-kl.de            RCAST<sc_cthread_handle>( cpi->process_handle );
18612027Sjungma@eit.uni-kl.de	cthread_h->wait( t, e );
18712027Sjungma@eit.uni-kl.de	cthread_h->wait_cycles();
18812027Sjungma@eit.uni-kl.de	break;
18912027Sjungma@eit.uni-kl.de    }
19012027Sjungma@eit.uni-kl.de    default:
19112027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
19212027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
19312027Sjungma@eit.uni-kl.de        break;
19412027Sjungma@eit.uni-kl.de    }
19512027Sjungma@eit.uni-kl.de}
19612027Sjungma@eit.uni-kl.de
19712027Sjungma@eit.uni-kl.devoid
19812027Sjungma@eit.uni-kl.dewait( const sc_time& t, const sc_event_or_list& el, sc_simcontext* simc )
19912027Sjungma@eit.uni-kl.de{
20012027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
20112027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
20212027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_: {
20312027Sjungma@eit.uni-kl.de	RCAST<sc_thread_handle>( cpi->process_handle )->wait( t, el );
20412027Sjungma@eit.uni-kl.de	break;
20512027Sjungma@eit.uni-kl.de    }
20612027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
20712027Sjungma@eit.uni-kl.de        warn_cthread_wait();
20812027Sjungma@eit.uni-kl.de	sc_cthread_handle cthread_h =
20912027Sjungma@eit.uni-kl.de            RCAST<sc_cthread_handle>( cpi->process_handle );
21012027Sjungma@eit.uni-kl.de	cthread_h->wait( t, el );
21112027Sjungma@eit.uni-kl.de	cthread_h->wait_cycles();
21212027Sjungma@eit.uni-kl.de	break;
21312027Sjungma@eit.uni-kl.de    }
21412027Sjungma@eit.uni-kl.de    default:
21512027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
21612027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
21712027Sjungma@eit.uni-kl.de        break;
21812027Sjungma@eit.uni-kl.de    }
21912027Sjungma@eit.uni-kl.de}
22012027Sjungma@eit.uni-kl.de
22112027Sjungma@eit.uni-kl.devoid
22212027Sjungma@eit.uni-kl.dewait( const sc_time& t, const sc_event_and_list& el, sc_simcontext* simc )
22312027Sjungma@eit.uni-kl.de{
22412027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
22512027Sjungma@eit.uni-kl.de    switch( cpi->kind ) {
22612027Sjungma@eit.uni-kl.de    case SC_THREAD_PROC_: {
22712027Sjungma@eit.uni-kl.de	RCAST<sc_thread_handle>( cpi->process_handle )->wait( t, el );
22812027Sjungma@eit.uni-kl.de	break;
22912027Sjungma@eit.uni-kl.de    }
23012027Sjungma@eit.uni-kl.de    case SC_CTHREAD_PROC_: {
23112027Sjungma@eit.uni-kl.de        warn_cthread_wait();
23212027Sjungma@eit.uni-kl.de	sc_cthread_handle cthread_h =
23312027Sjungma@eit.uni-kl.de            RCAST<sc_cthread_handle>( cpi->process_handle );
23412027Sjungma@eit.uni-kl.de	cthread_h->wait( t, el );
23512027Sjungma@eit.uni-kl.de	cthread_h->wait_cycles();
23612027Sjungma@eit.uni-kl.de	break;
23712027Sjungma@eit.uni-kl.de    }
23812027Sjungma@eit.uni-kl.de    default:
23912027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_WAIT_NOT_ALLOWED_, "\n        "
24012027Sjungma@eit.uni-kl.de			 "in SC_METHODs use next_trigger() instead" );
24112027Sjungma@eit.uni-kl.de        break;
24212027Sjungma@eit.uni-kl.de    }
24312027Sjungma@eit.uni-kl.de}
24412027Sjungma@eit.uni-kl.de
24512027Sjungma@eit.uni-kl.de
24612027Sjungma@eit.uni-kl.de// static sensitivity for SC_METHODs
24712027Sjungma@eit.uni-kl.de
24812027Sjungma@eit.uni-kl.devoid
24912027Sjungma@eit.uni-kl.denext_trigger( sc_simcontext* simc )
25012027Sjungma@eit.uni-kl.de{
25112027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
25212027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
25312027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->clear_trigger();
25412027Sjungma@eit.uni-kl.de    } else {
25512027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
25612027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
25712027Sjungma@eit.uni-kl.de    }
25812027Sjungma@eit.uni-kl.de}
25912027Sjungma@eit.uni-kl.de
26012027Sjungma@eit.uni-kl.de
26112027Sjungma@eit.uni-kl.de// dynamic sensitivity for SC_METHODs
26212027Sjungma@eit.uni-kl.de
26312027Sjungma@eit.uni-kl.devoid
26412027Sjungma@eit.uni-kl.denext_trigger( const sc_event& e, sc_simcontext* simc )
26512027Sjungma@eit.uni-kl.de{
26612027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
26712027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
26812027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->next_trigger( e );
26912027Sjungma@eit.uni-kl.de    } else {
27012027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
27112027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
27212027Sjungma@eit.uni-kl.de    }
27312027Sjungma@eit.uni-kl.de}
27412027Sjungma@eit.uni-kl.de
27512027Sjungma@eit.uni-kl.devoid
27612027Sjungma@eit.uni-kl.denext_trigger( const sc_event_or_list& el, sc_simcontext* simc )
27712027Sjungma@eit.uni-kl.de{
27812027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
27912027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
28012027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->next_trigger( el );
28112027Sjungma@eit.uni-kl.de    } else {
28212027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
28312027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
28412027Sjungma@eit.uni-kl.de    }
28512027Sjungma@eit.uni-kl.de}
28612027Sjungma@eit.uni-kl.de
28712027Sjungma@eit.uni-kl.devoid
28812027Sjungma@eit.uni-kl.denext_trigger( const sc_event_and_list& el, sc_simcontext* simc )
28912027Sjungma@eit.uni-kl.de{
29012027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
29112027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
29212027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->next_trigger( el );
29312027Sjungma@eit.uni-kl.de    } else {
29412027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
29512027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
29612027Sjungma@eit.uni-kl.de    }
29712027Sjungma@eit.uni-kl.de}
29812027Sjungma@eit.uni-kl.de
29912027Sjungma@eit.uni-kl.devoid
30012027Sjungma@eit.uni-kl.denext_trigger( const sc_time& t, sc_simcontext* simc )
30112027Sjungma@eit.uni-kl.de{
30212027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
30312027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
30412027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->next_trigger( t );
30512027Sjungma@eit.uni-kl.de    } else {
30612027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
30712027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
30812027Sjungma@eit.uni-kl.de    }
30912027Sjungma@eit.uni-kl.de}
31012027Sjungma@eit.uni-kl.de
31112027Sjungma@eit.uni-kl.devoid
31212027Sjungma@eit.uni-kl.denext_trigger( const sc_time& t, const sc_event& e, sc_simcontext* simc )
31312027Sjungma@eit.uni-kl.de{
31412027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
31512027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
31612027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->next_trigger( t, e );
31712027Sjungma@eit.uni-kl.de    } else {
31812027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
31912027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
32012027Sjungma@eit.uni-kl.de    }
32112027Sjungma@eit.uni-kl.de}
32212027Sjungma@eit.uni-kl.de
32312027Sjungma@eit.uni-kl.devoid
32412027Sjungma@eit.uni-kl.denext_trigger( const sc_time& t, const sc_event_or_list& el, sc_simcontext* simc)
32512027Sjungma@eit.uni-kl.de{
32612027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
32712027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
32812027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->next_trigger( t, el );
32912027Sjungma@eit.uni-kl.de    } else {
33012027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
33112027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
33212027Sjungma@eit.uni-kl.de    }
33312027Sjungma@eit.uni-kl.de}
33412027Sjungma@eit.uni-kl.de
33512027Sjungma@eit.uni-kl.devoid
33612027Sjungma@eit.uni-kl.denext_trigger(const sc_time& t, const sc_event_and_list& el, sc_simcontext* simc)
33712027Sjungma@eit.uni-kl.de{
33812027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
33912027Sjungma@eit.uni-kl.de    if( cpi->kind == SC_METHOD_PROC_ ) {
34012027Sjungma@eit.uni-kl.de	RCAST<sc_method_handle>( cpi->process_handle )->next_trigger( t, el );
34112027Sjungma@eit.uni-kl.de    } else {
34212027Sjungma@eit.uni-kl.de	SC_REPORT_ERROR( SC_ID_NEXT_TRIGGER_NOT_ALLOWED_, "\n        "
34312027Sjungma@eit.uni-kl.de			 "in SC_THREADs and SC_CTHREADs use wait() instead" );
34412027Sjungma@eit.uni-kl.de    }
34512027Sjungma@eit.uni-kl.de}
34612027Sjungma@eit.uni-kl.de
34712027Sjungma@eit.uni-kl.de
34812027Sjungma@eit.uni-kl.de// for SC_METHODs and SC_THREADs and SC_CTHREADs
34912027Sjungma@eit.uni-kl.de
35012027Sjungma@eit.uni-kl.debool
35112027Sjungma@eit.uni-kl.detimed_out( sc_simcontext* simc )
35212027Sjungma@eit.uni-kl.de{
35312027Sjungma@eit.uni-kl.de    static bool warn_timed_out=true;
35412027Sjungma@eit.uni-kl.de    if ( warn_timed_out )
35512027Sjungma@eit.uni-kl.de    {
35612027Sjungma@eit.uni-kl.de        warn_timed_out = false;
35712027Sjungma@eit.uni-kl.de        SC_REPORT_INFO(SC_ID_IEEE_1666_DEPRECATION_,
35812027Sjungma@eit.uni-kl.de	    "timed_out() function is deprecated" );
35912027Sjungma@eit.uni-kl.de    }
36012027Sjungma@eit.uni-kl.de
36112027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
36212027Sjungma@eit.uni-kl.de    return cpi->process_handle->timed_out();
36312027Sjungma@eit.uni-kl.de}
36412027Sjungma@eit.uni-kl.de
36512027Sjungma@eit.uni-kl.de
36612027Sjungma@eit.uni-kl.de
36712027Sjungma@eit.uni-kl.de// misc.
36812027Sjungma@eit.uni-kl.de
36912027Sjungma@eit.uni-kl.devoid
37012027Sjungma@eit.uni-kl.desc_set_location( const char* file, int lineno, sc_simcontext* simc )
37112027Sjungma@eit.uni-kl.de{
37212027Sjungma@eit.uni-kl.de    sc_curr_proc_handle cpi = simc->get_curr_proc_info();
37312027Sjungma@eit.uni-kl.de    sc_process_b* handle = cpi->process_handle;
37412027Sjungma@eit.uni-kl.de    handle->file = file;
37512027Sjungma@eit.uni-kl.de    handle->lineno = lineno;
37612027Sjungma@eit.uni-kl.de}
37712027Sjungma@eit.uni-kl.de
37812027Sjungma@eit.uni-kl.de} // namespace sc_core
37912027Sjungma@eit.uni-kl.de
38012027Sjungma@eit.uni-kl.de/*
38112027Sjungma@eit.uni-kl.de$Log: sc_wait.cpp,v $
38212027Sjungma@eit.uni-kl.deRevision 1.6  2011/08/26 20:46:11  acg
38312027Sjungma@eit.uni-kl.de Andy Goodrich: moved the modification log to the end of the file to
38412027Sjungma@eit.uni-kl.de eliminate source line number skew when check-ins are done.
38512027Sjungma@eit.uni-kl.de
38612027Sjungma@eit.uni-kl.deRevision 1.5  2011/02/18 20:27:14  acg
38712027Sjungma@eit.uni-kl.de Andy Goodrich: Updated Copyrights.
38812027Sjungma@eit.uni-kl.de
38912027Sjungma@eit.uni-kl.deRevision 1.4  2011/02/13 21:47:38  acg
39012027Sjungma@eit.uni-kl.de Andy Goodrich: update copyright notice.
39112027Sjungma@eit.uni-kl.de
39212027Sjungma@eit.uni-kl.deRevision 1.3  2011/01/18 20:10:45  acg
39312027Sjungma@eit.uni-kl.de Andy Goodrich: changes for IEEE1666_2011 semantics.
39412027Sjungma@eit.uni-kl.de
39512027Sjungma@eit.uni-kl.deRevision 1.2  2008/05/22 17:06:27  acg
39612027Sjungma@eit.uni-kl.de Andy Goodrich: updated copyright notice to include 2008.
39712027Sjungma@eit.uni-kl.de
39812027Sjungma@eit.uni-kl.deRevision 1.1.1.1  2006/12/15 20:20:05  acg
39912027Sjungma@eit.uni-kl.deSystemC 2.3
40012027Sjungma@eit.uni-kl.de
40112027Sjungma@eit.uni-kl.deRevision 1.7  2006/02/02 20:20:39  acg
40212027Sjungma@eit.uni-kl.de Andy Goodrich: warnings for SC_THREAD waits.
40312027Sjungma@eit.uni-kl.de
40412027Sjungma@eit.uni-kl.deRevision 1.6  2006/02/01 01:36:54  acg
40512027Sjungma@eit.uni-kl.de Andy Goodrich: addition of deprecation comments for SC_CTHREAD waits other
40612027Sjungma@eit.uni-kl.de than wait() and wait(N).
40712027Sjungma@eit.uni-kl.de
40812027Sjungma@eit.uni-kl.deRevision 1.5  2006/01/31 22:17:40  acg
40912027Sjungma@eit.uni-kl.de Andy Goodrich: added deprecation warnings for SC_CTHREAD waits other than
41012027Sjungma@eit.uni-kl.de wait() and wait(N).
41112027Sjungma@eit.uni-kl.de
41212027Sjungma@eit.uni-kl.deRevision 1.4  2006/01/25 00:31:20  acg
41312027Sjungma@eit.uni-kl.de Andy Goodrich: Changed over to use a standard message id of
41412027Sjungma@eit.uni-kl.de SC_ID_IEEE_1666_DEPRECATION for all deprecation messages.
41512027Sjungma@eit.uni-kl.de
41612027Sjungma@eit.uni-kl.deRevision 1.3  2006/01/24 20:49:05  acg
41712027Sjungma@eit.uni-kl.deAndy Goodrich: changes to remove the use of deprecated features within the
41812027Sjungma@eit.uni-kl.desimulator, and to issue warning messages when deprecated features are used.
41912027Sjungma@eit.uni-kl.de
42012027Sjungma@eit.uni-kl.deRevision 1.2  2006/01/03 23:18:45  acg
42112027Sjungma@eit.uni-kl.deChanged copyright to include 2006.
42212027Sjungma@eit.uni-kl.de
42312027Sjungma@eit.uni-kl.deRevision 1.1.1.1  2005/12/19 23:16:44  acg
42412027Sjungma@eit.uni-kl.deFirst check in of SystemC 2.1 into its own archive.
42512027Sjungma@eit.uni-kl.de
42612027Sjungma@eit.uni-kl.deRevision 1.10  2005/09/02 19:03:30  acg
42712027Sjungma@eit.uni-kl.deChanges for dynamic processes. Removal of lambda support.
42812027Sjungma@eit.uni-kl.de
42912027Sjungma@eit.uni-kl.deRevision 1.9  2005/07/30 03:45:05  acg
43012027Sjungma@eit.uni-kl.deChanges from 2.1, including changes for sc_process_handle.
43112027Sjungma@eit.uni-kl.de
43212027Sjungma@eit.uni-kl.deRevision 1.8  2005/04/04 00:16:07  acg
43312027Sjungma@eit.uni-kl.deChanges for directory name change to sys from systemc.
43412027Sjungma@eit.uni-kl.deChanges for sc_string going to std::string.
43512027Sjungma@eit.uni-kl.deChanges for sc_pvector going to std::vector.
43612027Sjungma@eit.uni-kl.deChanges for reference pools for bit and part selections.
43712027Sjungma@eit.uni-kl.deChanges for const sc_concatref support.
43812027Sjungma@eit.uni-kl.de
43912027Sjungma@eit.uni-kl.deRevision 1.5  2004/09/27 20:49:10  acg
44012027Sjungma@eit.uni-kl.deAndy Goodrich, Forte Design Systems, Inc.
44112027Sjungma@eit.uni-kl.de   - Added a $Log comment so that CVS checkin comments appear in the
44212027Sjungma@eit.uni-kl.de     checkout source.
44312027Sjungma@eit.uni-kl.de
44412027Sjungma@eit.uni-kl.de*/
44512027Sjungma@eit.uni-kl.de
44612027Sjungma@eit.uni-kl.de// Taf!
447