tvec3.cpp revision 12855
19793Sakash.bagdia@arm.com/*****************************************************************************
29518SAndreas.Sandberg@ARM.com
311320Ssteve.reinhardt@amd.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
49518SAndreas.Sandberg@ARM.com  more contributor license agreements.  See the NOTICE file distributed
59518SAndreas.Sandberg@ARM.com  with this work for additional information regarding copyright ownership.
69518SAndreas.Sandberg@ARM.com  Accellera licenses this file to you under the Apache License, Version 2.0
79518SAndreas.Sandberg@ARM.com  (the "License"); you may not use this file except in compliance with the
89518SAndreas.Sandberg@ARM.com  License.  You may obtain a copy of the License at
99518SAndreas.Sandberg@ARM.com
109518SAndreas.Sandberg@ARM.com    http://www.apache.org/licenses/LICENSE-2.0
119518SAndreas.Sandberg@ARM.com
129518SAndreas.Sandberg@ARM.com  Unless required by applicable law or agreed to in writing, software
135347Ssaidi@eecs.umich.edu  distributed under the License is distributed on an "AS IS" BASIS,
147534Ssteve.reinhardt@amd.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
153395Shsul@eecs.umich.edu  implied.  See the License for the specific language governing
163395Shsul@eecs.umich.edu  permissions and limitations under the License.
173395Shsul@eecs.umich.edu
183395Shsul@eecs.umich.edu *****************************************************************************/
193395Shsul@eecs.umich.edu
203395Shsul@eecs.umich.edu/*****************************************************************************
213395Shsul@eecs.umich.edu
223395Shsul@eecs.umich.edu  tvec3.cpp --
233395Shsul@eecs.umich.edu
243395Shsul@eecs.umich.edu  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
253395Shsul@eecs.umich.edu
263395Shsul@eecs.umich.edu *****************************************************************************/
273395Shsul@eecs.umich.edu
283395Shsul@eecs.umich.edu/*****************************************************************************
293395Shsul@eecs.umich.edu
303395Shsul@eecs.umich.edu  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
313395Shsul@eecs.umich.edu  changes you are making here.
323395Shsul@eecs.umich.edu
333395Shsul@eecs.umich.edu      Name, Affiliation, Date:
343395Shsul@eecs.umich.edu  Description of Modification:
353395Shsul@eecs.umich.edu
363395Shsul@eecs.umich.edu *****************************************************************************/
373395Shsul@eecs.umich.edu
383395Shsul@eecs.umich.edu#include "systemc.h"
393395Shsul@eecs.umich.edu
403395Shsul@eecs.umich.edutypedef sc_signal_rv<3> sc_signal_resolved_vector;
413395Shsul@eecs.umich.edu
429457Svilanova@ac.upc.eduSC_MODULE( proc1 )
433395Shsul@eecs.umich.edu{
443509Shsul@eecs.umich.edu  SC_HAS_PROCESS( proc1 );
456654Snate@binkert.org
469520SAndreas.Sandberg@ARM.com  sc_signal_resolved_vector& out;
479665Sandreas.hansson@arm.com  sc_in<bool> in;
489520SAndreas.Sandberg@ARM.com
493395Shsul@eecs.umich.edu  proc1( sc_module_name n,
506654Snate@binkert.org	 sc_signal_resolved_vector& OUT_,
513395Shsul@eecs.umich.edu	 sc_signal<bool>& IN_ )
526654Snate@binkert.org    : out(OUT_)
536654Snate@binkert.org  {
546654Snate@binkert.org    in(IN_);
553395Shsul@eecs.umich.edu	SC_METHOD( entry );
569139Snilay@cs.wisc.edu    sensitive << in;
579520SAndreas.Sandberg@ARM.com  }
589520SAndreas.Sandberg@ARM.com
599520SAndreas.Sandberg@ARM.com  void entry();
609139Snilay@cs.wisc.edu};
613481Shsul@eecs.umich.edu
629139Snilay@cs.wisc.eduvoid
633481Shsul@eecs.umich.eduproc1::entry()
649139Snilay@cs.wisc.edu{
659139Snilay@cs.wisc.edu  sc_lv<3> a;
669139Snilay@cs.wisc.edu  if ((bool) in == true) {
679139Snilay@cs.wisc.edu    cout << "P1: Set to 1" << endl;
689139Snilay@cs.wisc.edu    a = "111";
699139Snilay@cs.wisc.edu    out = a;
709139Snilay@cs.wisc.edu  }
719139Snilay@cs.wisc.edu  else {
723481Shsul@eecs.umich.edu    cout << "P1: Set to Z" << endl;
739518SAndreas.Sandberg@ARM.com    a = "ZZZ";
749518SAndreas.Sandberg@ARM.com    out = a;
759518SAndreas.Sandberg@ARM.com  }
763481Shsul@eecs.umich.edu}
779139Snilay@cs.wisc.edu
789139Snilay@cs.wisc.edu
793481Shsul@eecs.umich.eduSC_MODULE( proc2 )
809139Snilay@cs.wisc.edu{
819139Snilay@cs.wisc.edu  SC_HAS_PROCESS( proc2 );
829139Snilay@cs.wisc.edu
839139Snilay@cs.wisc.edu  sc_signal_resolved_vector& out;
849139Snilay@cs.wisc.edu  sc_in<bool> in;
853481Shsul@eecs.umich.edu
863481Shsul@eecs.umich.edu  proc2( sc_module_name n,
873481Shsul@eecs.umich.edu	 sc_signal_resolved_vector& OUT_,
889665Sandreas.hansson@arm.com	 sc_signal<bool>& IN_ )
899665Sandreas.hansson@arm.com    : out(OUT_)
909665Sandreas.hansson@arm.com  {
919665Sandreas.hansson@arm.com    in(IN_);
929665Sandreas.hansson@arm.com	SC_METHOD( entry );
938919Snilay@cs.wisc.edu    sensitive << in;
948919Snilay@cs.wisc.edu  }
958919Snilay@cs.wisc.edu
9610159Sgedare@rtems.org  void entry();
9710159Sgedare@rtems.org};
988919Snilay@cs.wisc.edu
998919Snilay@cs.wisc.eduvoid
1008919Snilay@cs.wisc.eduproc2::entry()
1018919Snilay@cs.wisc.edu{
1028919Snilay@cs.wisc.edu  sc_lv<3> a;
1038919Snilay@cs.wisc.edu  if ((bool) in == false) {
1048919Snilay@cs.wisc.edu    cout << "P2: Set to 1" << endl;
1058919Snilay@cs.wisc.edu    a = "111";
1068919Snilay@cs.wisc.edu    out = a;
1078919Snilay@cs.wisc.edu  }
1088919Snilay@cs.wisc.edu  else {
1098919Snilay@cs.wisc.edu    cout << "P2: Set to Z" << endl;
1103481Shsul@eecs.umich.edu    a = "ZZZ";
1119816Sjthestness@gmail.com    out = a;
1129140Snilay@cs.wisc.edu  }
1139140Snilay@cs.wisc.edu}
1149140Snilay@cs.wisc.edu
1159140Snilay@cs.wisc.eduSC_MODULE( proc3 )
1169140Snilay@cs.wisc.edu{
1179140Snilay@cs.wisc.edu  SC_HAS_PROCESS( proc3 );
1189140Snilay@cs.wisc.edu
1199140Snilay@cs.wisc.edu  const sc_signal_resolved_vector& in;
1209140Snilay@cs.wisc.edu
1219140Snilay@cs.wisc.edu  proc3( sc_module_name n,
1229140Snilay@cs.wisc.edu	 const sc_signal_resolved_vector& IN_ )
1239140Snilay@cs.wisc.edu    : in(IN_)
1249140Snilay@cs.wisc.edu  {
1259140Snilay@cs.wisc.edu    SC_METHOD( entry );
1269140Snilay@cs.wisc.edu    sensitive << in;
1279140Snilay@cs.wisc.edu  }
1289140Snilay@cs.wisc.edu
1299140Snilay@cs.wisc.edu  void entry()
1309140Snilay@cs.wisc.edu  {
1319867Sjthestness@gmail.com    sc_lv<3> v;
1329140Snilay@cs.wisc.edu    v = in;
1339140Snilay@cs.wisc.edu    cout << "Value on Bus = " << v.to_string().c_str() << endl;
1349140Snilay@cs.wisc.edu  }
1359140Snilay@cs.wisc.edu};
1369140Snilay@cs.wisc.edu
1379140Snilay@cs.wisc.eduint sc_main(int ac, char *av[])
1389140Snilay@cs.wisc.edu{
1399140Snilay@cs.wisc.edu  sc_signal_resolved_vector Bus;
1409140Snilay@cs.wisc.edu  sc_signal<bool> clock;
1419140Snilay@cs.wisc.edu
1429140Snilay@cs.wisc.edu  proc1 P1("P1", Bus, clock);
14310608Sdam.sunwoo@arm.com  proc2 P2("P2", Bus, clock);
14410608Sdam.sunwoo@arm.com  proc3 P3("P3", Bus);
14510608Sdam.sunwoo@arm.com
14610608Sdam.sunwoo@arm.com  sc_start(1, SC_NS);
14710608Sdam.sunwoo@arm.com  clock = 1;
14810608Sdam.sunwoo@arm.com  sc_start(10, SC_NS);
14910608Sdam.sunwoo@arm.com  for (int i = 0; i < 3; i++) {
15010608Sdam.sunwoo@arm.com    clock = 0;
15110608Sdam.sunwoo@arm.com    sc_start(10, SC_NS);
15210608Sdam.sunwoo@arm.com    clock = 1;
15310608Sdam.sunwoo@arm.com    sc_start(10, SC_NS);
15410608Sdam.sunwoo@arm.com  }
15510608Sdam.sunwoo@arm.com  return 0;
15610608Sdam.sunwoo@arm.com}
15710608Sdam.sunwoo@arm.com
15810608Sdam.sunwoo@arm.com