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