pr-207_mem.cpp revision 12855
12SN/A/***************************************************************************** 22188SN/A 32SN/A Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 42SN/A more contributor license agreements. See the NOTICE file distributed 52SN/A with this work for additional information regarding copyright ownership. 62SN/A Accellera licenses this file to you under the Apache License, Version 2.0 72SN/A (the "License"); you may not use this file except in compliance with the 82SN/A License. You may obtain a copy of the License at 92SN/A 102SN/A http://www.apache.org/licenses/LICENSE-2.0 112SN/A 122SN/A Unless required by applicable law or agreed to in writing, software 132SN/A distributed under the License is distributed on an "AS IS" BASIS, 142SN/A WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 152SN/A implied. See the License for the specific language governing 162SN/A permissions and limitations under the License. 172SN/A 182SN/A *****************************************************************************/ 192SN/A 202SN/A/***************************************************************************** 212SN/A 222SN/A pr-207_mem.cpp -- 232SN/A 242SN/A Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 252SN/A 262SN/A *****************************************************************************/ 272665SN/A 282665SN/A/***************************************************************************** 292665SN/A 302SN/A MODIFICATION LOG - modifiers, enter your name, affiliation, date and 312SN/A changes you are making here. 322683Sktlim@umich.edu 332683Sktlim@umich.edu Name, Affiliation, Date: 342SN/A Description of Modification: 356313Sgblack@eecs.umich.edu 362190SN/A *****************************************************************************/ 376329Sgblack@eecs.umich.edu 384997Sgblack@eecs.umich.edu#include "systemc.h" 396316Sgblack@eecs.umich.edu 406216Snate@binkert.orgstruct my_pair { 411858SN/A char x; 422680SN/A char y; 432683Sktlim@umich.edu}; 442395SN/A 452190SN/Atypedef sc_signal<bool> sig_bool; 462188SN/Atypedef sc_signal<char> sig_char; 47217SN/Atypedef sc_signal<unsigned char> sig_uchar; 482SN/A 492SN/ASC_MODULE( pr207 ) 502SN/A{ 511858SN/A SC_HAS_PROCESS( pr207 ); 522SN/A 531070SN/A sc_in_clk clk; 541070SN/A 551917SN/A pr207(sc_module_name NAME, 561917SN/A sc_clock& CLK, 572521SN/A 582521SN/A const sig_bool& RESET, 592521SN/A const sig_bool& START, 603548Sgblack@eecs.umich.edu const sig_char& C1, 613548Sgblack@eecs.umich.edu const sig_char& C2, 623548Sgblack@eecs.umich.edu const sig_uchar& IDX1, 633548Sgblack@eecs.umich.edu const sig_uchar& IDX2, 642330SN/A sig_char& D1, 652330SN/A sig_char& D2, 662SN/A sig_bool& READY 672SN/A ) 68360SN/A : 692462SN/A reset(RESET), 702420SN/A start(START), 712SN/A c1(C1), 722SN/A c2(C2), 732SN/A idx1(IDX1), 742683Sktlim@umich.edu idx2(IDX2), 752683Sktlim@umich.edu d1(D1), 762683Sktlim@umich.edu d2(D2), 772683Sktlim@umich.edu ready(READY) 782683Sktlim@umich.edu { 792683Sktlim@umich.edu clk(CLK); 802683Sktlim@umich.edu SC_CTHREAD( entry, clk.pos() ); 812683Sktlim@umich.edu reset_signal_is(reset,true); 822683Sktlim@umich.edu } 832683Sktlim@umich.edu void entry(); 842683Sktlim@umich.edu 852683Sktlim@umich.edu const sig_bool& reset; 862683Sktlim@umich.edu const sig_bool& start; 872683Sktlim@umich.edu const sig_char& c1; 882683Sktlim@umich.edu const sig_char& c2; 892SN/A const sig_uchar& idx1; 902683Sktlim@umich.edu const sig_uchar& idx2; 912SN/A sig_char& d1; 922107SN/A sig_char& d2; 932107SN/A sig_bool& ready; 942159SN/A 952455SN/A}; 962455SN/A 972SN/Avoid 982680SN/Apr207::entry() 992SN/A{ 1002190SN/A my_pair pair_array[10]; 1016315Sgblack@eecs.umich.edu 1026315Sgblack@eecs.umich.edu ready = true; 1036315Sgblack@eecs.umich.edu d1 = 0; 1046315Sgblack@eecs.umich.edu d2 = 0; 1056316Sgblack@eecs.umich.edu wait(); 1066313Sgblack@eecs.umich.edu while (true) { 1072SN/A do { wait(); } while (start == 0); 1086324Sgblack@eecs.umich.edu ready = false; 1096324Sgblack@eecs.umich.edu wait(); 1106324Sgblack@eecs.umich.edu pair_array[idx1.read()].x = c1; 1116324Sgblack@eecs.umich.edu pair_array[idx1.read()].y = c2; 1126324Sgblack@eecs.umich.edu wait(); 1136324Sgblack@eecs.umich.edu pair_array[idx2.read()] = pair_array[idx1.read()]; 1146324Sgblack@eecs.umich.edu wait(); 1156324Sgblack@eecs.umich.edu char d1_tmp = pair_array[idx2.read()].y; 1166324Sgblack@eecs.umich.edu wait(); 1176324Sgblack@eecs.umich.edu char d2_tmp = pair_array[idx2.read()].x; 1186324Sgblack@eecs.umich.edu wait(); 1196324Sgblack@eecs.umich.edu d1 = d1_tmp; 1206324Sgblack@eecs.umich.edu d2 = d2_tmp; 1216324Sgblack@eecs.umich.edu ready = true; 1226324Sgblack@eecs.umich.edu } 1236324Sgblack@eecs.umich.edu} 1246324Sgblack@eecs.umich.edu 1256324Sgblack@eecs.umich.eduint sc_main(int argc, char* argv[] ) 1266324Sgblack@eecs.umich.edu{ 1276324Sgblack@eecs.umich.edu return 0; 1286324Sgblack@eecs.umich.edu} 1296324Sgblack@eecs.umich.edu 1302190SN/A