112855Sgabeblack@google.com/*****************************************************************************
212855Sgabeblack@google.com
312855Sgabeblack@google.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
412855Sgabeblack@google.com  more contributor license agreements.  See the NOTICE file distributed
512855Sgabeblack@google.com  with this work for additional information regarding copyright ownership.
612855Sgabeblack@google.com  Accellera licenses this file to you under the Apache License, Version 2.0
712855Sgabeblack@google.com  (the "License"); you may not use this file except in compliance with the
812855Sgabeblack@google.com  License.  You may obtain a copy of the License at
912855Sgabeblack@google.com
1012855Sgabeblack@google.com    http://www.apache.org/licenses/LICENSE-2.0
1112855Sgabeblack@google.com
1212855Sgabeblack@google.com  Unless required by applicable law or agreed to in writing, software
1312855Sgabeblack@google.com  distributed under the License is distributed on an "AS IS" BASIS,
1412855Sgabeblack@google.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1512855Sgabeblack@google.com  implied.  See the License for the specific language governing
1612855Sgabeblack@google.com  permissions and limitations under the License.
1712855Sgabeblack@google.com
1812855Sgabeblack@google.com *****************************************************************************/
1912855Sgabeblack@google.com
2012855Sgabeblack@google.com/*****************************************************************************
2112855Sgabeblack@google.com
2212855Sgabeblack@google.com  design_rtl.h --
2312855Sgabeblack@google.com
2412855Sgabeblack@google.com  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
2512855Sgabeblack@google.com
2612855Sgabeblack@google.com *****************************************************************************/
2712855Sgabeblack@google.com
2812855Sgabeblack@google.com/*****************************************************************************
2912855Sgabeblack@google.com
3012855Sgabeblack@google.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3112855Sgabeblack@google.com  changes you are making here.
3212855Sgabeblack@google.com
3312855Sgabeblack@google.com      Name, Affiliation, Date:
3412855Sgabeblack@google.com  Description of Modification:
3512855Sgabeblack@google.com
3612855Sgabeblack@google.com *****************************************************************************/
3712855Sgabeblack@google.com
3812855Sgabeblack@google.com#include <systemc.h>
3912855Sgabeblack@google.com
4012855Sgabeblack@google.comSC_MODULE(fun)    {
4112855Sgabeblack@google.compublic:
4212855Sgabeblack@google.com  sc_in<sc_uint<1> > clk;
4312855Sgabeblack@google.com  sc_in<sc_uint<32> > count;
4412855Sgabeblack@google.com  sc_out<sc_uint<9> > out_a0;
4512855Sgabeblack@google.com  sc_out<sc_uint<9> > out_a1;
4612855Sgabeblack@google.com  SC_CTOR(fun)    {
4712855Sgabeblack@google.com    SC_METHOD(p1);
4812855Sgabeblack@google.com    sensitive << count << out_a1;
4912855Sgabeblack@google.com  };
5012855Sgabeblack@google.comprivate:
5112855Sgabeblack@google.com
5212855Sgabeblack@google.com    template<int w> sc_int<w> int_conv_from_sc_uint_to_sc_int ( sc_uint<w>
5312855Sgabeblack@google.com        a) {
5412855Sgabeblack@google.com      sc_int<w> a_temp;
5512855Sgabeblack@google.com      for (int i=0;i<w; i++)
5612855Sgabeblack@google.com        a_temp[i] = a[i];
5712855Sgabeblack@google.com      return a_temp;
5812855Sgabeblack@google.com    }
5912855Sgabeblack@google.com
6012855Sgabeblack@google.com    template<int w> sc_bigint<w> int_conv_from_sc_biguint_to_sc_bigint (
6112855Sgabeblack@google.com        sc_biguint<w> a) {
6212855Sgabeblack@google.com      sc_bigint<w> a_temp;
6312855Sgabeblack@google.com      for (int i=0;i<w; i++)
6412855Sgabeblack@google.com        a_temp[i] = a[i];
6512855Sgabeblack@google.com      return a_temp;
6612855Sgabeblack@google.com    }
6712855Sgabeblack@google.com
6812855Sgabeblack@google.com    template<int w> sc_int<w> int_conv_from_sc_uint_to_sc_int ( bool a) {
6912855Sgabeblack@google.com      sc_int<w> a_temp;
7012855Sgabeblack@google.com      a_temp[0] = a;
7112855Sgabeblack@google.com      return a_temp;
7212855Sgabeblack@google.com    }
7312855Sgabeblack@google.com
7412855Sgabeblack@google.com
7512855Sgabeblack@google.com    sc_uint<32> C18_B, C18_REMAINDER;
7612855Sgabeblack@google.com    bool N73, N74, N75, N76, N77, N78, N79, N80, N81, N82, N83, N84, N85,
7712855Sgabeblack@google.com        N86, N87, N88, N89, N90, N91, N92, N93, N94, N95, N96, N97, N98,
7812855Sgabeblack@google.com        N99, N100, N101, N102, N103, N104, N105, N106, N107, N108, N109,
7912855Sgabeblack@google.com        N110, N111, N112, N113, N114, N115, N116, N117, N118, N119, N120,
8012855Sgabeblack@google.com        N121, N122, N123, N124, N125, N126, N127, N128, N129, N130, N131,
8112855Sgabeblack@google.com        N132, N133, N134;
8212855Sgabeblack@google.com
8312855Sgabeblack@google.com    void p1( ) {
8412855Sgabeblack@google.com      out_a1[0].write( 0 );
8512855Sgabeblack@google.com      out_a1[1].write( 0 );
8612855Sgabeblack@google.com      out_a1[3].write( 1 );
8712855Sgabeblack@google.com      out_a1[5].write( 1 );
8812855Sgabeblack@google.com      out_a1[7].write( 0 );
8912855Sgabeblack@google.com      out_a1[8].write( 0 );
9012855Sgabeblack@google.com      out_a0[2].write( (0 ^ 1) );
9112855Sgabeblack@google.com      out_a0[5].write( (0 ^ 1) );
9212855Sgabeblack@google.com      C18_B[31] =  0 ;
9312855Sgabeblack@google.com      C18_B[30] =    0 ;
9412855Sgabeblack@google.com      C18_B[29] =    0 ;
9512855Sgabeblack@google.com      C18_B[28] =    0 ;
9612855Sgabeblack@google.com      C18_B[27] =    0 ;
9712855Sgabeblack@google.com      C18_B[26] =    0 ;
9812855Sgabeblack@google.com      C18_B[25] =    0 ;
9912855Sgabeblack@google.com      C18_B[24] =    0 ;
10012855Sgabeblack@google.com      C18_B[23] =    0 ;
10112855Sgabeblack@google.com      C18_B[22] =    0 ;
10212855Sgabeblack@google.com      C18_B[21] =    0 ;
10312855Sgabeblack@google.com      C18_B[20] =    0 ;
10412855Sgabeblack@google.com      C18_B[19] =    0 ;
10512855Sgabeblack@google.com      C18_B[18] =    0 ;
10612855Sgabeblack@google.com      C18_B[17] =    0 ;
10712855Sgabeblack@google.com      C18_B[16] =    0 ;
10812855Sgabeblack@google.com      C18_B[15] =    0 ;
10912855Sgabeblack@google.com      C18_B[14] =    0 ;
11012855Sgabeblack@google.com      C18_B[13] =    0 ;
11112855Sgabeblack@google.com      C18_B[12] =    0 ;
11212855Sgabeblack@google.com      C18_B[11] =    0 ;
11312855Sgabeblack@google.com      C18_B[10] =    0 ;
11412855Sgabeblack@google.com      C18_B[9] =    0 ;
11512855Sgabeblack@google.com      C18_B[8] =    0 ;
11612855Sgabeblack@google.com      C18_B[7] =    0 ;
11712855Sgabeblack@google.com      C18_B[6] =    0 ;
11812855Sgabeblack@google.com      C18_B[5] =    0 ;
11912855Sgabeblack@google.com      C18_B[4] =    0 ;
12012855Sgabeblack@google.com      C18_B[3] =    0 ;
12112855Sgabeblack@google.com      C18_B[2] =    0 ;
12212855Sgabeblack@google.com      C18_B[1] =    1 ;
12312855Sgabeblack@google.com      C18_B[0] =    1 ;
12412855Sgabeblack@google.com
12512855Sgabeblack@google.com      // REM_UNS_OP(A,B,REMAINDER)
12612855Sgabeblack@google.com      REM_UNS_OP( count.read(), C18_B, C18_REMAINDER );
12712855Sgabeblack@google.com    }
12812855Sgabeblack@google.com    out_a0[7].write( (0 ^ 0) );
12912855Sgabeblack@google.com    out_a0[8].write( (0 ^ 0) );
13012855Sgabeblack@google.com    N73 =  !(C18_REMAINDER[31]);
13112855Sgabeblack@google.com    N74 =  !(C18_REMAINDER[30]);
13212855Sgabeblack@google.com    N76 =  !(C18_REMAINDER[29]);
13312855Sgabeblack@google.com    N78 =  !(C18_REMAINDER[28]);
13412855Sgabeblack@google.com    N80 =  !(C18_REMAINDER[27]);
13512855Sgabeblack@google.com    N82 =  !(C18_REMAINDER[26]);
13612855Sgabeblack@google.com    N84 =  !(C18_REMAINDER[25]);
13712855Sgabeblack@google.com    N86 =  !(C18_REMAINDER[24]);
13812855Sgabeblack@google.com    N88 =  !(C18_REMAINDER[23]);
13912855Sgabeblack@google.com    N90 =  !(C18_REMAINDER[22]);
14012855Sgabeblack@google.com    N92 =  !(C18_REMAINDER[21]);
14112855Sgabeblack@google.com    N94 =  !(C18_REMAINDER[20]);
14212855Sgabeblack@google.com    N96 =  !(C18_REMAINDER[19]);
14312855Sgabeblack@google.com    N98 =  !(C18_REMAINDER[18]);
14412855Sgabeblack@google.com    N100 =  !(C18_REMAINDER[17]);
14512855Sgabeblack@google.com    N102 =  !(C18_REMAINDER[16]);
14612855Sgabeblack@google.com    N104 =  !(C18_REMAINDER[15]);
14712855Sgabeblack@google.com    N106 =  !(C18_REMAINDER[14]);
14812855Sgabeblack@google.com    N108 =  !(C18_REMAINDER[13]);
14912855Sgabeblack@google.com    N110 =  !(C18_REMAINDER[12]);
15012855Sgabeblack@google.com    N112 =  !(C18_REMAINDER[11]);
15112855Sgabeblack@google.com    N114 =  !(C18_REMAINDER[10]);
15212855Sgabeblack@google.com    N116 =  !(C18_REMAINDER[9]);
15312855Sgabeblack@google.com    N118 =  !(C18_REMAINDER[8]);
15412855Sgabeblack@google.com    N120 =  !(C18_REMAINDER[7]);
15512855Sgabeblack@google.com    N122 =  !(C18_REMAINDER[6]);
15612855Sgabeblack@google.com    N124 =  !(C18_REMAINDER[5]);
15712855Sgabeblack@google.com    N126 =  !(C18_REMAINDER[4]);
15812855Sgabeblack@google.com    N128 =  !(C18_REMAINDER[3]);
15912855Sgabeblack@google.com    N130 =  !(C18_REMAINDER[2]);
16012855Sgabeblack@google.com    N132 =  !(C18_REMAINDER[1]);
16112855Sgabeblack@google.com    N134 =  !(C18_REMAINDER[0]);
16212855Sgabeblack@google.com    N75 =  (N73 && N74);
16312855Sgabeblack@google.com    N77 =  (N75 && N76);
16412855Sgabeblack@google.com    N79 =  (N77 && N78);
16512855Sgabeblack@google.com    N81 =  (N79 && N80);
16612855Sgabeblack@google.com    N83 =  (N81 && N82);
16712855Sgabeblack@google.com    N85 =  (N83 && N84);
16812855Sgabeblack@google.com    N87 =  (N85 && N86);
16912855Sgabeblack@google.com    N89 =  (N87 && N88);
17012855Sgabeblack@google.com    N91 =  (N89 && N90);
17112855Sgabeblack@google.com    N93 =  (N91 && N92);
17212855Sgabeblack@google.com    N95 =  (N93 && N94);
17312855Sgabeblack@google.com    N97 =  (N95 && N96);
17412855Sgabeblack@google.com    N99 =  (N97 && N98);
17512855Sgabeblack@google.com    N101 =  (N99 && N100);
17612855Sgabeblack@google.com    N103 =  (N101 && N102);
17712855Sgabeblack@google.com    N105 =  (N103 && N104);
17812855Sgabeblack@google.com    N107 =  (N105 && N106);
17912855Sgabeblack@google.com    N109 =  (N107 && N108);
18012855Sgabeblack@google.com    N111 =  (N109 && N110);
18112855Sgabeblack@google.com    N113 =  (N111 && N112);
18212855Sgabeblack@google.com    N115 =  (N113 && N114);
18312855Sgabeblack@google.com    N117 =  (N115 && N116);
18412855Sgabeblack@google.com    N119 =  (N117 && N118);
18512855Sgabeblack@google.com    N121 =  (N119 && N120);
18612855Sgabeblack@google.com    N123 =  (N121 && N122);
18712855Sgabeblack@google.com    N125 =  (N123 && N124);
18812855Sgabeblack@google.com    N127 =  (N125 && N126);
18912855Sgabeblack@google.com    N129 =  (N127 && N128);
19012855Sgabeblack@google.com    N131 =  (N129 && N130);
19112855Sgabeblack@google.com    N133 =  (N131 && N132);
19212855Sgabeblack@google.com    out_a1[6].write( (N133 && N134) );
19312855Sgabeblack@google.com    out_a1[4].write( out_a1.read()[6] );
19412855Sgabeblack@google.com    out_a0[3].write( (0 ^ out_a1.read()[6]) );
19512855Sgabeblack@google.com    out_a0[4].write( (0 ^ out_a1.read()[6]) );
19612855Sgabeblack@google.com    out_a0[6].write( (0 ^ out_a1.read()[6]) );
19712855Sgabeblack@google.com    out_a1[2].write( !(out_a1.read()[6]) );
19812855Sgabeblack@google.com    out_a0[0].write( (out_a1.read()[2] ^ 0) );
19912855Sgabeblack@google.com    out_a0[1].write( (out_a1.read()[6] ^ out_a1.read()[2]) );
20012855Sgabeblack@google.com
20112855Sgabeblack@google.com  }
20212855Sgabeblack@google.com
20312855Sgabeblack@google.com};
204