test02.cpp revision 12855:588919e0e4aa
110389SAndreas.Sandberg@ARM.com/***************************************************************************** 210389SAndreas.Sandberg@ARM.com 310389SAndreas.Sandberg@ARM.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 410389SAndreas.Sandberg@ARM.com more contributor license agreements. See the NOTICE file distributed 510389SAndreas.Sandberg@ARM.com with this work for additional information regarding copyright ownership. 610389SAndreas.Sandberg@ARM.com Accellera licenses this file to you under the Apache License, Version 2.0 710389SAndreas.Sandberg@ARM.com (the "License"); you may not use this file except in compliance with the 810389SAndreas.Sandberg@ARM.com License. You may obtain a copy of the License at 910389SAndreas.Sandberg@ARM.com 1010389SAndreas.Sandberg@ARM.com http://www.apache.org/licenses/LICENSE-2.0 1110389SAndreas.Sandberg@ARM.com 1210389SAndreas.Sandberg@ARM.com Unless required by applicable law or agreed to in writing, software 1310389SAndreas.Sandberg@ARM.com distributed under the License is distributed on an "AS IS" BASIS, 1410389SAndreas.Sandberg@ARM.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1510389SAndreas.Sandberg@ARM.com implied. See the License for the specific language governing 1610389SAndreas.Sandberg@ARM.com permissions and limitations under the License. 1710389SAndreas.Sandberg@ARM.com 1810389SAndreas.Sandberg@ARM.com *****************************************************************************/ 1910389SAndreas.Sandberg@ARM.com 2010389SAndreas.Sandberg@ARM.com/***************************************************************************** 2110389SAndreas.Sandberg@ARM.com 2210389SAndreas.Sandberg@ARM.com test02.cpp -- 2310389SAndreas.Sandberg@ARM.com 2410389SAndreas.Sandberg@ARM.com Original Author: Martin Janssen, Synopsys, Inc., 2002-03-22 2510389SAndreas.Sandberg@ARM.com Ucar Aziz, Synopsys, Inc. 2610389SAndreas.Sandberg@ARM.com 2710389SAndreas.Sandberg@ARM.com *****************************************************************************/ 2810389SAndreas.Sandberg@ARM.com 2910389SAndreas.Sandberg@ARM.com/***************************************************************************** 3010389SAndreas.Sandberg@ARM.com 3110389SAndreas.Sandberg@ARM.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 3210389SAndreas.Sandberg@ARM.com changes you are making here. 3310389SAndreas.Sandberg@ARM.com 3410389SAndreas.Sandberg@ARM.com Name, Affiliation, Date: 3510389SAndreas.Sandberg@ARM.com Description of Modification: 3610389SAndreas.Sandberg@ARM.com 3710389SAndreas.Sandberg@ARM.com *****************************************************************************/ 3810389SAndreas.Sandberg@ARM.com 3910389SAndreas.Sandberg@ARM.com// $Log: test02.cpp,v $ 4010389SAndreas.Sandberg@ARM.com// Revision 1.1.1.1 2006/12/15 20:26:04 acg 4110389SAndreas.Sandberg@ARM.com// systemc_tests-2.3 4213665Sandreas.sandberg@arm.com// 4313665Sandreas.sandberg@arm.com// Revision 1.2 2006/01/19 00:47:01 acg 4410389SAndreas.Sandberg@ARM.com// Andy Goodrich: Added CVS logging. 4510389SAndreas.Sandberg@ARM.com// 4610389SAndreas.Sandberg@ARM.com 4710389SAndreas.Sandberg@ARM.com// test of sc_sensitive_neg::operator(<<)()(sc_inout<bool>) 4810389SAndreas.Sandberg@ARM.com 4910389SAndreas.Sandberg@ARM.com#include "systemc.h" 5010389SAndreas.Sandberg@ARM.com 5110389SAndreas.Sandberg@ARM.comSC_MODULE( mod_a ) 5212237Sandreas.sandberg@arm.com{ 53 sc_in<bool> in1; 54 sc_in<bool> in2; 55 56 void main_action1() 57 { 58 int i = 0; 59 while( true ) { 60 wait(); 61 cout << "i = " << i << endl; 62 i ++; 63 } 64 } 65 66 void main_action2() 67 { 68 int j = 0; 69 while( true ) { 70 wait(); 71 cout << "j = " << j << endl; 72 j ++; 73 } 74 } 75 76 SC_CTOR( mod_a ) 77 { 78 SC_THREAD( main_action1 ); 79 sensitive_neg( in1 ); 80 SC_THREAD( main_action2 ); 81 sensitive_neg << in2; 82 } 83}; 84 85SC_MODULE( mod_b ) 86{ 87 sc_in<bool> clk; 88 sc_inout<bool> in1; 89 90 void main_action() 91 { 92 bool j = true; 93 while( true ) { 94 wait(); 95 in1->write( j ); 96 j = !j; 97 } 98 } 99 100 SC_CTOR( mod_b ) 101 { 102 SC_CTHREAD( main_action, clk ); 103 } 104}; 105 106int 107sc_main( int, char*[] ) 108{ 109 sc_clock clk1( "clk", 5, SC_NS ); 110 sc_clock clk2( "clk1", 5, SC_NS ); 111 sc_signal<bool> sig_1; 112 sc_signal<bool> sig_2; 113 mod_a a( "a" ); 114 mod_b b1( "b1" ); 115 mod_b b2( "b2" ); 116 117 b1.clk( clk1 ); 118 b1.in1( sig_1 ); 119 b2.clk( clk2 ); 120 b2.in1( sig_2 ); 121 122 a.in1( sig_1 ); 123 a.in2( sig_2 ); 124 125 sc_start( 100, SC_NS ); 126 127 return 0; 128} 129