test01.cpp revision 12855:588919e0e4aa
111723Sar4jc@virginia.edu/***************************************************************************** 211963Sar4jc@virginia.edu 311963Sar4jc@virginia.edu Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 411963Sar4jc@virginia.edu more contributor license agreements. See the NOTICE file distributed 511963Sar4jc@virginia.edu with this work for additional information regarding copyright ownership. 611723Sar4jc@virginia.edu Accellera licenses this file to you under the Apache License, Version 2.0 711723Sar4jc@virginia.edu (the "License"); you may not use this file except in compliance with the 811723Sar4jc@virginia.edu License. You may obtain a copy of the License at 911723Sar4jc@virginia.edu 1011723Sar4jc@virginia.edu http://www.apache.org/licenses/LICENSE-2.0 1111723Sar4jc@virginia.edu 1211723Sar4jc@virginia.edu Unless required by applicable law or agreed to in writing, software 1311723Sar4jc@virginia.edu distributed under the License is distributed on an "AS IS" BASIS, 1411723Sar4jc@virginia.edu WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1511723Sar4jc@virginia.edu implied. See the License for the specific language governing 1611723Sar4jc@virginia.edu permissions and limitations under the License. 1711723Sar4jc@virginia.edu 1811723Sar4jc@virginia.edu *****************************************************************************/ 1911723Sar4jc@virginia.edu 2011723Sar4jc@virginia.edu/***************************************************************************** 2111723Sar4jc@virginia.edu 2211723Sar4jc@virginia.edu test01.cpp -- 2311723Sar4jc@virginia.edu 2411723Sar4jc@virginia.edu Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 2511723Sar4jc@virginia.edu 2611723Sar4jc@virginia.edu *****************************************************************************/ 2711723Sar4jc@virginia.edu 2811723Sar4jc@virginia.edu/***************************************************************************** 2911723Sar4jc@virginia.edu 3011723Sar4jc@virginia.edu MODIFICATION LOG - modifiers, enter your name, affiliation, date and 3111723Sar4jc@virginia.edu changes you are making here. 3211963Sar4jc@virginia.edu 3311963Sar4jc@virginia.edu Name, Affiliation, Date: 3411723Sar4jc@virginia.edu Description of Modification: 3511723Sar4jc@virginia.edu 3611723Sar4jc@virginia.edu *****************************************************************************/ 3711723Sar4jc@virginia.edu 3811723Sar4jc@virginia.edu// test of sc_signal_rv. 3911963Sar4jc@virginia.edu 4011963Sar4jc@virginia.edu#include "systemc.h" 4111963Sar4jc@virginia.edu 4211723Sar4jc@virginia.eduSC_MODULE( mod_a ) 4311723Sar4jc@virginia.edu{ 4411723Sar4jc@virginia.edu // ports 4511723Sar4jc@virginia.edu sc_out_rv<1> out1; 4611723Sar4jc@virginia.edu sc_out_rv<1> out2; 4711723Sar4jc@virginia.edu sc_in_rv<1> in; 4811723Sar4jc@virginia.edu 4911723Sar4jc@virginia.edu // variables 5011723Sar4jc@virginia.edu sc_logic l1; 5111723Sar4jc@virginia.edu sc_logic l2; 5211963Sar4jc@virginia.edu 5314186Salec.roelke@gmail.com // events 5414186Salec.roelke@gmail.com sc_event ready1; 5511963Sar4jc@virginia.edu sc_event ready2; 5611963Sar4jc@virginia.edu 5714186Salec.roelke@gmail.com void out_action1() 5814186Salec.roelke@gmail.com { 5911963Sar4jc@virginia.edu for( int i = 0; i < 4; ++ i ) { 6011963Sar4jc@virginia.edu l1 = sc_dt::sc_logic_value_t( i ); 6111963Sar4jc@virginia.edu for( int j = 0; j < 4; ++j ) { 6211963Sar4jc@virginia.edu out1.write( sc_lv<1>( l1 ) ); 6311963Sar4jc@virginia.edu /*::sc_core::*/wait( 1, SC_NS ); 6411963Sar4jc@virginia.edu ready1.notify(); 6513612Sgabeblack@google.com ::sc_core::wait( SC_ZERO_TIME ); 6613612Sgabeblack@google.com } 6714186Salec.roelke@gmail.com } 6811963Sar4jc@virginia.edu } 6911963Sar4jc@virginia.edu 7011963Sar4jc@virginia.edu void out_action2() 7111963Sar4jc@virginia.edu { 7211963Sar4jc@virginia.edu for( int i = 0; i < 4; ++ i ) { 7311963Sar4jc@virginia.edu for( int j = 0; j < 4; ++ j ) { 7411963Sar4jc@virginia.edu l2 = sc_dt::sc_logic_value_t( j ); 7511963Sar4jc@virginia.edu out2.write( sc_lv<1>( l2 ) ); 7611963Sar4jc@virginia.edu ::sc_core::wait( 1, SC_NS ); 7711963Sar4jc@virginia.edu ready2.notify(); 7811963Sar4jc@virginia.edu ::sc_core::wait( SC_ZERO_TIME ); 7911963Sar4jc@virginia.edu } 8011963Sar4jc@virginia.edu } 8112031Sgabeblack@google.com } 8211963Sar4jc@virginia.edu 8311723Sar4jc@virginia.edu void in_action() 8412449Sgabeblack@google.com { 8511963Sar4jc@virginia.edu for( int i = 0; i < 16; ++ i ) { 8611723Sar4jc@virginia.edu ::sc_core::wait( ready1 & ready2 ); 8711723Sar4jc@virginia.edu cout << l1 << " " << l2 << " -> " << in.read() << endl; 8811723Sar4jc@virginia.edu } 8911723Sar4jc@virginia.edu } 9011723Sar4jc@virginia.edu 91 SC_CTOR( mod_a ) 92 { 93 SC_THREAD( out_action1 ); 94 SC_THREAD( out_action2 ); 95 SC_THREAD( in_action ); 96 } 97}; 98 99int 100sc_main( int, char*[] ) 101{ 102 sc_signal_rv<1> sig; 103 104 mod_a a( "a" ); 105 106 a.out1( sig ); 107 a.out2( sig ); 108 a.in( sig ); 109 110 sc_start(); 111 112 return 0; 113} 114