a2901_alu.h revision 12855:588919e0e4aa
110611SAndreas.Sandberg@ARM.com/*****************************************************************************
210611SAndreas.Sandberg@ARM.com
312763Sgiacomo.travaglini@arm.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
410611SAndreas.Sandberg@ARM.com  more contributor license agreements.  See the NOTICE file distributed
510611SAndreas.Sandberg@ARM.com  with this work for additional information regarding copyright ownership.
610611SAndreas.Sandberg@ARM.com  Accellera licenses this file to you under the Apache License, Version 2.0
710611SAndreas.Sandberg@ARM.com  (the "License"); you may not use this file except in compliance with the
810611SAndreas.Sandberg@ARM.com  License.  You may obtain a copy of the License at
910611SAndreas.Sandberg@ARM.com
1010611SAndreas.Sandberg@ARM.com    http://www.apache.org/licenses/LICENSE-2.0
1110611SAndreas.Sandberg@ARM.com
1210611SAndreas.Sandberg@ARM.com  Unless required by applicable law or agreed to in writing, software
1310611SAndreas.Sandberg@ARM.com  distributed under the License is distributed on an "AS IS" BASIS,
1410611SAndreas.Sandberg@ARM.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1510696SAndreas.Sandberg@ARM.com  implied.  See the License for the specific language governing
1610696SAndreas.Sandberg@ARM.com  permissions and limitations under the License.
1710696SAndreas.Sandberg@ARM.com
1810611SAndreas.Sandberg@ARM.com *****************************************************************************/
1910611SAndreas.Sandberg@ARM.com
2010611SAndreas.Sandberg@ARM.com/*****************************************************************************
2110611SAndreas.Sandberg@ARM.com
2210611SAndreas.Sandberg@ARM.com  a2901_alu.h --
2310611SAndreas.Sandberg@ARM.com
2410611SAndreas.Sandberg@ARM.com  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
2510611SAndreas.Sandberg@ARM.com
2610611SAndreas.Sandberg@ARM.com *****************************************************************************/
2710611SAndreas.Sandberg@ARM.com
2810611SAndreas.Sandberg@ARM.com/*****************************************************************************
2910611SAndreas.Sandberg@ARM.com
3010611SAndreas.Sandberg@ARM.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3110611SAndreas.Sandberg@ARM.com  changes you are making here.
3210611SAndreas.Sandberg@ARM.com
3310611SAndreas.Sandberg@ARM.com      Name, Affiliation, Date:
3410611SAndreas.Sandberg@ARM.com  Description of Modification:
3510611SAndreas.Sandberg@ARM.com
3610611SAndreas.Sandberg@ARM.com *****************************************************************************/
3710611SAndreas.Sandberg@ARM.com
3810611SAndreas.Sandberg@ARM.com#ifndef A2901_ALU_H
3910611SAndreas.Sandberg@ARM.com#define A2901_ALU_H
4010611SAndreas.Sandberg@ARM.com
4110611SAndreas.Sandberg@ARM.com#include "common.h"
4210696SAndreas.Sandberg@ARM.com
4310696SAndreas.Sandberg@ARM.comSC_MODULE( a2901_alu )
4410696SAndreas.Sandberg@ARM.com{
4510696SAndreas.Sandberg@ARM.com    SC_HAS_PROCESS( a2901_alu );
4610696SAndreas.Sandberg@ARM.com
4710696SAndreas.Sandberg@ARM.com    // inputs
4810696SAndreas.Sandberg@ARM.com    const sig9& I;
4910611SAndreas.Sandberg@ARM.com    const sig4& RE;
5010611SAndreas.Sandberg@ARM.com    const sig4& S;
5110611SAndreas.Sandberg@ARM.com    const sig1& C0;
5210611SAndreas.Sandberg@ARM.com
5310611SAndreas.Sandberg@ARM.com    // outputs
5410611SAndreas.Sandberg@ARM.com    sig5& R_ext;
5510696SAndreas.Sandberg@ARM.com    sig5& S_ext;
5610696SAndreas.Sandberg@ARM.com    sig4& F;
5710696SAndreas.Sandberg@ARM.com    sig1& OVR;
5812763Sgiacomo.travaglini@arm.com    sig1& C4;
5912763Sgiacomo.travaglini@arm.com    sig1& Pbar;
6012763Sgiacomo.travaglini@arm.com    sig1& Gbar;
6112763Sgiacomo.travaglini@arm.com    sig1& F3;
6212763Sgiacomo.travaglini@arm.com    sig1& F30;
6312763Sgiacomo.travaglini@arm.com
6412763Sgiacomo.travaglini@arm.com    // temporaries
6512763Sgiacomo.travaglini@arm.com    int5 result;
6612763Sgiacomo.travaglini@arm.com    int5 R_ext_v;
6710696SAndreas.Sandberg@ARM.com    int5 S_ext_v;
6810696SAndreas.Sandberg@ARM.com    int5 temp_p;
6910696SAndreas.Sandberg@ARM.com    int5 temp_g;
7010696SAndreas.Sandberg@ARM.com
7110696SAndreas.Sandberg@ARM.com    // constructor
7210696SAndreas.Sandberg@ARM.com    a2901_alu( sc_module_name,
7310696SAndreas.Sandberg@ARM.com               const sig9& I_,
7410696SAndreas.Sandberg@ARM.com               const sig4& RE_,
7510696SAndreas.Sandberg@ARM.com               const sig4& S_,
7610696SAndreas.Sandberg@ARM.com               const sig1& C0_,
7710696SAndreas.Sandberg@ARM.com               sig5&       R_ext_,
7810696SAndreas.Sandberg@ARM.com               sig5&       S_ext_,
7910696SAndreas.Sandberg@ARM.com               sig4&       F_,
8010696SAndreas.Sandberg@ARM.com               sig1&       OVR_,
8110696SAndreas.Sandberg@ARM.com               sig1&       C4_,
8210696SAndreas.Sandberg@ARM.com               sig1&       Pbar_,
8310696SAndreas.Sandberg@ARM.com               sig1&       Gbar_,
8410696SAndreas.Sandberg@ARM.com               sig1&       F3_,
8510696SAndreas.Sandberg@ARM.com               sig1&       F30_ )
8610696SAndreas.Sandberg@ARM.com    : I( I_ ),
8710696SAndreas.Sandberg@ARM.com      RE( RE_ ),
88      S( S_ ),
89      C0( C0_ ),
90      R_ext( R_ext_ ),
91      S_ext( S_ext_ ),
92      F( F_ ),
93      OVR( OVR_ ),
94      C4( C4_ ),
95      Pbar( Pbar_ ),
96      Gbar( Gbar_ ),
97      F3( F3_ ),
98      F30( F30_ )
99    {
100        SC_METHOD( entry );
101        sensitive << I;
102        sensitive << RE;
103        sensitive << S;
104        sensitive << C0;
105    }
106
107    void entry();
108};
109
110#endif
111
112