tvec1.cpp revision 12855:588919e0e4aa
113481Sgiacomo.travaglini@arm.com/*****************************************************************************
213481Sgiacomo.travaglini@arm.com
313481Sgiacomo.travaglini@arm.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
413481Sgiacomo.travaglini@arm.com  more contributor license agreements.  See the NOTICE file distributed
513481Sgiacomo.travaglini@arm.com  with this work for additional information regarding copyright ownership.
613481Sgiacomo.travaglini@arm.com  Accellera licenses this file to you under the Apache License, Version 2.0
713481Sgiacomo.travaglini@arm.com  (the "License"); you may not use this file except in compliance with the
813481Sgiacomo.travaglini@arm.com  License.  You may obtain a copy of the License at
913481Sgiacomo.travaglini@arm.com
1013481Sgiacomo.travaglini@arm.com    http://www.apache.org/licenses/LICENSE-2.0
1113481Sgiacomo.travaglini@arm.com
1213481Sgiacomo.travaglini@arm.com  Unless required by applicable law or agreed to in writing, software
1313481Sgiacomo.travaglini@arm.com  distributed under the License is distributed on an "AS IS" BASIS,
1413481Sgiacomo.travaglini@arm.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1513481Sgiacomo.travaglini@arm.com  implied.  See the License for the specific language governing
1613481Sgiacomo.travaglini@arm.com  permissions and limitations under the License.
1713481Sgiacomo.travaglini@arm.com
1813481Sgiacomo.travaglini@arm.com *****************************************************************************/
1913481Sgiacomo.travaglini@arm.com
2013481Sgiacomo.travaglini@arm.com/*****************************************************************************
2113481Sgiacomo.travaglini@arm.com
2213481Sgiacomo.travaglini@arm.com  tvec1.cpp --
2313481Sgiacomo.travaglini@arm.com
2413481Sgiacomo.travaglini@arm.com  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
2513481Sgiacomo.travaglini@arm.com
2613481Sgiacomo.travaglini@arm.com *****************************************************************************/
2713481Sgiacomo.travaglini@arm.com
2813481Sgiacomo.travaglini@arm.com/*****************************************************************************
2913481Sgiacomo.travaglini@arm.com
3013481Sgiacomo.travaglini@arm.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3113481Sgiacomo.travaglini@arm.com  changes you are making here.
3213481Sgiacomo.travaglini@arm.com
3313481Sgiacomo.travaglini@arm.com      Name, Affiliation, Date:
3413481Sgiacomo.travaglini@arm.com  Description of Modification:
3513481Sgiacomo.travaglini@arm.com
3613481Sgiacomo.travaglini@arm.com *****************************************************************************/
3713481Sgiacomo.travaglini@arm.com
3813481Sgiacomo.travaglini@arm.com#include "systemc.h"
3913481Sgiacomo.travaglini@arm.com
4013481Sgiacomo.travaglini@arm.comtypedef sc_signal_rv<2> sc_signal_resolved_vector;
4113481Sgiacomo.travaglini@arm.com
4213481Sgiacomo.travaglini@arm.comSC_MODULE( proc1 )
4313481Sgiacomo.travaglini@arm.com{
4413481Sgiacomo.travaglini@arm.com  SC_HAS_PROCESS( proc1 );
4513481Sgiacomo.travaglini@arm.com
4613481Sgiacomo.travaglini@arm.com  sc_signal_resolved_vector& out;
4713481Sgiacomo.travaglini@arm.com  sc_in<bool> in;
4813481Sgiacomo.travaglini@arm.com
4913481Sgiacomo.travaglini@arm.com  proc1( sc_module_name n,
5013481Sgiacomo.travaglini@arm.com	 sc_signal_resolved_vector& OUT_,
5113481Sgiacomo.travaglini@arm.com	 sc_signal<bool>& IN_ )
5213481Sgiacomo.travaglini@arm.com    : out(OUT_)
5313481Sgiacomo.travaglini@arm.com  {
5413481Sgiacomo.travaglini@arm.com    in(IN_);
5513481Sgiacomo.travaglini@arm.com	SC_METHOD( entry );
5613481Sgiacomo.travaglini@arm.com    sensitive << in;
5713481Sgiacomo.travaglini@arm.com  }
5813481Sgiacomo.travaglini@arm.com
5913481Sgiacomo.travaglini@arm.com  void entry();
6013481Sgiacomo.travaglini@arm.com};
6113481Sgiacomo.travaglini@arm.com
6213481Sgiacomo.travaglini@arm.comvoid
6313481Sgiacomo.travaglini@arm.comproc1::entry()
6413481Sgiacomo.travaglini@arm.com{
6513481Sgiacomo.travaglini@arm.com  sc_lv<2> a;
6613481Sgiacomo.travaglini@arm.com
6713481Sgiacomo.travaglini@arm.com  if ((bool) in == true) {
6813481Sgiacomo.travaglini@arm.com    cout << "P1: Set to 1" << endl;
6913481Sgiacomo.travaglini@arm.com    a[0] = a[1] = '1';
7013481Sgiacomo.travaglini@arm.com    out = a;
7113481Sgiacomo.travaglini@arm.com  }
7213481Sgiacomo.travaglini@arm.com  else {
7313481Sgiacomo.travaglini@arm.com    cout << "P1: Set to Z" << endl;
7413481Sgiacomo.travaglini@arm.com    a[0] = a[1] = 'Z';
7513481Sgiacomo.travaglini@arm.com    out = a;
7613481Sgiacomo.travaglini@arm.com  }
7713481Sgiacomo.travaglini@arm.com}
7813481Sgiacomo.travaglini@arm.com
7913481Sgiacomo.travaglini@arm.com
8013481Sgiacomo.travaglini@arm.comSC_MODULE( proc2 )
8113481Sgiacomo.travaglini@arm.com{
8213481Sgiacomo.travaglini@arm.com  SC_HAS_PROCESS( proc2 );
8313481Sgiacomo.travaglini@arm.com
8413481Sgiacomo.travaglini@arm.com  sc_signal_resolved_vector& out;
8513481Sgiacomo.travaglini@arm.com  sc_in<bool> in;
8613481Sgiacomo.travaglini@arm.com
8713481Sgiacomo.travaglini@arm.com  proc2( sc_module_name n,
8813481Sgiacomo.travaglini@arm.com	 sc_signal_resolved_vector& OUT_,
8913481Sgiacomo.travaglini@arm.com	 sc_signal<bool>& IN_ )
9013481Sgiacomo.travaglini@arm.com    : out(OUT_)
9113481Sgiacomo.travaglini@arm.com  {
9213481Sgiacomo.travaglini@arm.com    in(IN_);
9313481Sgiacomo.travaglini@arm.com	SC_METHOD( entry );
9413481Sgiacomo.travaglini@arm.com    sensitive << in;
9513481Sgiacomo.travaglini@arm.com  }
9613481Sgiacomo.travaglini@arm.com
9713481Sgiacomo.travaglini@arm.com  void entry();
9813481Sgiacomo.travaglini@arm.com};
9913481Sgiacomo.travaglini@arm.com
10013481Sgiacomo.travaglini@arm.comvoid
10113481Sgiacomo.travaglini@arm.comproc2::entry()
10213481Sgiacomo.travaglini@arm.com{
10313481Sgiacomo.travaglini@arm.com  sc_lv<2> a;
10413481Sgiacomo.travaglini@arm.com
10513481Sgiacomo.travaglini@arm.com  if ((bool) in == false) {
10613481Sgiacomo.travaglini@arm.com    cout << "P2: Set to 0" << endl;
10713481Sgiacomo.travaglini@arm.com    a[0] = a[1] = '0';
10813481Sgiacomo.travaglini@arm.com    out = a;
10913481Sgiacomo.travaglini@arm.com  }
11013481Sgiacomo.travaglini@arm.com  else {
11113481Sgiacomo.travaglini@arm.com    cout << "P2: Set to Z" << endl;
11213481Sgiacomo.travaglini@arm.com    a[0] = a[1] = 'Z';
11313481Sgiacomo.travaglini@arm.com    out = a;
11413481Sgiacomo.travaglini@arm.com  }
11513481Sgiacomo.travaglini@arm.com}
11613481Sgiacomo.travaglini@arm.com
11713481Sgiacomo.travaglini@arm.comSC_MODULE( proc3 )
11813481Sgiacomo.travaglini@arm.com{
11913481Sgiacomo.travaglini@arm.com  SC_HAS_PROCESS( proc3 );
12013481Sgiacomo.travaglini@arm.com
12113481Sgiacomo.travaglini@arm.com  const sc_signal_resolved_vector& in;
12213481Sgiacomo.travaglini@arm.com
12313481Sgiacomo.travaglini@arm.com  proc3( sc_module_name n,
12413481Sgiacomo.travaglini@arm.com	 const sc_signal_resolved_vector& IN_ )
12513481Sgiacomo.travaglini@arm.com    : in(IN_)
12613481Sgiacomo.travaglini@arm.com  {
12713481Sgiacomo.travaglini@arm.com    SC_METHOD( entry );
12813481Sgiacomo.travaglini@arm.com    sensitive << in;
12913481Sgiacomo.travaglini@arm.com  }
13013481Sgiacomo.travaglini@arm.com
13113481Sgiacomo.travaglini@arm.com  void entry()
13213481Sgiacomo.travaglini@arm.com  {
13313481Sgiacomo.travaglini@arm.com    sc_lv<2> v;
13413481Sgiacomo.travaglini@arm.com    v = in;
13513481Sgiacomo.travaglini@arm.com    cout << "Value on Bus = " << v.to_string().c_str() << endl;
13613481Sgiacomo.travaglini@arm.com  }
13713481Sgiacomo.travaglini@arm.com};
13813481Sgiacomo.travaglini@arm.com
13913481Sgiacomo.travaglini@arm.comint sc_main(int ac, char *av[])
14013481Sgiacomo.travaglini@arm.com{
14113481Sgiacomo.travaglini@arm.com  sc_signal_resolved_vector Bus;
14213481Sgiacomo.travaglini@arm.com  sc_signal<bool> clock;
14313481Sgiacomo.travaglini@arm.com
14413481Sgiacomo.travaglini@arm.com  proc1 P1("P1", Bus, clock);
14513481Sgiacomo.travaglini@arm.com  proc2 P2("P2", Bus, clock);
14613481Sgiacomo.travaglini@arm.com  proc3 P3("P3", Bus);
14713481Sgiacomo.travaglini@arm.com
14813481Sgiacomo.travaglini@arm.com  sc_start(1, SC_NS);
14913481Sgiacomo.travaglini@arm.com  clock = 1;
15013481Sgiacomo.travaglini@arm.com  sc_start(10, SC_NS);
15113481Sgiacomo.travaglini@arm.com  for (int i = 0; i < 3; i++) {
15213481Sgiacomo.travaglini@arm.com    clock = 0;
15313481Sgiacomo.travaglini@arm.com    sc_start(10, SC_NS);
15413481Sgiacomo.travaglini@arm.com    clock = 1;
15513481Sgiacomo.travaglini@arm.com    sc_start(10, SC_NS);
15613481Sgiacomo.travaglini@arm.com  }
15713481Sgiacomo.travaglini@arm.com  return 0;
15813481Sgiacomo.travaglini@arm.com}
15913481Sgiacomo.travaglini@arm.com
16013481Sgiacomo.travaglini@arm.com