test01.cpp revision 12855:588919e0e4aa
1/***************************************************************************** 2 3 Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 4 more contributor license agreements. See the NOTICE file distributed 5 with this work for additional information regarding copyright ownership. 6 Accellera licenses this file to you under the Apache License, Version 2.0 7 (the "License"); you may not use this file except in compliance with the 8 License. You may obtain a copy of the License at 9 10 http://www.apache.org/licenses/LICENSE-2.0 11 12 Unless required by applicable law or agreed to in writing, software 13 distributed under the License is distributed on an "AS IS" BASIS, 14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 15 implied. See the License for the specific language governing 16 permissions and limitations under the License. 17 18 *****************************************************************************/ 19 20/***************************************************************************** 21 22 test01.cpp -- 23 24 Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 25 26 *****************************************************************************/ 27 28/***************************************************************************** 29 30 MODIFICATION LOG - modifiers, enter your name, affiliation, date and 31 changes you are making here. 32 33 Name, Affiliation, Date: 34 Description of Modification: 35 36 *****************************************************************************/ 37 38// test of sc_int's concat operators -- basic functionality, operator , () 39 40#include "systemc.h" 41 42void 43test_concat( const sc_int<8>& a ) 44{ 45 sc_int<8> b; 46 sc_int<4> c; 47 sc_int<4> d; 48 49 cout << a << endl; 50 51 cout << "*** sc_int_base" << endl; 52 53 ( c, d ) = a; 54 cout << c << endl; 55 cout << d << endl; 56 57 b = ( d, c ); 58 cout << b << endl; 59 60 cout << "---" << endl; 61 62 ( c, d[1] ) = a.range( 4, 0 ); 63 cout << c << endl; 64 cout << d << endl; 65 66 b.range( 4, 0 ) = ( c, d[1] ); 67 cout << b << endl; 68 69 cout << "---" << endl; 70 71 ( c, d.range( 1, 0 ) ) = a.range( 5, 0 ); 72 cout << c << endl; 73 cout << d << endl; 74 75 b.range( 5, 0 ) = ( c, d.range( 1, 0 ) ); 76 cout << b << endl; 77 78 cout << "---" << endl; 79 80 ( c, ( d[0], d[1] ) ) = a.range( 5, 0 ); 81 cout << c << endl; 82 cout << d << endl; 83 84 b.range( 5, 0 ) = ( c, ( d[0], d[1] ) ); 85 cout << b << endl; 86 87 cout << "*** sc_int_bitref" << endl; 88 89 ( d[1], c ) = a.range( 4, 0 ); 90 cout << c << endl; 91 cout << d << endl; 92 93 b.range( 4, 0 ) = ( d[1], c ); 94 cout << b << endl; 95 96 cout << "---" << endl; 97 98 ( d[0], d[1] ) = a.range( 1,0 ); 99 cout << d << endl; 100 101 b.range( 1, 0 ) = ( d[1], d[0] ); 102 cout << b << endl; 103 104 cout << "---" << endl; 105 106 ( d[0], c.range( 3, 0 ) ) = a.range( 4, 0 ); 107 cout << c << endl; 108 cout << d << endl; 109 110 b.range( 4, 0 ) = ( d[0], c.range( 3, 0 ) ); 111 cout << b << endl; 112 113 cout << "---" << endl; 114 115 ( d[0], ( d[1], d[2], d[3] ) ) = a.range( 3, 0 ); 116 cout << d << endl; 117 118 b.range( 3, 0 ) = ( d[3], ( d[2], d[1], d[0] ) ); 119 cout << b << endl; 120 121 cout << "*** sc_int_subref" << endl; 122 123 ( c.range( 3, 0 ), d ) = a; 124 cout << c << endl; 125 cout << d << endl; 126 127 b = ( c.range( 3, 0 ), d ); 128 cout << b << endl; 129 130 cout << "---" << endl; 131 132 ( c.range( 3, 0 ), d[1] ) = a.range( 4, 0 ); 133 cout << c << endl; 134 cout << d << endl; 135 136 b.range( 4, 0 ) = ( c.range( 3, 0 ), d[1] ); 137 cout << b << endl; 138 139 cout << "---" << endl; 140 141 ( c.range( 3, 0 ), d.range( 3, 0 ) ) = a; 142 cout << c << endl; 143 cout << d << endl; 144 145 b = ( d.range( 3, 0 ), c.range( 3, 0 ) ); 146 cout << b << endl; 147 148 cout << "---" << endl; 149 150 ( c.range( 3, 0 ), ( d[0], d[1] ) ) = a.range( 5, 0 ); 151 cout << c << endl; 152 cout << d << endl; 153 154 b.range( 5, 0 ) = ( c.range( 3, 0 ), ( d[1], d[0] ) ); 155 cout << b << endl; 156 157 cout << "*** sc_int_concat" << endl; 158 159 ( ( c[1], c[0] ), d ) = a.range( 5, 0 ); 160 cout << c << endl; 161 cout << d << endl; 162 163 b.range( 5, 0 ) = ( ( c[0], c[1] ), d ); 164 cout << b << endl; 165 166 cout << "---" << endl; 167 168 ( ( c[1], c[0] ), d[0] ) = a.range( 2, 0 ); 169 cout << c << endl; 170 cout << d << endl; 171 172 b.range( 2, 0 ) = ( ( c[0], c[1] ), d[0] ); 173 cout << b << endl; 174 175 cout << "---" << endl; 176 177 ( ( c[1], c[0] ), d.range( 3, 0 ) ) = a.range( 5, 0 ); 178 cout << c << endl; 179 cout << d << endl; 180 181 b.range( 5, 0 ) = ( ( c[0], c[1] ), d.range( 3, 0 ) ); 182 cout << b << endl; 183 184 cout << "---" << endl; 185 186 ( ( c[0], c[1] ), ( c[2], c[3] ) ) = a.range( 3, 0 ); 187 cout << c << endl; 188 189 b.range( 3, 0 ) = ( ( c[3], c[2] ), ( c[1], c[0] ) ); 190 cout << b << endl; 191} 192 193int 194sc_main( int, char*[] ) 195{ 196 sc_int<8> a( 33 ); 197 198 test_concat( a ); 199 200 return 0; 201} 202