bitwidth.cpp revision 12855:588919e0e4aa
16657Snate@binkert.org/*****************************************************************************
26657Snate@binkert.org
36657Snate@binkert.org  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
46657Snate@binkert.org  more contributor license agreements.  See the NOTICE file distributed
56657Snate@binkert.org  with this work for additional information regarding copyright ownership.
66657Snate@binkert.org  Accellera licenses this file to you under the Apache License, Version 2.0
76657Snate@binkert.org  (the "License"); you may not use this file except in compliance with the
86657Snate@binkert.org  License.  You may obtain a copy of the License at
96657Snate@binkert.org
106657Snate@binkert.org    http://www.apache.org/licenses/LICENSE-2.0
116657Snate@binkert.org
126657Snate@binkert.org  Unless required by applicable law or agreed to in writing, software
136657Snate@binkert.org  distributed under the License is distributed on an "AS IS" BASIS,
146657Snate@binkert.org  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
156657Snate@binkert.org  implied.  See the License for the specific language governing
166657Snate@binkert.org  permissions and limitations under the License.
176657Snate@binkert.org
186657Snate@binkert.org *****************************************************************************/
196657Snate@binkert.org
206657Snate@binkert.org/*****************************************************************************
216657Snate@binkert.org
226657Snate@binkert.org  bitwidth.cpp --
236657Snate@binkert.org
246657Snate@binkert.org  Original Author: Rocco Jonack, Synopsys, Inc., 1999-08-02
256657Snate@binkert.org
266657Snate@binkert.org *****************************************************************************/
276657Snate@binkert.org
286657Snate@binkert.org/*****************************************************************************
296657Snate@binkert.org
306657Snate@binkert.org  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
316657Snate@binkert.org  changes you are making here.
326657Snate@binkert.org
336657Snate@binkert.org      Name, Affiliation, Date:
346657Snate@binkert.org  Description of Modification:
356657Snate@binkert.org
366657Snate@binkert.org *****************************************************************************/
376657Snate@binkert.org
386657Snate@binkert.org#include "bitwidth.h"
396657Snate@binkert.org
406657Snate@binkert.orgvoid bitwidth::entry(){
416714Ssteve.reinhardt@amd.com
426714Ssteve.reinhardt@amd.com  sc_bigint<4>    tmp1;
436657Snate@binkert.org  sc_biguint<4>   tmp2;
446714Ssteve.reinhardt@amd.com  sc_bigint<6>    tmp3;
456714Ssteve.reinhardt@amd.com  sc_biguint<6>   tmp4;
466657Snate@binkert.org  sc_bigint<8>    tmp5;
476657Snate@binkert.org  sc_biguint<8>   tmp6;
486657Snate@binkert.org
4911283Santhony.gutierrez@amd.com  // reset_loop
506657Snate@binkert.org  if (reset.read() == true) {
51    out_valid.write(false);
52    wait();
53  } else wait();
54
55  //
56  // main loop
57  //
58  //
59  while(1) {
60    while(in_valid.read()==false) wait();
61    wait();
62
63    //reading the inputs
64    tmp1 = in_value1.read();
65    tmp2 = in_value2.read();
66    tmp3 = in_value3.read();
67    tmp4 = in_value4.read();
68    tmp5 = in_value5.read();
69    tmp6 = in_value6.read();
70
71    //execute simple operations
72    // expected bitwidth 4 4 4 signed
73    tmp1 = tmp1 + tmp2;
74    // expected bitwidth 4 6 6 signed
75    tmp3 = tmp1 + tmp3;
76    // expected bitwidth 4 4 6 signed
77    tmp6 = tmp2 + tmp1;
78    // expected bitwidth 8 8 6 signed
79    tmp4 = tmp5 + tmp6;
80    // expected bitwidth 6 8 4 unsigned
81    tmp2 = tmp4 + tmp6;
82    wait();
83
84    // write outputs
85    out_value1.write(tmp1);
86    out_value2.write(tmp2);
87    out_value3.write(tmp3);
88    out_value4.write(tmp4);
89    out_value5.write(tmp5);
90    out_value6.write(tmp6);
91    out_valid.write(true);
92    wait();
93    out_valid.write(false);
94    wait();
95  }
96}
97
98// EOF
99
100