test01.cpp revision 12855
16876Ssteve.reinhardt@amd.com#include "systemc.h"
28922Swilliam.wang@arm.com
38922Swilliam.wang@arm.comclass Sig : public sc_prim_channel {
48922Swilliam.wang@arm.com  public:
58922Swilliam.wang@arm.com	virtual void before_end_of_elaboration()
68922Swilliam.wang@arm.com	{
78922Swilliam.wang@arm.com		 cout << "prim_channel: before end of elaboration" << endl;
88922Swilliam.wang@arm.com	}
98922Swilliam.wang@arm.com	virtual void end_of_simulation()
108922Swilliam.wang@arm.com	{
118922Swilliam.wang@arm.com		 cout << "prim_channel: end of simulation" << endl;
128922Swilliam.wang@arm.com	}
138922Swilliam.wang@arm.com	virtual void start_of_simulation()
146876Ssteve.reinhardt@amd.com	{
158717Snilay@cs.wisc.edu		 cout << "prim_channel: start of simulation" << endl;
166876Ssteve.reinhardt@amd.com	}
176876Ssteve.reinhardt@amd.com};
186876Ssteve.reinhardt@amd.com
196876Ssteve.reinhardt@amd.comSC_MODULE(X)
206876Ssteve.reinhardt@amd.com{
216876Ssteve.reinhardt@amd.com	SC_CTOR(X)
226876Ssteve.reinhardt@amd.com	{
236876Ssteve.reinhardt@amd.com		SC_CTHREAD(y, clk.pos());
246876Ssteve.reinhardt@amd.com	}
256876Ssteve.reinhardt@amd.com	void y()
266876Ssteve.reinhardt@amd.com	{
276876Ssteve.reinhardt@amd.com		wait();
286876Ssteve.reinhardt@amd.com		sc_stop();
296876Ssteve.reinhardt@amd.com	}
306876Ssteve.reinhardt@amd.com	sc_in_clk clk;
316876Ssteve.reinhardt@amd.com};
326876Ssteve.reinhardt@amd.com
336876Ssteve.reinhardt@amd.comint sc_main(int argc, char* argv[])
346876Ssteve.reinhardt@amd.com{
356876Ssteve.reinhardt@amd.com	sc_clock clock;
366876Ssteve.reinhardt@amd.com	Sig      signal;
376876Ssteve.reinhardt@amd.com	X        x("x");
386876Ssteve.reinhardt@amd.com
396876Ssteve.reinhardt@amd.com	x.clk(clock);
406876Ssteve.reinhardt@amd.com
416876Ssteve.reinhardt@amd.com	if ( sc_start_of_simulation_invoked() )
427632SBrad.Beckmann@amd.com		 cout << __FILE__ << "(" << __LINE__ << "): bad start flag should be false" << endl;
438688Snilay@cs.wisc.edu	if ( sc_end_of_simulation_invoked() )
448232Snate@binkert.org		 cout << __FILE__ << "(" << __LINE__ << "): bad end flag should be false" << endl;
458436SBrad.Beckmann@amd.com
467039Snate@binkert.org	sc_start(2, SC_NS);
476285Snate@binkert.org	if ( !sc_start_of_simulation_invoked() )
488923Sandreas.hansson@arm.com		 cout << __FILE__ << "(" << __LINE__ << "): bad start flag should be true" << endl;
496285Snate@binkert.org
506876Ssteve.reinhardt@amd.com	if ( !sc_end_of_simulation_invoked() )
518922Swilliam.wang@arm.com		 cout << __FILE__ << "(" << __LINE__ << "): bad end flag should be true" << endl;
528922Swilliam.wang@arm.com
538922Swilliam.wang@arm.com	 cerr << "Program completed" << endl;
548922Swilliam.wang@arm.com
558923Sandreas.hansson@arm.com    return 0;
568922Swilliam.wang@arm.com}
576876Ssteve.reinhardt@amd.com
586876Ssteve.reinhardt@amd.com