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