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