test1.cpp revision 12855
112647Santhony.gutierrez@amd.com/*****************************************************************************
212647Santhony.gutierrez@amd.com
311308Santhony.gutierrez@amd.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
412647Santhony.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.
612647Santhony.gutierrez@amd.com  Accellera licenses this file to you under the Apache License, Version 2.0
712647Santhony.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
912647Santhony.gutierrez@amd.com
1012647Santhony.gutierrez@amd.com    http://www.apache.org/licenses/LICENSE-2.0
1111308Santhony.gutierrez@amd.com
1212647Santhony.gutierrez@amd.com  Unless required by applicable law or agreed to in writing, software
1312647Santhony.gutierrez@amd.com  distributed under the License is distributed on an "AS IS" BASIS,
1412647Santhony.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
1612647Santhony.gutierrez@amd.com  permissions and limitations under the License.
1712647Santhony.gutierrez@amd.com
1812647Santhony.gutierrez@amd.com *****************************************************************************/
1911308Santhony.gutierrez@amd.com
2012647Santhony.gutierrez@amd.com/*****************************************************************************
2112647Santhony.gutierrez@amd.com
2212647Santhony.gutierrez@amd.com  test1.cpp --
2312647Santhony.gutierrez@amd.com
2412647Santhony.gutierrez@amd.com  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
2512647Santhony.gutierrez@amd.com
2612647Santhony.gutierrez@amd.com *****************************************************************************/
2712647Santhony.gutierrez@amd.com
2812647Santhony.gutierrez@amd.com/*****************************************************************************
2912647Santhony.gutierrez@amd.com
3012647Santhony.gutierrez@amd.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3111308Santhony.gutierrez@amd.com  changes you are making here.
3212647Santhony.gutierrez@amd.com
3311308Santhony.gutierrez@amd.com      Name, Affiliation, Date:
3413774Sandreas.sandberg@arm.com  Description of Modification:
3513774Sandreas.sandberg@arm.com
3613774Sandreas.sandberg@arm.com *****************************************************************************/
3711308Santhony.gutierrez@amd.com
3811308Santhony.gutierrez@amd.com#include <systemc.h>
3911308Santhony.gutierrez@amd.com#include "types2.h"
4011308Santhony.gutierrez@amd.com
4111308Santhony.gutierrez@amd.comvoid types2::entry(){
4211308Santhony.gutierrez@amd.com
4311308Santhony.gutierrez@amd.com  int     tmp1_uns_lv;
4411308Santhony.gutierrez@amd.com  sc_lv<8>  tmp2_uns_lv;
4511308Santhony.gutierrez@amd.com  sc_uint<8>        tmp1_uns;
4611308Santhony.gutierrez@amd.com  sc_uint<8>       tmp2_uns;
4711308Santhony.gutierrez@amd.com  sc_int<9>       temp_output1;
4811308Santhony.gutierrez@amd.com  sc_int<8>       temp_output2;
4911308Santhony.gutierrez@amd.com  sc_lv<9>       output1;
5011308Santhony.gutierrez@amd.com  int       output2;
5111308Santhony.gutierrez@amd.com
5211308Santhony.gutierrez@amd.com  b_new_struct test;
5311308Santhony.gutierrez@amd.com  a_new_struct test1;
5411308Santhony.gutierrez@amd.com  // reset_loop
5511308Santhony.gutierrez@amd.com  out_valid.write(0);
5611308Santhony.gutierrez@amd.com
5711308Santhony.gutierrez@amd.com  wait();
5811308Santhony.gutierrez@amd.com  while (true) {
5911308Santhony.gutierrez@amd.com    test1 = port_in.read();
6011308Santhony.gutierrez@amd.com    while(test1.in_valid == (sc_logic)'0') {
6111308Santhony.gutierrez@amd.com      wait();
6211308Santhony.gutierrez@amd.com      test1 = port_in.read();
6311308Santhony.gutierrez@amd.com     }
6411308Santhony.gutierrez@amd.com    wait();
6511308Santhony.gutierrez@amd.com
6611308Santhony.gutierrez@amd.com    //cout << "Starting execution" << endl;
6711308Santhony.gutierrez@amd.com
6811308Santhony.gutierrez@amd.com    //reading the inputs
6911308Santhony.gutierrez@amd.com    tmp1_uns_lv = test1.in_value1;
7011308Santhony.gutierrez@amd.com    //cout << "read inputs" << endl;
7111308Santhony.gutierrez@amd.com    tmp2_uns_lv = test1.in_value2;
7211308Santhony.gutierrez@amd.com    //cout << "read inputs" << endl;
7311308Santhony.gutierrez@amd.com    tmp1_uns = tmp1_uns_lv;
7411308Santhony.gutierrez@amd.com    tmp2_uns = tmp2_uns_lv;
7511308Santhony.gutierrez@amd.com
7611308Santhony.gutierrez@amd.com    //execute simple operations
7711308Santhony.gutierrez@amd.com    tmp1_uns++;
7811308Santhony.gutierrez@amd.com    tmp2_uns--;
7911308Santhony.gutierrez@amd.com    tmp1_uns_lv = tmp1_uns;
8011308Santhony.gutierrez@amd.com
8111308Santhony.gutierrez@amd.com
8211308Santhony.gutierrez@amd.com    output1 = temp_output1 = tmp1_uns + tmp2_uns;
8311308Santhony.gutierrez@amd.com    output2 = temp_output2 = tmp1_uns - tmp2_uns;
8411308Santhony.gutierrez@amd.com
8511308Santhony.gutierrez@amd.com    wait();
8611308Santhony.gutierrez@amd.com
8711308Santhony.gutierrez@amd.com    // write outputs
8811308Santhony.gutierrez@amd.com
8911308Santhony.gutierrez@amd.com    test.out_value1 = "000000000";
9011308Santhony.gutierrez@amd.com    test.out_value2 = tmp1_uns_lv;
9111308Santhony.gutierrez@amd.com    port_out.write(test);
9211308Santhony.gutierrez@amd.com
9311308Santhony.gutierrez@amd.com    out_valid.write(1);
9411308Santhony.gutierrez@amd.com    wait();
9511308Santhony.gutierrez@amd.com
9611308Santhony.gutierrez@amd.com    out_valid.write(0);
9711308Santhony.gutierrez@amd.com    wait();
9811308Santhony.gutierrez@amd.com    test.out_value1 = output1;
9911308Santhony.gutierrez@amd.com    test.out_value2 = output2;
10011308Santhony.gutierrez@amd.com
10111308Santhony.gutierrez@amd.com    port_out.write(test);
10211308Santhony.gutierrez@amd.com    out_valid.write(1);
10311308Santhony.gutierrez@amd.com    wait();
10411308Santhony.gutierrez@amd.com
10511308Santhony.gutierrez@amd.com
10611308Santhony.gutierrez@amd.com    out_valid.write(0);
10711308Santhony.gutierrez@amd.com    wait();
10811308Santhony.gutierrez@amd.com
10911308Santhony.gutierrez@amd.com}
11011308Santhony.gutierrez@amd.com}
111// EOF
112
113