for_fsm.cpp revision 12855:588919e0e4aa
12929Sktlim@umich.edu/***************************************************************************** 22929Sktlim@umich.edu 32932Sktlim@umich.edu Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 42929Sktlim@umich.edu more contributor license agreements. See the NOTICE file distributed 52929Sktlim@umich.edu with this work for additional information regarding copyright ownership. 62929Sktlim@umich.edu Accellera licenses this file to you under the Apache License, Version 2.0 72929Sktlim@umich.edu (the "License"); you may not use this file except in compliance with the 82929Sktlim@umich.edu License. You may obtain a copy of the License at 92929Sktlim@umich.edu 102929Sktlim@umich.edu http://www.apache.org/licenses/LICENSE-2.0 112929Sktlim@umich.edu 122929Sktlim@umich.edu Unless required by applicable law or agreed to in writing, software 132929Sktlim@umich.edu distributed under the License is distributed on an "AS IS" BASIS, 142929Sktlim@umich.edu WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 152929Sktlim@umich.edu implied. See the License for the specific language governing 162929Sktlim@umich.edu permissions and limitations under the License. 172929Sktlim@umich.edu 182929Sktlim@umich.edu *****************************************************************************/ 192929Sktlim@umich.edu 202929Sktlim@umich.edu/***************************************************************************** 212929Sktlim@umich.edu 222929Sktlim@umich.edu for_fsm.cpp -- 232929Sktlim@umich.edu 242929Sktlim@umich.edu Original Author: Rocco Jonack, Synopsys, Inc., 1999-07-29 252929Sktlim@umich.edu 262929Sktlim@umich.edu *****************************************************************************/ 272929Sktlim@umich.edu 282932Sktlim@umich.edu/***************************************************************************** 292932Sktlim@umich.edu 302932Sktlim@umich.edu MODIFICATION LOG - modifiers, enter your name, affiliation, date and 312929Sktlim@umich.edu changes you are making here. 326007Ssteve.reinhardt@amd.com 337735SAli.Saidi@ARM.com Name, Affiliation, Date: 342929Sktlim@umich.edu Description of Modification: 352929Sktlim@umich.edu 362929Sktlim@umich.edu *****************************************************************************/ 372929Sktlim@umich.edu 382929Sktlim@umich.edu 392929Sktlim@umich.edu#include "for_fsm.h" 402929Sktlim@umich.edu 412929Sktlim@umich.edu#define max 10 422929Sktlim@umich.edu 432929Sktlim@umich.eduvoid for_fsm::entry() 442929Sktlim@umich.edu{ 452929Sktlim@umich.edu 462929Sktlim@umich.edu int i, inp_tmp; 476007Ssteve.reinhardt@amd.com 486007Ssteve.reinhardt@amd.com // reset_loop 496007Ssteve.reinhardt@amd.com if (reset.read()==true) { 506007Ssteve.reinhardt@amd.com result.write(0); 516007Ssteve.reinhardt@amd.com out_valid.write(false); 526007Ssteve.reinhardt@amd.com wait(); 536007Ssteve.reinhardt@amd.com } else wait(); 546007Ssteve.reinhardt@amd.com 556007Ssteve.reinhardt@amd.com //---------- 566007Ssteve.reinhardt@amd.com // main loop 576007Ssteve.reinhardt@amd.com //---------- 586007Ssteve.reinhardt@amd.com while(1) { 596007Ssteve.reinhardt@amd.com 606007Ssteve.reinhardt@amd.com // read inputs 616007Ssteve.reinhardt@amd.com while (in_valid.read()==false) wait(); 626007Ssteve.reinhardt@amd.com 636007Ssteve.reinhardt@amd.com // execution of for loop 646007Ssteve.reinhardt@amd.com out_valid.write(true); 656007Ssteve.reinhardt@amd.com wait(); 666007Ssteve.reinhardt@amd.com for (i=1; i<=max; i++) { 676007Ssteve.reinhardt@amd.com inp_tmp = in_value.read(); 686007Ssteve.reinhardt@amd.com result.write(inp_tmp); 696007Ssteve.reinhardt@amd.com wait(); 706007Ssteve.reinhardt@amd.com }; 716007Ssteve.reinhardt@amd.com out_valid.write(false); 726007Ssteve.reinhardt@amd.com wait(5); 736007Ssteve.reinhardt@amd.com 746007Ssteve.reinhardt@amd.com // execution of for loop with continues 756007Ssteve.reinhardt@amd.com out_valid.write(true); 762929Sktlim@umich.edu wait(); 772929Sktlim@umich.edu for (i=1; i<=max; i++) { 782929Sktlim@umich.edu inp_tmp = in_value.read(); 796007Ssteve.reinhardt@amd.com if (i==8) { 806007Ssteve.reinhardt@amd.com wait(); 816007Ssteve.reinhardt@amd.com continue; 826007Ssteve.reinhardt@amd.com } else if (inp_tmp<5 && i!=1) { 836007Ssteve.reinhardt@amd.com wait(); 846007Ssteve.reinhardt@amd.com continue; 852929Sktlim@umich.edu } else { 862929Sktlim@umich.edu result.write(inp_tmp); 872929Sktlim@umich.edu wait(); 882929Sktlim@umich.edu }; 892929Sktlim@umich.edu }; 906011Ssteve.reinhardt@amd.com out_valid.write(false); 916007Ssteve.reinhardt@amd.com wait(5); 926007Ssteve.reinhardt@amd.com 936007Ssteve.reinhardt@amd.com // for loop with break 946007Ssteve.reinhardt@amd.com out_valid.write(true); 956007Ssteve.reinhardt@amd.com wait(); 966007Ssteve.reinhardt@amd.com for (i=1; i<=max; i++) { 976007Ssteve.reinhardt@amd.com inp_tmp = in_value.read(); 986007Ssteve.reinhardt@amd.com if (inp_tmp==7) { 996007Ssteve.reinhardt@amd.com wait(); 1006007Ssteve.reinhardt@amd.com break; 1016007Ssteve.reinhardt@amd.com } else { 1026007Ssteve.reinhardt@amd.com result.write(inp_tmp); 1036007Ssteve.reinhardt@amd.com wait(); 1046007Ssteve.reinhardt@amd.com }; 1057735SAli.Saidi@ARM.com }; 1066011Ssteve.reinhardt@amd.com out_valid.write(false); 1076007Ssteve.reinhardt@amd.com wait(); 1086007Ssteve.reinhardt@amd.com 1096007Ssteve.reinhardt@amd.com } 1106007Ssteve.reinhardt@amd.com} 1117735SAli.Saidi@ARM.com 1127735SAli.Saidi@ARM.com// EOF 1137735SAli.Saidi@ARM.com 1147735SAli.Saidi@ARM.com