inlining.cpp revision 12855:588919e0e4aa
113521Sgabeblack@google.com/***************************************************************************** 213521Sgabeblack@google.com 313521Sgabeblack@google.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 413521Sgabeblack@google.com more contributor license agreements. See the NOTICE file distributed 513521Sgabeblack@google.com with this work for additional information regarding copyright ownership. 613521Sgabeblack@google.com Accellera licenses this file to you under the Apache License, Version 2.0 713521Sgabeblack@google.com (the "License"); you may not use this file except in compliance with the 813521Sgabeblack@google.com License. You may obtain a copy of the License at 913521Sgabeblack@google.com 1013521Sgabeblack@google.com http://www.apache.org/licenses/LICENSE-2.0 1113521Sgabeblack@google.com 1213521Sgabeblack@google.com Unless required by applicable law or agreed to in writing, software 1313521Sgabeblack@google.com distributed under the License is distributed on an "AS IS" BASIS, 1413521Sgabeblack@google.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1513521Sgabeblack@google.com implied. See the License for the specific language governing 1613521Sgabeblack@google.com permissions and limitations under the License. 1713521Sgabeblack@google.com 1813521Sgabeblack@google.com *****************************************************************************/ 1913521Sgabeblack@google.com 2013521Sgabeblack@google.com/***************************************************************************** 2113521Sgabeblack@google.com 2213521Sgabeblack@google.com inlining.cpp -- 2313521Sgabeblack@google.com 2413521Sgabeblack@google.com Original Author: Rocco Jonack, Synopsys, Inc., 1999-07-30 2513521Sgabeblack@google.com 2613521Sgabeblack@google.com *****************************************************************************/ 2713521Sgabeblack@google.com 2813521Sgabeblack@google.com/***************************************************************************** 2913521Sgabeblack@google.com 3013521Sgabeblack@google.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 3113521Sgabeblack@google.com changes you are making here. 3213521Sgabeblack@google.com 3313521Sgabeblack@google.com Name, Affiliation, Date: 3413521Sgabeblack@google.com Description of Modification: 3513521Sgabeblack@google.com 3613521Sgabeblack@google.com *****************************************************************************/ 3713521Sgabeblack@google.com 3813521Sgabeblack@google.com 3913521Sgabeblack@google.com#include "inlining.h" 4013521Sgabeblack@google.com 4113521Sgabeblack@google.com// list of defines 4213521Sgabeblack@google.com#define clock(a) wait(a) 4313521Sgabeblack@google.com#define intu4(a) sc_biguint<4> a; 4413521Sgabeblack@google.com#define vec4(a) sc_lv<4> a; 4513521Sgabeblack@google.com#define my_case(a, b, c) switch (a) { \ 4613521Sgabeblack@google.com case 0: \ 4713521Sgabeblack@google.com case 1: \ 4813521Sgabeblack@google.com case 2: \ 4913521Sgabeblack@google.com case 3: \ 5013521Sgabeblack@google.com b = 0; \ 5113521Sgabeblack@google.com break; \ 5213521Sgabeblack@google.com default : \ 5313521Sgabeblack@google.com b = c; \ 5413521Sgabeblack@google.com break; \ 5513521Sgabeblack@google.com }; 5613521Sgabeblack@google.com#define my_wait_case(a, b, c) switch (a) { \ 5713521Sgabeblack@google.com case 0: \ 5813521Sgabeblack@google.com case 1: \ 5913521Sgabeblack@google.com case 2: \ 6013521Sgabeblack@google.com case 3: \ 6113521Sgabeblack@google.com b = 0; \ 6213521Sgabeblack@google.com wait(); \ 6313521Sgabeblack@google.com break; \ 6413521Sgabeblack@google.com default : \ 6513521Sgabeblack@google.com b = c; \ 6613521Sgabeblack@google.com wait(); \ 6713521Sgabeblack@google.com break; \ 6813521Sgabeblack@google.com }; 6913521Sgabeblack@google.com 7013521Sgabeblack@google.comvoid inlining::entry(){ 7113521Sgabeblack@google.com 7213521Sgabeblack@google.com int tmp1; 7313521Sgabeblack@google.com int tmp2; 7413521Sgabeblack@google.com vec4(tmp3); 7513521Sgabeblack@google.com sc_bv<4> tmp4; 7613521Sgabeblack@google.com 7713521Sgabeblack@google.com // reset_loop 7813521Sgabeblack@google.com if (reset.read() == true) { 7913521Sgabeblack@google.com out_value1.write(0); 8013521Sgabeblack@google.com out_value2.write(0); 8113521Sgabeblack@google.com out_valid.write(false); 8213521Sgabeblack@google.com clock(1); 8313521Sgabeblack@google.com } else clock(1); 8413521Sgabeblack@google.com 8513521Sgabeblack@google.com // 8613521Sgabeblack@google.com // main loop 8713521Sgabeblack@google.com // 8813521Sgabeblack@google.com while(1) { 8913521Sgabeblack@google.com do { wait(); } while (in_valid == false); 9013521Sgabeblack@google.com 9113521Sgabeblack@google.com //reading inputs 9213521Sgabeblack@google.com tmp1 = in_value1.read().to_int(); 9313521Sgabeblack@google.com tmp2 = in_value2.read().to_int(); 9413521Sgabeblack@google.com tmp3 = in_value3.read(); 9513521Sgabeblack@google.com tmp4 = in_value4.read(); 9613521Sgabeblack@google.com 9713521Sgabeblack@google.com //execution 9813521Sgabeblack@google.com my_wait_case(tmp1, tmp3, tmp4); 9913521Sgabeblack@google.com out_value1.write(tmp3); 10013521Sgabeblack@google.com clock(1); 10113521Sgabeblack@google.com 10213521Sgabeblack@google.com my_case(tmp2, tmp3, tmp4); 10313521Sgabeblack@google.com out_value2.write(tmp4); 10413521Sgabeblack@google.com out_valid.write(true); 10513521Sgabeblack@google.com clock(1); 10613521Sgabeblack@google.com out_valid.write(false); 10713521Sgabeblack@google.com 10813521Sgabeblack@google.com } 10913521Sgabeblack@google.com} 11013521Sgabeblack@google.com 11113521Sgabeblack@google.com// EOF 11213521Sgabeblack@google.com 11313521Sgabeblack@google.com