test1.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  test1.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#include "systemc.h"
39
40void
41one_to_four( const sc_bv<4>& x )
42{
43    cout << "x[3] = " << x[3] << endl;
44    cout << "x[2] = " << x[2] << endl;
45    cout << "x[1] = " << x[1] << endl;
46    cout << "x[0] = " << x[0] << endl;
47}
48
49int
50sc_main( int argc, char* argv[] )
51{
52    sc_bv<10> b1;
53    sc_bv<8>  b2;
54    sc_bv<7>  b3;
55
56    sc_biguint<10> u1;
57    sc_biguint<8>  u2;
58    sc_biguint<7>  u3;
59
60    sc_bigint<10> s1;
61    sc_bigint<8>  s2;
62    sc_bigint<7>  s3;
63
64    b1 = "0010110101";
65    b2 = "10010011";
66    b3 = "1011011";
67
68    cout << "b1.range(5,2) ... " << endl;
69    one_to_four(b1.range(5,2));
70    cout << "b2.range(4,1) ... " << endl;
71    one_to_four(b2.range(4,1));
72    cout << "b3.range(6,3) ... " << endl;
73    one_to_four(b3.range(6,3));
74
75    u1 = 235;
76    u2 = 67;
77    u3 = 44;
78
79    s1 = -235;
80    s2 = -32;
81    s3 = -1;
82
83    cout << "b1 = " << b1 << endl;
84    cout << "b2 = " << b2 << endl;
85    cout << "b3 = " << b3 << endl;
86
87    cout << "u1 = " << u1 << endl;
88    cout << "u2 = " << u2 << endl;
89    cout << "u3 = " << u3 << endl;
90
91    cout << "s1 = " << s1 << endl;
92    cout << "s2 = " << s2 << endl;
93    cout << "s3 = " << s3 << endl;
94
95    cout << "b1.range(3,0) = " << b1.range(3,0) << endl;
96    cout << "b1.range(0,3) = " << b1.range(0,3) << endl;
97    cout << "b2.range(4,1) = " << b2.range(4,1) << endl;
98    cout << "b2.range(1,4) = " << b2.range(1,4) << endl;
99    cout << "b3.range(5,3) = " << b3.range(5,3) << endl;
100    cout << "b3.range(3,5) = " << b3.range(3,5) << endl;
101
102    cout << "u1.range(3,0) = " << sc_unsigned(u1.range(3,0)) << endl;
103    cout << "u1.range(0,3) = " << sc_unsigned(u1.range(0,3)) << endl;
104    cout << "u2.range(4,1) = " << sc_unsigned(u2.range(4,1)) << endl;
105    cout << "u2.range(1,4) = " << sc_unsigned(u2.range(1,4)) << endl;
106    cout << "u3.range(5,3) = " << sc_unsigned(u3.range(5,3)) << endl;
107    cout << "u3.range(3,5) = " << sc_unsigned(u3.range(3,5)) << endl;
108    cout << "u3.range(6,3) = " << sc_unsigned(u3.range(6,3)) << endl;
109    cout << "u3 = " << u3 << endl;
110
111    cout << "s1.range(3,0) = " << sc_signed(s1.range(3,0)) << endl;
112    cout << "s1.range(0,3) = " << sc_signed(s1.range(0,3)) << endl;
113    cout << "s2.range(4,1) = " << sc_signed(s2.range(4,1)) << endl;
114    cout << "s2.range(1,4) = " << sc_signed(s2.range(1,4)) << endl;
115    cout << "s3.range(5,3) = " << sc_signed(s3.range(5,3)) << endl;
116    cout << "s3.range(3,5) = " << sc_signed(s3.range(3,5)) << endl;
117    cout << "s3.range(6,3) = " << sc_signed(s3.range(6,3)) << endl;
118    cout << "s3 = " << s3 << endl;
119
120    u1 = b1;
121    u2 = b2;
122    u3 = b3;
123
124    s1 = b1;
125    s2 = b2;
126    s3 = b3;
127
128    cout << "u1.range(3,0) = " << sc_unsigned(u1.range(3,0)) << endl;
129    cout << "u1.range(0,3) = " << sc_unsigned(u1.range(0,3)) << endl;
130    cout << "u2.range(4,1) = " << sc_unsigned(u2.range(4,1)) << endl;
131    cout << "u2.range(1,4) = " << sc_unsigned(u2.range(1,4)) << endl;
132    cout << "u3.range(5,3) = " << sc_unsigned(u3.range(5,3)) << endl;
133    cout << "u3.range(3,5) = " << sc_unsigned(u3.range(3,5)) << endl;
134    cout << "u3.range(6,3) = " << sc_unsigned(u3.range(6,3)) << endl;
135    cout << "u3 = " << u3 << endl;
136
137    cout << "s1.range(3,0) = " << sc_signed(s1.range(3,0)) << endl;
138    cout << "s1.range(0,3) = " << sc_signed(s1.range(0,3)) << endl;
139    cout << "s2.range(4,1) = " << sc_signed(s2.range(4,1)) << endl;
140    cout << "s2.range(1,4) = " << sc_signed(s2.range(1,4)) << endl;
141    cout << "s3.range(5,3) = " << sc_signed(s3.range(5,3)) << endl;
142    cout << "s3.range(3,5) = " << sc_signed(s3.range(3,5)) << endl;
143    cout << "s3.range(6,3) = " << sc_signed(s3.range(6,3)) << endl;
144    cout << "s3 = " << s3 << endl;
145
146    return 0;
147}
148