test05.cpp revision 12855:588919e0e4aa
1// test05.cpp - Concatenation test
2
3#include "systemc.h"
4#include "specialized_signals/scx_signal_int.h"
5#include "specialized_signals/scx_signal_signed.h"
6#include "specialized_signals/scx_signal_uint.h"
7#include "specialized_signals/scx_signal_unsigned.h"
8
9#define COMPARE( a, b ) \
10{ \
11	if ( a != b ) \
12	{ \
13		cout << __FILE__ << "(" << __LINE__ << "): " << #a << " = " << \
14			a << " " << #b << " = " << b << endl; \
15	} \
16}
17
18int sc_main( int argc, char* argv[] )
19{
20	sc_clock                  clock;
21	sc_bigint<8>              sc_bigint_a;
22	sc_bigint<8>              sc_bigint_b;
23	sc_biguint<8>             sc_biguint_a;
24	sc_biguint<8>             sc_biguint_b;
25	sc_int<8>                 sc_int_a;
26	sc_int<8>                 sc_int_b;
27	sc_uint<8>                sc_uint_a;
28	sc_uint<8>                sc_uint_b;
29	sc_signal<sc_bigint<8> >  sig_sc_bigint_a;
30	sc_signal<sc_bigint<8> >  sig_sc_bigint_b;
31	sc_signal<sc_biguint<8> > sig_sc_biguint_a;
32	sc_signal<sc_biguint<8> > sig_sc_biguint_b;
33	sc_signal<sc_int<8> >     sig_sc_int_a;
34	sc_signal<sc_int<8> >     sig_sc_int_b;
35	sc_signal<sc_uint<8> >    sig_sc_uint_a;
36	sc_signal<sc_uint<8> >    sig_sc_uint_b;
37
38	sc_bigint_a = "10101111";
39	sc_biguint_a = "10101111";
40	sc_int_a = "10101111";
41	sc_uint_a = "10101111";
42
43	( sc_bigint_b, sc_biguint_b, sc_int_b, sc_uint_b ) =
44	    ( sc_bigint_a, sc_biguint_a, sc_int_a, sc_uint_a );
45
46	COMPARE( sc_bigint_a, sc_bigint_b )
47	COMPARE( sc_biguint_a, sc_biguint_b )
48	COMPARE( sc_int_a, sc_int_b )
49	COMPARE( sc_uint_a, sc_uint_b )
50
51	( sig_sc_bigint_b, sig_sc_biguint_b, sig_sc_int_b, sig_sc_uint_b ) =
52	    ( sc_bigint_a, sc_biguint_a, sc_int_a, sc_uint_a );
53
54	sc_start(1, SC_NS);
55	COMPARE( sc_bigint_a, sig_sc_bigint_b )
56	COMPARE( sc_biguint_a, sig_sc_biguint_b )
57	COMPARE( sc_int_a, sig_sc_int_b )
58	COMPARE( sc_uint_a, sig_sc_uint_b )
59
60	sc_bigint_a = 128;
61	sc_biguint_a = 64;
62	sc_int_a = 128;
63	sc_uint_a = 64;
64
65	( sc_bigint_b, sc_biguint_b, sc_int_b, sc_uint_b ) =
66	    ( sc_int_a, sc_uint_a, sc_bigint_a, sc_biguint_a );
67
68	COMPARE( sc_bigint_a, sc_bigint_b )
69	COMPARE( sc_biguint_a, sc_biguint_b )
70	COMPARE( sc_int_a, sc_int_b )
71	COMPARE( sc_uint_a, sc_uint_b )
72
73	sig_sc_bigint_a = 87;
74	sig_sc_biguint_a = 124;
75	sig_sc_int_a = 97;
76	sig_sc_uint_a = 72;
77	sc_start(1, SC_NS);
78
79	( sig_sc_bigint_b, sig_sc_biguint_b, sig_sc_int_b, sig_sc_uint_b ) =
80	    ( sig_sc_bigint_a, sig_sc_biguint_a, sig_sc_int_a, sig_sc_uint_a );
81	sc_start(1, SC_NS);
82	COMPARE( sig_sc_bigint_a, sig_sc_bigint_b )
83	COMPARE( sig_sc_biguint_a, sig_sc_biguint_b )
84	COMPARE( sig_sc_int_a, sig_sc_int_b )
85	COMPARE( sig_sc_uint_a, sig_sc_uint_b )
86
87	COMPARE( 87, sig_sc_bigint_b )
88	COMPARE( 124, sig_sc_biguint_b )
89	COMPARE( 97, sig_sc_int_b )
90	COMPARE( 72, sig_sc_uint_b )
91
92	cerr << "Program completed" << endl;
93	return 0;
94}
95