datatypes.cpp revision 12855:588919e0e4aa
112697Santhony.gutierrez@amd.com/***************************************************************************** 212697Santhony.gutierrez@amd.com 311308Santhony.gutierrez@amd.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 412697Santhony.gutierrez@amd.com more contributor license agreements. See the NOTICE file distributed 511308Santhony.gutierrez@amd.com with this work for additional information regarding copyright ownership. 612697Santhony.gutierrez@amd.com Accellera licenses this file to you under the Apache License, Version 2.0 712697Santhony.gutierrez@amd.com (the "License"); you may not use this file except in compliance with the 811308Santhony.gutierrez@amd.com License. You may obtain a copy of the License at 912697Santhony.gutierrez@amd.com 1012697Santhony.gutierrez@amd.com http://www.apache.org/licenses/LICENSE-2.0 1111308Santhony.gutierrez@amd.com 1212697Santhony.gutierrez@amd.com Unless required by applicable law or agreed to in writing, software 1312697Santhony.gutierrez@amd.com distributed under the License is distributed on an "AS IS" BASIS, 1412697Santhony.gutierrez@amd.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1511308Santhony.gutierrez@amd.com implied. See the License for the specific language governing 1612697Santhony.gutierrez@amd.com permissions and limitations under the License. 1712697Santhony.gutierrez@amd.com 1812697Santhony.gutierrez@amd.com *****************************************************************************/ 1911308Santhony.gutierrez@amd.com 2012697Santhony.gutierrez@amd.com/***************************************************************************** 2112697Santhony.gutierrez@amd.com 2212697Santhony.gutierrez@amd.com datatypes.cpp -- 2312697Santhony.gutierrez@amd.com 2412697Santhony.gutierrez@amd.com Original Author: Rocco Jonack, Synopsys, Inc., 1999-07-30 2512697Santhony.gutierrez@amd.com 2612697Santhony.gutierrez@amd.com *****************************************************************************/ 2712697Santhony.gutierrez@amd.com 2812697Santhony.gutierrez@amd.com/***************************************************************************** 2912697Santhony.gutierrez@amd.com 3012697Santhony.gutierrez@amd.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 3111308Santhony.gutierrez@amd.com changes you are making here. 3212697Santhony.gutierrez@amd.com 3311308Santhony.gutierrez@amd.com Name, Affiliation, Date: 3411308Santhony.gutierrez@amd.com Description of Modification: 3511308Santhony.gutierrez@amd.com 3611308Santhony.gutierrez@amd.com *****************************************************************************/ 3711308Santhony.gutierrez@amd.com 3813400Sodanrc@yahoo.com.br 3911308Santhony.gutierrez@amd.com#include "datatypes.h" 4011308Santhony.gutierrez@amd.com 4113951Sodanrc@yahoo.com.br 4211308Santhony.gutierrez@amd.comvoid datatypes::entry() { 4313400Sodanrc@yahoo.com.br 4413400Sodanrc@yahoo.com.br sc_biguint<4> tmp1; 4511670Sandreas.hansson@arm.com sc_bigint<4> tmp2; 4611670Sandreas.hansson@arm.com sc_lv<4> tmp3; 4711308Santhony.gutierrez@amd.com sc_bv<4> tmp4; 4811308Santhony.gutierrez@amd.com 4911308Santhony.gutierrez@amd.com // reset_loop 5011308Santhony.gutierrez@amd.com if (reset.read() == true) { 5111308Santhony.gutierrez@amd.com out_value1.write(0); 5211308Santhony.gutierrez@amd.com out_value2.write(0); 5311308Santhony.gutierrez@amd.com out_value3.write(0); 5411308Santhony.gutierrez@amd.com out_value4.write(0); 5511308Santhony.gutierrez@amd.com out_valid.write(false); 5611308Santhony.gutierrez@amd.com wait(); 5711308Santhony.gutierrez@amd.com } else wait(); 5811308Santhony.gutierrez@amd.com 5911308Santhony.gutierrez@amd.com // 6011308Santhony.gutierrez@amd.com // main loop 6111308Santhony.gutierrez@amd.com // 6211308Santhony.gutierrez@amd.com while(1) { 6311308Santhony.gutierrez@amd.com do { wait(); } while (in_valid == false); 6411308Santhony.gutierrez@amd.com 6511308Santhony.gutierrez@amd.com // reading inputs 6611308Santhony.gutierrez@amd.com tmp1 = in_value1.read(); 6711308Santhony.gutierrez@amd.com tmp2 = in_value2.read(); 6811308Santhony.gutierrez@amd.com tmp3 = in_value3.read(); 6911308Santhony.gutierrez@amd.com tmp4 = in_value4.read(); 7011308Santhony.gutierrez@amd.com 7111308Santhony.gutierrez@amd.com //checking if condition on a range of bits 7211308Santhony.gutierrez@amd.com if (tmp1.range(1,3) == 4) { 7311308Santhony.gutierrez@amd.com out_value1.write(3); 7411308Santhony.gutierrez@amd.com } else if (tmp1.range(3,1) == 4) { 7511308Santhony.gutierrez@amd.com out_value1.write(2); 7611308Santhony.gutierrez@amd.com } else { 7711308Santhony.gutierrez@amd.com out_value1.write(tmp1); 7811308Santhony.gutierrez@amd.com }; 7911308Santhony.gutierrez@amd.com wait(); 8011308Santhony.gutierrez@amd.com 8111308Santhony.gutierrez@amd.com if (tmp2[2]) { 8211308Santhony.gutierrez@amd.com out_value2.write(3); 8311308Santhony.gutierrez@amd.com } else if ((bool)tmp1[1]==true) { 8411308Santhony.gutierrez@amd.com out_value2.write(2); 8511308Santhony.gutierrez@amd.com } else { 8611308Santhony.gutierrez@amd.com out_value2.write(tmp2); 8711308Santhony.gutierrez@amd.com }; 8811308Santhony.gutierrez@amd.com wait(); 8911308Santhony.gutierrez@amd.com 9011308Santhony.gutierrez@amd.com if (tmp3.range(1,3)=="000" || ((tmp3.range(3,1).to_uint()!=4) && 9111308Santhony.gutierrez@amd.com tmp3.range(3,1).to_uint()!=5 && tmp3.range(3,1).to_uint()!=6 && 9211308Santhony.gutierrez@amd.com tmp3.range(3,1).to_uint()!=7)) { 9311308Santhony.gutierrez@amd.com out_value3.write(1); 9411308Santhony.gutierrez@amd.com } else { 9511308Santhony.gutierrez@amd.com out_value3.write(tmp3); 9611308Santhony.gutierrez@amd.com }; 9711308Santhony.gutierrez@amd.com 9811308Santhony.gutierrez@amd.com if (tmp4.range(1,3)=="000" || (tmp4.range(3,1).to_uint()!=4 && 9911308Santhony.gutierrez@amd.com tmp4.range(3,1).to_uint()!=5 && tmp4.range(3,1).to_uint()!=6 && 10011308Santhony.gutierrez@amd.com tmp4.range(3,1).to_uint()!=7)) { 10111308Santhony.gutierrez@amd.com out_value4.write(1); 10211308Santhony.gutierrez@amd.com } else { 10311308Santhony.gutierrez@amd.com out_value4.write(tmp4); 10411308Santhony.gutierrez@amd.com }; 10511308Santhony.gutierrez@amd.com 10611308Santhony.gutierrez@amd.com out_valid.write(true); 10711308Santhony.gutierrez@amd.com wait(); 10811308Santhony.gutierrez@amd.com out_valid.write(false); 10911308Santhony.gutierrez@amd.com 11011308Santhony.gutierrez@amd.com } 11111308Santhony.gutierrez@amd.com} 11211308Santhony.gutierrez@amd.com 11311308Santhony.gutierrez@amd.com// EOF 11411308Santhony.gutierrez@amd.com 11511308Santhony.gutierrez@amd.com