test05.cpp revision 12855:588919e0e4aa
111656Sandreas.hansson@arm.com/*****************************************************************************
211368Sandreas.hansson@arm.com
311368Sandreas.hansson@arm.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
411368Sandreas.hansson@arm.com  more contributor license agreements.  See the NOTICE file distributed
511368Sandreas.hansson@arm.com  with this work for additional information regarding copyright ownership.
611368Sandreas.hansson@arm.com  Accellera licenses this file to you under the Apache License, Version 2.0
711368Sandreas.hansson@arm.com  (the "License"); you may not use this file except in compliance with the
811368Sandreas.hansson@arm.com  License.  You may obtain a copy of the License at
911368Sandreas.hansson@arm.com
1011368Sandreas.hansson@arm.com    http://www.apache.org/licenses/LICENSE-2.0
1111368Sandreas.hansson@arm.com
1211368Sandreas.hansson@arm.com  Unless required by applicable law or agreed to in writing, software
1311368Sandreas.hansson@arm.com  distributed under the License is distributed on an "AS IS" BASIS,
1411368Sandreas.hansson@arm.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1511368Sandreas.hansson@arm.com  implied.  See the License for the specific language governing
1611368Sandreas.hansson@arm.com  permissions and limitations under the License.
1711368Sandreas.hansson@arm.com
1811368Sandreas.hansson@arm.com *****************************************************************************/
1911368Sandreas.hansson@arm.com
2011368Sandreas.hansson@arm.com/*****************************************************************************
2111368Sandreas.hansson@arm.com
2211368Sandreas.hansson@arm.com  test05.cpp --
2311368Sandreas.hansson@arm.com
2411368Sandreas.hansson@arm.com  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
2511368Sandreas.hansson@arm.com
2611368Sandreas.hansson@arm.com *****************************************************************************/
2711368Sandreas.hansson@arm.com
2811368Sandreas.hansson@arm.com/*****************************************************************************
2911368Sandreas.hansson@arm.com
3011368Sandreas.hansson@arm.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3111368Sandreas.hansson@arm.com  changes you are making here.
3211368Sandreas.hansson@arm.com
3311368Sandreas.hansson@arm.com      Name, Affiliation, Date:
3411368Sandreas.hansson@arm.com  Description of Modification:
3511368Sandreas.hansson@arm.com
3611368Sandreas.hansson@arm.com *****************************************************************************/
3711368Sandreas.hansson@arm.com
3811368Sandreas.hansson@arm.com#include "systemc.h"
3911368Sandreas.hansson@arm.com
4011368Sandreas.hansson@arm.comSC_MODULE( proc1 )
4111368Sandreas.hansson@arm.com{
4211368Sandreas.hansson@arm.com  SC_HAS_PROCESS( proc1 );
4311368Sandreas.hansson@arm.com
4411368Sandreas.hansson@arm.com  sc_in<bool> clk;
4511368Sandreas.hansson@arm.com
4611368Sandreas.hansson@arm.com  char obj1;
4711368Sandreas.hansson@arm.com  short obj2;
4811368Sandreas.hansson@arm.com  int obj3;
4911368Sandreas.hansson@arm.com  long obj4;
5011368Sandreas.hansson@arm.com  int64 obj5;
5111368Sandreas.hansson@arm.com
5211368Sandreas.hansson@arm.com  proc1( sc_module_name NAME,
5311368Sandreas.hansson@arm.com	 sc_signal<bool>& CLK )
5411368Sandreas.hansson@arm.com  {
5511368Sandreas.hansson@arm.com    clk(CLK);
5611368Sandreas.hansson@arm.com    SC_THREAD( entry );
5711368Sandreas.hansson@arm.com    sensitive << clk;
5811368Sandreas.hansson@arm.com    obj1 = 0;
5911368Sandreas.hansson@arm.com    obj2 = 0;
6011368Sandreas.hansson@arm.com    obj3 = 0;
6111368Sandreas.hansson@arm.com    obj4 = 0;
6211368Sandreas.hansson@arm.com    obj5 = 0;
6311368Sandreas.hansson@arm.com  }
6411368Sandreas.hansson@arm.com
6511368Sandreas.hansson@arm.com  void entry();
6611368Sandreas.hansson@arm.com};
6711368Sandreas.hansson@arm.com
6811368Sandreas.hansson@arm.comvoid proc1::entry()
6911368Sandreas.hansson@arm.com{
7011368Sandreas.hansson@arm.com  wait();
7111368Sandreas.hansson@arm.com  while(true) {
7211368Sandreas.hansson@arm.com    obj1 = 7;
7311368Sandreas.hansson@arm.com    obj2 = 31;
7411368Sandreas.hansson@arm.com    obj3 = -1023;
7511368Sandreas.hansson@arm.com    obj4 = 2047;
7611368Sandreas.hansson@arm.com	obj5 = -1;
7711368Sandreas.hansson@arm.com	obj5 = obj5 << 40;
7811368Sandreas.hansson@arm.com    wait();
7911368Sandreas.hansson@arm.com    obj1 = 1;
8011368Sandreas.hansson@arm.com    obj2 = -2;
8111368Sandreas.hansson@arm.com    obj3 = 1024;
8211368Sandreas.hansson@arm.com    obj4 = -2048;
8311368Sandreas.hansson@arm.com	obj5 = 7;
8411368Sandreas.hansson@arm.com	obj5 = obj5 << 40;
8511368Sandreas.hansson@arm.com    wait();
8611368Sandreas.hansson@arm.com  }
8711368Sandreas.hansson@arm.com}
8811368Sandreas.hansson@arm.com
8911368Sandreas.hansson@arm.com
9011368Sandreas.hansson@arm.comint sc_main(int ac, char *av[])
9111368Sandreas.hansson@arm.com{
9211368Sandreas.hansson@arm.com  sc_trace_file *tf;
9311368Sandreas.hansson@arm.com  sc_signal<bool> clock;
9411368Sandreas.hansson@arm.com
9511368Sandreas.hansson@arm.com  proc1 P1("P1", clock);
9611368Sandreas.hansson@arm.com
9711368Sandreas.hansson@arm.com  tf = sc_create_vcd_trace_file("test05");
9811368Sandreas.hansson@arm.com  sc_trace(tf, P1.obj1, "Char", 4);
9911368Sandreas.hansson@arm.com  sc_trace(tf, P1.obj2, "Short", 12);
10011368Sandreas.hansson@arm.com  sc_trace(tf, P1.obj3, "Int", 14);
10111368Sandreas.hansson@arm.com  sc_trace(tf, P1.obj4, "Long", 14);
10211368Sandreas.hansson@arm.com  sc_trace(tf, P1.obj5, "Int64", 44);
10311368Sandreas.hansson@arm.com  sc_trace(tf, clock, "Clock");
10411368Sandreas.hansson@arm.com
10511368Sandreas.hansson@arm.com  clock.write(0);
10611368Sandreas.hansson@arm.com  sc_start(0, SC_NS);
10711368Sandreas.hansson@arm.com  for (int i = 0; i< 10; i++) {
10811368Sandreas.hansson@arm.com    clock.write(1);
10911368Sandreas.hansson@arm.com    sc_start(10, SC_NS);
11011368Sandreas.hansson@arm.com    clock.write(0);
11111368Sandreas.hansson@arm.com    sc_start(10, SC_NS);
11211368Sandreas.hansson@arm.com  }
11311368Sandreas.hansson@arm.com  sc_close_vcd_trace_file( tf );
11411368Sandreas.hansson@arm.com  return 0;
11511368Sandreas.hansson@arm.com}
11611368Sandreas.hansson@arm.com