summaryrefslogtreecommitdiff
path: root/src/systemc/tests/systemc/datatypes/misc/concat/test05/test05.cpp
blob: 8e2559ce9d03c898051d2c69dbd0df2765f56abf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// test05.cpp - Concatenation test

#include "systemc.h"
#include "specialized_signals/scx_signal_int.h"
#include "specialized_signals/scx_signal_signed.h"
#include "specialized_signals/scx_signal_uint.h"
#include "specialized_signals/scx_signal_unsigned.h"

#define COMPARE( a, b ) \
{ \
	if ( a != b ) \
	{ \
		cout << __FILE__ << "(" << __LINE__ << "): " << #a << " = " << \
			a << " " << #b << " = " << b << endl; \
	} \
}

int sc_main( int argc, char* argv[] )
{
	sc_clock                  clock;
	sc_bigint<8>              sc_bigint_a;
	sc_bigint<8>              sc_bigint_b;
	sc_biguint<8>             sc_biguint_a;
	sc_biguint<8>             sc_biguint_b;
	sc_int<8>                 sc_int_a;
	sc_int<8>                 sc_int_b;
	sc_uint<8>                sc_uint_a;
	sc_uint<8>                sc_uint_b;
	sc_signal<sc_bigint<8> >  sig_sc_bigint_a;
	sc_signal<sc_bigint<8> >  sig_sc_bigint_b;
	sc_signal<sc_biguint<8> > sig_sc_biguint_a;
	sc_signal<sc_biguint<8> > sig_sc_biguint_b;
	sc_signal<sc_int<8> >     sig_sc_int_a;
	sc_signal<sc_int<8> >     sig_sc_int_b;
	sc_signal<sc_uint<8> >    sig_sc_uint_a;
	sc_signal<sc_uint<8> >    sig_sc_uint_b;

	sc_bigint_a = "10101111";
	sc_biguint_a = "10101111";
	sc_int_a = "10101111";
	sc_uint_a = "10101111";

	( sc_bigint_b, sc_biguint_b, sc_int_b, sc_uint_b ) =
	    ( sc_bigint_a, sc_biguint_a, sc_int_a, sc_uint_a );

	COMPARE( sc_bigint_a, sc_bigint_b )
	COMPARE( sc_biguint_a, sc_biguint_b )
	COMPARE( sc_int_a, sc_int_b )
	COMPARE( sc_uint_a, sc_uint_b )

	( sig_sc_bigint_b, sig_sc_biguint_b, sig_sc_int_b, sig_sc_uint_b ) =
	    ( sc_bigint_a, sc_biguint_a, sc_int_a, sc_uint_a );

	sc_start(1, SC_NS);
	COMPARE( sc_bigint_a, sig_sc_bigint_b )
	COMPARE( sc_biguint_a, sig_sc_biguint_b )
	COMPARE( sc_int_a, sig_sc_int_b )
	COMPARE( sc_uint_a, sig_sc_uint_b )

	sc_bigint_a = 128;
	sc_biguint_a = 64;
	sc_int_a = 128;
	sc_uint_a = 64;

	( sc_bigint_b, sc_biguint_b, sc_int_b, sc_uint_b ) =
	    ( sc_int_a, sc_uint_a, sc_bigint_a, sc_biguint_a );

	COMPARE( sc_bigint_a, sc_bigint_b )
	COMPARE( sc_biguint_a, sc_biguint_b )
	COMPARE( sc_int_a, sc_int_b )
	COMPARE( sc_uint_a, sc_uint_b )

	sig_sc_bigint_a = 87;
	sig_sc_biguint_a = 124;
	sig_sc_int_a = 97;
	sig_sc_uint_a = 72;
	sc_start(1, SC_NS);

	( sig_sc_bigint_b, sig_sc_biguint_b, sig_sc_int_b, sig_sc_uint_b ) =
	    ( sig_sc_bigint_a, sig_sc_biguint_a, sig_sc_int_a, sig_sc_uint_a );
	sc_start(1, SC_NS);
	COMPARE( sig_sc_bigint_a, sig_sc_bigint_b )
	COMPARE( sig_sc_biguint_a, sig_sc_biguint_b )
	COMPARE( sig_sc_int_a, sig_sc_int_b )
	COMPARE( sig_sc_uint_a, sig_sc_uint_b )

	COMPARE( 87, sig_sc_bigint_b )
	COMPARE( 124, sig_sc_biguint_b )
	COMPARE( 97, sig_sc_int_b )
	COMPARE( 72, sig_sc_uint_b )

	cerr << "Program completed" << endl;
	return 0;
}