112855Sgabeblack@google.com// test05.cpp - Concatenation test
212855Sgabeblack@google.com
312855Sgabeblack@google.com#include "systemc.h"
412855Sgabeblack@google.com#include "specialized_signals/scx_signal_int.h"
512855Sgabeblack@google.com#include "specialized_signals/scx_signal_signed.h"
612855Sgabeblack@google.com#include "specialized_signals/scx_signal_uint.h"
712855Sgabeblack@google.com#include "specialized_signals/scx_signal_unsigned.h"
812855Sgabeblack@google.com
912855Sgabeblack@google.com#define COMPARE( a, b ) \
1012855Sgabeblack@google.com{ \
1112855Sgabeblack@google.com	if ( a != b ) \
1212855Sgabeblack@google.com	{ \
1312855Sgabeblack@google.com		cout << __FILE__ << "(" << __LINE__ << "): " << #a << " = " << \
1412855Sgabeblack@google.com			a << " " << #b << " = " << b << endl; \
1512855Sgabeblack@google.com	} \
1612855Sgabeblack@google.com}
1712855Sgabeblack@google.com
1812855Sgabeblack@google.comint sc_main( int argc, char* argv[] )
1912855Sgabeblack@google.com{
2012855Sgabeblack@google.com	sc_clock                  clock;
2112855Sgabeblack@google.com	sc_bigint<8>              sc_bigint_a;
2212855Sgabeblack@google.com	sc_bigint<8>              sc_bigint_b;
2312855Sgabeblack@google.com	sc_biguint<8>             sc_biguint_a;
2412855Sgabeblack@google.com	sc_biguint<8>             sc_biguint_b;
2512855Sgabeblack@google.com	sc_int<8>                 sc_int_a;
2612855Sgabeblack@google.com	sc_int<8>                 sc_int_b;
2712855Sgabeblack@google.com	sc_uint<8>                sc_uint_a;
2812855Sgabeblack@google.com	sc_uint<8>                sc_uint_b;
2912855Sgabeblack@google.com	sc_signal<sc_bigint<8> >  sig_sc_bigint_a;
3012855Sgabeblack@google.com	sc_signal<sc_bigint<8> >  sig_sc_bigint_b;
3112855Sgabeblack@google.com	sc_signal<sc_biguint<8> > sig_sc_biguint_a;
3212855Sgabeblack@google.com	sc_signal<sc_biguint<8> > sig_sc_biguint_b;
3312855Sgabeblack@google.com	sc_signal<sc_int<8> >     sig_sc_int_a;
3412855Sgabeblack@google.com	sc_signal<sc_int<8> >     sig_sc_int_b;
3512855Sgabeblack@google.com	sc_signal<sc_uint<8> >    sig_sc_uint_a;
3612855Sgabeblack@google.com	sc_signal<sc_uint<8> >    sig_sc_uint_b;
3712855Sgabeblack@google.com
3812855Sgabeblack@google.com	sc_bigint_a = "10101111";
3912855Sgabeblack@google.com	sc_biguint_a = "10101111";
4012855Sgabeblack@google.com	sc_int_a = "10101111";
4112855Sgabeblack@google.com	sc_uint_a = "10101111";
4212855Sgabeblack@google.com
4312855Sgabeblack@google.com	( sc_bigint_b, sc_biguint_b, sc_int_b, sc_uint_b ) =
4412855Sgabeblack@google.com	    ( sc_bigint_a, sc_biguint_a, sc_int_a, sc_uint_a );
4512855Sgabeblack@google.com
4612855Sgabeblack@google.com	COMPARE( sc_bigint_a, sc_bigint_b )
4712855Sgabeblack@google.com	COMPARE( sc_biguint_a, sc_biguint_b )
4812855Sgabeblack@google.com	COMPARE( sc_int_a, sc_int_b )
4912855Sgabeblack@google.com	COMPARE( sc_uint_a, sc_uint_b )
5012855Sgabeblack@google.com
5112855Sgabeblack@google.com	( sig_sc_bigint_b, sig_sc_biguint_b, sig_sc_int_b, sig_sc_uint_b ) =
5212855Sgabeblack@google.com	    ( sc_bigint_a, sc_biguint_a, sc_int_a, sc_uint_a );
5312855Sgabeblack@google.com
5412855Sgabeblack@google.com	sc_start(1, SC_NS);
5512855Sgabeblack@google.com	COMPARE( sc_bigint_a, sig_sc_bigint_b )
5612855Sgabeblack@google.com	COMPARE( sc_biguint_a, sig_sc_biguint_b )
5712855Sgabeblack@google.com	COMPARE( sc_int_a, sig_sc_int_b )
5812855Sgabeblack@google.com	COMPARE( sc_uint_a, sig_sc_uint_b )
5912855Sgabeblack@google.com
6012855Sgabeblack@google.com	sc_bigint_a = 128;
6112855Sgabeblack@google.com	sc_biguint_a = 64;
6212855Sgabeblack@google.com	sc_int_a = 128;
6312855Sgabeblack@google.com	sc_uint_a = 64;
6412855Sgabeblack@google.com
6512855Sgabeblack@google.com	( sc_bigint_b, sc_biguint_b, sc_int_b, sc_uint_b ) =
6612855Sgabeblack@google.com	    ( sc_int_a, sc_uint_a, sc_bigint_a, sc_biguint_a );
6712855Sgabeblack@google.com
6812855Sgabeblack@google.com	COMPARE( sc_bigint_a, sc_bigint_b )
6912855Sgabeblack@google.com	COMPARE( sc_biguint_a, sc_biguint_b )
7012855Sgabeblack@google.com	COMPARE( sc_int_a, sc_int_b )
7112855Sgabeblack@google.com	COMPARE( sc_uint_a, sc_uint_b )
7212855Sgabeblack@google.com
7312855Sgabeblack@google.com	sig_sc_bigint_a = 87;
7412855Sgabeblack@google.com	sig_sc_biguint_a = 124;
7512855Sgabeblack@google.com	sig_sc_int_a = 97;
7612855Sgabeblack@google.com	sig_sc_uint_a = 72;
7712855Sgabeblack@google.com	sc_start(1, SC_NS);
7812855Sgabeblack@google.com
7912855Sgabeblack@google.com	( sig_sc_bigint_b, sig_sc_biguint_b, sig_sc_int_b, sig_sc_uint_b ) =
8012855Sgabeblack@google.com	    ( sig_sc_bigint_a, sig_sc_biguint_a, sig_sc_int_a, sig_sc_uint_a );
8112855Sgabeblack@google.com	sc_start(1, SC_NS);
8212855Sgabeblack@google.com	COMPARE( sig_sc_bigint_a, sig_sc_bigint_b )
8312855Sgabeblack@google.com	COMPARE( sig_sc_biguint_a, sig_sc_biguint_b )
8412855Sgabeblack@google.com	COMPARE( sig_sc_int_a, sig_sc_int_b )
8512855Sgabeblack@google.com	COMPARE( sig_sc_uint_a, sig_sc_uint_b )
8612855Sgabeblack@google.com
8712855Sgabeblack@google.com	COMPARE( 87, sig_sc_bigint_b )
8812855Sgabeblack@google.com	COMPARE( 124, sig_sc_biguint_b )
8912855Sgabeblack@google.com	COMPARE( 97, sig_sc_int_b )
9012855Sgabeblack@google.com	COMPARE( 72, sig_sc_uint_b )
9112855Sgabeblack@google.com
9213158Sgabeblack@google.com	cout << "Program completed" << endl;
9312855Sgabeblack@google.com	return 0;
9412855Sgabeblack@google.com}
95