Changeset 55 for sources/test_regression
- Timestamp:
- May 28, 2013, 11:17:14 AM (12 years ago)
- Location:
- sources/test_regression
- Files:
-
- 38 added
- 99 deleted
- 63 edited
- 19 copied
- 16 moved
Legend:
- Unmodified
- Added
- Removed
-
sources/test_regression/02052006/Makefile
r13 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} 7 OBJECTS = $(EXE:.x=.o) 8 LINKS = $(OBJECTS:.o=.cpp) 5 test: all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) --p > $(LOG_SCASS) 2> /dev/null ; 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo -e "$(OK)" ; \ 11 else \ 12 echo -e "$(KO)" ; \ 13 fi ; 9 14 10 .SECONDARY:11 12 main : $(EXE)13 14 test : main15 @./system_systemcass.x --p || eval ${failcom}16 17 %.gif : %.dot18 dot -Tgif -o $*.gif $*.dot19 20 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)21 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC)22 23 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)24 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS)25 26 %_socview.x : %_socview.o $(SOCVIEW_LIB)27 $(CXX) -o $@ $*_socview.o $(LFLAGS_SOCVIEW)28 29 -include Makefile.deps30 31 %_systemc.cpp : %.cpp32 ln -s $*.cpp $*_systemc.cpp33 34 %_systemcass.cpp : %.cpp35 ln -s $*.cpp $*_systemcass.cpp36 37 %_socview.cpp : %.cpp38 ln -s $*.cpp $*_socview.cpp39 40 %_systemc.o : %_systemc.cpp41 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o43 44 %_systemcass.o : %_systemcass.cpp45 $(CXX) $(CFLAGS_SYSTEMCASS) -DCHECK_MULTIWRITE -MM $*_systemcass.cpp >> Makefile.deps46 $(CXX) $(CFLAGS_SYSTEMCASS) -DCHECK_MULTIWRITE -c $*_systemcass.cpp -o $*_systemcass.o47 48 %_socview.o : %_socview.cpp49 $(CXX) $(CFLAGS_SOCVIEW) -MM $*_socview.cpp >> Makefile.deps50 $(CXX) $(CFLAGS_SOCVIEW) -c $*_socview.cpp -o $*_socview.o51 52 clean :53 -rm -f Makefile.deps54 -rm -f gmon.out *~55 -rm -f $(EXE) $(OBJECTS)56 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null57 -rm -f core*58 -rm -rf generated_by_systemcass59 -
sources/test_regression/02052006/system.cpp
r23 r55 1 1 2 #include <systemc.h> 3 #include <typeinfo> 2 4 3 # define ASSERT(x) \4 { \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (1); \ 9 } \ 10 } 5 #include "test.h" 6 7 8 // Tests deactivated (not supported in SystemCass): 9 // - sc_signal applied to float values (QM) 10 // Tests failing: 11 // - sc_int<X> with X different from 16, 32 and 64 12 11 13 12 14 using namespace std; 13 15 14 16 struct test : sc_module { 15 int32_t reg; 16 sc_signal<bool> reg_bool; 17 sc_signal<int> reg_int; 18 sc_signal<unsigned int> reg_unsigned_int; 19 sc_signal<char> reg_char; 20 sc_signal<double> reg_double; 21 sc_signal<long> reg_long; 22 sc_signal<sc_uint<32> > reg_ui32; 23 sc_signal<sc_uint<16> > reg_ui16; 24 sc_signal<sc_uint<6> > reg_ui6; 25 sc_signal<sc_int<32> > reg_i32; 26 sc_signal<sc_int<16> > reg_i16; 27 sc_signal<sc_int<6> > reg_i6; 28 29 sc_in_clk clk; 30 sc_in<bool> resetn; 17 int32_t reg; 18 sc_signal<bool> reg_bool; 19 sc_signal<int> reg_int; 20 sc_signal<unsigned int> reg_unsigned_int; 21 sc_signal<char> reg_char; 22 #ifdef ALL_TESTS 23 sc_signal<float> reg_float; 24 sc_signal<double> reg_double; 25 #endif 26 sc_signal<long> reg_long; 27 sc_signal< sc_uint<32> > reg_ui32; 28 sc_signal< sc_uint<16> > reg_ui16; 29 sc_signal< sc_uint<6> > reg_ui6; 30 sc_signal< sc_int<32> > reg_i32; 31 sc_signal< sc_int<16> > reg_i16; 32 sc_signal< sc_int<6> > reg_i6; 33 sc_in<bool> clk; 34 sc_in<bool> resetn; 31 35 32 void trans () 33 { 34 if (resetn.read() == true) 35 { 36 ASSERT(((reg & 1)) == reg_bool .read()); 37 ASSERT(((int) reg) == reg_int .read()); 38 ASSERT(((unsigned int)reg) == reg_unsigned_int .read()); 39 ASSERT(((char) reg) == reg_char .read()); 40 #if 0 41 cout << (double)reg << " " << reg_double.read() << endl; 42 cout << sizeof (double) << " " << sizeof (reg_double.read()) << endl; 36 void trans() { 37 if (resetn.read() == true) { 38 //ASSERT(((reg & 1)) == reg_bool.read()); 39 //ASSERT(((int) reg) == reg_int.read()); 40 //ASSERT(((unsigned int) reg) == reg_unsigned_int.read()); 41 //ASSERT(((char) reg) == reg_char.read()); 42 #ifdef ALL_TEST 43 //ASSERT(((float) reg) == reg_float.read()); 44 //ASSERT(((double) reg) == reg_double.read()); 43 45 #endif 44 ASSERT(((double)reg) == reg_double.read()); 45 ASSERT(((long) reg) == reg_long .read()); 46 ASSERT(((unsigned int) reg & 0xFFFFFFFF) == (unsigned int) (reg_ui32 .read())); 47 ASSERT(((unsigned int) reg & 0x0000FFFF) == (unsigned int) (reg_ui16 .read())); 48 #if 0 49 cerr << reg_ui6.read() << " " << (reg & 0x0000003F) << endl; 46 //ASSERT(((long) reg) == reg_long.read()); 47 //ASSERT(((unsigned int) reg & 0xFFFFFFFF) == (unsigned int) (reg_ui32.read())); 48 //ASSERT(((unsigned int) reg & 0x0000FFFF) == (unsigned int) (reg_ui16.read())); 49 //ASSERT(((unsigned int) reg & 0x0000003F) == (unsigned int) (reg_ui6.read())); 50 //ASSERT(((signed int) (reg & 0xFFFFFFFF)) == (signed int) (reg_i32.read())); 51 //ASSERT(((signed int) (reg & 0x0000FFFF)) == (signed int) (reg_i16.read())); 52 //cout << "reg & 0x3F : " << (signed int) (reg & 0x3F) << endl; 53 //cout << "reg_i6 : " << reg_i6.read() << endl; 54 //ASSERT(((reg & 0x3F) < 32 && ((signed int) (reg & 0x3F)) == (signed int) (reg_i6.read())) || ((reg & 0x3F) >= 32 && (signed int) (reg & 0x3F) != (signed int) (reg_i6.read()))); 55 cout << "reg_bool : " << reg_bool << endl; 56 cout << "reg_int : " << reg_int << endl; 57 cout << "reg_unsigned_int : " << reg_unsigned_int << endl; 58 cout << "reg_char : " << (unsigned int) reg_char << endl; 59 #ifdef ALL_TESTS 60 cout << "reg_float : " << reg_float << endl; 61 cout << "reg_double : " << reg_double << endl; 50 62 #endif 51 ASSERT(((unsigned int) reg & 0x0000003F) == (unsigned int) (reg_ui6 .read())); 52 ASSERT(((signed int) reg & 0xFFFFFFFF) == (signed int) (reg_i32 .read())); 53 ASSERT(((signed int) reg & 0x0000FFFF) == (signed int) (reg_i16 .read())); 54 ASSERT(((signed int) reg & 0x0000003F) == (signed int) (reg_i6 .read())); 55 reg = reg + 1; 56 reg_bool = reg & 1; 57 reg_int = reg; 58 reg_unsigned_int = reg; 59 reg_char = reg; 60 reg_double .write(reg); 61 reg_long = reg; 62 reg_ui32 = reg; 63 reg_ui16 = reg; 64 reg_ui6 = reg; 65 reg_i32 = reg; 66 reg_i16 = reg; 67 reg_i6 = reg; 68 } else { 69 reg = 0; 70 reg_bool = 0; 71 reg_int = 0; 72 reg_unsigned_int = 0; 73 reg_char = 0; 74 reg_double = 0; 75 reg_long = 0; 76 reg_ui32 = 0; 77 reg_ui16 = 0; 78 reg_ui6 = 0; 79 reg_i32 = 0; 80 reg_i16 = 0; 81 reg_i6 = 0; 63 cout << "reg_long : " << reg_long << endl; 64 cout << "reg_ui32 : " << reg_ui32 << endl; 65 cout << "reg_ui16 : " << reg_ui16 << endl; 66 cout << "reg_ui6 : " << reg_ui6 << endl; 67 cout << "reg_i32 : " << reg_i32 << endl; 68 cout << "reg_i16 : " << reg_i16 << endl; 69 cout << "reg_i6 : " << reg_i6 << endl; 70 71 reg = reg + 1; 72 reg_bool = reg & 1; 73 reg_int = reg; 74 reg_unsigned_int = reg; 75 reg_char = reg; 76 #ifdef ALL_TESTS 77 reg_float.write(reg); 78 reg_double.write(reg); 79 #endif 80 reg_long = reg; 81 reg_ui32 = reg; 82 reg_ui16 = reg; 83 reg_ui6 = reg; 84 reg_i32 = reg; 85 reg_i16 = reg; 86 reg_i6 = reg; 87 } 88 else { 89 reg = 0; 90 reg_bool = 0; 91 reg_int = 0; 92 reg_unsigned_int = 0; 93 reg_char = 0; 94 #ifdef ALL_TESTS 95 reg_float = 0; 96 reg_double = 0; 97 #endif 98 reg_long = 0; 99 reg_ui32 = 0; 100 reg_ui16 = 0; 101 reg_ui6 = 0; 102 reg_i32 = 0; 103 reg_i16 = 0; 104 reg_i6 = 0; 105 } 82 106 } 83 }84 107 85 SC_HAS_PROCESS(test);86 test 87 clk("clk") 88 {89 SC_METHOD(trans);90 sensitive << clk.pos();91 dont_initialize();92 }; 108 SC_HAS_PROCESS(test); 109 test(sc_module_name n) : sc_module (n), 110 clk("clk") { 111 SC_METHOD(trans); 112 sensitive << clk.pos(); 113 dont_initialize(); 114 } 115 93 116 }; 94 117 95 int sc_main (int argc, char *argv[])96 {97 sc_clock signal_clk("my_clock",1, 0.5);98 sc_signal<bool> resetn("resetn");99 118 100 test test1("test1"); 101 test1.clk (signal_clk);102 test1.resetn (resetn);119 int sc_main (int argc, char * argv[]) { 120 sc_clock signal_clk("my_clock", sc_time(1, sc_core::SC_NS)); 121 sc_signal<bool> resetn("resetn"); 103 122 104 // Init & run 105 sc_start (0); 123 test test1("test1"); 124 test1.clk(signal_clk); 125 test1.resetn(resetn); 106 126 107 resetn = false; 108 sc_start (4); 109 resetn = true; 110 sc_start (100); 127 // Init & run 128 sc_start(sc_time(0, sc_core::SC_NS)); 111 129 112 return EXIT_SUCCESS; 130 resetn = false; 131 sc_start(sc_time(4, sc_core::SC_NS)); 132 resetn = true; 133 sc_start(sc_time(100, sc_core::SC_NS)); 134 135 return EXIT_SUCCESS; 113 136 } 114 137 115 138 #undef sc_inout 139 140 /* 141 # Local Variables: 142 # tab-width: 4; 143 # c-basic-offset: 4; 144 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 145 # indent-tabs-mode: nil; 146 # End: 147 # 148 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 149 */ 150 -
sources/test_regression/04052005/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 5 test : all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo "OK" ; \ 11 else echo "KO" ; \ 12 fi ; 10 13 11 .SECONDARY:12 14 13 main : $(EXE)14 15 test : ${EXE}16 ./system_systemcass.x || eval ${failcom}17 18 %.gif : %.dot19 dot -Tgif -o $*.gif $*.dot20 21 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)22 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)23 24 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)25 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)26 27 -include Makefile.deps28 29 %_systemc.cpp : %.cpp30 ln -s $*.cpp $*_systemc.cpp31 32 %_systemcass.cpp : %.cpp33 ln -s $*.cpp $*_systemcass.cpp34 35 %_systemc.o : %_systemc.cpp36 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps37 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o38 39 %_systemcass.o : %_systemcass.cpp40 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps41 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o42 43 clean :44 rm -f Makefile.deps45 -rm -f *.o gmon.out *~46 -rm -f ${LOG}47 -rm -f signal_order.txt module_order.dot signal_graph.dot48 -rm -f module_order.gif signal_graph.gif49 -rm -f $(EXE) $(OBJECTS)50 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null51 -rm -f core*52 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd53 -rm -rf generated_by_systemcass54 -
sources/test_regression/04052005/system.cpp
r1 r55 1 #include "systemc.h" 1 2 2 #include <iostream> 3 3 4 #include "systemc.h" 5 #include "test.h" 4 6 5 7 using namespace std; 6 8 7 9 8 int 9 sc_main (int argc, char ** argv) 10 { 11 int errnum = 0; 12 13 sc_uint<32> a; 14 sc_uint<3> b; 15 sc_uint<2> c; 16 sc_uint<5> d; 17 sc_uint<8> e; 18 sc_uint<10> f; 10 int sc_main (int argc, char ** argv) { 19 11 20 a = 0xCFFFFFFF; 21 b = 0x7; 22 c = 0x3; 23 d = 0xA0; 24 e = 0x11; 25 f = 0x1A0; 26 27 cerr << "a = 0x" << hex << (unsigned int)a << " = " << a.to_string (SC_BIN) << "\n"; 28 if (a.to_string (SC_BIN) != "0b011001111111111111111111111111111") 29 exit (errnum); 30 errnum++; 12 sc_uint<32> a; 13 sc_uint<3> b; 14 sc_uint<2> c; 15 sc_uint<5> d; 16 sc_uint<8> e; 17 sc_uint<10> f; 31 18 32 cerr << "b = 0x" << hex << (unsigned int)b << " = " << b.to_string (SC_BIN) << "\n"; 33 if (b.to_string (SC_BIN) != "0b0111") 34 exit (errnum); 35 errnum++; 19 a = 0xCFFFFFFF; 20 b = 0x7; 21 c = 0x3; 22 d = 0xA0; 23 e = 0x11; 24 f = 0x1A0; 36 25 37 cerr << "c = 0x" << hex << (unsigned int)c << " = " << c.to_string (SC_BIN) << "\n"; 38 if (c.to_string (SC_BIN) != "0b011") 39 exit (errnum); 40 errnum++; 26 cout << "a = 0x" << hex << (unsigned int) a << " = " << a.to_string(SC_BIN) << "\n"; 27 ASSERT(a.to_string (SC_BIN) == "0b011001111111111111111111111111111"); 41 28 42 cerr << "d = 0x" << hex << (unsigned int)d << " = " << d.to_string (SC_BIN) << "\n"; 43 if (d.to_string (SC_BIN) != "0b000000") 44 exit (errnum); 45 errnum++; 29 cout << "b = 0x" << hex << (unsigned int) b << " = " << b.to_string(SC_BIN) << "\n"; 30 ASSERT(b.to_string (SC_BIN) == "0b0111"); 46 31 47 cerr << "e = 0x" << hex << (unsigned int)e << " = " << e.to_string (SC_BIN) << "\n"; 48 if (e.to_string (SC_BIN) != "0b000010001") 49 exit (errnum); 50 errnum++; 32 cout << "c = 0x" << hex << (unsigned int) c << " = " << c.to_string(SC_BIN) << "\n"; 33 ASSERT(c.to_string (SC_BIN) == "0b011"); 51 34 52 cerr << "f = 0x" << hex << (unsigned int)f << " = " << f.to_string (SC_BIN) << "\n"; 53 if (f.to_string (SC_BIN) != "0b00110100000") 54 exit (errnum); 55 errnum++; 35 cout << "d = 0x" << hex << (unsigned int) d << " = " << d.to_string(SC_BIN) << "\n"; 36 ASSERT(d.to_string (SC_BIN) == "0b000000"); 37 38 cout << "e = 0x" << hex << (unsigned int) e << " = " << e.to_string(SC_BIN) << "\n"; 39 ASSERT(e.to_string (SC_BIN) == "0b000010001"); 40 41 cout << "f = 0x" << hex << (unsigned int) f << " = " << f.to_string(SC_BIN) << "\n"; 42 ASSERT(f.to_string (SC_BIN) == "0b00110100000"); 43 44 cout << "b,e = 0x" << hex << (unsigned int) (b,e) << " = " << (b, e).to_string(SC_BIN) << "\n"; 45 ASSERT((b, e).to_string (SC_BIN) == "0b011100010001"); 46 47 cout << "b,c,d,e,f = 0x" << hex << (unsigned int) (b, c, d, e, f) << " = " << (b, c, d, e, f).to_string (SC_BIN) << "\n"; 48 ASSERT((b, c, d, e, f).to_string (SC_BIN) == "0b01111100000000100010110100000"); 49 50 a = b,c,d,e,f; 51 cout << "a = b,c,d,e,f; a = 0x" << hex << (unsigned int) a << " = " << a.to_string (SC_BIN) << "\n"; 52 ASSERT(a.to_string (SC_BIN) == "0b000000000000000000000000000000111"); 53 54 sc_uint<3> tb = b.range (2, 0); 55 cout << "b.range (2,0) = 0x" << hex << (unsigned int) tb << " = " << tb.to_string (SC_BIN) << "\n"; 56 ASSERT(tb.to_string (SC_BIN) == "0b0111"); 57 58 sc_uint<5> te = e.range(5, 1); 59 cout << "e.range (5,1) = 0x" << hex << (unsigned int) te << " = " << te.to_string(SC_BIN) << "\n"; 60 ASSERT(te.to_string(SC_BIN) == "0b001000"); 61 62 sc_uint<5> tf = f.range(9, 5); 63 cout << "f.range (9,5) = 0x" << hex << (unsigned int) tf << " = " << tf.to_string (SC_BIN) << "\n"; 64 ASSERT(tf.to_string (SC_BIN) == "0b001101"); 65 66 sc_uint<5> tf2 = f.range(8, 4); 67 a = (tf2, b, c, d, e, f); 68 cout << "a = f.range (7,3),b,c,d,e,f; a = 0x" << hex << (unsigned int) a << " = " << a.to_string (SC_BIN) << "\n"; 69 ASSERT(a.to_string (SC_BIN) == "0b010101111100000000100010110100000"); 70 71 return 0; 72 } 56 73 57 74 58 cerr << "b,e = 0x" << hex << (unsigned int)(b,e) << " = " << (b,e).to_string (SC_BIN) << "\n"; 59 if ((b,e).to_string (SC_BIN) != "0b011100010001") 60 exit (errnum); 61 errnum++; 75 /* 76 # Local Variables: 77 # tab-width: 4; 78 # c-basic-offset: 4; 79 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 80 # indent-tabs-mode: nil; 81 # End: 82 # 83 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 84 */ 62 85 63 64 cerr << "b,c,d,e,f = 0x" << hex << (unsigned int)(b,c,d,e,f) << " = " << (b,c,d,e,f).to_string (SC_BIN) << "\n";65 if ((b,c,d,e,f).to_string (SC_BIN) != "0b01111100000000100010110100000")66 exit (errnum);67 errnum++;68 69 a = b,c,d,e,f;70 cerr << "a = b,c,d,e,f; a = 0x" << hex << (unsigned int) a << " = " << a.to_string (SC_BIN) << "\n";71 if (a.to_string (SC_BIN) != "0b000000000000000000000000000000111")72 exit (errnum);73 errnum++;74 75 sc_uint<3> tb = b.range (2,0);76 cerr << "b.range (2,0) = 0x" << hex << (unsigned int) tb << " = " << tb.to_string (SC_BIN) << "\n";77 if (tb.to_string (SC_BIN) != "0b0111")78 exit (errnum);79 errnum++;80 81 sc_uint<5> te = e.range (5,1);82 cerr << "e.range (5,1) = 0x" << hex << (unsigned int) te << " = " << te.to_string (SC_BIN) << "\n";83 if (te.to_string (SC_BIN) != "0b001000")84 exit (errnum);85 errnum++;86 87 sc_uint<5> tf = f.range (9,5);88 cerr << "f.range (9,5) = 0x" << hex << (unsigned int) tf << " = " << tf.to_string (SC_BIN) << "\n";89 if (tf.to_string (SC_BIN) != "0b001101")90 exit (errnum);91 errnum++;92 93 sc_uint<5> tf2 = f.range (8,4);94 a = (tf2,b,c,d,e,f);95 cerr << "a = f.range (7,3),b,c,d,e,f; a = 0x" << hex << (unsigned int) a << " = " << a.to_string (SC_BIN) << "\n";96 if (a.to_string (SC_BIN) != "0b010101111100000000100010110100000")97 exit (errnum);98 errnum++;99 100 return 0;101 }102 -
sources/test_regression/05092005/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SYSTEM = system.cpp4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x)5 EXE_SC = $(SYSTEM:.cpp=_systemc.x)6 EXE = ${EXE_SCASS} ${EXE_SC}7 LOG = $(SYSTEM:.cpp=.log)8 OBJECTS = $(EXE:.x=.o)9 LINKS = $(OBJECTS:.o=.cpp)10 5 11 .SECONDARY: 6 test: $(EXE_SCASS) 7 @echo -ne "| Testing $$(basename $$(pwd)): " ; 8 @./$< 2> /dev/null ; 9 @if [ $$? -eq 0 ] ; then echo "KO" ; else echo "OK" ; fi ; 12 10 13 main : $(EXE)14 11 15 test : $(EXE_SCASS)16 @for i in ${EXE_SCASS} ; do \17 echo Testing $$i... ; \18 $$i ; \19 if [ $$? -ne 77 ] ; then eval $${failcom} ; fi ; \20 echo Bug detection OK ; \21 done;22 23 %.gif : %.dot24 dot -Tgif -o $*.gif $*.dot25 26 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)27 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)28 29 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)30 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)31 32 -include Makefile.deps33 34 %_systemc.cpp : %.cpp35 ln -s $*.cpp $*_systemc.cpp36 37 %_systemcass.cpp : %.cpp38 ln -s $*.cpp $*_systemcass.cpp39 40 %_systemc.o : %_systemc.cpp41 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o43 44 %_systemcass.o : %_systemcass.cpp45 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps46 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o47 48 clean :49 rm -f Makefile.deps50 -rm -f *.o gmon.out *~51 -rm -f ${LOG}52 -rm -f signal_order.txt module_order.dot signal_graph.dot53 -rm -f module_order.gif signal_graph.gif54 -rm -f $(EXE) $(OBJECTS)55 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null56 -rm -f core*57 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd58 -rm -rf generated_by_systemcass59 -
sources/test_regression/05092005/system.cpp
r1 r55 1 1 2 #include "systemc.h" 2 3 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 4 #include "test.h" 11 5 12 6 using namespace std; 13 7 14 struct hard : sc_module 15 { 16 sc_in <bool> i; 17 sc_out<bool> o; 18 SC_HAS_PROCESS(hard); 19 hard(sc_module_name) 20 { 21 } 8 struct hard : sc_module { 9 sc_in<bool> i; 10 sc_out<bool> o; 11 SC_HAS_PROCESS(hard); 12 hard(sc_module_name) {} 22 13 }; 23 14 24 int25 sc_main (int argc, char ** argv)26 {27 sc_signal<bool> s[5];28 hard a("a");29 hard b("b");30 a.i (s[0]);31 a.o (s[1]);32 b.i (s[5]); // Wrong array index. This BUG should be detected.33 b.o (s[2]);34 15 35 sc_initialize (); 36 sc_start (1); 16 int sc_main (int argc, char ** argv) { 17 sc_clock signal_clk("my_clock", sc_time(1, sc_core::SC_NS)); 18 sc_signal<bool> s[5]; 19 hard a("a"); 20 hard b("b"); 21 a.i(s[0]); 22 a.o(s[1]); 23 b.i(s[5]); // Wrong array index. This BUG should be detected. 24 b.o(s[2]); 37 25 38 cerr << "Test KO.\n"; 39 return 0; 26 sc_start(sc_time(0, sc_core::SC_NS)); 27 28 sc_start(sc_time(1, sc_core::SC_NS)); 29 30 return 0; 40 31 } 41 32 33 34 /* 35 # Local Variables: 36 # tab-width: 4; 37 # c-basic-offset: 4; 38 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 39 # indent-tabs-mode: nil; 40 # End: 41 # 42 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 43 */ 44 -
sources/test_regression/07052005/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 5 test: all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null ; 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo "OK" ; \ 11 else echo "KO" ; \ 12 fi ; 10 13 11 .SECONDARY:12 13 main : $(EXE)14 15 test : ${LOG}16 @echo Test OK.17 18 %.log : %_systemcass.x %_systemc.x19 ./$*_systemcass.x20 touch $*.log21 22 %.gif : %.dot23 dot -Tgif -o $*.gif $*.dot24 25 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)26 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)27 28 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)29 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)30 31 -include Makefile.deps32 33 %_systemc.cpp : %.cpp34 ln -s $*.cpp $*_systemc.cpp35 36 %_systemcass.cpp : %.cpp37 ln -s $*.cpp $*_systemcass.cpp38 39 %_systemc.o : %_systemc.cpp40 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps41 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o42 43 %_systemcass.o : %_systemcass.cpp44 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps45 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o46 47 clean :48 rm -f Makefile.deps49 -rm -f *.o gmon.out *~50 -rm -f ${LOG}51 -rm -f signal_order.txt module_order.dot signal_graph.dot52 -rm -f module_order.gif signal_graph.gif53 -rm -f $(EXE) $(OBJECTS)54 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null55 -rm -f core*56 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd57 -rm -rf generated_by_systemcass58 -
sources/test_regression/07052005/system.cpp
r1 r55 1 #include <systemc.h> 1 2 2 3 #include <iostream> 4 5 #include "systemc.h" 6 #include "test.h" 3 7 4 8 … … 6 10 7 11 8 int 9 sc_main (int argc, char ** argv) 10 { 11 int errnum = 0; 12 13 sc_uint<17> a; 14 sc_uint<3> b; 15 sc_uint<2> c1; 16 sc_uint<2> c2; 17 sc_uint<5> d; 18 sc_uint<7> e; 19 sc_uint<1> f; 20 sc_uint<16> g; 21 sc_uint<8> h; 12 int sc_main (int argc, char ** argv) { 22 13 23 b = 0x7; 24 c1 = 0x3; 25 c2 = 0x1; 26 d = 0xA0; 27 e = 0x11; 28 g = 0xabcd; 14 sc_uint<17> a; 15 sc_uint<3> b; 16 sc_uint<2> c1; 17 sc_uint<2> c2; 18 sc_uint<5> d; 19 sc_uint<7> e; 20 sc_uint<1> f; 21 sc_uint<16> g; 22 sc_uint<8> h; 29 23 30 // bit vector concatenation and boolean concatenation 31 a = (b, 32 (c1 | c2), 33 d & (b,c1), 34 e); 35 36 f = b.range (0,0); 24 b = 0x7; 25 c1 = 0x3; 26 c2 = 0x1; 27 d = 0xA0; 28 e = 0x11; 29 g = 0xabcd; 37 30 38 h = g.range (11,4); 31 // bit vector concatenation and boolean concatenation 32 a = (b, (c1 | c2), d & (b, c1), e); 39 33 40 errnum++; 41 cerr << "a = 0x" << hex << (unsigned int)a << " = " << a.to_string (SC_BIN) << "\n"; 42 if (a.to_string (SC_BIN) != "0b000000111100010001") 43 { 44 exit (errnum); 45 } 34 f = b.range (0, 0); 46 35 47 errnum++; 48 cerr << "f = 0x" << hex << (unsigned int)f << " = " << f.to_string (SC_BIN) << "\n"; 49 if (f.to_string (SC_BIN) != "0b01") 50 { 51 exit (errnum); 52 } 36 h = g.range (11, 4); 53 37 54 errnum++; 55 cerr << "h = 0x" << hex << (unsigned int)h << " = " << h.to_string (SC_BIN) << "\n"; 56 if (h.to_string (SC_BIN) != "0b010111100") 57 { 58 exit (errnum); 59 } 38 cout << "a = 0x" << hex << (unsigned int) a << " = " << a.to_string(SC_BIN) << "\n"; 39 //ASSERT(a.to_string(SC_BIN) == "0b000000111100010001"); 60 40 61 cerr << "Test OK.\n"; 62 return 0; 41 cout << "f = 0x" << hex << (unsigned int) f << " = " << f.to_string(SC_BIN) << "\n"; 42 //ASSERT(f.to_string(SC_BIN) == "0b01"); 43 44 cout << "h = 0x" << hex << (unsigned int) h << " = " << h.to_string(SC_BIN) << "\n"; 45 //ASSERT(h.to_string(SC_BIN) == "0b010111100"); 46 47 cout << "Test OK.\n"; 48 49 return 0; 63 50 } 64 51 52 53 /* 54 # Local Variables: 55 # tab-width: 4; 56 # c-basic-offset: 4; 57 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 58 # indent-tabs-mode: nil; 59 # End: 60 # 61 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 62 */ 63 -
sources/test_regression/08092005/Makefile
r15 r55 1 1 include ../env.mk 2 include ../Makefile.common 2 3 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 4 test: $(EXE_SCASS) 5 @echo -ne "| Testing $$(basename $$(pwd)): " ; 6 @./$(EXE_SCASS) --p --t 2> /dev/null ; \ 7 if [ $$? -eq 197 ] ; then \ 8 if diff methodprocess_graph.dot methodprocess_graph_reference.dot > /dev/null ; then \ 9 if tail -n +3 reduced_signal_graph.dot | diff reduced_signal_graph_reference.dot - > /dev/null ; then \ 10 echo "OK" ; \ 11 else \ 12 echo "KO1" ; \ 13 fi ; \ 14 else \ 15 echo "KO2" ; \ 16 fi ; \ 17 else \ 18 echo "KO3" ; \ 19 fi ; 10 20 11 .SECONDARY:12 21 13 main : $(EXE)14 15 test : $(EXE_SCASS)16 @for i in ${EXE_SCASS} ; do \17 echo Testing $$i... ; \18 $$i --p --t ; \19 if [ $$? -ne 197 ] ; then eval $${failcom} ; fi ; \20 (tail -n +3 reduced_signal_graph.dot | diff reduced_signal_graph_reference.dot -) || eval ${failcom} ; \21 diff methodprocess_graph.dot methodprocess_graph_reference.dot || eval ${failcom} ; \22 echo Bug detection OK ; \23 done;24 25 %.gif : %.dot26 dot -Tgif -o $*.gif $*.dot27 28 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)29 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)30 31 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)32 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)33 34 -include Makefile.deps35 36 %_systemc.cpp : %.cpp37 ln -s $*.cpp $*_systemc.cpp38 39 %_systemcass.cpp : %.cpp40 ln -s $*.cpp $*_systemcass.cpp41 42 %_systemc.o : %_systemc.cpp43 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps44 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o45 46 %_systemcass.o : %_systemcass.cpp47 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps48 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o49 50 clean :51 rm -f Makefile.deps52 -rm -f *.o gmon.out *~53 -rm -f ${LOG}54 -rm -f signal_order.txt module_order.dot signal_graph.dot55 -rm -f module_order.gif signal_graph.gif56 -rm -f $(EXE) $(OBJECTS)57 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null58 -rm -f core*59 -rm -rf generated_by_systemcass60 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd61 -
sources/test_regression/08092005/system.cpp
r1 r55 1 2 // Circular sensitivity dependency 3 // Does not compile with systemcass 4 1 5 #include "systemc.h" 2 6 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 7 8 #include "test.h" 11 9 12 10 using namespace std; 13 11 14 struct hard : sc_module 15 { 16 sc_in_clk clk; 17 sc_in <int> i1, i2; 18 sc_out<int> o1, o2; 12 struct hard : sc_module { 13 sc_in_clk clk; 14 sc_in <int> i1, i2; 15 sc_out<int> o1, o2; 19 16 20 void f () 21 { 22 o1 = i1; 23 o2 = i2; 24 } 17 void f() { 18 o1 = i1; 19 o2 = i2; 20 } 25 21 26 SC_HAS_PROCESS(hard); 27 hard(sc_module_name) /*: 28 clk("clk"), 29 i1 ("i1"), 30 i2 ("i2"), 31 o1 ("o1"), 32 o2 ("o2")*/ 33 { 34 SC_METHOD(f); 35 dont_initialize(); 36 sensitive << i1 << i2; 22 SC_HAS_PROCESS(hard); 23 hard(sc_module_name) { 24 SC_METHOD(f); 25 sensitive << i1 << i2; 26 dont_initialize(); 27 37 28 #ifdef SYSTEMCASS_SPECIFIC 38 o1(i1);39 o2(i2);29 o1(i1); 30 o2(i2); 40 31 #endif 41 }32 } 42 33 }; 43 34 44 int45 sc_main (int argc, char ** argv)46 {47 sc_clock clk("clk");48 sc_signal<int> s[10];49 hard a("a");50 hard b("b");51 hard c("c");52 35 53 a.clk (clk); 54 b.clk (clk); 36 int sc_main(int argc, char ** argv) { 37 sc_clock clk("clk"); 38 sc_signal<int> s[10]; 39 hard a("a"); 40 hard b("b"); 41 hard c("c"); 55 42 56 a.i1 (s[0]); 43 a.clk(clk); 44 b.clk(clk); 57 45 58 a.o1 (s[1]); 59 b.i1 (s[1]); 46 a.i1(s[0]); 60 47 61 b.o1 (s[2]); 48 a.o1(s[1]); 49 b.i1(s[1]); 62 50 63 b.i2 (s[3]);51 b.o1(s[2]); 64 52 65 b.o2 (s[4]); 66 a.i2 (s[4]); 53 b.i2(s[3]); 67 54 68 a.o2 (s[5]); 55 b.o2(s[4]); 56 a.i2(s[4]); 69 57 70 c.i1 (s[6]); 71 c.o1 (s[7]); 72 c.i2 (s[8]); 73 c.o2 (s[9]); 58 a.o2(s[5]); 74 59 75 sc_initialize ();76 77 s[0] = 1;78 s[3] = 1;60 c.i1(s[6]); 61 c.o1(s[7]); 62 c.i2(s[8]); 63 c.o2(s[9]); 79 64 80 sc_start (1);65 sc_start(sc_time(0, sc_core::SC_NS)); 81 66 82 s[0] = 123;83 s[3] = 321;67 s[0] = 1; 68 s[3] = 1; 84 69 85 sc_start (1);70 sc_start(sc_time(0, sc_core::SC_NS)); 86 71 87 return 0; 72 s[0] = 123; 73 s[3] = 321; 74 75 sc_start(sc_time(1, sc_core::SC_NS)); 76 77 return 0; 88 78 } 89 79 80 81 /* 82 # Local Variables: 83 # tab-width: 4; 84 # c-basic-offset: 4; 85 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 86 # indent-tabs-mode: nil; 87 # End: 88 # 89 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 90 */ 91 -
sources/test_regression/09092005b/Makefile
r15 r55 1 1 include ../env.mk 2 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 10 11 .SECONDARY: 12 13 main : $(EXE) 2 include ../Makefile.common 14 3 15 4 test : $(EXE_SCASS) 16 ./system_systemcass.x || eval ${failcom} ; \ 17 tail -n +8 trace_file.vcd | diff trace_file_reference.vcd - || eval ${failcom} 5 @echo -ne "| Testing $$(basename $$(pwd)): " ; \ 6 ./$(EXE_SCASS) 2> /dev/null ; 7 @if tail -n +8 trace_file.vcd | diff trace_file_reference.vcd - ; then \ 8 echo "OK" ; \ 9 else \ 10 echo "KO" ; \ 11 fi ; 18 12 19 %.gif : %.dot20 dot -Tgif -o $*.gif $*.dot21 13 22 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)23 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)24 25 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)26 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)27 28 -include Makefile.deps29 30 %_systemc.cpp : %.cpp31 ln -s $*.cpp $*_systemc.cpp32 33 %_systemcass.cpp : %.cpp34 ln -s $*.cpp $*_systemcass.cpp35 36 %_systemc.o : %_systemc.cpp37 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps38 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o39 40 %_systemcass.o : %_systemcass.cpp41 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o43 44 clean :45 rm -f Makefile.deps46 -rm -f *.o gmon.out *~47 -rm -f ${LOG}48 -rm -f signal_order.txt module_order.dot signal_graph.dot49 -rm -f module_order.gif signal_graph.gif50 -rm -f $(EXE) $(OBJECTS)51 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null52 -rm -f core*53 -rm -rf generated_by_systemcass54 -rm -rf trace_file.vcd55 -
sources/test_regression/09092005b/system.cpp
r1 r55 1 1 2 #include "systemc.h" 2 3 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 4 #include "test.h" 11 5 12 6 using namespace std; 13 7 14 struct hard : sc_module 15 { 16 sc_in_clk clk; 17 sc_in <int> i1, i2; 18 sc_out<int> o1, o2; 8 struct hard : sc_module { 9 sc_in_clk clk; 10 sc_in <int> i1, i2; 11 sc_out<int> o1, o2; 19 12 20 void f () 21 { 22 o1 = i1; 23 o2 = i2; 24 } 13 void f() { 14 o1 = i1; 15 o2 = i2; 16 } 25 17 26 SC_HAS_PROCESS(hard); 27 hard(sc_module_name) 28 { 29 SC_METHOD(f); 30 dont_initialize(); 31 sensitive << i1 << i2; 18 SC_HAS_PROCESS(hard); 19 20 hard(sc_module_name) { 21 SC_METHOD(f); 22 sensitive << i1 << i2; 23 dont_initialize(); 24 32 25 #ifdef SYSTEMCASS_SPECIFIC 33 o1 (i1);34 o2 (i2);26 o1 (i1); 27 o2 (i2); 35 28 #endif 36 } 29 } 30 37 31 }; 38 32 39 int40 sc_main (int argc, char ** argv)41 {42 sc_clock clk1("clk1");43 sc_clock clk2("clk2", 1, 0.5, 0, false);44 sc_signal<int> s[10];45 hard a("a");46 hard b("b");47 hard c("c");48 33 49 a.clk (clk1); 50 b.clk (clk2); 51 c.clk (clk2); 34 int sc_main (int argc, char ** argv) { 35 sc_clock clk1("clk1"); 36 sc_clock clk2("clk2", 1, 0.5, 0, false); 37 sc_signal<int> s[10]; 38 hard a("a"); 39 hard b("b"); 40 hard c("c"); 52 41 53 a.i1 (s[0]); 42 a.clk(clk1); 43 b.clk(clk2); 44 c.clk(clk2); 54 45 55 a.o1 (s[1]); 56 b.i1 (s[1]); 46 a.i1(s[0]); 57 47 58 b.o1 (s[2]); 48 a.o1(s[1]); 49 b.i1(s[1]); 59 50 60 b.i2 (s[3]);51 b.o1(s[2]); 61 52 62 b.o2 (s[4]); 63 a.i2 (s[4]); 53 b.i2(s[3]); 64 54 65 a.o2 (s[5]); 55 b.o2(s[4]); 56 a.i2(s[4]); 66 57 67 c.i1 (s[6]); 68 c.o1 (s[7]); 69 c.i2 (s[8]); 70 c.o2 (s[9]); 58 a.o2(s[5]); 71 59 72 /* Open trace file */ 73 sc_trace_file *system_trace_file; 74 system_trace_file = sc_create_vcd_trace_file ("trace_file"); 75 76 /* clks waveforms are always useful */ 77 sc_trace(system_trace_file, clk1, "clk1"); 78 sc_trace(system_trace_file, clk2, "clk2"); 60 c.i1(s[6]); 61 c.o1(s[7]); 62 c.i2(s[8]); 63 c.o2(s[9]); 79 64 80 /* others signals */ 81 for (int i = 0; i < 10; ++i) 82 sc_trace(system_trace_file, s[i], sc_gen_unique_name ("s")); 83 84 /* initilization */ 85 sc_initialize (); 65 /* Open trace file */ 66 sc_trace_file *system_trace_file; 67 system_trace_file = sc_create_vcd_trace_file("trace_file"); 86 68 87 s[0] = 1; 88 s[3] = 1; 69 /* clks waveforms are always useful */ 70 sc_trace(system_trace_file, clk1, "clk1"); 71 sc_trace(system_trace_file, clk2, "clk2"); 89 72 90 sc_start (1); 73 /* others signals */ 74 for (int i = 0; i < 10; ++i) { 75 sc_trace(system_trace_file, s[i], sc_gen_unique_name ("s")); 76 } 91 77 92 s[0] = 123;93 s[3] = 321;78 /* initilization */ 79 sc_start(sc_time(0, sc_core::SC_NS)); 94 80 95 sc_start (1); 81 s[0] = 1; 82 s[3] = 1; 96 83 97 return 0; 84 sc_start(sc_time(1, sc_core::SC_NS)); 85 86 s[0] = 123; 87 s[3] = 321; 88 89 sc_start(sc_time(1, sc_core::SC_NS)); 90 91 return 0; 98 92 } 99 93 94 95 /* 96 # Local Variables: 97 # tab-width: 4; 98 # c-basic-offset: 4; 99 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 100 # indent-tabs-mode: nil; 101 # End: 102 # 103 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 104 */ 105 -
sources/test_regression/09092005c/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 5 test: all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo "OK" ; \ 11 else echo "KO" ; \ 12 fi ; 10 13 11 .SECONDARY:12 14 13 main : $(EXE)14 15 test : $(EXE_SCASS) ${EXE_SC}16 @for i in ${EXE_SCASS} ${EXE_SC} ; do \17 echo Testing $$i... ; \18 ./$$i || eval ${failcom} ; \19 done;20 21 %.gif : %.dot22 dot -Tgif -o $*.gif $*.dot23 24 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)25 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)26 27 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)28 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)29 30 -include Makefile.deps31 32 %_systemc.cpp : %.cpp33 ln -s $*.cpp $*_systemc.cpp34 35 %_systemcass.cpp : %.cpp36 ln -s $*.cpp $*_systemcass.cpp37 38 %_systemc.o : %_systemc.cpp39 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps40 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o41 42 %_systemcass.o : %_systemcass.cpp43 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps44 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o45 46 clean :47 rm -f Makefile.deps48 -rm -f *.o gmon.out *~49 -rm -f ${LOG}50 -rm -f signal_order.txt module_order.dot signal_graph.dot51 -rm -f module_order.gif signal_graph.gif52 -rm -f $(EXE) $(OBJECTS)53 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null54 -rm -f core*55 -rm -rf generated_by_systemcass56 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd57 -
sources/test_regression/09092005c/system.cpp
r1 r55 1 1 2 #include "systemc.h" 3 2 4 #include <iostream> 5 6 #include "test.h" 3 7 4 8 using namespace std; 5 9 6 #define ASSERT(x) \7 { errnum++; \8 if (!(x)) \9 { \10 cerr << "ASSERT : " #x "\n"; \11 exit (errnum); \12 } \13 }14 10 15 using namespace std; 11 struct observer : sc_module { 12 sc_in_clk clk; 16 13 17 struct observer : sc_module 18 { 19 sc_in_clk clk; 14 sc_in<int> i; 20 15 21 sc_in<int> i;16 void f() {} 22 17 23 void f () 24 { 25 #if 0 26 cerr << i.read(); 27 #endif 28 } 29 30 SC_HAS_PROCESS(observer); 31 observer(sc_module_name) : clk ("clk"), 32 i ("i") 33 34 { 35 SC_METHOD(f); 36 dont_initialize(); 37 sensitive << clk.pos(); 38 #ifdef SYSTEMCASS_SPECIFIC 39 #endif 40 } 18 SC_HAS_PROCESS(observer); 19 observer(sc_module_name) : clk ("clk"), 20 i("i") { 21 SC_METHOD(f); 22 sensitive << clk.pos(); 23 dont_initialize(); 24 } 41 25 }; 42 26 43 struct generator : sc_module44 {45 sc_in_clk clk;46 27 47 sc_out<int> o; 28 struct generator : sc_module { 29 sc_in_clk clk; 30 sc_out<int> o; 48 31 49 void f () 50 { 51 int t = (int) (sc_time_stamp ().to_double()); 52 #if 0 53 cerr << "f = " << t << endl; 54 #endif 55 o.write(t); 56 } 32 void f() { 33 int t = (int) (sc_time_stamp().to_double()); 34 o.write(t); 35 } 57 36 58 SC_HAS_PROCESS(generator); 59 generator(sc_module_name) : clk ("clk"), 60 o ("o") 61 { 62 SC_METHOD(f); 63 dont_initialize(); 64 sensitive << clk.neg(); 65 #ifdef SYSTEMCASS_SPECIFIC 66 #endif 67 } 37 SC_HAS_PROCESS(generator); 38 generator(sc_module_name) : clk("clk"), o("o") { 39 SC_METHOD(f); 40 sensitive << clk.neg(); 41 dont_initialize(); 42 } 43 68 44 }; 69 45 70 struct top_level : sc_module71 {72 sc_in_clk clk;73 74 sc_out<int> o;75 // sc_out<int> io;76 // sc_signal<int> s;77 // sc_signal<int> s2;78 46 79 generator g;80 observer obs1, obs2;81 82 SC_HAS_PROCESS(top_level);83 top_level(sc_module_name) : g ("generator"),84 obs1("observer1"),85 obs2("observer2"),86 clk ("clk"),87 o ("o")/*,88 s ("s")*/89 {90 g.clk (clk);91 obs1.clk (clk);92 obs2.clk (clk);93 47 94 g.o (o); 95 obs1.i(o); 96 obs2.i(o); 97 } 48 struct top_level : sc_module { 49 sc_in_clk clk; 50 51 sc_out<int> o; 52 53 generator g; 54 observer obs1, obs2; 55 56 SC_HAS_PROCESS(top_level); 57 top_level(sc_module_name) : 58 clk("clk"), 59 o("o"), 60 g("generator"), 61 obs1("observer1"), 62 obs2("observer2"){ 63 g.clk(clk); 64 obs1.clk(clk); 65 obs2.clk(clk); 66 67 g.o(o); 68 obs1.i(o); 69 obs2.i(o); 70 } 71 98 72 }; 99 73 100 int101 sc_main (int argc, char ** argv)102 {103 int errnum = 0;104 sc_clock clk("top_clk");105 sc_signal<int> out("top_out");106 74 107 top_level t("top_level"); 75 int sc_main (int argc, char ** argv) { 76 sc_clock clk("top_clk"); 77 sc_signal<int> out("top_out"); 108 78 109 t.clk (clk); 110 t.o (out); 79 top_level t("top_level"); 111 80 81 t.clk(clk); 82 t.o (out); 83 84 // QM : pourquoi est-ce tout commenté ?? 112 85 #if 0 113 /* Open trace file */ 114 sc_trace_file *system_trace_file; 115 system_trace_file = sc_create_vcd_trace_file ("trace_file"); 116 117 /* clks waveforms are always useful */ 118 sc_trace(system_trace_file, clk1, "clk1"); 119 sc_trace(system_trace_file, clk2, "clk2"); 86 /* Open trace file */ 87 sc_trace_file *system_trace_file; 88 system_trace_file = sc_create_vcd_trace_file ("trace_file"); 120 89 121 /* others signals */ 122 for (int i = 0; i < 10; ++i) 123 sc_trace(system_trace_file, s[i], sc_gen_unique_name ("s")); 90 /* clks waveforms are always useful */ 91 sc_trace(system_trace_file, clk1, "clk1"); 92 sc_trace(system_trace_file, clk2, "clk2"); 93 94 /* others signals */ 95 for (int i = 0; i < 10; ++i) 96 sc_trace(system_trace_file, s[i], sc_gen_unique_name ("s")); 124 97 #endif 125 98 126 /* initilization */ 127 #if 0 128 cout << "initilization...\n"; 129 #endif 130 sc_initialize (); 99 sc_start(sc_time(0, sc_core::SC_NS)); 131 100 132 /* simulation */ 133 #if 0 134 cout << "simulation...\n"; 135 #endif 136 int i = 0; 137 while (i++ < 5) 138 { 139 sc_start (1); 140 ASSERT(out.read() == t.obs1.i.read()) 141 ASSERT(out.read() == t.obs2.i.read()) 142 } 143 144 #if 0 145 cout << "\ndone.\n"; 146 #endif 147 148 return 0; 101 /* simulation */ 102 int i = 0; 103 while (i++ < 5) { 104 sc_start(sc_time(1, sc_core::SC_NS)); 105 cout << out.read() << " - " << t.obs1.i.read() << " - " << t.obs2.i.read() << endl; 106 } 107 return 0; 149 108 } 150 109 110 111 /* 112 # Local Variables: 113 # tab-width: 4; 114 # c-basic-offset: 4; 115 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 116 # indent-tabs-mode: nil; 117 # End: 118 # 119 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 120 */ 121 -
sources/test_regression/11062007/Makefile
r15 r55 1 1 2 include ../env.mk 3 RES1 = systemcass_a_nodynamiclink_10.txt 4 RES2 = systemcass_p_nodynamiclink_10.txt 5 RES3 = systemcass_m_nodynamiclink_10.txt 6 RES4 = systemcass_dynamiclink_10.txt 7 ERASE = $(RES1) $(RES2) $(RES3) $(RES4) 8 include ../Makefile.common 2 9 3 EXE_SCASS = system_systemcass.x 4 EXE_SC = system_systemc.x 5 EXE = ${EXE_SCASS} 6 OBJECTS = $(EXE:.x=.o) 7 LINKS = $(OBJECTS:.o=.cpp) 10 test: $(SC_CASS) 11 @echo -ne "| Testing $$(basename $$(pwd)): " ; 12 @(./$(EXE_SCASS) --a --nodynamiclink 10 2> /dev/null ) | tail -n 5 > $(RES1) 13 @(./$(EXE_SCASS) --p --nodynamiclink 10 2> /dev/null ) | tail -n 5 > $(RES2) 14 @(./$(EXE_SCASS) --m --nodynamiclink 10 2> /dev/null ) | tail -n 5 > $(RES3) 15 @(./$(EXE_SCASS) 10 2> /dev/null ) | tail -n 5 > $(RES4) 16 @if diff $(RES1) $(RES2) > /dev/null ; then \ 17 if diff $(RES1) $(RES3) > /dev/null ; then \ 18 if diff $(RES1) $(RES4) > /dev/null ; then \ 19 echo "OK" ; \ 20 else \ 21 echo "KO" ; \ 22 fi ; \ 23 else \ 24 echo "KO" ; \ 25 fi ; \ 26 else \ 27 echo "KO" ; \ 28 fi ; 8 29 9 RESULTS = systemcass_dynamiclink_10.txt systemcass_m_nodynamiclink_10.txt systemcass_a_nodynamiclink_10.txt systemcass_p_nodynamiclink_10.txt10 30 11 .SECONDARY:12 13 main : $(EXE)14 15 test : ${RESULTS}16 diff systemcass_dynamiclink_10.txt systemcass_m_nodynamiclink_10.txt || eval ${failcom}17 diff systemcass_a_nodynamiclink_10.txt systemcass_p_nodynamiclink_10.txt || eval ${failcom}18 diff systemcass_dynamiclink_10.txt systemcass_a_nodynamiclink_10.txt || eval ${failcom}19 @echo Test OK.20 21 systemcass_a_nodynamiclink_10.txt : system_systemcass.x22 ((./system_systemcass.x --nobanner --a --nodynamiclink 10 ) | tail -n 5 > systemcass_a_nodynamiclink_10.txt) || eval ${failcom}23 24 systemcass_p_nodynamiclink_10.txt : system_systemcass.x25 ((./system_systemcass.x --nobanner --p --nodynamiclink 10 ) | tail -n 5 > systemcass_p_nodynamiclink_10.txt) || eval ${failcom}26 27 systemcass_m_nodynamiclink_10.txt : system_systemcass.x28 ((./system_systemcass.x --nobanner --m --nodynamiclink 10 ) | tail -n 5 > systemcass_m_nodynamiclink_10.txt) || eval ${failcom}29 30 systemcass_dynamiclink_10.txt : system_systemcass.x31 ((./system_systemcass.x --nobanner 10 ) | tail -n 5 > systemcass_dynamiclink_10.txt) || eval ${failcom}32 33 %.png : %.dot34 dot -Tpng -o $*.png $*.dot35 36 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)37 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)38 39 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)40 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)41 42 -include Makefile.deps43 44 %_systemc.cpp : %.cpp45 ln -s $*.cpp $*_systemc.cpp46 47 %_systemcass.cpp : %.cpp48 ln -s $*.cpp $*_systemcass.cpp49 50 %_systemc.o : %_systemc.cpp51 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps52 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o53 54 %_systemcass.o : %_systemcass.cpp55 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps56 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o57 58 clean :59 rm -f Makefile.deps60 -rm -f *.o gmon.out61 -rm -f signal_order.txt module_order.dot signal_graph.dot port_graph.dot62 -rm -f module_graph.dot process_order.dot63 -rm -f $(EXE) $(OBJECTS)64 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null65 -rm -f core*66 -rm -rf generated_by_systemcass67 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd68 -rm -rf ${RESULTS}69 -
sources/test_regression/11062007/system.cpp
r1 r55 1 #include <systemc.h> 1 2 2 #include <signal.h> 3 3 4 #include "systemc.h" 5 6 #include "test.h" 7 4 8 using namespace std; 5 9 10 6 11 struct A : sc_module { 7 sc_in_clkclk;8 sc_out<bool>o1;12 sc_in_clk clk; 13 sc_out<bool> o1; 9 14 10 void eval() {11 o1 = (rand()%2) == 0;12 15 void eval() { 16 o1 = (rand() % 2) == 0; 17 } 13 18 14 SC_CTOR (A) : clk ("clk"), o1("o1") { 15 SC_METHOD(eval); 16 sensitive << clk.neg(); 17 #ifdef SYSTEMCASS_SPECIFIC 18 // s1(); 19 #endif 20 }; 19 SC_CTOR(A) : clk ("clk"), o1("o1") { 20 SC_METHOD(eval); 21 sensitive << clk.neg(); 22 dont_initialize(); 23 } 21 24 }; 22 25 26 23 27 struct B : sc_module { 24 sc_in_clkclk;25 sc_in<bool>i1;26 sc_in<bool>i2;27 sc_out<bool>o1;28 sc_out<bool>o2;28 sc_in_clk clk; 29 sc_in<bool> i1; 30 sc_in<bool> i2; 31 sc_out<bool> o1; 32 sc_out<bool> o2; 29 33 30 void eval1 () { 31 o1 = ~i1; 32 } 33 void eval2 () { 34 o2 = ~i2; 35 } 34 void eval1() { 35 o1 = ~i1; 36 } 36 37 37 SC_CTOR (B) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2") { 38 SC_METHOD(eval1); 39 sensitive << clk.neg(); 40 sensitive << i1; 38 void eval2() { 39 o2 = ~i2; 40 } 41 42 SC_CTOR(B) : clk("clk"), i1("i1"), i2("i2"), o1("o1"), o2("o2") { 43 SC_METHOD(eval1); 44 sensitive << clk.neg(); 45 sensitive << i1; 46 dont_initialize(); 41 47 #ifdef SYSTEMCASS_SPECIFIC 42 48 o1(i1); 43 49 #endif 44 SC_METHOD(eval2); 45 sensitive << clk.neg(); 46 sensitive << i2; 50 SC_METHOD(eval2); 51 sensitive << clk.neg(); 52 sensitive << i2; 53 dont_initialize(); 47 54 #ifdef SYSTEMCASS_SPECIFIC 48 55 o2(i2); 49 56 #endif 50 }; 57 } 51 58 }; 52 59 60 53 61 struct C : sc_module { 54 sc_in_clkclk;55 sc_in<bool>i1;56 sc_in<bool>i2;57 sc_out<bool>o1;62 sc_in_clk clk; 63 sc_in<bool> i1; 64 sc_in<bool> i2; 65 sc_out<bool> o1; 58 66 59 void eval1() {60 o1 = i1 ^ i2;61 67 void eval1() { 68 o1 = i1 ^ i2; 69 } 62 70 63 SC_CTOR (C) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2") { 64 SC_METHOD(eval1); 65 sensitive << clk.neg(); 66 sensitive << i1 << i2; 71 SC_CTOR(C) : clk ("clk"), i1 ("i1"), i2("i2"), o1("o1") { 72 SC_METHOD(eval1); 73 sensitive << clk.neg(); 74 sensitive << i1 << i2; 75 dont_initialize(); 67 76 #ifdef SYSTEMCASS_SPECIFIC 68 69 77 o1(i1); 78 o1(i2); 70 79 #endif 71 }; 80 } 81 72 82 }; 73 83 84 74 85 struct D : sc_module { 75 sc_in_clkclk;76 sc_out<bool>o1;86 sc_in_clk clk; 87 sc_out<bool> o1; 77 88 78 79 o1 = (rand()%2) == 0;80 89 void eval () { 90 o1 = (rand() % 2) == 0; 91 } 81 92 82 SC_CTOR (D) : clk ("clk"), o1("o1") { 83 SC_METHOD(eval); 84 sensitive << clk.neg(); 85 #ifdef SYSTEMCASS_SPECIFIC 86 // s1(); 87 #endif 88 }; 93 SC_CTOR(D) : clk ("clk"), o1("o1") { 94 SC_METHOD(eval); 95 sensitive << clk.neg(); 96 dont_initialize(); 97 } 98 89 99 }; 90 100 91 int sc_main (int argc, char *argv[])92 {93 sc_clock signal_clk("my_clock",1, 0.5);94 sc_signal<bool> s1("s1"),s2("s2"),s3("s3"),s4("s4"),s5("s5");95 101 96 A a("a"); 97 B b("b"); 98 C c("c"); 99 D d("d"); 100 101 a.clk (signal_clk); 102 b.clk (signal_clk); 103 c.clk (signal_clk); 104 d.clk (signal_clk); 105 106 a.o1 (s1); 107 b.i1 (s1); 108 109 d.o1 (s2); 110 c.i2 (s2); 102 int sc_main (int argc, char * argv[]) { 103 sc_clock signal_clk("my_clock",1, 0.5); 104 sc_signal<bool> s1("s1"),s2("s2"),s3("s3"),s4("s4"),s5("s5"); 111 105 112 b.o1 (s3); 113 c.i1 (s3); 114 115 c.o1 (s4); 116 b.i2 (s4); 117 118 b.o2 (s5); 119 120 // Init & run 121 sc_initialize (); 106 A a("a"); 107 B b("b"); 108 C c("c"); 109 D d("d"); 122 110 123 if (argc == 1) 124 { 125 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 111 a.clk(signal_clk); 112 b.clk(signal_clk); 113 c.clk(signal_clk); 114 d.clk(signal_clk); 115 116 a.o1(s1); 117 b.i1(s1); 118 119 d.o1(s2); 120 c.i2(s2); 121 122 b.o1(s3); 123 c.i1(s3); 124 125 c.o1(s4); 126 b.i2(s4); 127 128 b.o2(s5); 129 130 // Init & run 131 sc_start(sc_time(0, sc_core::SC_NS)); 132 133 if (argc == 1) { 134 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 135 return EXIT_SUCCESS; 136 } 137 138 sc_start(sc_time(atoi(argv[1]), sc_core::SC_NS)); 139 140 cout << s1.read() << endl; 141 cout << s2.read() << endl; 142 cout << s3.read() << endl; 143 cout << s4.read() << endl; 144 cout << s5.read() << endl; 145 126 146 return EXIT_SUCCESS; 127 147 } 128 148 129 sc_start (atoi(argv[1])); 149 /* 150 # Local Variables: 151 # tab-width: 4; 152 # c-basic-offset: 4; 153 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 154 # indent-tabs-mode: nil; 155 # End: 156 # 157 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 158 */ 130 159 131 cout << s1.read() << endl;132 cout << s2.read() << endl;133 cout << s3.read() << endl;134 cout << s4.read() << endl;135 cout << s5.read() << endl;136 137 return EXIT_SUCCESS;138 } -
sources/test_regression/14092005/Makefile
r15 r55 1 1 2 include ../env.mk 3 TRACE1 = trace_file_scass.vcd 4 TRACE2 = trace_file_systemc.vcd 5 ERASE = $(TRACE1) $(TRACE2) 6 include ../Makefile.common 2 7 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 8 TRACE = trace_file.vcd 9 TRACE_REF = trace_file_reference.vcd 10 10 11 .SECONDARY: 11 test: all 12 @echo -ne "| Testing $$(basename $$(pwd)): " ; 13 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 14 @mv $(TRACE) $(TRACE1) 15 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 16 @mv $(TRACE) $(TRACE2) 17 @if tail -n +11 $(TRACE1) | diff $(TRACE_REF) - > /dev/null ; then \ 18 if tail -n +11 $(TRACE2) | diff $(TRACE_REF) - > /dev/null ; then \ 19 echo "OK" ; \ 20 else \ 21 echo "KO" ; \ 22 fi ; \ 23 else \ 24 echo "KO" ; \ 25 fi ; 12 26 13 main : $(EXE)14 27 15 test : trace_file_scass.vcd trace_file_systemc.vcd trace_file_reference.vcd16 -diff trace_file_systemc.vcd trace_file_scass.vcd17 diff trace_file_reference.vcd trace_file_scass.vcd18 19 trace_file_scass.vcd : system_systemcass.x20 ./system_systemcass.x21 tail -n +11 trace_file.vcd > trace_file_temp.vcd22 mv trace_file_temp.vcd trace_file_scass.vcd23 24 trace_file_systemc.vcd : system_systemc.x25 ./system_systemc.x26 tail -n +11 trace_file.vcd > trace_file_temp.vcd27 mv trace_file_temp.vcd trace_file_systemc.vcd28 29 %.gif : %.dot30 dot -Tgif -o $*.gif $*.dot31 32 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)33 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)34 35 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)36 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)37 38 -include Makefile.deps39 40 %_systemc.cpp : %.cpp41 ln -s $*.cpp $*_systemc.cpp42 43 %_systemcass.cpp : %.cpp44 ln -s $*.cpp $*_systemcass.cpp45 46 %_systemc.o : %_systemc.cpp47 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps48 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o49 50 %_systemcass.o : %_systemcass.cpp51 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps52 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o53 54 clean :55 rm -f Makefile.deps56 -rm -f *.o gmon.out *~57 -rm -f ${LOG}58 -rm -f signal_order.txt module_order.dot signal_graph.dot59 -rm -f module_order.gif signal_graph.gif60 -rm -f $(EXE) $(OBJECTS)61 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null62 -rm -f core*63 -rm -rf generated_by_systemcass64 -rm -rf trace_file.vcd65 -
sources/test_regression/14092005/system.cpp
r1 r55 1 // Le test échoue 2 // Par ailleurs, la référence est la trace de systemcass ; je pense qu'il faudrait changer ça 3 1 4 #include "systemc.h" 2 5 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 6 #include "test.h" 7 11 8 12 9 using namespace std; 13 10 14 struct hard : sc_module 15 { 16 sc_in_clk clk; 17 sc_in<bool> resetn; 18 sc_in <int> i1; 19 sc_out<int> o1; 20 sc_signal <int> r1; 11 struct hard : sc_module { 12 sc_in_clk clk; 13 sc_in<bool> resetn; 14 sc_in <int> i1; 15 sc_out<int> o1; 16 sc_signal <int> r1; 21 17 22 void fg () 23 { 24 o1 = r1; 25 } 18 void fg() { 19 o1 = r1; 20 } 26 21 27 void ft () 28 { 29 if (resetn.read()) 30 r1 = i1; 31 else 32 r1 = 0x0; 33 } 22 void ft() { 23 if (resetn.read()) { 24 r1 = i1; 25 } 26 else { 27 r1 = 0x0; 28 } 29 } 34 30 35 SC_HAS_PROCESS(hard); 36 hard(sc_module_name) 37 { 38 SC_METHOD(ft); 39 dont_initialize(); 40 sensitive << clk.pos(); 41 SC_METHOD(fg); 42 dont_initialize(); 43 sensitive << clk.neg(); 44 #ifdef SYSTEMCASS_SPECIFIC 45 #endif 46 } 31 SC_HAS_PROCESS(hard); 32 33 hard(sc_module_name) { 34 SC_METHOD(ft); 35 sensitive << clk.pos(); 36 dont_initialize(); 37 38 SC_METHOD(fg); 39 sensitive << clk.neg(); 40 dont_initialize(); 41 } 47 42 }; 48 43 49 int50 sc_main (int argc, char ** argv)51 {52 int errnum = 0;53 sc_clock clk1("clk1", 1, 0.5,0,true);54 sc_signal<bool> resetn;55 sc_signal<int> s[10];56 hard a("a");57 44 58 a.clk (clk1); 59 a.resetn (resetn); 45 int sc_main (int argc, char ** argv) { 46 sc_clock clk1("clk1", 1, 0.5, 0, true); 47 sc_signal<bool> resetn; 48 sc_signal<int> s[10]; 49 hard a("a"); 60 50 61 a.i1 (s[0]);62 a.o1 (s[1]);51 a.clk (clk1); 52 a.resetn(resetn); 63 53 64 /* Open trace file */ 65 sc_trace_file *system_trace_file; 66 system_trace_file = sc_create_vcd_trace_file ("trace_file"); 67 68 /* clks waveforms are always useful */ 69 sc_trace(system_trace_file, resetn, "resetn"); 70 sc_trace(system_trace_file, s[0], "i1"); 71 sc_trace(system_trace_file, s[1], "o1"); 72 sc_trace(system_trace_file, clk1, "clk1"); 54 a.i1(s[0]); 55 a.o1(s[1]); 73 56 74 /* initilization */ 75 sc_initialize (); 57 /* Open trace file */ 58 sc_trace_file *system_trace_file; 59 system_trace_file = sc_create_vcd_trace_file ("trace_file"); 76 60 77 s[0] = 0; 78 resetn = 0; 61 /* clks waveforms are always useful */ 62 sc_trace(system_trace_file, resetn, "resetn"); 63 sc_trace(system_trace_file, s[0], "i1"); 64 sc_trace(system_trace_file, s[1], "o1"); 65 sc_trace(system_trace_file, clk1, "clk1"); 79 66 80 sc_start (5); 67 /* initilization */ 68 sc_start(sc_time(0, sc_core::SC_NS)); 81 69 82 s[0] = 0x7B;83 resetn = 1;70 s[0] = 0; 71 resetn = 0; 84 72 85 sc_start (1);73 sc_start(sc_time(5, sc_core::SC_NS)); 86 74 87 for (int i = 0; i < 10; i++) 88 { 89 s[0] = i; 90 sc_start (1); 91 // cout << i << " " << s[1].read() << " " << a.o1.read() << endl; 92 //ASSERT(((i > 0) && (s[1].read() == i - 1)) || ((i == 0) && (s[1].read() == 0x7B))); 93 ASSERT(s[1].read() == i); 94 } 75 s[0] = 0x7B; 76 resetn = 1; 95 77 96 cout << "Test OK\n"; 97 return 0; 78 sc_start(sc_time(1, sc_core::SC_NS)); 79 80 for (int i = 0; i < 10; i++) { 81 s[0] = i; 82 sc_start(sc_time(1, sc_core::SC_NS)); 83 ASSERT(s[1].read() == i); 84 } 85 86 return 0; 98 87 } 99 88 89 90 /* 91 # Local Variables: 92 # tab-width: 4; 93 # c-basic-offset: 4; 94 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 95 # indent-tabs-mode: nil; 96 # End: 97 # 98 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 99 */ 100 -
sources/test_regression/15062006/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SOCVIEW_INC = ${SOCVIEW}/include 4 SOCVIEW_LIB = ${SOCVIEW}/lib-linux/libsystemc.a 5 CFLAGS_SOCVIEW = ${CFLAGS} -DSOCVIEW -I${SOCVIEW_INC} 6 LFLAGS_SOCVIEW = ${LFLAGS} -ltermcap -lreadline ${SOCVIEW_LIB} 5 test : all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo "OK" ; \ 11 else echo "KO" ; \ 12 fi ; 7 13 8 SYSTEM = system.cpp9 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x)10 EXE_SC = $(SYSTEM:.cpp=_systemc.x)11 EXE_SVIEW = $(SYSTEM:.cpp=_socview.x)12 EXE = ${EXE_SCASS} ${EXE_SVIEW} ${EXE_SC}13 OBJECTS = $(EXE:.x=.o)14 LINKS = $(OBJECTS:.o=.cpp)15 14 16 TEST1_DAT = \17 test_socview_1.dat test_socview_1_reloaded.dat \18 test_socview_2.dat test_socview_2_reloaded.dat \19 test_socview_3.dat test_socview_3_reloaded.dat \20 test_socview_3b.dat test_socview_3_reloaded_bis.dat \21 test_socview_4.dat test_socview_4_reloaded.dat \22 test_socview_5.dat test_socview_5_reloaded.dat \23 test_socview_6.dat test_socview_6_reloaded.dat \24 test_socview_7.dat test_socview_7_reloaded.dat \25 test_socview_8.dat test_socview_8_reloaded.dat \26 test_socview_9.dat test_socview_9_reloaded.dat \27 test_socview_10.dat test_socview_10_reloaded.dat \28 test_socview_10b.dat \29 15 30 TEST2_DAT = test2_socview_10.dat \31 test2_socview_24a.dat test2_socview_24b.dat test2_socview_24c.dat \32 test2_socview_20a.dat test2_socview_20b.dat test2_systemcass_20.dat33 34 .SECONDARY:35 36 main : $(EXE)37 38 test : system_systemcass.x39 ./system_systemcass.x40 41 %.gif : %.dot42 dot -Tgif -o $*.gif $*.dot43 44 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)45 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC)46 47 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)48 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS)49 50 %_socview.x : %_socview.o $(SOCVIEW_LIB)51 $(CXX) -o $@ $*_socview.o $(LFLAGS_SOCVIEW)52 53 -include Makefile.deps54 55 %_systemc.cpp : %.cpp56 ln -s $*.cpp $*_systemc.cpp57 58 %_systemcass.cpp : %.cpp59 ln -s $*.cpp $*_systemcass.cpp60 61 %_socview.cpp : %.cpp62 ln -s $*.cpp $*_socview.cpp63 64 %_systemc.o : %_systemc.cpp65 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps66 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o67 68 %_systemcass.o : %_systemcass.cpp69 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps70 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o71 72 %_socview.o : %_socview.cpp73 $(CXX) $(CFLAGS_SOCVIEW) -MM $*_socview.cpp >> Makefile.deps74 $(CXX) $(CFLAGS_SOCVIEW) -c $*_socview.cpp -o $*_socview.o75 76 clean :77 rm -f Makefile.deps78 -rm -f *.o gmon.out *~79 -rm -f results80 -rm -f signal_order.txt module_order.dot signal_graph.dot81 -rm -f module_order.gif signal_graph.gif82 -rm -f $(EXE) $(OBJECTS)83 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null84 -rm -f core*85 -rm -rf generated_by_systemcass86 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd87 -
sources/test_regression/15062006/system.cpp
r1 r55 1 // QM : je ne sais ce que cherche à tester ce test 2 // Dans le doute j'applique un traitement par défaut (diff sc) avec un cout "OK" 3 1 4 #include <systemc.h> 2 5 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 6 #include "test.h" 7 11 8 12 9 using namespace std; … … 14 11 template<typename datatype> 15 12 class module_base : public sc_module { 16 public:17 sc_in_clk clk;18 sc_in<datatype> i1;19 sc_out<datatype> o1;20 sc_signal<datatype> reg1;21 13 22 private: 23 void trans_module_base () 24 { 25 } 26 void gen_module_base () 27 { 28 this->kikoo (); 29 } 30 virtual void kikoo () = 0; 14 public: 15 sc_in_clk clk; 16 sc_in<datatype> i1; 17 sc_out<datatype> o1; 18 sc_signal<datatype> reg1; 31 19 32 public: 33 SC_HAS_PROCESS(module_base); 34 module_base (sc_module_name n) : sc_module (n), 35 clk("clk"), 36 i1("i1"), 37 o1("o1"), 38 reg1("reg1") 39 { 40 SC_METHOD(trans_module_base); 41 sensitive << clk.pos(); 42 dont_initialize(); 43 SC_METHOD(gen_module_base); 44 sensitive << clk.neg(); 45 dont_initialize(); 46 } 20 private: 21 void trans_module_base() {} 22 void gen_module_base() { 23 this->kikoo (); 24 } 25 virtual void kikoo() = 0; 26 27 28 public: 29 SC_HAS_PROCESS(module_base); 30 module_base (sc_module_name n) : sc_module (n), 31 clk("clk"), i1("i1"), o1("o1"), reg1("reg1") { 32 SC_METHOD(trans_module_base); 33 sensitive << clk.pos(); 34 dont_initialize(); 35 36 SC_METHOD(gen_module_base); 37 sensitive << clk.neg(); 38 dont_initialize(); 39 } 47 40 }; 41 48 42 49 43 template<typename datatype> 50 44 class test : public module_base<datatype> { 51 public:52 sc_in<datatype> i2;53 sc_out<datatype> o2;54 sc_signal<datatype> reg2;55 45 56 private:57 void trans ()58 {59 }46 public: 47 sc_in<datatype> i2; 48 sc_out<datatype> o2; 49 sc_signal<datatype> reg2; 60 50 61 void gen () 62 { 63 } 64 virtual void kikoo () 65 { } 51 private: 52 void trans() {} 66 53 67 public: 68 SC_HAS_PROCESS(test); 69 test (sc_module_name n) : module_base<datatype> (n), 54 void gen() {} 55 56 virtual void kikoo() {} 57 58 public: 59 SC_HAS_PROCESS(test); 60 test(sc_module_name n) : module_base<datatype> (n), 70 61 i2("i2"), 71 62 o2("o2"), 72 reg2("reg2") 73 {74 SC_METHOD(trans);75 this->sensitive << this->clk.pos();76 this->dont_initialize(); 77 78 79 this->dont_initialize();80 63 reg2("reg2") { 64 SC_METHOD(trans); 65 this->sensitive << this->clk.pos(); 66 this->dont_initialize(); 67 68 SC_METHOD(gen); 69 this->sensitive << this->clk.neg(); 70 this->dont_initialize(); 71 } 81 72 }; 82 73 83 int sc_main (int argc, char *argv[])84 {85 int errnum = 0;86 sc_clock signal_clk("my_clock",1, 0.5);87 sc_signal<int> s01("s01"),88 s02("s02"),89 s03("s03"),90 s04("s04");91 74 92 test<int> test1("test1"); 93 test1.clk (signal_clk); 94 test1.i1 (s01); 95 test1.i2 (s02); 96 test1.o1 (s03); 97 test1.o2 (s04); 75 int sc_main(int argc, char * argv[]) { 76 sc_clock signal_clk("my_clock"); 77 sc_signal<int> s01("s01"), s02("s02"), s03("s03"), s04("s04"); 98 78 99 // Init & run 100 sc_start (0); 79 test<int> test1("test1"); 80 test1.clk(signal_clk); 81 test1.i1(s01); 82 test1.i2(s02); 83 test1.o1(s03); 84 test1.o2(s04); 101 85 102 return EXIT_SUCCESS; 86 // Init & run 87 sc_start(sc_time(0, sc_core::SC_NS)); 88 89 cout << "OK" << endl; 90 return EXIT_SUCCESS; 103 91 } 104 92 93 94 /* 95 # Local Variables: 96 # tab-width: 4; 97 # c-basic-offset: 4; 98 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 99 # indent-tabs-mode: nil; 100 # End: 101 # 102 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 103 */ 104 -
sources/test_regression/16022007/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 EXE_SCASS = system_systemcass.x4 EXE_SC = system_systemc.x5 EXE = ${EXE_SCASS} ${EXE_SC}6 OBJECTS = $(EXE:.x=.o)7 LINKS = $(OBJECTS:.o=.cpp)8 5 9 .SECONDARY: 6 test : all 7 @echo -ne "| Testing $$(basename $$(pwd)): " ; 8 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 9 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 10 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 11 echo "OK" ; \ 12 else echo "KO" ; \ 13 fi ; 10 14 11 main : $(EXE)12 13 test : ${EXE}14 ((./system_systemcass.x 3 ) 2>&1 | grep "Cycle Accurate System Simulator") || eval ${failcom}15 (./system_systemcass.x --nobanner 3 ) 2>&1 | grep "Cycle Accurate System Simulator" ; \16 if [ $$? -ne 1 ] ; then eval ${failcom} ; fi17 @echo Test OK.18 19 %.png : %.dot20 dot -Tpng -o $*.png $*.dot21 22 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)23 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)24 25 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)26 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)27 28 -include Makefile.deps29 30 %_systemc.cpp : %.cpp31 ln -s $*.cpp $*_systemc.cpp32 33 %_systemcass.cpp : %.cpp34 ln -s $*.cpp $*_systemcass.cpp35 36 %_systemc.o : %_systemc.cpp37 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps38 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o39 40 %_systemcass.o : %_systemcass.cpp41 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o43 44 clean :45 rm -f Makefile.deps46 -rm -f *.o gmon.out47 -rm -f signal_order.txt module_order.dot signal_graph.dot port_graph.dot48 -rm -f module_graph.dot process_order.dot49 -rm -f $(EXE) $(OBJECTS)50 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null51 -rm -f core*52 -rm -rf generated_by_systemcass53 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd54 -
sources/test_regression/16022007/system.cpp
r1 r55 1 #include <systemc.h> 1 2 2 #include <signal.h> 3 3 4 #include "systemc.h" 5 #include "test.h" 6 7 // QM : je pense que le test n'est pas bon : il est a priori normal que l'ordre et le nombre d'appels aux fonctions diffÚrent entre SC et SCASS 8 4 9 using namespace std; 5 10 11 6 12 struct M_0i1o : sc_module { 7 sc_in_clk clk; 8 sc_out<bool> o1; 9 10 void eval () { 11 o1 = (rand()%2) == 0; 12 printf ("M_0i1o::eval ()\n"); 13 } 14 15 SC_CTOR (M_0i1o) : clk ("clk"), o1("o1") { 16 SC_METHOD(eval); 17 sensitive << clk.neg(); 18 }; 13 sc_in_clk clk; 14 sc_out<bool> o1; 15 16 void eval() { 17 o1 = (rand() % 2) == 0; 18 printf("M_0i1o::eval ()\n"); 19 } 20 21 SC_CTOR (M_0i1o) : clk("clk"), o1("o1") { 22 SC_METHOD(eval); 23 sensitive << clk.neg(); 24 dont_initialize(); 25 } 26 19 27 }; 20 28 21 29 struct M_1i1o : sc_module { 22 sc_in_clk clk; 23 sc_in<bool> i1; 24 sc_out<bool> o1; 25 26 void eval1 () { 27 o1 = ~i1; 28 printf ("M_1i1o::eval1 ()\n"); 29 } 30 31 SC_CTOR (M_1i1o) : clk ("clk"), i1 ("i1"), o1("o1") { 32 SC_METHOD(eval1); 33 sensitive << clk.neg(); 34 sensitive << i1; 35 }; 30 sc_in_clk clk; 31 sc_in<bool> i1; 32 sc_out<bool> o1; 33 34 void eval1() { 35 o1 = ~i1; 36 printf("M_1i1o::eval1 ()\n"); 37 } 38 39 SC_CTOR (M_1i1o) : clk("clk"), i1("i1"), o1("o1") { 40 SC_METHOD(eval1); 41 sensitive << clk.neg(); 42 sensitive << i1; 43 dont_initialize(); 44 } 45 36 46 }; 37 47 38 48 39 49 struct M_2i2o : sc_module { 40 sc_in_clk clk; 41 sc_in<bool> i1; 42 sc_in<bool> i2; 43 sc_out<bool> o1; 44 sc_out<bool> o2; 45 46 void eval1 () { 47 o1 = ~i1; 48 printf ("M_2i2o::eval1 ()\n"); 49 } 50 void eval2 () { 51 o2 = ~i2; 52 printf ("M_2i2o::eval2 ()\n"); 53 } 54 55 SC_CTOR (M_2i2o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2") { 56 SC_METHOD(eval1); 57 sensitive << clk.neg(); 58 sensitive << i1; 59 SC_METHOD(eval2); 60 sensitive << clk.neg(); 61 sensitive << i2; 62 }; 63 }; 50 sc_in_clk clk; 51 sc_in<bool> i1; 52 sc_in<bool> i2; 53 sc_out<bool> o1; 54 sc_out<bool> o2; 55 56 void eval1() { 57 o1 = ~i1; 58 printf("M_2i2o::eval1 ()\n"); 59 } 60 61 void eval2() { 62 o2 = ~i2; 63 printf("M_2i2o::eval2 ()\n"); 64 } 65 66 SC_CTOR (M_2i2o) : clk("clk"), i1("i1"), i2("i2"), o1("o1"), o2("o2") { 67 SC_METHOD(eval1); 68 sensitive << clk.neg(); 69 sensitive << i1; 70 dont_initialize(); 71 72 SC_METHOD(eval2); 73 sensitive << clk.neg(); 74 sensitive << i2; 75 dont_initialize(); 76 } 77 78 }; 79 64 80 65 81 struct M_4i2o : sc_module { 66 sc_in_clk clk; 67 sc_in<bool> i1; 68 sc_in<bool> i2; 69 sc_in<bool> i3; 70 sc_in<bool> i4; 71 sc_out<bool> o1; 72 sc_out<bool> o2; 73 74 void eval1 () { 75 o1 = ~i1; 76 printf ("M_4i2o::eval1 ()\n"); 77 } 78 void eval2 () { 79 o2 = ~i2; 80 printf ("M_4i2o::eval2 ()\n"); 81 } 82 void eval3 () { 83 cout << i3 << i4 << "\n"; 84 printf ("M_4i2o::eval3 ()\n"); 85 } 86 87 SC_CTOR (M_4i2o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), 88 i3 ("i3"), i4 ("i4") { 89 SC_METHOD(eval1); 90 sensitive << clk.neg(); 91 sensitive << i1; 92 SC_METHOD(eval2); 93 sensitive << clk.neg(); 94 sensitive << i2; 95 SC_METHOD(eval3); 96 sensitive << clk.pos(); 97 }; 98 }; 82 sc_in_clk clk; 83 sc_in<bool> i1; 84 sc_in<bool> i2; 85 sc_in<bool> i3; 86 sc_in<bool> i4; 87 sc_out<bool> o1; 88 sc_out<bool> o2; 89 90 void eval1() { 91 o1 = ~i1; 92 printf("M_4i2o::eval1 ()\n"); 93 } 94 95 void eval2() { 96 o2 = ~i2; 97 printf("M_4i2o::eval2 ()\n"); 98 } 99 100 void eval3() { 101 cout << i3 << i4 << "\n"; 102 printf("M_4i2o::eval3 ()\n"); 103 } 104 105 SC_CTOR (M_4i2o) : clk ("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), 106 o1("o1"), o2("o2") { 107 SC_METHOD(eval1); 108 sensitive << clk.neg(); 109 sensitive << i1; 110 dont_initialize(); 111 112 SC_METHOD(eval2); 113 sensitive << clk.neg(); 114 sensitive << i2; 115 dont_initialize(); 116 117 SC_METHOD(eval3); 118 sensitive << clk.pos(); 119 dont_initialize(); 120 } 121 122 }; 123 99 124 100 125 struct M_4i3o : sc_module { 101 sc_in_clk clk; 102 sc_in<bool> i1; 103 sc_in<bool> i2; 104 sc_in<bool> i3; 105 sc_in<bool> i4; 106 sc_out<bool> o1; 107 sc_out<bool> o2; 108 sc_out<bool> o3; 109 110 void eval1 () { 111 o1 = ~i1; 112 printf ("M_4i3o::eval1 ()\n"); 113 } 114 void eval2 () { 115 o2 = ~i2; 116 printf ("M_4i3o::eval2 ()\n"); 117 } 118 void eval3 () { 119 o3 = ~i3; 120 printf ("M_4i3o::eval3 ()\n"); 121 } 122 void eval4 () { 123 cout << i4 << "\n"; 124 } 125 126 SC_CTOR (M_4i3o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), i3 ("i3"), i4 ("i4"), o3 ("o3") { 127 SC_METHOD(eval1); 128 sensitive << clk.neg(); 129 sensitive << i1; 130 SC_METHOD(eval4); 131 sensitive << clk.pos(); 132 // sensitive << i4; 133 SC_METHOD(eval3); 134 sensitive << clk.neg(); 135 sensitive << i3; 126 sc_in_clk clk; 127 sc_in<bool> i1; 128 sc_in<bool> i2; 129 sc_in<bool> i3; 130 sc_in<bool> i4; 131 sc_out<bool> o1; 132 sc_out<bool> o2; 133 sc_out<bool> o3; 134 135 void eval1() { 136 o1 = ~i1; 137 printf("M_4i3o::eval1 ()\n"); 138 } 139 140 void eval2() { 141 o2 = ~i2; 142 printf("M_4i3o::eval2 ()\n"); 143 } 144 145 void eval3() { 146 o3 = ~i3; 147 printf("M_4i3o::eval3 ()\n"); 148 } 149 150 void eval4() { 151 cout << i4 << "\n"; 152 } 153 154 SC_CTOR (M_4i3o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), o1("o1"), o2("o2"), o3("o3") { 155 SC_METHOD(eval1); 156 sensitive << clk.neg(); 157 sensitive << i1; 158 dont_initialize(); 159 160 SC_METHOD(eval4); 161 sensitive << clk.pos(); 162 dont_initialize(); 163 164 SC_METHOD(eval3); 165 sensitive << clk.neg(); 166 sensitive << i3; 167 dont_initialize(); 136 168 #ifdef SYSTEMCASS_SPECIFIC 137 169 o3(i3); 138 170 #endif 139 SC_METHOD(eval2); 140 sensitive << clk.neg(); 141 sensitive << i2; 142 }; 143 }; 171 SC_METHOD(eval2); 172 sensitive << clk.neg(); 173 sensitive << i2; 174 dont_initialize(); 175 } 176 177 }; 178 144 179 145 180 struct M_1i0o : sc_module { 146 sc_in_clk clk; 147 sc_in<bool> i1; 148 149 void eval1 () { 150 cout << i1.read() << "\n"; 151 printf ("M_1i0o::eval1 ()\n"); 152 } 153 154 SC_CTOR (M_1i0o) : clk ("clk"), i1 ("i1") { 155 SC_METHOD(eval1); 156 sensitive << clk.pos(); 157 // sensitive << i1; 158 }; 159 }; 160 161 int sc_main (int argc, char *argv[]) 162 { 163 sc_clock signal_clk("my_clock",1, 0.5); 164 sc_signal<bool> s1 ("s01"), 165 s2 ("s02"), 166 s3 ("s03"), 167 s4 ("s04"), 168 s5 ("s05"), 169 s6 ("s06"), 170 s7 ("s07"), 171 s8 ("s08"), 172 s9 ("s09"), 173 s10("s10"), 174 s11("s11"), 175 s12("s12"), 176 s13("s13"), 177 s14("s14"), 178 s15("s15"); 179 180 181 M_0i1o a("a"); 182 M_4i2o b("b"); 183 M_1i1o c("c"); 184 M_4i3o d("d"); 185 M_1i1o e("e"); 186 M_1i1o f("f"); 187 M_2i2o g("g"); 188 M_1i1o h("h"); 189 M_1i0o i("i"); 190 M_0i1o j("j"); 191 M_0i1o k("k"); 192 M_0i1o l("l"); 193 194 a.clk (signal_clk); 195 b.clk (signal_clk); 196 c.clk (signal_clk); 197 d.clk (signal_clk); 198 e.clk (signal_clk); 199 f.clk (signal_clk); 200 g.clk (signal_clk); 201 h.clk (signal_clk); 202 i.clk (signal_clk); 203 j.clk (signal_clk); 204 k.clk (signal_clk); 205 l.clk (signal_clk); 206 207 a.o1 (s1); 208 b.i1 (s1); 209 210 b.o2 (s2); 211 c.i1 (s2); 212 213 c.o1 (s3); 214 d.i1 (s3); 215 216 d.o1 (s4); 217 b.i3 (s4); 218 219 d.o2 (s5); 220 b.i4 (s5); 221 222 b.o1 (s6); 223 e.i1 (s6); 224 225 e.o1 (s7); 226 f.i1 (s7); 227 228 f.o1 (s8); 229 b.i2 (s8); 230 231 d.o3 (s9); 232 g.i1 (s9); 233 234 g.o1 (s10); 235 h.i1 (s10); 236 237 h.o1 (s11); 238 d.i4 (s11); 239 240 j.o1 (s12); 241 g.i2 (s12); 242 243 g.o2 (s13); 244 i.i1 (s13); 245 246 l.o1 (s14); 247 d.i3 (s14); 248 249 k.o1 (s15); 250 d.i2 (s15); 251 252 // Init & run 253 sc_initialize (); 254 255 if (argc == 1) 256 { 257 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 258 return 1; 259 } 260 261 sc_start (atoi(argv[1])); 262 263 return EXIT_SUCCESS; 181 sc_in_clk clk; 182 sc_in<bool> i1; 183 184 void eval1() { 185 cout << i1.read() << "\n"; 186 printf("M_1i0o::eval1 ()\n"); 187 } 188 189 SC_CTOR (M_1i0o) : clk("clk"), i1("i1") { 190 SC_METHOD(eval1); 191 sensitive << clk.pos(); 192 dont_initialize(); 193 } 194 }; 195 196 197 int sc_main (int argc, char * argv[]) { 198 sc_clock signal_clk("my_clock"); 199 sc_signal<bool> s1("s01"), 200 s2 ("s02"), 201 s3 ("s03"), 202 s4 ("s04"), 203 s5 ("s05"), 204 s6 ("s06"), 205 s7 ("s07"), 206 s8 ("s08"), 207 s9 ("s09"), 208 s10("s10"), 209 s11("s11"), 210 s12("s12"), 211 s13("s13"), 212 s14("s14"), 213 s15("s15"); 214 215 216 M_0i1o a("a"); 217 M_4i2o b("b"); 218 M_1i1o c("c"); 219 M_4i3o d("d"); 220 M_1i1o e("e"); 221 M_1i1o f("f"); 222 M_2i2o g("g"); 223 M_1i1o h("h"); 224 M_1i0o i("i"); 225 M_0i1o j("j"); 226 M_0i1o k("k"); 227 M_0i1o l("l"); 228 229 a.clk(signal_clk); 230 b.clk(signal_clk); 231 c.clk(signal_clk); 232 d.clk(signal_clk); 233 e.clk(signal_clk); 234 f.clk(signal_clk); 235 g.clk(signal_clk); 236 h.clk(signal_clk); 237 i.clk(signal_clk); 238 j.clk(signal_clk); 239 k.clk(signal_clk); 240 l.clk(signal_clk); 241 242 a.o1(s1); 243 b.i1(s1); 244 245 b.o2(s2); 246 c.i1(s2); 247 248 c.o1(s3); 249 d.i1(s3); 250 251 d.o1(s4); 252 b.i3(s4); 253 254 d.o2(s5); 255 b.i4(s5); 256 257 b.o1(s6); 258 e.i1(s6); 259 260 e.o1(s7); 261 f.i1(s7); 262 263 f.o1(s8); 264 b.i2(s8); 265 266 d.o3(s9); 267 g.i1(s9); 268 269 g.o1(s10); 270 h.i1(s10); 271 272 h.o1(s11); 273 d.i4(s11); 274 275 j.o1(s12); 276 g.i2(s12); 277 278 g.o2(s13); 279 i.i1(s13); 280 281 l.o1(s14); 282 d.i3(s14); 283 284 k.o1(s15); 285 d.i2(s15); 286 287 // Init & run 288 sc_start(sc_time(0, sc_core::SC_NS)); 289 290 sc_start(sc_time(3, sc_core::SC_NS)); 291 292 return EXIT_SUCCESS; 264 293 } 294 295 /* 296 # Local Variables: 297 # tab-width: 4; 298 # c-basic-offset: 4; 299 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 300 # indent-tabs-mode: nil; 301 # End: 302 # 303 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 304 */ 305 -
sources/test_regression/16062005a/Makefile
r15 r55 1 1 2 include ../env.mk 3 HIERARCHY = object_hierarchy.txt 4 ERASE = $(HIERARCHY) 5 include ../Makefile.common 2 6 3 SYSTEM = system.cpp system2.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 7 HIERARCHY_REF = object_hierarchy_ref.txt 10 8 11 .SECONDARY: 9 test : $(EXE_SCASS) 10 @echo -ne "| Testing $$(basename $$(pwd)): " ; 11 @./$(EXE_SCASS) $(HIERARCHY) 2> /dev/null 12 @if diff $(HIERARCHY) $(HIERARCHY_REF) > /dev/null ; then \ 13 echo "OK" ; \ 14 else echo "KO" ; \ 15 fi ; 12 16 13 main : $(EXE_SCASS)14 17 15 test : main16 ./system_systemcass.x object_hierarchy1.txt17 diff object_hierarchy1_reference.txt object_hierarchy1.txt18 ./system2_systemcass.x object_hierarchy2.txt19 diff object_hierarchy2_reference.txt object_hierarchy2.txt20 @echo Test OK.21 18 22 %.gif : %.dot23 dot -Tgif -o $*.gif $*.dot24 25 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)26 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)27 28 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)29 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)30 31 -include Makefile.deps32 33 %_systemc.cpp : %.cpp34 ln -s $*.cpp $*_systemc.cpp35 36 %_systemcass.cpp : %.cpp37 ln -s $*.cpp $*_systemcass.cpp38 39 %_systemc.o : %_systemc.cpp40 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps41 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o42 43 %_systemcass.o : %_systemcass.cpp44 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps45 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o46 47 clean :48 rm -f Makefile.deps49 -rm -f *.o gmon.out *~50 -rm -f ${LOG}51 -rm -f signal_order.txt module_order.dot signal_graph.dot52 -rm -f module_order.gif signal_graph.gif53 -rm -f $(EXE) $(OBJECTS)54 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null55 -rm -f core*56 -rm -rf generated_by_systemcass57 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd58 -
sources/test_regression/16062005a/system.cpp
r1 r55 1 #include "systemc.h" 1 2 2 #include <iostream> 3 3 #include <fstream> 4 4 #include <vector> 5 5 6 #define ASSERT(x) { if (!(x)) { \ 7 cerr << "ASSERT : " #x \ 8 << " in function '" << __FUNCTION__ \ 9 << "'\n"; exit (-1); \ 10 } \ 11 } 6 #include "systemc.h" 7 #include "test.h" 12 8 13 9 14 10 using namespace std; 15 11 16 struct D : sc_module 17 { 18 D (sc_module_name) 19 { 20 } 12 struct D : sc_module { 13 D(sc_module_name) {} 21 14 }; 22 15 23 struct C : sc_module 24 { 25 C (sc_module_name) 26 { 27 } 16 17 18 struct C : sc_module { 19 C(sc_module_name) {} 28 20 }; 29 21 30 struct B : sc_module 31 { 32 D d1; 33 D d2; 34 C c; 35 B (sc_module_name) : d1("d1"), d2("d2"), c("c") 36 { 37 } 22 23 struct B : sc_module { 24 D d1; 25 D d2; 26 C c; 27 B(sc_module_name) : d1("d1"), d2("d2"), c("c") {} 38 28 }; 39 29 40 struct A : sc_module 41 { 42 B b; 43 C c; 44 A (sc_module_name) : b("b"), c("c") 45 { 46 } 30 31 struct A : sc_module { 32 B b; 33 C c; 34 A(sc_module_name) : b("b"), c("c") {} 47 35 }; 48 36 49 struct top_level1 : sc_module 50 { 51 A a; 52 D d; 53 top_level1(sc_module_name) : a("a"), d("d") 54 { 55 } 37 38 struct top_level1 : sc_module { 39 A a; 40 D d; 41 top_level1(sc_module_name) : a("a"), d("d") {} 56 42 }; 57 43 58 struct top_level2 : sc_module 59 { 60 B b1; 61 B b2; 62 C c; 63 top_level2(sc_module_name) : b1("b1"), b2("b2"), c("c") 64 { 65 } 44 45 struct top_level2 : sc_module { 46 B b1; 47 B b2; 48 C c; 49 top_level2(sc_module_name) : b1("b1"), b2("b2"), c("c") {} 66 50 }; 67 51 68 void 69 dump_hierarchy (ostream &o, sc_object *obj) 70 { 71 const std::vector<sc_object*> &children = obj->get_child_objects(); 72 for (unsigned i = 0; i < children.size(); i++) 73 if (children[i]) 74 dump_hierarchy (o,children[i]); 75 o << obj->name () << " " << obj->kind() << endl; 52 53 void dump_hierarchy(ostream & o, sc_object * obj) { 54 const vector<sc_object *> & children = obj->get_child_objects(); 55 for (unsigned i = 0; i < children.size(); i++) { 56 if (children[i]) { 57 dump_hierarchy(o, children[i]); 58 } 59 } 60 o << obj->name() << " " << obj->kind() << endl; 76 61 } 77 62 78 void 79 dump_hierarchy (ostream &o, const std::vector<sc_object*> &obj_list) 80 {81 for (unsigned i = 0; i < obj_list.size(); i++)82 dump_hierarchy(o, obj_list[i]);63 64 void dump_hierarchy (ostream & o, const vector<sc_object *> & obj_list) { 65 for (unsigned i = 0; i < obj_list.size(); i++) { 66 dump_hierarchy(o, obj_list[i]); 67 } 83 68 } 84 69 85 int86 sc_main (int argc, char ** argv)87 {88 if (argc < 2)89 {90 cerr << "Usage : " << argv[0] << " <filename>\n";91 exit (-1);92 }93 70 94 sc_clock clk("clock"); 95 top_level1 top1("top1"); 96 top_level2 top2("top2"); 97 98 ofstream o; 99 o.open (argv[1],ios::out | ios::trunc); 100 if (o.is_open () == false) 101 { 102 cerr << "Unable to open '" << argv[1] << "'.\n"; 103 return 1; 104 } 71 int sc_main (int argc, char ** argv) { 72 if (argc < 2) { 73 cerr << "Usage : " << argv[0] << " <filename>\n"; 74 exit(-1); 75 } 105 76 106 sc_start(0); 107 dump_hierarchy (o,sc_get_top_level_objects()); 108 109 ASSERT(sc_find_object("top2.b1" ) == &top2.b1 ); 110 ASSERT(sc_find_object("top2.b1.d1" ) == &top2.b1.d1 ); 111 ASSERT(sc_find_object("top2.b1.d2" ) == &top2.b1.d2 ); 112 ASSERT(sc_find_object("top2.b1.c" ) == &top2.b1.c ); 113 ASSERT(sc_find_object("top2.b2" ) == &top2.b2 ); 114 ASSERT(sc_find_object("top2.c" ) == &top2.c ); 115 ASSERT(sc_find_object("top1.a" ) == &top1.a ); 116 ASSERT(sc_find_object("top1.d" ) == &top1.d ); 117 ASSERT(sc_find_object("top1.a.b" ) == &top1.a.b ); 118 ASSERT(sc_find_object("top1.a.b.d1") == &top1.a.b.d1); 119 ASSERT(sc_find_object("top1.a.b.d2") == &top1.a.b.d2); 120 ASSERT(sc_find_object("top1.a.b.c" ) == &top1.a.b.c ); 121 ASSERT(sc_find_object("top1.a.c" ) == &top1.a.c ); 122 ASSERT(sc_find_object("top1.c" ) == NULL ); 123 ASSERT(sc_find_object("top1" )->get_parent_object() == NULL); 124 ASSERT(sc_find_object("top1.a" )->get_parent_object() == &top1); 125 ASSERT(sc_find_object("top1.a.b" )->get_parent_object() == &top1.a); 126 ASSERT(sc_find_object("top1.a.b.d2")->get_parent_object() == &top1.a.b); 127 ASSERT(sc_find_object("top1.d" )->get_parent_object() == &top1); 128 ASSERT(sc_find_object("top2.b1" )->get_parent_object() == &top2); 129 ASSERT(sc_find_object("top2.b2" )->get_parent_object() == &top2); 130 ASSERT(sc_find_object("top2.c" )->get_parent_object() == &top2); 131 ASSERT(sc_find_object("top2.b1.c" )->get_parent_object() == &top2.b1); 132 #if 0 133 o << sc_find_object("top2.b1.d1")->name() << endl; 134 o << sc_find_object("top2.b1.d2")->name() << endl; 135 o << sc_find_object("top2.b1.c")->name() << endl; 136 o << sc_find_object("top2.b2")->name() << endl; 137 o << sc_find_object("top2.c")->name() << endl; 138 o << sc_find_object("top1.a")->name() << endl; 139 o << sc_find_object("top1.d")->name() << endl; 140 o << sc_find_object("top1.a.b")->name() << endl; 141 o << sc_find_object("top1.a.b.d1")->name() << endl; 142 o << sc_find_object("top1.a.b.d2")->name() << endl; 143 o << sc_find_object("top1.a.b.c")->name() << endl; 144 o << sc_find_object("top1.a.c")->name() << endl; 145 if (sc_find_object("top1.c") == NULL) 146 o << "top1.c not found.\n"; 147 else 148 o << "top1.c found.\n"; 149 o << sc_find_object("top2.b1.c")->get_parent_object()->name () << endl; 150 o << sc_find_object("top1.a")->get_parent_object()->name () << endl; 151 if (top1.get_parent_object() == NULL) 152 o << "top1 has no parent.\n"; 153 else 154 o << "top1 has a parent.\n"; 155 #endif 77 sc_clock clk("clock"); 78 top_level1 top1("top1"); 79 top_level2 top2("top2"); 156 80 157 o.close (); 81 ofstream o; 82 o.open(argv[1],ios::out | ios::trunc); 83 if (!o.is_open()) { 84 cerr << "Unable to open '" << argv[1] << "'.\n"; 85 return 1; 86 } 158 87 159 return 0; 88 sc_start(sc_time(0, sc_core::SC_NS)); 89 dump_hierarchy(o, sc_get_top_level_objects()); 90 91 ASSERT(sc_find_object("top2.b1" ) == &top2.b1 ); 92 ASSERT(sc_find_object("top2.b1.d1" ) == &top2.b1.d1 ); 93 ASSERT(sc_find_object("top2.b1.d2" ) == &top2.b1.d2 ); 94 ASSERT(sc_find_object("top2.b1.c" ) == &top2.b1.c ); 95 ASSERT(sc_find_object("top2.b2" ) == &top2.b2 ); 96 ASSERT(sc_find_object("top2.c" ) == &top2.c ); 97 ASSERT(sc_find_object("top1.a" ) == &top1.a ); 98 ASSERT(sc_find_object("top1.d" ) == &top1.d ); 99 ASSERT(sc_find_object("top1.a.b" ) == &top1.a.b ); 100 ASSERT(sc_find_object("top1.a.b.d1") == &top1.a.b.d1); 101 ASSERT(sc_find_object("top1.a.b.d2") == &top1.a.b.d2); 102 ASSERT(sc_find_object("top1.a.b.c" ) == &top1.a.b.c ); 103 ASSERT(sc_find_object("top1.a.c" ) == &top1.a.c ); 104 ASSERT(sc_find_object("top1.c" ) == NULL ); 105 ASSERT(sc_find_object("top1" )->get_parent_object() == NULL); 106 ASSERT(sc_find_object("top1.a" )->get_parent_object() == &top1); 107 ASSERT(sc_find_object("top1.a.b" )->get_parent_object() == &top1.a); 108 ASSERT(sc_find_object("top1.a.b.d2")->get_parent_object() == &top1.a.b); 109 ASSERT(sc_find_object("top1.d" )->get_parent_object() == &top1); 110 ASSERT(sc_find_object("top2.b1" )->get_parent_object() == &top2); 111 ASSERT(sc_find_object("top2.b2" )->get_parent_object() == &top2); 112 ASSERT(sc_find_object("top2.c" )->get_parent_object() == &top2); 113 ASSERT(sc_find_object("top2.b1.c" )->get_parent_object() == &top2.b1); 114 115 o.close(); 116 117 return 0; 160 118 } 161 119 120 121 /* 122 # Local Variables: 123 # tab-width: 4; 124 # c-basic-offset: 4; 125 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 126 # indent-tabs-mode: nil; 127 # End: 128 # 129 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 130 */ 131 -
sources/test_regression/16062005b/Makefile
r15 r55 1 include ../env.mk2 1 3 SYSTEM = system.cpp system2.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 2 include ../16062005a/Makefile 10 3 11 .SECONDARY:12 4 13 main : $(EXE_SCASS)14 15 test : main16 ./system_systemcass.x object_hierarchy1.txt17 diff object_hierarchy1_reference.txt object_hierarchy1.txt18 ./system2_systemcass.x object_hierarchy2.txt19 diff object_hierarchy2_reference.txt object_hierarchy2.txt20 @echo Test OK.21 22 %.gif : %.dot23 dot -Tgif -o $*.gif $*.dot24 25 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)26 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)27 28 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)29 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)30 31 -include Makefile.deps32 33 %_systemc.cpp : %.cpp34 ln -s $*.cpp $*_systemc.cpp35 36 %_systemcass.cpp : %.cpp37 ln -s $*.cpp $*_systemcass.cpp38 39 %_systemc.o : %_systemc.cpp40 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps41 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o42 43 %_systemcass.o : %_systemcass.cpp44 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps45 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o46 47 clean :48 rm -f Makefile.deps49 -rm -f *.o gmon.out *~50 -rm -f ${LOG}51 -rm -f signal_order.txt module_order.dot signal_graph.dot52 -rm -f module_order.gif signal_graph.gif53 -rm -f $(EXE) $(OBJECTS)54 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null55 -rm -f core*56 -rm -rf generated_by_systemcass57 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd58 -
sources/test_regression/16062005b/object_hierarchy_ref.txt
r51 r55 1 clock sc_clock 2 top1.a.b.d1 sc_object 3 top1.a.b.d2 sc_object 4 top1.a.b.c sc_object 5 top1.a.b sc_object 6 top1.a.c sc_object 7 top1.a sc_object 8 top1.d sc_object 9 top1 sc_object 10 top2.b1.d1 sc_object 11 top2.b1.d2 sc_object 12 top2.b1.c sc_object 13 top2.b1 sc_object 14 top2.b2.d1 sc_object 15 top2.b2.d2 sc_object 16 top2.b2.c sc_object 17 top2.b2 sc_object 18 top2.c sc_object 19 top2 sc_object 1 Top level : 2 s_clk, noname_0, noname_1, noname_2, noname_3, m, top_level_module 3 4 Child of "m" : 5 m.i_bool, m.i_int, m.i_sc_int17, m.o_int, m.o_sc_uint38, m.reg_lv8, m.reg_int, m.reg_uint, m.reg_sc_uint3, m.reg_sc_int31, m.noname_4, m.intern_module_of_moldu 6 7 Child of "m.intern_module_of_moldu" : 8 m.intern_module_of_moldu.noname_5 9 10 Child of "top_level_module" : 11 top_level_module.noname_6 -
sources/test_regression/16062005b/system.cpp
r1 r55 1 #include "systemc.h" 1 2 2 #include <iostream> 3 3 #include <fstream> 4 4 #include <vector> 5 5 6 #define ASSERT(x) { if (!(x)) { \ 7 cerr << "ASSERT : " #x \ 8 << " in function '" << __FUNCTION__ \ 9 << "'\n"; exit (-1); \ 10 } \ 11 } 12 6 #include "systemc.h" 7 #include "test.h" 13 8 14 9 using namespace std; 15 10 16 struct D : sc_module 17 { 18 D (sc_module_name) 19 { 20 } 11 12 struct intramoldu : sc_module { 13 sc_signal<long> reg_long; 14 intramoldu(sc_module_name n) {} 21 15 }; 22 16 23 struct C : sc_module 24 { 25 C (sc_module_name) 26 { 27 } 17 18 19 struct moldu : sc_module { 20 sc_in<bool> i_bool; 21 sc_in<int > i_int; 22 sc_in<sc_int<17> > i_sc_int17; 23 sc_out<int > o_int; 24 sc_out<sc_uint<38> > o_sc_uint38; 25 sc_signal<sc_lv<8> > reg_lv8; 26 sc_signal<int> reg_int; 27 sc_signal<unsigned int> reg_uint; 28 sc_signal<sc_uint<3> > reg_sc_uint3; 29 sc_signal<sc_int<31> > reg_sc_int31; 30 sc_in_clk i_clk; 31 intramoldu microarchitecture; 32 moldu(sc_module_name n) : 33 i_bool ("i_bool"), 34 i_int ("i_int"), 35 i_sc_int17 ("i_sc_int17"), 36 o_int ("o_int"), 37 o_sc_uint38("o_sc_uint38"), 38 reg_lv8 ("reg_lv8"), 39 reg_int ("reg_int"), 40 reg_uint ("reg_uint"), 41 reg_sc_uint3 ("reg_sc_uint3"), 42 reg_sc_int31 ("reg_sc_int31"), 43 microarchitecture ("intern_module_of_moldu") {} 28 44 }; 29 45 30 struct B : sc_module31 {32 D d1;33 D d2;34 C c;35 B (sc_module_name) : d1("d1"), d2("d2"), c("c")36 {37 }38 };39 46 40 struct A : sc_module 41 { 42 B b; 43 C c; 44 A (sc_module_name) : b("b"), c("c") 45 { 46 } 47 }; 48 49 struct top_level1 : sc_module 50 { 51 A a; 52 D d; 53 top_level1(sc_module_name) : a("a"), d("d") 54 { 55 } 56 }; 57 58 struct top_level2 : sc_module 59 { 60 B b1; 61 B b2; 62 C c; 63 top_level2(sc_module_name) : b1("b1"), b2("b2"), c("c") 64 { 65 } 66 }; 67 68 void 69 dump_hierarchy (ostream &o, sc_object *obj) 70 { 71 const std::vector<sc_object*> &children = obj->get_child_objects(); 72 for (unsigned i = 0; i < children.size(); i++) 73 if (children[i]) 74 dump_hierarchy (o,children[i]); 75 o << obj->name () << " " << obj->kind() << endl; 47 void dump_objects (ofstream & o, const vector<sc_object *> & obj_list) { 48 for (unsigned i = 0; i < obj_list.size(); i++) { 49 const sc_object * obj = obj_list[i]; 50 if (obj == NULL) { 51 o << "\nError : NULL pointer in objects list !\n"; 52 } 53 else { 54 o << ((i != 0) ? ", " : "") << obj->name(); 55 } 56 } 57 o << "\n"; 76 58 } 77 59 78 void 79 dump_hierarchy (ostream &o, const std::vector<sc_object*> &obj_list) 80 { 81 for (unsigned i = 0; i < obj_list.size(); i++) 82 dump_hierarchy(o, obj_list[i]); 60 61 int sc_main (int argc, char ** argv) { 62 if (argc < 2) { 63 cerr << "Usage : " << argv[0] << " <filename>\n"; 64 exit(-1); 65 } 66 67 ofstream o; 68 o.open (argv[1], ios::out | ios::trunc); 69 if (!o.is_open()) { 70 cerr << "Unable to open '" << argv[1] << "'.\n"; 71 return 1; 72 } 73 74 sc_clock s_clk("s_clk"); 75 sc_signal<bool> s_bool; 76 sc_signal<int> s_int; 77 sc_signal< sc_int<17> > s_sc_int17; 78 sc_signal< sc_uint<38> > s_sc_uint38; 79 moldu m("m"); 80 intramoldu microarchitecture("top_level_module"); 81 m.i_clk(s_clk); 82 m.i_bool(s_bool); 83 m.i_int(s_int); 84 m.i_sc_int17(s_sc_int17); 85 m.o_int(s_int); 86 m.o_sc_uint38(s_sc_uint38); 87 88 sc_start(sc_time(0, sc_core::SC_NS)); 89 o << "Top level :\n"; 90 dump_objects(o, sc_get_top_level_objects()); 91 o << "\nChild of \"m\" :\n"; 92 dump_objects(o, m.get_child_objects()); 93 o << "\nChild of \"m.intern_module_of_moldu\" :\n"; 94 dump_objects(o, m.microarchitecture.get_child_objects()); 95 o << "\nChild of \"top_level_module\" :\n"; 96 dump_objects(o, microarchitecture.get_child_objects()); 97 98 o.close(); 99 100 return 0; 83 101 } 84 102 85 int86 sc_main (int argc, char ** argv)87 {88 if (argc < 2)89 {90 cerr << "Usage : " << argv[0] << " <filename>\n";91 exit (-1);92 }93 103 94 sc_clock clk("clock"); 95 top_level1 top1("top1"); 96 top_level2 top2("top2"); 97 98 ofstream o; 99 o.open (argv[1],ios::out | ios::trunc); 100 if (o.is_open () == false) 101 { 102 cerr << "Unable to open '" << argv[1] << "'.\n"; 103 return 1; 104 } 104 /* 105 # Local Variables: 106 # tab-width: 4; 107 # c-basic-offset: 4; 108 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 109 # indent-tabs-mode: nil; 110 # End: 111 # 112 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 113 */ 105 114 106 sc_start(0);107 dump_hierarchy (o,sc_get_top_level_objects());108 109 ASSERT(sc_find_object("top2.b1" ) == &top2.b1 );110 ASSERT(sc_find_object("top2.b1.d1" ) == &top2.b1.d1 );111 ASSERT(sc_find_object("top2.b1.d2" ) == &top2.b1.d2 );112 ASSERT(sc_find_object("top2.b1.c" ) == &top2.b1.c );113 ASSERT(sc_find_object("top2.b2" ) == &top2.b2 );114 ASSERT(sc_find_object("top2.c" ) == &top2.c );115 ASSERT(sc_find_object("top1.a" ) == &top1.a );116 ASSERT(sc_find_object("top1.d" ) == &top1.d );117 ASSERT(sc_find_object("top1.a.b" ) == &top1.a.b );118 ASSERT(sc_find_object("top1.a.b.d1") == &top1.a.b.d1);119 ASSERT(sc_find_object("top1.a.b.d2") == &top1.a.b.d2);120 ASSERT(sc_find_object("top1.a.b.c" ) == &top1.a.b.c );121 ASSERT(sc_find_object("top1.a.c" ) == &top1.a.c );122 ASSERT(sc_find_object("top1.c" ) == NULL );123 ASSERT(sc_find_object("top1" )->get_parent_object() == NULL);124 ASSERT(sc_find_object("top1.a" )->get_parent_object() == &top1);125 ASSERT(sc_find_object("top1.a.b" )->get_parent_object() == &top1.a);126 ASSERT(sc_find_object("top1.a.b.d2")->get_parent_object() == &top1.a.b);127 ASSERT(sc_find_object("top1.d" )->get_parent_object() == &top1);128 ASSERT(sc_find_object("top2.b1" )->get_parent_object() == &top2);129 ASSERT(sc_find_object("top2.b2" )->get_parent_object() == &top2);130 ASSERT(sc_find_object("top2.c" )->get_parent_object() == &top2);131 ASSERT(sc_find_object("top2.b1.c" )->get_parent_object() == &top2.b1);132 #if 0133 o << sc_find_object("top2.b1.d1")->name() << endl;134 o << sc_find_object("top2.b1.d2")->name() << endl;135 o << sc_find_object("top2.b1.c")->name() << endl;136 o << sc_find_object("top2.b2")->name() << endl;137 o << sc_find_object("top2.c")->name() << endl;138 o << sc_find_object("top1.a")->name() << endl;139 o << sc_find_object("top1.d")->name() << endl;140 o << sc_find_object("top1.a.b")->name() << endl;141 o << sc_find_object("top1.a.b.d1")->name() << endl;142 o << sc_find_object("top1.a.b.d2")->name() << endl;143 o << sc_find_object("top1.a.b.c")->name() << endl;144 o << sc_find_object("top1.a.c")->name() << endl;145 if (sc_find_object("top1.c") == NULL)146 o << "top1.c not found.\n";147 else148 o << "top1.c found.\n";149 o << sc_find_object("top2.b1.c")->get_parent_object()->name () << endl;150 o << sc_find_object("top1.a")->get_parent_object()->name () << endl;151 if (top1.get_parent_object() == NULL)152 o << "top1 has no parent.\n";153 else154 o << "top1 has a parent.\n";155 #endif156 157 o.close ();158 159 return 0;160 }161 -
sources/test_regression/16112005a/Makefile
r15 r55 1 1 include ../env.mk 2 include ../Makefile.common 2 3 3 SYSTEM = system.cpp system2.cpp system3.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 4 test : all 5 @echo -ne "| Testing $$(basename $$(pwd)): " ; 6 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 7 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 8 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 9 echo "OK" ; \ 10 else echo "KO" ; \ 11 fi ; 10 12 11 .SECONDARY:12 13 13 main : $(EXE) 14 15 test : main 16 ./system_systemcass.x || eval ${failcom} ; \ 14 #./system_systemcass.x || eval ${failcom} ; \ 17 15 ./system2_systemcass.x ; \ 18 16 if [ $$? -ne 29 ] ; then eval ${failcom} ; fi ; \ … … 21 19 echo Test OK. 22 20 23 %.gif : %.dot24 dot -Tgif -o $*.gif $*.dot25 26 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)27 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)28 29 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)30 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)31 32 -include Makefile.deps33 34 %_systemc.cpp : %.cpp35 ln -s $*.cpp $*_systemc.cpp36 37 %_systemcass.cpp : %.cpp38 ln -s $*.cpp $*_systemcass.cpp39 40 %_systemc.o : %_systemc.cpp41 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o43 44 %_systemcass.o : %_systemcass.cpp45 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps46 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o47 48 clean :49 rm -f Makefile.deps50 -rm -f *.o gmon.out *~51 -rm -f ${LOG}52 -rm -f signal_order.txt module_order.dot signal_graph.dot53 -rm -f module_order.gif signal_graph.gif54 -rm -f $(EXE) $(OBJECTS)55 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null56 -rm -f core*57 -rm -rf generated_by_systemcass58 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd59 -
sources/test_regression/16112005a/system.cpp
r35 r55 1 #include <systemc.h> 1 2 2 #include <iostream> 3 3 #include <string> 4 4 5 #define ASSERT(x) \ 6 { errnum++; \ 7 if (!(x)) \ 8 { \ 9 cerr << "ASSERT : " #x "\n"; \ 10 exit (errnum); \ 11 } \ 12 } 5 #include "systemc.h" 6 #include "test.h" 7 13 8 14 9 using namespace std; 15 10 16 static int errnum = 0;17 11 18 struct internal_model : sc_module 19 { 20 sc_in<int> i; 21 sc_out<int> o; 22 internal_model (sc_module_name n) : sc_module (n), 23 i("i"), 24 o("o") 25 { 26 } 12 struct internal_model : sc_module { 13 sc_in<int> i; 14 sc_out<int> o; 15 internal_model (sc_module_name n) : sc_module (n), i("i"), o("o") {} 27 16 }; 28 17 29 struct model : sc_module30 {31 sc_in<int> i1, i2, i3;32 sc_out<int> o1, o2, o3;33 sc_signal<int> r1, r2;34 internal_model internal;35 18 36 model (sc_module_name n) : sc_module (n), 19 struct model : sc_module { 20 sc_in<int> i1, i2, i3; 21 sc_out<int> o1, o2, o3; 22 sc_signal<int> r1, r2; 23 internal_model internal; 24 25 model(sc_module_name n) : sc_module(n), 37 26 i1("i1"), i2("i2"), i3("i3"), 38 27 o1("o1"), o2("o2"), o3("o3"), 39 28 r1("r1"), r2("r2"), 40 29 internal ("internal") 41 { 42 internal.o (o3); 43 internal.i (i3); 44 // o3 (internal.o); 45 } 30 { 31 internal.o(o3); 32 internal.i(i3); 33 } 46 34 }; 47 35 48 int49 sc_main (int argc, char ** argv)50 {51 model m("m");52 sc_clock clk ("clock");53 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4");54 36 55 m.i1 (s1); 56 m.i2 (s1); // 57 m.i3 (s1); 58 m.o1 (s4); // 59 m.o2 (s2); 60 m.o3 (s3); 37 int sc_main (int argc, char ** argv) { 38 model m("m"); 39 sc_clock clk("clock"); 40 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4"); 61 41 62 sc_start (0); 42 m.i1 (s1); 43 m.i2 (s1); 44 m.i3 (s1); 45 m.o1 (s4); 46 m.o2 (s2); 47 m.o3 (s3); 63 48 64 sc_start (1); 65 sc_start (10); 49 sc_start(sc_time(0, sc_core::SC_NS)); 66 50 67 cerr << "Test OK.\n"; 68 return 0; 51 sc_start(sc_time(1, sc_core::SC_NS)); 52 sc_start(sc_time(10, sc_core::SC_NS)); 53 54 cout << "OK" << endl; 55 56 return 0; 69 57 } 70 58 59 60 /* 61 # Local Variables: 62 # tab-width: 4; 63 # c-basic-offset: 4; 64 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 65 # indent-tabs-mode: nil; 66 # End: 67 # 68 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 69 */ 70 -
sources/test_regression/16112005b/Makefile
r15 r55 1 1 include ../env.mk 2 include ../Makefile.common 2 3 3 SYSTEM = system.cpp system2.cpp system3.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 4 test : $(EXE_SCASS) 5 @echo -ne "| Testing $$(basename $$(pwd)): " ; 6 @./$(EXE_SCASS) 2> /dev/null ; \ 7 if [ $$? -ne 29 ] ; then echo "KO" ; else echo "OK" ; fi 10 8 11 .SECONDARY:12 9 13 main : $(EXE)14 15 test : main16 ./system_systemcass.x || eval ${failcom} ; \17 ./system2_systemcass.x ; \18 if [ $$? -ne 29 ] ; then eval ${failcom} ; fi ; \19 ./system3_systemcass.x ; \20 if [ $$? -ne 29 ] ; then eval ${failcom} ; fi ; \21 echo Test OK.22 23 %.gif : %.dot24 dot -Tgif -o $*.gif $*.dot25 26 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)27 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)28 29 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)30 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)31 32 -include Makefile.deps33 34 %_systemc.cpp : %.cpp35 ln -s $*.cpp $*_systemc.cpp36 37 %_systemcass.cpp : %.cpp38 ln -s $*.cpp $*_systemcass.cpp39 40 %_systemc.o : %_systemc.cpp41 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o43 44 %_systemcass.o : %_systemcass.cpp45 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps46 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o47 48 clean :49 rm -f Makefile.deps50 -rm -f *.o gmon.out *~51 -rm -f ${LOG}52 -rm -f signal_order.txt module_order.dot signal_graph.dot53 -rm -f module_order.gif signal_graph.gif54 -rm -f $(EXE) $(OBJECTS)55 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null56 -rm -f core*57 -rm -rf generated_by_systemcass58 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd59 -
sources/test_regression/16112005b/system.cpp
r35 r55 1 #include <systemc.h> 1 2 2 #include <iostream> 3 3 #include <string> 4 4 5 #define ASSERT(x) \ 6 { errnum++; \ 7 if (!(x)) \ 8 { \ 9 cerr << "ASSERT : " #x "\n"; \ 10 exit (errnum); \ 11 } \ 12 } 5 #include "systemc.h" 6 #include "test.h" 7 13 8 14 9 using namespace std; 15 10 16 static int errnum = 0;17 11 18 struct internal_model : sc_module 19 { 20 sc_in<int> i; 21 sc_out<int> o; 22 internal_model (sc_module_name n) : sc_module (n), 23 i("i"), 24 o("o") 25 { 26 } 12 struct internal_model : sc_module { 13 sc_in<int> i; 14 sc_out<int> o; 15 internal_model (sc_module_name n) : sc_module (n), i("i"), o("o") {} 27 16 }; 28 17 29 struct model : sc_module30 {31 sc_in<int> i1, i2, i3;32 sc_out<int> o1, o2, o3;33 sc_signal<int> r1, r2;34 internal_model internal;35 18 36 model (sc_module_name n) : sc_module (n), 19 struct model : sc_module { 20 sc_in<int> i1, i2, i3; 21 sc_out<int> o1, o2, o3; 22 sc_signal<int> r1, r2; 23 internal_model internal; 24 model(sc_module_name n) : sc_module (n), 37 25 i1("i1"), i2("i2"), i3("i3"), 38 26 o1("o1"), o2("o2"), o3("o3"), 39 27 r1("r1"), r2("r2"), 40 internal ("internal") 41 { 42 internal.o (o3); 43 internal.i (i3); 44 // o3 (internal.o); 45 } 28 internal("internal") { 29 internal.o (o3); 30 internal.i (i3); 31 } 46 32 }; 47 33 48 int49 sc_main (int argc, char ** argv)50 {51 model m("m");52 sc_clock clk ("clock");53 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4");54 34 55 m.i1 (s1); 56 m.i2 (s1); // 57 m.i3 (s1); 58 m.o1 (s4); // 59 m.o2 (s2); 60 m.o3 (s3); 35 int sc_main (int argc, char ** argv) { 36 model m("m"); 37 sc_clock clk("clock"); 38 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4"); 61 39 62 sc_start (0); 40 m.i1(s1); 41 m.i3(s1); 42 m.o1(s4); 43 m.o2(s2); 44 m.o3(s3); 63 45 64 sc_start (1); 65 sc_start (10); 46 sc_start(sc_time(0, sc_core::SC_NS)); 66 47 67 cerr << "Test OK.\n"; 68 return 0; 48 sc_start(sc_time(1, sc_core::SC_NS)); 49 sc_start(sc_time(10, sc_core::SC_NS)); 50 51 return 0; 69 52 } 70 53 54 55 /* 56 # Local Variables: 57 # tab-width: 4; 58 # c-basic-offset: 4; 59 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 60 # indent-tabs-mode: nil; 61 # End: 62 # 63 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 64 */ 65 -
sources/test_regression/16112005c/Makefile
r15 r55 1 1 include ../env.mk 2 include ../Makefile.common 2 3 3 SYSTEM = system.cpp system2.cpp system3.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 4 test : $(EXE_SCASS) 5 @echo -ne "| Testing $$(basename $$(pwd)): " ; 6 @./$(EXE_SCASS) 2> /dev/null ; \ 7 if [ $$? -ne 29 ] ; then echo "KO" ; else echo "OK" ; fi 10 8 11 .SECONDARY:12 9 13 main : $(EXE)14 15 test : main16 ./system_systemcass.x || eval ${failcom} ; \17 ./system2_systemcass.x ; \18 if [ $$? -ne 29 ] ; then eval ${failcom} ; fi ; \19 ./system3_systemcass.x ; \20 if [ $$? -ne 29 ] ; then eval ${failcom} ; fi ; \21 echo Test OK.22 23 %.gif : %.dot24 dot -Tgif -o $*.gif $*.dot25 26 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)27 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)28 29 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)30 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)31 32 -include Makefile.deps33 34 %_systemc.cpp : %.cpp35 ln -s $*.cpp $*_systemc.cpp36 37 %_systemcass.cpp : %.cpp38 ln -s $*.cpp $*_systemcass.cpp39 40 %_systemc.o : %_systemc.cpp41 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o43 44 %_systemcass.o : %_systemcass.cpp45 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps46 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o47 48 clean :49 rm -f Makefile.deps50 -rm -f *.o gmon.out *~51 -rm -f ${LOG}52 -rm -f signal_order.txt module_order.dot signal_graph.dot53 -rm -f module_order.gif signal_graph.gif54 -rm -f $(EXE) $(OBJECTS)55 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null56 -rm -f core*57 -rm -rf generated_by_systemcass58 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd59 -
sources/test_regression/16112005c/system.cpp
r35 r55 1 #include <systemc.h> 1 2 2 #include <iostream> 3 3 #include <string> 4 4 5 #define ASSERT(x) \ 6 { errnum++; \ 7 if (!(x)) \ 8 { \ 9 cerr << "ASSERT : " #x "\n"; \ 10 exit (errnum); \ 11 } \ 12 } 5 #include "systemc.h" 6 #include "test.h" 7 13 8 14 9 using namespace std; 15 10 16 static int errnum = 0;17 11 18 struct internal_model : sc_module 19 { 20 sc_in<int> i; 21 sc_out<int> o; 22 internal_model (sc_module_name n) : sc_module (n), 23 i("i"), 24 o("o") 25 { 26 } 12 struct internal_model : sc_module { 13 sc_in<int> i; 14 sc_out<int> o; 15 internal_model(sc_module_name n) : sc_module(n), i("i"), o("o") {} 27 16 }; 28 17 29 struct model : sc_module30 {31 sc_in<int> i1, i2, i3;32 sc_out<int> o1, o2, o3;33 sc_signal<int> r1, r2;34 internal_model internal;35 18 36 model (sc_module_name n) : sc_module (n), 19 struct model : sc_module { 20 sc_in<int> i1, i2, i3; 21 sc_out<int> o1, o2, o3; 22 sc_signal<int> r1, r2; 23 internal_model internal; 24 model(sc_module_name n) : sc_module (n), 37 25 i1("i1"), i2("i2"), i3("i3"), 38 26 o1("o1"), o2("o2"), o3("o3"), 39 27 r1("r1"), r2("r2"), 40 internal ("internal") 41 { 42 internal.o (o3); 43 internal.i (i3); 44 // o3 (internal.o); 45 } 28 internal("internal") { 29 internal.o (o3); 30 internal.i (i3); 31 } 46 32 }; 47 33 48 int49 sc_main (int argc, char ** argv)50 {51 model m("m");52 sc_clock clk ("clock");53 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4");54 34 55 m.i1 (s1); 56 m.i2 (s1); // 57 m.i3 (s1); 58 m.o1 (s4); // 59 m.o2 (s2); 60 m.o3 (s3); 35 int sc_main (int argc, char ** argv) { 36 model m("m"); 37 sc_clock clk("clock"); 38 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4"); 61 39 62 sc_start (0); 40 m.i1 (s1); 41 m.i2 (s1); 42 m.i3 (s1); 43 m.o2 (s2); 44 m.o3 (s3); 63 45 64 sc_start (1); 65 sc_start (10); 46 sc_start(sc_time(0, sc_core::SC_NS)); 66 47 67 cerr << "Test OK.\n"; 68 return 0; 48 sc_start(sc_time(1, sc_core::SC_NS)); 49 sc_start(sc_time(10, sc_core::SC_NS)); 50 51 cerr << "Test OK.\n"; 52 53 return 0; 69 54 } 70 55 56 57 /* 58 # Local Variables: 59 # tab-width: 4; 60 # c-basic-offset: 4; 61 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 62 # indent-tabs-mode: nil; 63 # End: 64 # 65 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 66 */ 67 -
sources/test_regression/16122005/Makefile
r15 r55 1 1 2 include ../env.mk 3 RESULTS = results.txt 4 ERASE = $(RESULTS) 5 include ../Makefile.common 2 6 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 OBJECTS = $(EXE:.x=.o) 8 LINKS = $(OBJECTS:.o=.cpp) 7 RESULTS_REF = results_ref.txt 9 8 10 .SECONDARY: 9 test : $(EXE_SCASS) 10 @echo -ne "| Testing $$(basename $$(pwd)): " ; 11 @./$(EXE_SCASS) 2> /dev/null 12 @if diff $(RESULTS) $(RESULTS_REF) > /dev/null ; then \ 13 echo "OK" ; \ 14 else echo "KO" ; \ 15 fi ; 11 16 12 main : $(EXE)13 17 14 test : main15 ./system_systemcass.x16 diff results.txt results_reference.txt17 @echo Test OK.18 18 19 %.gif : %.dot20 dot -Tgif -o $*.gif $*.dot21 22 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)23 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)24 25 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)26 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)27 28 -include Makefile.deps29 30 %_systemc.cpp : %.cpp31 ln -s $*.cpp $*_systemc.cpp32 33 %_systemcass.cpp : %.cpp34 ln -s $*.cpp $*_systemcass.cpp35 36 %_systemc.o : %_systemc.cpp37 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps38 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o39 40 %_systemcass.o : %_systemcass.cpp41 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o43 44 clean :45 rm -f Makefile.deps46 -rm -f *.o gmon.out *~47 -rm -f results.txt48 -rm -f signal_order.txt module_order.dot signal_graph.dot49 -rm -f module_order.gif signal_graph.gif50 -rm -f $(EXE) $(OBJECTS)51 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null52 -rm -f core*53 -rm -rf generated_by_systemcass54 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd55 -
sources/test_regression/16122005/system.cpp
r35 r55 1 #include <systemc.h> 1 2 2 #include <iostream> 3 3 #include <fstream> … … 5 5 #include <cstring> //strcmp 6 6 7 #define ASSERT(x) { if (!(x)) { \ 8 cerr << "ASSERT : " #x \ 9 << " in function '" << __FUNCTION__ \ 10 << "'\n"; exit (-1); \ 11 } \ 12 } 7 #include <systemc.h> 8 #include "test.h" 13 9 14 10 15 11 using namespace std; 16 12 17 struct D : sc_module 18 { 19 D (sc_module_name n) 20 { 21 } 13 14 struct D : sc_module { 15 D (sc_module_name n) {} 22 16 }; 23 17 24 struct C : sc_module 25 { 26 C (sc_module_name n) 27 { 28 } 18 19 struct C : sc_module { 20 C(sc_module_name n) {} 29 21 }; 30 22 31 struct B : sc_module 32 { 33 D d1; 34 D d2; 35 C c; 36 B (sc_module_name n) : d1("d1"), d2("d2"), c("c") 37 { 38 } 23 24 struct B : sc_module { 25 D d1; 26 D d2; 27 C c; 28 B(sc_module_name n) : d1("d1"), d2("d2"), c("c") {} 39 29 }; 40 30 41 struct A : sc_module 42 { 43 B b; 44 C c; 45 A (sc_module_name n) : b("b"), c("c") 46 { 47 } 31 32 struct A : sc_module { 33 B b; 34 C c; 35 A(sc_module_name n) : b("b"), c("c") {} 48 36 }; 49 37 50 struct top_level1 : sc_module 51 { 52 A a; 53 D d; 54 top_level1(sc_module_name insname) : sc_module (insname), a("a"), d("d") 55 { 56 ASSERT(strcmp ((const char*)insname,"top1") == 0); 57 } 38 39 struct top_level1 : sc_module { 40 A a; 41 D d; 42 top_level1(sc_module_name insname) : sc_module (insname), a("a"), d("d") { 43 ASSERT(strcmp((const char *) insname, "top1") == 0); 44 } 58 45 }; 59 46 60 struct top_level2 : sc_module 61 { 62 B b1; 63 B b2; 64 C c; 65 top_level2(sc_module_name insname) : b1("b1"), b2("b2"), c("c") 66 { 67 ASSERT(strcmp ((const char*)insname,"top2") == 0); 68 ofstream o; 69 o.open ("results.txt"); 70 o << (const char*)insname << endl; 71 o << insname << endl; 72 o.close (); 73 } 47 48 struct top_level2 : sc_module { 49 B b1; 50 B b2; 51 C c; 52 top_level2(sc_module_name insname) : b1("b1"), b2("b2"), c("c") { 53 ASSERT(strcmp ((const char *) insname, "top2") == 0); 54 ofstream o; 55 o.open("results.txt"); 56 o << (const char *) insname << endl; 57 o << insname << endl; 58 o.close(); 59 } 74 60 }; 75 61 76 int77 sc_main (int argc, char ** argv)78 {79 if (argc < 1)80 {81 cerr << "Usage : " << argv[0] << "\n";82 exit (-1);83 }84 62 85 sc_clock clk("clock"); 86 top_level1 top1("top1"); 87 top_level2 top2("top2"); 63 int sc_main (int argc, char ** argv) { 64 if (argc < 1) { 65 cerr << "Usage : " << argv[0] << "\n"; 66 exit(-1); 67 } 88 68 89 sc_start(0); 69 sc_clock clk("clock"); 70 top_level1 top1("top1"); 71 top_level2 top2("top2"); 90 72 91 return 0; 73 sc_start(sc_time(0, sc_core::SC_NS)); 74 75 return 0; 92 76 } 93 77 78 79 /* 80 # Local Variables: 81 # tab-width: 4; 82 # c-basic-offset: 4; 83 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 84 # indent-tabs-mode: nil; 85 # End: 86 # 87 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 88 */ 89 -
sources/test_regression/17022006/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SOCVIEW_INC = ${SOCVIEW}/include 4 SOCVIEW_LIB = ${SOCVIEW}/lib-linux/libsystemc.a 5 CFLAGS_SOCVIEW = ${CFLAGS} -DSOCVIEW -I${SOCVIEW_INC} 6 LFLAGS_SOCVIEW = ${LFLAGS} -ltermcap -lreadline ${SOCVIEW_LIB} 5 test : all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo "OK" ; \ 11 else echo "KO" ; \ 12 fi ; 7 13 8 SYSTEM = system.cpp9 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x)10 EXE_SC = $(SYSTEM:.cpp=_systemc.x)11 EXE_SVIEW = $(SYSTEM:.cpp=_socview.x)12 EXE = ${EXE_SCASS} ${EXE_SVIEW} ${EXE_SC}13 OBJECTS = $(EXE:.x=.o)14 LINKS = $(OBJECTS:.o=.cpp)15 14 16 TEST1_DAT = \17 test_socview_1.dat test_socview_1_reloaded.dat \18 test_socview_2.dat test_socview_2_reloaded.dat \19 test_socview_3.dat test_socview_3_reloaded.dat \20 test_socview_3b.dat test_socview_3_reloaded_bis.dat \21 test_socview_4.dat test_socview_4_reloaded.dat \22 test_socview_5.dat test_socview_5_reloaded.dat \23 test_socview_6.dat test_socview_6_reloaded.dat \24 test_socview_7.dat test_socview_7_reloaded.dat \25 test_socview_8.dat test_socview_8_reloaded.dat \26 test_socview_9.dat test_socview_9_reloaded.dat \27 test_socview_10.dat test_socview_10_reloaded.dat \28 test_socview_10b.dat \29 30 TEST2_DAT = test2_socview_10.dat \31 test2_socview_24a.dat test2_socview_24b.dat test2_socview_24c.dat \32 test2_socview_20a.dat test2_socview_20b.dat test2_systemcass_20.dat33 34 .SECONDARY:35 36 main : $(EXE)37 38 test : system_systemc.x system_systemcass.x system_socview.x39 ./system_systemc.x ; ./system_systemcass.x ; ./system_socview.x40 41 %.gif : %.dot42 dot -Tgif -o $*.gif $*.dot43 44 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)45 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC)46 47 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)48 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS)49 50 %_socview.x : %_socview.o $(SOCVIEW_LIB)51 $(CXX) -o $@ $*_socview.o $(LFLAGS_SOCVIEW)52 53 -include Makefile.deps54 55 %_systemc.cpp : %.cpp56 ln -s $*.cpp $*_systemc.cpp57 58 %_systemcass.cpp : %.cpp59 ln -s $*.cpp $*_systemcass.cpp60 61 %_socview.cpp : %.cpp62 ln -s $*.cpp $*_socview.cpp63 64 %_systemc.o : %_systemc.cpp65 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps66 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o67 68 %_systemcass.o : %_systemcass.cpp69 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps70 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o71 72 %_socview.o : %_socview.cpp73 $(CXX) $(CFLAGS_SOCVIEW) -MM $*_socview.cpp >> Makefile.deps74 $(CXX) $(CFLAGS_SOCVIEW) -c $*_socview.cpp -o $*_socview.o75 76 clean :77 rm -f Makefile.deps78 -rm -f *.o gmon.out *~79 -rm -f results80 -rm -f signal_order.txt module_order.dot signal_graph.dot81 -rm -f module_order.gif signal_graph.gif82 -rm -f $(EXE) $(OBJECTS)83 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null84 -rm -f core*85 -rm -rf generated_by_systemcass86 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd87 -
sources/test_regression/17022006/system.cpp
r1 r55 1 #include <systemc.h>2 1 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 2 #include <cstring> 3 4 #include "systemc.h" 5 #include "test.h" 6 11 7 12 8 using namespace std; 13 9 10 14 11 struct test : sc_module { 15 sc_in_clkclk;16 sc_in<int>i1;17 sc_in<bool>i2[4];18 sc_out<int>o1;19 sc_out<char>o2[3];12 sc_in_clk clk; 13 sc_in<int> i1; 14 sc_in<bool> i2[4]; 15 sc_out<int> o1; 16 sc_out<char> o2[3]; 20 17 21 sc_signal<bool>reg1;22 sc_signal<int>reg2;23 sc_signal<int>reg3;24 sc_signal<int>reg4[10];18 sc_signal<bool> reg1; 19 sc_signal<int> reg2; 20 sc_signal<int> reg3; 21 sc_signal<int> reg4[10]; 25 22 26 void trans () 27 { 28 } 23 void trans() {} 29 24 30 void gen () 31 { 32 } 25 void gen() {} 33 26 34 SC_HAS_PROCESS(test); 35 test (sc_module_name n) : sc_module (n), 27 SC_HAS_PROCESS(test); 28 29 test(sc_module_name n) : sc_module(n), 36 30 clk("clk"), 37 31 i1("i1"), … … 39 33 reg1("reg1"), 40 34 reg2("reg2"), 41 reg3("reg3") 42 { 43 SC_METHOD(trans); 44 sensitive << clk.pos(); 45 dont_initialize(); 46 SC_METHOD(gen); 47 sensitive << clk.neg(); 48 dont_initialize(); 35 reg3("reg3") { 36 SC_METHOD(trans); 37 sensitive << clk.pos(); 38 dont_initialize(); 39 40 SC_METHOD(gen); 41 sensitive << clk.neg(); 42 dont_initialize(); 43 49 44 #ifdef NONAME_RENAME 50 char str[100]; 51 for (int i=0; i<3; i++ ) { 52 sprintf(str,"o2_%d", i); 53 o2[i].rename(str); 45 char str[100]; 46 for (int i = 0; i < 3; i++) { 47 sprintf(str, "o2_%d", i); 48 o2[i].rename(str); 49 } 50 for (int i = 0; i < 4; i++) { 51 sprintf(str, "i2_%d", i); 52 i2[i].rename(str); 53 } 54 for (int i = 0; i < 10; i++) { 55 sprintf(str, "reg4_%d", i); 56 reg4[i].rename(str); 57 } 58 #endif 54 59 } 55 for (int i=0; i<4; i++ ) { 56 sprintf(str,"i2_%d", i); 57 i2[i].rename(str); 58 } 59 for (int i=0; i<10; i++ ) { 60 sprintf(str,"reg4_%d", i); 61 reg4[i].rename(str); 62 } 63 #endif 64 }; 60 65 61 }; 66 62 67 int sc_main (int argc, char *argv[])68 {69 int errnum = 0;70 sc_clock signal_clk("my_clock",1, 0.5);71 sc_signal<int> s01("s01");72 sc_signal<bool> s02_0("s02_0"), s02_1("s02_1"), s02_2("s02_2"), s02_3("s02_3");73 sc_signal<int> s03("s03");74 sc_signal<char> s04_0("s04_0"),s04_1("s04_1"),s04_2("s04_2");75 63 76 test test1("test1"); 77 test1.clk (signal_clk); 78 test1.i1 (s01); 79 test1.i2[0] (s02_0); 80 test1.i2[1] (s02_1); 81 test1.i2[2] (s02_2); 82 test1.i2[3] (s02_3); 83 test1.o1 (s03); 84 test1.o2[0] (s04_0); 85 test1.o2[1] (s04_1); 86 test1.o2[2] (s04_2); 64 int sc_main (int argc, char * argv[]) { 65 sc_clock signal_clk("my_clock"); 66 sc_signal<int> s01("s01"); 67 sc_signal<bool> s02_0("s02_0"), s02_1("s02_1"), s02_2("s02_2"), s02_3("s02_3"); 68 sc_signal<int> s03("s03"); 69 sc_signal<char> s04_0("s04_0"), s04_1("s04_1"), s04_2("s04_2"); 87 70 88 // Init & run 89 sc_start (0); 71 test test1("test1"); 72 test1.clk(signal_clk); 73 test1.i1(s01); 74 test1.i2[0](s02_0); 75 test1.i2[1](s02_1); 76 test1.i2[2](s02_2); 77 test1.i2[3](s02_3); 78 test1.o1(s03); 79 test1.o2[0](s04_0); 80 test1.o2[1](s04_1); 81 test1.o2[2](s04_2); 90 82 91 ASSERT(strcmp (test1.o1.name (), "test1.o1") == 0); 92 ASSERT(strcmp (test1.i1.name (), "test1.i1") == 0); 93 ASSERT(strcmp (test1.reg1.name (), "test1.reg1") == 0); 94 ASSERT(strcmp (test1.reg2.basename (), "reg2") == 0); 95 ASSERT(strcmp (test1.reg3.name (), "test1.reg3") == 0); 96 #if defined(NONAME_RENAME) 97 ASSERT(strcmp (test1.o2[1].name (), "test1.o2_1") == 0); 98 ASSERT(strcmp (test1.i2[2].basename (), "i2_2") == 0); 99 ASSERT(strcmp (test1.reg4[1].name (), "test1.reg4_1") == 0); 100 ASSERT(strcmp (test1.reg4[9].basename (), "reg4_9") == 0); 83 // Init & run 84 sc_start(sc_time(0, sc_core::SC_NS)); 85 86 ASSERT(strcmp(test1.o1.name(), "test1.o1") == 0); 87 ASSERT(strcmp(test1.i1.name(), "test1.i1") == 0); 88 ASSERT(strcmp(test1.reg1.name(), "test1.reg1") == 0); 89 ASSERT(strcmp(test1.reg2.basename(), "reg2") == 0); 90 ASSERT(strcmp(test1.reg3.name(), "test1.reg3") == 0); 91 92 #if defined(SYSTEMCASS_SPECIFIC) 93 ASSERT(strcmp(test1.o2[1].name(), "test1.o2_1") == 0); 94 ASSERT(strcmp(test1.i2[2].basename(), "i2_2") == 0); 95 ASSERT(strcmp(test1.reg4[1].name(), "test1.reg4_1") == 0); 96 ASSERT(strcmp(test1.reg4[9].basename(), "reg4_9") == 0); 101 97 #endif 102 return EXIT_SUCCESS; 98 99 cout << "OK" << endl; 100 101 return EXIT_SUCCESS; 103 102 } 104 103 105 104 #undef sc_inout 105 106 /* 107 # Local Variables: 108 # tab-width: 4; 109 # c-basic-offset: 4; 110 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 111 # indent-tabs-mode: nil; 112 # End: 113 # 114 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 115 */ 116 -
sources/test_regression/17032005/Makefile
r35 r55 1 1 2 include ../env.mk 3 TRACE1 = trace_file_scass.vcd 4 TRACE2 = trace_file_systemc.vcd 5 ERASE = $(TRACE1) $(TRACE2) 6 include ../Makefile.common 2 7 3 EXE = system_systemc.x system_systemcass.x 4 OBJECTS = $(EXE:.x=.o) 5 LINKS = $(OBJECTS:.o=.cpp) 8 TRACE = trace_file.vcd 9 TRACE_REF = trace_file_reference.vcd 6 10 7 .SECONDARY: 11 test: all 12 @echo -ne "| Testing $$(basename $$(pwd)): " ; 13 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 14 @mv $(TRACE) $(TRACE1) 15 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 16 @mv $(TRACE) $(TRACE2) 17 @if tail -n +8 $(TRACE1) | diff $(TRACE_REF) - > /dev/null ; then \ 18 if tail -n +8 $(TRACE2) | diff $(TRACE_REF) - > /dev/null ; then \ 19 echo "OK" ; \ 20 else \ 21 echo "KO" ; \ 22 fi ; \ 23 else \ 24 echo "KO" ; \ 25 fi ; 8 26 9 main : $(EXE)10 27 11 test : system-23.vcd system-23_reference.vcd12 -diff system-23.vcd system-23_reference.vcd13 @echo Test OK.14 28 15 system-23.vcd : system_systemcass.x16 ./system_systemcass.x --nodynamiclink system 2317 tail -n +8 system.vcd > system-23.vcd18 rm system.vcd19 20 system-23_reference.vcd : system_systemc.x21 ./system_systemc.x system 2322 tail -n +8 system.vcd > system-23_reference.vcd23 rm system.vcd24 25 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)26 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC)27 28 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)29 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS)30 31 -include Makefile.deps32 33 %_systemc.cpp : %.cpp34 ln -s $*.cpp $*_systemc.cpp35 36 %_systemcass.cpp : %.cpp37 ln -s $*.cpp $*_systemcass.cpp38 39 %_systemc.o : %_systemc.cpp40 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps41 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o42 43 %_systemcass.o : %_systemcass.cpp44 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps45 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o46 47 clean :48 rm -f Makefile.deps49 -rm -f *.o gmon.out50 -rm -f *.txt51 -rm -f $(EXE) $(OBJECTS)52 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null53 -rm -f core*54 -rm -f *~55 -rm -rf generated_by_systemcass56 -rm -rf trace_system_systemcass.x.vcd trace_system_systemc.x.vcd57 -rm -rf system-23.vcd58 -rm -rf system_systemcass.log59 -
sources/test_regression/17032005/system.cpp
r35 r55 1 #include <systemc.h>2 1 #include <signal.h> 3 2 #include <iostream> … … 5 4 #include <cstdlib> //exit 6 5 7 #define ASSERT(x) \ 8 { \ 9 if (!(x)) \ 10 { \ 11 cerr << "ASSERT : '" #x "' at cycle number " << sc_simulation_time () << "\n"; \ 12 exit (1); \ 13 } \ 14 } 6 #include "systemc.h" 7 #include "test.h" 15 8 16 9 using namespace std; 17 18 struct sc_test : public sc_module19 {20 sc_in<bool> clk;21 sc_in<bool> resetn;22 sc_signal<sc_uint<6> > ui6;23 sc_signal<sc_uint<16> > ui16;24 sc_signal<sc_uint<31> > ui31;25 sc_signal<sc_uint<32> > ui32;26 sc_signal<sc_uint<64> > ui64;27 sc_signal<sc_int<6> > i6;28 sc_signal<sc_int<16> > i16;29 sc_signal<sc_int<31> > i31;30 sc_signal<sc_int<32> > i32;31 sc_signal<sc_int<64> > i64;32 10 33 unsigned int ui6_c_type :6; 34 sc_uint<6> ui6_sc_uint; 35 // sc_signal<sc_biguint<64> > bui64; 36 // long long unsigned int bui64b; 37 // sc_signal<sc_biguint<96> > bui96; 11 struct sc_test : public sc_module { 12 sc_in<bool> clk; 13 sc_in<bool> resetn; 14 sc_signal<sc_uint<6> > ui6; 15 sc_signal<sc_uint<16> > ui16; 16 sc_signal<sc_uint<31> > ui31; 17 sc_signal<sc_uint<32> > ui32; 18 sc_signal<sc_uint<64> > ui64; 19 sc_signal<sc_int<6> > i6; 20 sc_signal<sc_int<16> > i16; 21 sc_signal<sc_int<31> > i31; 22 sc_signal<sc_int<32> > i32; 23 sc_signal<sc_int<64> > i64; 38 24 39 void eval () 40 { 41 if (resetn == false) 42 { 43 ui6 = 0xF; ui6_c_type = 0xF; ui6_sc_uint = 0xF; 44 ui16 = 0x3F; 45 ui31 = 0x100; 46 ui32 = 0x211; 47 ui64 = 0xABCF1234ULL; 48 i6 = 0xF; 49 i16 = 0x3F; 50 i31 = 0x11112222; 51 i32 = 0x43214321; 52 i64 = 0x4444abcdULL; 53 // bui64 = 0xFFFFFFFF; 54 // bui64b= 0xFFFFFFFF; 55 // bui96 = 0xABCDEF01; 56 } else { 57 cerr << hex << ui6.read () << " " 58 << ui6_c_type << " " 59 << ui6_sc_uint << endl; 60 ASSERT(ui6.read() == ui6_c_type); 61 ui6 = (ui6 .read() * 2) + 1; 62 ui6_c_type = (ui6_c_type * 2) + 1; 63 ui6_sc_uint = (ui6_sc_uint * 2) + 1; 64 ui16 = (ui16 .read() * 2) + 1; 65 ui31 = (ui31 .read() * 2) + 1; 66 ui32 = (ui32 .read() * 2) + 1; 67 ui64 = (ui64 .read() * 2) + 1; 68 i6 = (i6 .read() * 2) + 1; 69 i16 = (i16 .read() * 2) + 1; 70 i31 = (i31 .read() * 2) + 1; 71 i32 = (i32 .read() * 2) + 1; 72 i64 = (i64 .read() * 2) + 1; 73 // bui64 = (bui64 .read() * 2) + 1; 74 // bui64b= bui64b * 2; bui64b= bui64b + 1; 75 // bui96 = bui96 .read() * 2; bui96 = bui96 .read() + 1; 76 #if 0 77 cout << bui64.read() << " "; 78 cout << bui64b << "\n"; 79 #endif 25 unsigned int ui6_c_type : 6; 26 sc_uint<6> ui6_sc_uint; 27 28 void eval() { 29 if (resetn == false) { 30 ui6 = 0xF; ui6_c_type = 0xF; 31 ui6_sc_uint = 0xF; 32 ui16 = 0x3F; 33 ui31 = 0x100; 34 ui32 = 0x211; 35 ui64 = 0xABCF1234ULL; 36 i6 = 0xF; 37 i16 = 0x3F; 38 i31 = 0x11112222; 39 i32 = 0x43214321; 40 i64 = 0x4444abcdULL; 41 } 42 else { 43 cout << hex << ui6.read() << " " 44 << ui6_c_type << " " 45 << ui6_sc_uint << endl; 46 ASSERT(ui6.read() == ui6_c_type); 47 ui6 = (ui6.read() * 2) + 1; 48 ui6_c_type = (ui6_c_type * 2) + 1; 49 ui6_sc_uint = (ui6_sc_uint * 2) + 1; 50 ui16 = (ui16.read() * 2) + 1; 51 ui31 = (ui31.read() * 2) + 1; 52 ui32 = (ui32.read() * 2) + 1; 53 ui64 = (ui64.read() * 2) + 1; 54 i6 = (i6.read() * 2) + 1; 55 i16 = (i16.read() * 2) + 1; 56 i31 = (i31.read() * 2) + 1; 57 i32 = (i32.read() * 2) + 1; 58 i64 = (i64.read() * 2) + 1; 59 } 80 60 } 81 }82 61 83 SC_CTOR(sc_test)84 {85 SC_METHOD(eval);86 dont_initialize();87 sensitive << clk.pos();88 } 62 SC_CTOR(sc_test) { 63 SC_METHOD(eval); 64 sensitive << clk.pos(); 65 dont_initialize(); 66 } 67 89 68 }; 90 69 91 int sc_main (int argc, char *argv[])92 {93 int errnum = 1;94 cout << "Tests ok\n";95 sc_clock clk("clk");96 sc_signal<bool> resetn("resetn");97 98 sc_test test("test");99 test.clk (clk);100 test.resetn (resetn);101 102 sc_trace_file *tf;103 70 104 if (argc != 3) 105 { 106 cerr << "Usage : " << argv[0] << " <trace filename> <#cycles>\n"; 107 exit (-1); 108 } 71 int sc_main(int argc, char * argv[]) { 72 sc_clock clk("clk"); 73 sc_signal<bool> resetn("resetn"); 109 74 110 string trace_filename = argv[1]; 111 tf = sc_create_vcd_trace_file (trace_filename.c_str()); 112 sc_trace (tf, test.ui6 , "ui6" ); 113 sc_trace (tf, test.ui16 , "ui16" ); 114 sc_trace (tf, test.ui31 , "ui31" ); 115 sc_trace (tf, test.ui32 , "ui32" ); 116 sc_trace (tf, test.ui64 , "ui64" ); 117 sc_trace (tf, test.i6 , "i6" ); 118 sc_trace (tf, test.i16 , "i16" ); 119 sc_trace (tf, test.i31 , "i31" ); 120 sc_trace (tf, test.i32 , "i32" ); 121 sc_trace (tf, test.i64 , "i64" ); 122 sc_trace (tf, clk , "clk" ); 123 // sc_trace (tf, test.bui64, "bui64"); 124 // sc_trace (tf, test.bui96, "bui96"); 75 sc_test test("test"); 76 test.clk(clk); 77 test.resetn(resetn); 125 78 126 ASSERT(test.ui6.read() == 0); 127 ASSERT(test.ui31.read() == 0); 128 ASSERT(test.ui32.read() == 0); 129 ASSERT(test.ui64.read() == 0); 130 ASSERT(test.i6.read() == 0); 131 ASSERT(test.i64.read() == 0); 79 sc_trace_file * tf; 132 80 133 sc_initialize (); 81 tf = sc_create_vcd_trace_file("trace_file"); 82 sc_trace(tf, test.ui6 , "ui6"); 83 sc_trace(tf, test.ui16, "ui16"); 84 sc_trace(tf, test.ui31, "ui31"); 85 sc_trace(tf, test.ui32, "ui32"); 86 sc_trace(tf, test.ui64, "ui64"); 87 sc_trace(tf, test.i6, "i6"); 88 sc_trace(tf, test.i16, "i16"); 89 sc_trace(tf, test.i31, "i31"); 90 sc_trace(tf, test.i32, "i32"); 91 sc_trace(tf, test.i64, "i64"); 92 sc_trace(tf, clk, "clk"); 134 93 135 resetn = false; 136 137 sc_start (3); 138 resetn = true; 139 sc_start (20); 94 ASSERT(test.ui6.read() == 0); 95 ASSERT(test.ui31.read() == 0); 96 ASSERT(test.ui32.read() == 0); 97 ASSERT(test.ui64.read() == 0); 98 ASSERT(test.i6.read() == 0); 99 ASSERT(test.i64.read() == 0); 140 100 141 #if 1 142 cout << "0x3f" << " 0x" << hex << (unsigned int) (sc_uint<6> )test.ui6 << endl; 143 cout << "0x100fffff" << " 0x" << hex << (unsigned int) (sc_uint<31>)test.ui31 << endl; 144 cout << "0x211fffff" << " 0x" << hex << (unsigned int) (sc_uint<32>)test.ui32 << endl; 145 cout << "0xabcf1234fffff" << " 0x" << hex << (long long unsigned int) (sc_uint<64>)test.ui64 << endl; 101 sc_start(sc_time(0, sc_core::SC_NS)); 102 103 resetn = false; 104 105 sc_start(sc_time(3, sc_core::SC_NS)); 106 resetn = true; 107 sc_start(sc_time(20, sc_core::SC_NS)); 108 109 #if 0 110 cout << "0x3f" << " 0x" << hex << (unsigned int) (sc_uint<6> )test.ui6 << endl; 111 cout << "0x100fffff" << " 0x" << hex << (unsigned int) (sc_uint<31>)test.ui31 << endl; 112 cout << "0x211fffff" << " 0x" << hex << (unsigned int) (sc_uint<32>)test.ui32 << endl; 113 cout << "0xabcf1234fffff" << " 0x" << hex << (long long unsigned int) (sc_uint<64>)test.ui64 << endl; 146 114 #endif 147 cerr<< test.ui6.read() << endl;115 cout << test.ui6.read() << endl; 148 116 149 union t {150 int v1:3;151 int v2;152 };153 117 154 t t1,t2; 155 t1.v1 = 7; 156 cerr << t1.v1 << " " << t1.v2 << endl; 157 t2.v2 = 7; 158 cerr << t2.v1 << " " << t2.v2 << endl; 118 union t { 119 int v1:3; 120 int v2; 121 }; 159 122 160 ASSERT(test.ui6.read() == 0x3f);161 ASSERT(test.ui31.read() == 0x100fffff);162 ASSERT(test.ui32.read() == 0x211fffff);163 123 164 long long unsigned int ui64_reference = 0xabcf1234ULL; 165 ui64_reference <<= 20; 166 ui64_reference += 0xfffffULL; 124 t t1, t2; 125 t1.v1 = 7; 126 cout << t1.v1 << " " << t1.v2 << endl; 127 t2.v2 = 7; 128 cout << t2.v1 << " " << t2.v2 << endl; 129 130 ASSERT(test.ui6.read() == 0x3f); 131 ASSERT(test.ui31.read() == 0x100fffff); 132 ASSERT(test.ui32.read() == 0x211fffff); 133 134 long long unsigned int ui64_reference = 0xabcf1234ULL; 135 ui64_reference <<= 20; 136 ui64_reference += 0xfffffULL; 137 167 138 #if 0 168 cout << "0xffffffff" << " 0x" << hex << (int) (sc_int<6>)test.i6 << endl;169 cout << "0x222fffff" << " 0x" << hex << (int) (sc_int<31>)test.i31 << endl;170 cout << "0x321fffff" << " 0x" << hex << (int) (sc_int<32>)test.i32 << endl;171 cout << "0x4444abcdfffff" << " 0x" << hex << (long long signed int) (sc_int<64>)test.i64 << endl;139 cout << "0xffffffff" << " 0x" << hex << (int) (sc_int<6>)test.i6 << endl; 140 cout << "0x222fffff" << " 0x" << hex << (int) (sc_int<31>)test.i31 << endl; 141 cout << "0x321fffff" << " 0x" << hex << (int) (sc_int<32>)test.i32 << endl; 142 cout << "0x4444abcdfffff" << " 0x" << hex << (long long signed int) (sc_int<64>)test.i64 << endl; 172 143 #endif 173 144 174 ASSERT(test.ui64.read() == ui64_reference);175 ASSERT(test.i6.read() == (sc_int<6>)~0);176 ASSERT(test.i31.read() == 0x222fffff);177 ASSERT(test.i32.read() == 0x321fffff)145 ASSERT(test.ui64.read() == ui64_reference); 146 ASSERT(test.i6.read() == (sc_int<6>) ~ 0); 147 ASSERT(test.i31.read() == 0x222fffff); 148 ASSERT(test.i32.read() == 0x321fffff); 178 149 179 long long signed int i64_reference = 0x4444abcdULL;180 i64_reference <<= 20;181 i64_reference += 0xfffffULL;182 ASSERT(test.i64.read() == i64_reference);150 long long signed int i64_reference = 0x4444abcdULL; 151 i64_reference <<= 20; 152 i64_reference += 0xfffffULL; 153 ASSERT(test.i64.read() == i64_reference); 183 154 184 // cout << "0x4294967315" << " 0x" << hex << test.bui64 << endl;185 cout << "Test OK.\n";186 155 187 sc_close_vcd_trace_file(tf);156 sc_close_vcd_trace_file(tf); 188 157 189 return EXIT_SUCCESS;158 return EXIT_SUCCESS; 190 159 } 160 161 /* 162 # Local Variables: 163 # tab-width: 4; 164 # c-basic-offset: 4; 165 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 166 # indent-tabs-mode: nil; 167 # End: 168 # 169 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 170 */ 171 -
sources/test_regression/19042005/Makefile
r43 r55 1 1 2 include ../env.mk 3 TRACE1 = trace_file_scass.vcd 4 TRACE2 = trace_file_systemc.vcd 5 ERASE = $(TRACE1) $(TRACE2) 6 include ../Makefile.common 2 7 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 8 TRACE = trace_file.vcd 9 TRACE_REF = trace_file_reference.vcd 10 10 11 .SECONDARY: 11 test: all 12 @echo -ne "| Testing $$(basename $$(pwd)): " ; 13 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 14 @mv $(TRACE) $(TRACE1) 15 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 16 @mv $(TRACE) $(TRACE2) 17 @if tail -n +8 $(TRACE1) | diff $(TRACE_REF) - > /dev/null ; then \ 18 if tail -n +8 $(TRACE2) | diff $(TRACE_REF) - > /dev/null ; then \ 19 echo "OK" ; \ 20 else \ 21 echo "KO" ; \ 22 fi ; \ 23 else \ 24 echo "KO" ; \ 25 fi ; 12 26 13 main : $(EXE)14 15 test : system.vcd system_systemcass.x-60_reference.vcd16 -diff system.vcd system_systemcass.x-60_reference.vcd17 18 %.vcd : %_systemcass.x %_systemc.x19 ./$*_systemcass.x $*_systemcass.x 6020 tail -n +8 $*_systemcass.x.vcd > $*.vcd21 rm $*_systemcass.x.vcd22 23 %.gif : %.dot24 dot -Tgif -o $*.gif $*.dot25 26 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)27 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC)28 29 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)30 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS)31 32 -include Makefile.deps33 34 %_systemc.cpp : %.cpp35 ln -s $*.cpp $*_systemc.cpp36 37 %_systemcass.cpp : %.cpp38 ln -s $*.cpp $*_systemcass.cpp39 40 %_systemc.o : %_systemc.cpp41 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o43 44 %_systemcass.o : %_systemcass.cpp45 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps46 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o47 48 clean :49 rm -f Makefile.deps50 -rm -f *.o gmon.out *~51 -rm -f ${LOG}52 -rm -f signal_order.txt module_order.dot signal_graph.dot53 -rm -f module_order.gif signal_graph.gif54 -rm -f $(EXE) $(OBJECTS)55 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null56 -rm -f core*57 -rm -rf generated_by_systemcass58 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd59 27 -
sources/test_regression/19042005/system.cpp
r49 r55 1 #include <systemc.h> 1 2 2 #include <stdint.h> 3 3 4 #define ASSERT(x) \ 5 { errnum++; \ 6 if (!(x)) \ 7 { \ 8 cerr << "ASSERT : " #x "\n"; \ 9 exit (errnum); \ 10 } \ 11 } 4 #include "systemc.h" 5 #include "test.h" 12 6 13 7 using namespace std; 14 8 15 //#define sc_inout sc_out 16 9 17 10 struct test : sc_module { 18 sc_in_clk clk; 19 sc_in<bool> i1; 20 sc_in<char> i2; 21 sc_in<int> i3; 22 sc_in<sc_int<4> > i4; 23 sc_in<sc_uint<4> > i5; 24 sc_in<sc_uint<64> > i6; 25 sc_out<bool> o1; 26 sc_out<char> o2; 27 sc_out<int > o3; 28 sc_out<sc_int<4> > o4; 29 sc_out<sc_uint<4> > o5; 30 sc_out<sc_uint<64> > o6; 31 sc_inout<sc_uint<64> > io1; 32 // sc_inout<sc_signed > io2; 33 // sc_inout<sc_unsigned > io3; 34 sc_inout<sc_uint<32> > io4; 11 sc_in_clk clk; 12 sc_in<bool> i1; 13 sc_in<char> i2; 14 sc_in<int> i3; 15 sc_in<sc_int<4> > i4; 16 sc_in<sc_uint<4> > i5; 17 sc_in<sc_uint<64> > i6; 18 sc_out<bool> o1; 19 sc_out<char> o2; 20 sc_out<int > o3; 21 sc_out<sc_int<4> > o4; 22 sc_out<sc_uint<4> > o5; 23 sc_out<sc_uint<64> > o6; 24 sc_inout<sc_uint<64> > io1; 25 sc_inout<sc_uint<32> > io4; 35 26 36 sc_signal<bool> reg1; 37 sc_signal<char> reg2; 38 sc_signal<int> reg3; 39 sc_signal<sc_int<4> > reg4; 40 sc_signal<sc_uint<4> > reg5; 41 sc_signal<sc_uint<64> > reg6; 42 // sc_signal<sc_signed > reg7; 43 // sc_signal<sc_unsigned > reg8; 44 sc_signal<sc_uint<32> > reg9; 27 sc_signal<bool> reg1; 28 sc_signal<char> reg2; 29 sc_signal<int> reg3; 30 sc_signal<sc_int<4> > reg4; 31 sc_signal<sc_uint<4> > reg5; 32 sc_signal<sc_uint<64> > reg6; 33 sc_signal<sc_uint<32> > reg9; 45 34 46 void gen () 47 { 48 o1 = reg1.read() ^ true; 49 o2 = reg2.read()+ 1; 50 o3 = reg3.read()+ 1; 51 o4 = reg4.read()+ 1; 52 o5 = reg5.read()+ 1; 53 o6 = reg6.read()+ 1; 54 io1 = reg6.read() * 2 + 1; 55 io4 = reg9.read()+ 1; 56 } 35 void gen() { 36 o1 = reg1.read() ^ true; 37 o2 = reg2.read() + 1; 38 o3 = reg3.read() + 1; 39 o4 = reg4.read() + 1; 40 o5 = reg5.read() + 1; 41 o6 = reg6.read() + 1; 42 io1 = reg6.read() * 2 + 1; 43 io4 = reg9.read() + 1; 44 } 57 45 58 void trans () 59 { 60 // io2 = io2.read() + 1; 61 // io3 = io3.read() + 1; 62 63 reg1 = reg1.read() ^ 1; 64 reg2 = reg2.read() + 1; 65 reg3 = reg3.read() + 1; 66 reg4 = reg4.read() + 1; 67 reg5 = reg5.read() + 1; 68 reg6 = reg6.read() * 2 + 1; 69 reg9 = reg9.read() + 1; 70 } 46 void trans() { 47 reg1 = reg1.read() ^ 1; 48 reg2 = reg2.read() + 1; 49 reg3 = reg3.read() + 1; 50 reg4 = reg4.read() + 1; 51 reg5 = reg5.read() + 1; 52 reg6 = reg6.read() * 2 + 1; 53 reg9 = reg9.read() + 1; 54 } 71 55 72 SC_CTOR (test) : clk("clk"), i1("i1"), o1("o1"), i2("i2"), o2("o2"), 73 i3("i3"), o3("o3"), io1("io1"), io4("io4"), reg9("reg9") { 74 SC_METHOD(trans); 75 sensitive << clk.pos(); 76 dont_initialize(); 77 SC_METHOD(gen); 78 sensitive << clk.neg(); 79 dont_initialize(); 80 }; 56 SC_CTOR (test) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), o1("o1"), 57 o2("o2"), o3("o3"), io1("io1"), io4("io4"), reg9("reg9") { 58 SC_METHOD(trans); 59 sensitive << clk.pos(); 60 dont_initialize(); 61 62 SC_METHOD(gen); 63 sensitive << clk.neg(); 64 dont_initialize(); 65 } 66 81 67 }; 82 68 83 69 84 70 85 int sc_main (int argc, char *argv[]) 86 { 87 int errnum = 0; 88 sc_clock signal_clk("my_clock",1, 0.5); 89 sc_signal<bool> s1 ("s01"), 90 s2 ("s02"); 91 sc_signal<char> s3 ("s03"), 92 s4 ("s04"); 93 sc_signal<int> s5 ("s05"), 94 s6 ("s06"); 95 sc_signal<sc_int<4> > s7 ("s07"), 96 s8 ("s08"); 97 sc_signal<sc_uint<4> > s9 ("s09"), 98 s10("s10"); 99 sc_signal<sc_uint<64> > s11("s11"), 100 s12("s12"), 101 s13("s13"); 102 // sc_signal<sc_signed > s14("s14"); 103 // sc_signal<sc_unsigned > s15("s15"); 104 sc_signal<sc_uint<32> > s16("s16"); 71 int sc_main (int argc, char * argv[]) { 72 sc_clock signal_clk("my_clock", 1, 0.5); 73 sc_signal<bool> s1 ("s01"), s2 ("s02"); 74 sc_signal<char> s3 ("s03"), s4 ("s04"); 75 sc_signal<int> s5 ("s05"), s6 ("s06"); 76 sc_signal< sc_int<4> > s7 ("s07"), s8 ("s08"); 77 sc_signal< sc_uint<4> > s9 ("s09"), s10("s10"); 78 sc_signal< sc_uint<64> > s11("s11"), s12("s12"), s13("s13"); 79 sc_signal< sc_uint<32> > s16("s16"); 105 80 106 test test1("test1"); 107 test1.clk (signal_clk); 108 test1.i1 (s1); 109 test1.o1 (s2); 110 test1.i2 (s3); 111 test1.o2 (s4); 112 test1.i3 (s5); 113 test1.o3 (s6); 114 test1.i4 (s7); 115 test1.o4 (s8); 116 test1.i5 (s9); 117 test1.o5 (s10); 118 test1.i6 (s11); 119 test1.o6 (s12); 120 test1.io1(s13); 121 // test1.io2(s14); 122 // test1.io3(s15); 123 test1.io4(s16); 81 test test1("test1"); 82 test1.clk(signal_clk); 83 test1.i1(s1); 84 test1.o1(s2); 85 test1.i2(s3); 86 test1.o2(s4); 87 test1.i3(s5); 88 test1.o3(s6); 89 test1.i4(s7); 90 test1.o4(s8); 91 test1.i5(s9); 92 test1.o5(s10); 93 test1.i6(s11); 94 test1.o6(s12); 95 test1.io1(s13); 96 test1.io4(s16); 124 97 125 126 sc_trace_file *system_trace_file;127 system_trace_file = sc_create_vcd_trace_file (argv[1]);128 129 98 /* Open trace file */ 99 sc_trace_file * system_trace_file; 100 system_trace_file = sc_create_vcd_trace_file("trace_file"); 101 /* clk waveform is always useful */ 102 sc_trace(system_trace_file, signal_clk, "clk"); 130 103 131 boolb1 = 0;132 uint64_t l1 = 0;104 bool b1 = 0; 105 uint64_t l1 = 0; 133 106 134 #if 0 135 #if defined(SYSTEMCASS_SPECIFIC) 136 uint64 ui1 = 0; 137 int64 i1 = 0; 138 sc_trace(system_trace_file, ui1, "ui1"); 139 sc_trace(system_trace_file, i1, "i1"); 140 #endif 141 #endif 107 #define TRACE(x) sc_trace (system_trace_file, x, #x); 108 TRACE(b1); 109 TRACE(l1); 110 TRACE(test1.i1); 111 TRACE(test1.i2); 112 TRACE(test1.i3); 113 TRACE(test1.i4); 114 TRACE(test1.i5); 115 TRACE(test1.i6); 116 TRACE(test1.o1); 117 TRACE(test1.o2); 118 TRACE(test1.o3); 119 TRACE(test1.o4); 120 TRACE(test1.o5); 121 TRACE(test1.o6); 122 TRACE(test1.io1); 123 TRACE(test1.io4); 124 TRACE(s1); 125 TRACE(s2); 126 TRACE(s3); 127 TRACE(s4); 128 TRACE(s5); 129 TRACE(s6); 130 TRACE(s7); 131 TRACE(s8); 132 TRACE(s9); 133 TRACE(s10); 134 TRACE(s11); 135 TRACE(s12); 136 TRACE(s13); 137 TRACE(s16); 138 #undef TRACE 142 139 143 #define TRACE(x) sc_trace (system_trace_file, x, #x); 144 TRACE(b1); 145 TRACE(l1); 146 TRACE(test1.i1); 147 TRACE(test1.i2); 148 TRACE(test1.i3); 149 TRACE(test1.i4); 150 TRACE(test1.i5); 151 TRACE(test1.i6); 152 TRACE(test1.o1); 153 TRACE(test1.o2); 154 TRACE(test1.o3); 155 TRACE(test1.o4); 156 TRACE(test1.o5); 157 TRACE(test1.o6); 158 TRACE(test1.io1); 159 // TRACE(test1.io2); 160 // TRACE(test1.io3); 161 TRACE(test1.io4); 162 TRACE(s1); 163 TRACE(s2); 164 TRACE(s3); 165 TRACE(s4); 166 TRACE(s5); 167 TRACE(s6); 168 TRACE(s7); 169 TRACE(s8); 170 TRACE(s9); 171 TRACE(s10); 172 TRACE(s11); 173 TRACE(s12); 174 TRACE(s13); 175 // TRACE(s14); 176 // TRACE(s15); 177 TRACE(s16); 178 #undef TRACE 140 // Init & run 141 sc_start(sc_time(0, sc_core::SC_NS)); 179 142 180 // Init & run 181 sc_initialize (); 143 ASSERT(test1.i1.read() == false); 144 ASSERT(s4.read() == 0); 145 ASSERT(s10.read() == 0); 146 ASSERT(s16.read() == 0); 182 147 183 ASSERT(test1.i1.read() == false); 184 ASSERT(s4.read() == 0); 185 ASSERT(s10.read() == 0); 186 ASSERT(s16.read() == 0); 148 sc_start(sc_time(1, sc_core::SC_NS)); 187 149 188 #if 0 189 #if SYSTEMCASS_SPECIFIC 190 cerr << "s16 = " << hex << s16.get_pointer () << endl; 191 cerr << "io4 = " << hex << test1.io4.get_pointer () << endl; 192 // cerr << "io4(base) = " << hex << &(test1.io4.val) << endl; 193 #endif 194 cerr << s16 << " " << test1.io4 << endl; 195 s16 = 5; 196 cerr << s16 << " " << test1.io4 << endl; 197 test1.io4 = 7; 198 cerr << s16 << " " << test1.io4 << endl; 199 #endif 150 b1 = 1; 151 l1 = 5; 200 152 201 if (argc == 2) 202 { 203 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 153 int i; 154 for (i = 1; i < 60; ++i) { 155 l1 += i; 156 b1 ^= true; 157 s1 = s1.read() ^ true; 158 s3 = s3.read() + 2; 159 s5 = s5.read() + 3; 160 s7 = s7.read() + 4; 161 s9 = s9.read() + 5; 162 s11 = (s11.read() << 2) + 1; 163 sc_start(sc_time(1, sc_core::SC_NS)); 164 } 165 166 sc_close_vcd_trace_file(system_trace_file); 167 204 168 return EXIT_SUCCESS; 205 }206 207 int nb = atoi(argv[2]);208 209 sc_start (1);210 211 b1 = 1;212 l1 = 5;213 214 int i;215 for (i = 1; i < nb; ++i)216 {217 l1 += i;218 b1 ^= true;219 s1 = s1.read() ^ true;220 s3 = s3.read() + 2;221 s5 = s5.read() + 3;222 s7 = s7.read() + 4;223 s9 = s9.read() + 5;224 s11 = (s11.read() << 2) + 1;225 #if 0226 #if defined(SYSTEMCASS_SPECIFIC)227 ui1 <<= 1; ui1 += 1;228 i1 <<= 1; i1 += 1;229 #endif230 #endif231 #if 0232 cerr << test1.io4.read() << " " << s16.read() << "\n";233 #endif234 sc_start (1);235 }236 237 sc_close_vcd_trace_file (system_trace_file);238 239 return EXIT_SUCCESS;240 169 } 241 170 242 171 #undef sc_inout 172 173 /* 174 # Local Variables: 175 # tab-width: 4; 176 # c-basic-offset: 4; 177 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 178 # indent-tabs-mode: nil; 179 # End: 180 # 181 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 182 */ 183 -
sources/test_regression/19122005/system.cpp
r1 r55 1 #include <systemc.h>2 1 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 2 #include "systemc.h" 3 #include "test.h" 4 5 11 6 12 7 using namespace std; 13 8 9 14 10 struct test : sc_module { 15 sc_in_clk clk; 16 sc_in<bool> i1; 17 sc_in<int> i2; 18 sc_in<int> i3; 19 #if 0 20 sc_in<sc_int<4> > i4; 21 sc_in<sc_uint<4> > i5; 22 #endif 23 #if 0 24 sc_in<sc_uint<64> > i6; 25 #endif 26 sc_out<bool> o1; 27 sc_out<int> o2; 28 sc_out<int > o3; 29 #if 0 30 sc_out<sc_int<4> > o4; 31 sc_out<sc_uint<4> > o5; 32 #endif 33 #if 0 34 sc_out<sc_uint<64> > o6; 35 sc_inout<sc_uint<64> > io1; 36 #endif 37 // sc_inout<sc_signed > io2; 38 // sc_inout<sc_unsigned > io3; 39 sc_inout<sc_uint<32> > io4; 40 sc_out<int> mealy1; 41 sc_out<int> mealy2; 11 sc_in_clk clk; 12 sc_in<bool> i1; 13 sc_in<int> i2; 14 sc_in<int> i3; 15 sc_out<bool> o1; 16 sc_out<int> o2; 17 sc_out<int> o3; 18 sc_inout< sc_uint<32> > io4; 19 sc_out<int> mealy1; 20 sc_out<int> mealy2; 42 21 43 sc_signal<bool> reg1; 44 sc_signal<int> reg2; 45 sc_signal<int> reg3; 46 #if 0 47 sc_signal<sc_int<4> > reg4; 48 sc_signal<sc_uint<4> > reg5; 49 #endif 50 #if 0 51 sc_signal<sc_uint<64> > reg6; 52 #endif 53 // sc_signal<sc_signed > reg7; 54 // sc_signal<sc_unsigned > reg8; 55 sc_signal<sc_uint<32> > reg9; 56 sc_signal<int> reg10; 22 sc_signal<bool> reg1; 23 sc_signal<int> reg2; 24 sc_signal<int> reg3; 25 sc_signal<sc_uint<32> > reg9; 26 sc_signal<int> reg10; 57 27 58 void fmealy1 () 59 { 60 mealy1 = i2.read(); 61 } 28 void fmealy1() { 29 mealy1 = i2.read(); 30 } 62 31 63 void fmealy2 () 64 { 65 mealy2 = i2.read() + reg2.read(); 66 } 32 void fmealy2() { 33 mealy2 = i2.read() + reg2.read(); 34 } 67 35 68 void gen () 69 { 70 o1 = reg1.read() ^ true; 71 o2 = reg2.read()+ 1; 72 o3 = reg3.read()+ 1; 73 // o4 = reg4.read()+ 1; 74 // o5 = reg5.read()+ 1; 75 // o6 = reg6.read()+ 1; 76 // io1 = reg6.read() * 2 + 1; 77 io4 = reg9.read()+ 1; 78 } 36 void gen() { 37 o1 = reg1.read() ^ true; 38 o2 = reg2.read() + 1; 39 o3 = reg3.read() + 1; 40 io4 = reg9.read() + 1; 41 } 79 42 80 void trans () 81 { 82 // io2 = io2.read() + 1; 83 // io3 = io3.read() + 1; 84 reg1 = reg1.read() ^ 1; 85 reg2 = reg2.read() + 1; 86 reg3 = reg3.read() + 1; 87 // reg4 = reg4.read() + 1; 88 // reg5 = reg5.read() + 1; 89 // reg6 = reg6.read() * 2 + 1; 90 reg9 = reg9.read() + 2; 91 reg10 = reg10.read() + i2.read(); 92 } 43 void trans() { 44 reg1 = reg1.read() ^ 1; 45 reg2 = reg2.read() + 1; 46 reg3 = reg3.read() + 1; 47 reg9 = reg9.read() + 2; 48 reg10 = reg10.read() + i2.read(); 49 } 93 50 94 SC_HAS_PROCESS(test);95 test (sc_module_name n) : sc_module(n),51 SC_HAS_PROCESS(test); 52 test(sc_module_name n) : sc_module(n), 96 53 clk("clk"), 97 i1("i1"), i2("i2"), i3("i3"), /*i4("i4"), i5("i5"), */ /*i6("i6"),*/98 o1("o1"), o2("o2"), o3("o3"), /*o4("o4"), o5("o5"), */ /*o6("o6"),99 io 1("io1"), */io4("io4"),54 i1("i1"), i2("i2"), i3("i3"), 55 o1("o1"), o2("o2"), o3("o3"), 56 io4("io4"), 100 57 mealy1("mealy1_equivalent_to_i2"), 101 58 mealy2("mealy2_equivalent_to_i2_plus_reg2"), … … 103 60 reg2("reg2_cycle_number"), 104 61 reg3("reg3_cycle_number"), 105 // reg4("reg4"),106 // reg5("reg5"),107 // reg6("reg6"),108 // reg7("reg7"),109 // reg8("reg8"),110 62 reg9("reg9_cycle_number_x2"), 111 reg10("reg10_sum_cycle_number") 112 { 113 SC_METHOD(trans); 114 sensitive << clk.pos(); 115 dont_initialize(); 116 SC_METHOD(gen); 117 sensitive << clk.neg(); 118 dont_initialize(); 119 SC_METHOD(fmealy1); 120 sensitive << i2; 121 dont_initialize(); 122 SC_METHOD(fmealy2); 123 sensitive << i2 << clk.neg(); 124 dont_initialize(); 125 }; 63 reg10("reg10_sum_cycle_number") { 64 SC_METHOD(trans); 65 sensitive << clk.pos(); 66 dont_initialize(); 67 68 SC_METHOD(gen); 69 sensitive << clk.neg(); 70 dont_initialize(); 71 72 SC_METHOD(fmealy1); 73 sensitive << i2; 74 dont_initialize(); 75 76 SC_METHOD(fmealy2); 77 sensitive << i2 << clk.neg(); 78 dont_initialize(); 79 } 126 80 }; 127 81 128 int 129 usage (const char *com) 130 { 131 cout << "Usage :\n" << com << " [#cycles]\n"; 132 return EXIT_FAILURE; 82 83 int usage (const char * com) { 84 cout << "Usage :\n" << com << " [#cycles]\n"; 85 return EXIT_FAILURE; 133 86 } 134 87 135 sc_signal<bool> s01 ("i1_cycle_number_not_parity"),136 s02 ("o2_not_reg1");137 sc_signal<int> s03 ("i2_cycle_number_x2"),138 s04 ("o2_reg2_plus_one");139 sc_signal<int> s05 ("i3_cycle_number_x3"),140 s06 ("o3_reg3_plus_one");141 #if 0142 sc_signal<sc_int<4> > s07 ("s07"),143 s08 ("s08");144 sc_signal<sc_uint<4> > s09 ("s09"),145 s10 ("s10");146 #endif147 #if 0148 sc_signal<sc_uint<64> > s11 ("s11"),149 s12 ("s12"),150 s13 ("s13");151 #endif152 //sc_signal<sc_signed > s14("s14");153 //sc_signal<sc_unsigned > s15("s15");154 sc_signal<sc_uint<32> > s16 ("io4_reg9_plus_one");155 sc_signal<int> s17 ("mealy1_equivalent_to_i2");156 sc_signal<int> s18 ("mealy2_i2_plus_reg2");157 88 158 int 159 s (int i) 160 { 161 int val = 0; 162 while (i) 163 val += i--; 164 return val; 89 sc_signal<bool> s01("i1_cycle_number_not_parity"), s02("o2_not_reg1"); 90 sc_signal<int> s03("i2_cycle_number_x2"), s04("o2_reg2_plus_one"); 91 sc_signal<int> s05("i3_cycle_number_x3"), s06("o3_reg3_plus_one"); 92 sc_signal< sc_uint<32> > s16("io4_reg9_plus_one"); 93 sc_signal<int> s17("mealy1_equivalent_to_i2"); 94 sc_signal<int> s18("mealy2_i2_plus_reg2"); 95 96 97 int s(int i) { 98 int val = 0; 99 while (i) { 100 val += i--; 101 } 102 return val; 165 103 } 166 104 167 void* 168 func () 169 { 170 cerr << "func () at #" << sc_time_stamp () << endl; 171 int i = (int)(sc_time_stamp ().to_double ()) / 1000; 172 s01 = (i & 1) > 0; 173 s03 = i * 2; 174 s05 = i * 3; 175 // s07 = i * 4; 176 // s09 = i * 5; 177 // s11 = i * 6; 178 ++i; 179 return 0; 105 106 void * func() { 107 cerr << "func () at #" << sc_time_stamp() << endl; 108 int i = (int) (sc_time_stamp().to_double()) / 1000; 109 s01 = (i & 1) > 0; 110 s03 = i * 2; 111 s05 = i * 3; 112 ++i; 113 return 0; 180 114 } 181 115 182 void 183 save () 184 { 116 117 void save() { 185 118 #ifdef SYSTEMCASS_SPECIFIC 186 char name[256];187 sprintf (name,"test_systemcass_%d.dat",((int)sc_time_stamp().to_double() / 1000));188 sc_save_simulation(name);119 char name[256]; 120 sprintf(name, "test_systemcass_%d.dat", ((int) sc_time_stamp().to_double() / 1000)); 121 sc_save_simulation(name); 189 122 #endif 190 123 } 191 124 192 int sc_main (int argc, char *argv[])193 {194 int errnum = 0;195 sc_clock signal_clk("my_clock",1, 0.5);196 125 197 test test1("test1"); 198 test1.clk (signal_clk); 199 test1.i1 (s01); 200 test1.o1 (s02); 201 test1.i2 (s03); 202 test1.o2 (s04); 203 test1.i3 (s05); 204 test1.o3 (s06); 205 // test1.i4 (s07); 206 // test1.o4 (s08); 207 // test1.i5 (s09); 208 // test1.o5 (s10); 209 // test1.i6 (s11); 210 // test1.o6 (s12); 211 // test1.io1(s13); 212 // test1.io2(s14); 213 // test1.io3(s15); 214 test1.io4(s16); 215 test1.mealy1(s17); 216 test1.mealy2(s18); 126 int sc_main (int argc, char * argv[]) { 127 sc_clock signal_clk("my_clock", 1, 0.5); 217 128 218 // Init & run 219 sc_start (0); 129 test test1("test1"); 130 test1.clk(signal_clk); 131 test1.i1(s01); 132 test1.o1(s02); 133 test1.i2(s03); 134 test1.o2(s04); 135 test1.i3(s05); 136 test1.o3(s06); 137 test1.io4(s16); 138 test1.mealy1(s17); 139 test1.mealy2(s18); 140 141 // Init & run 142 sc_start(sc_time(0, sc_core::SC_NS)); 220 143 221 144 #ifndef SOCVIEW 222 if (argc != 2) 223 { 224 return usage (argv[0]); 225 } 145 if (argc != 2) { 146 return usage(argv[0]); 147 } 226 148 227 149 int nb = atoi(argv[1]); 228 150 229 if (nb == 0) 230 { 231 return usage (argv[0]); 232 } 151 if (nb == 0) { 152 return usage(argv[0]); 153 } 233 154 234 int i = 0; 235 save (); 236 while (i++ < nb) 237 { 238 func (); 239 sc_start (1); 240 save (); 241 } 155 int i = 0; 156 save(); 157 while (i++ < nb) { 158 func(); 159 sc_start(sc_time(1, sc_core::SC_NS)); 160 save(); 161 } 242 162 #else 243 debug(&func);163 debug(&func); 244 164 #endif 245 165 246 166 return EXIT_SUCCESS; 247 167 } 248 168 249 169 #undef sc_inout 170 171 /* 172 # Local Variables: 173 # tab-width: 4; 174 # c-basic-offset: 4; 175 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 176 # indent-tabs-mode: nil; 177 # End: 178 # 179 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 180 */ 181 -
sources/test_regression/19122005/system2.cpp
r1 r55 1 #include <systemc.h>2 1 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 2 #include "systemc.h" 3 #include "test.h" 4 11 5 12 6 using namespace std; 13 7 8 14 9 struct inner : sc_module { 15 sc_in_clkclk;16 sc_in<int>i1;17 int reg;10 sc_in_clk clk; 11 sc_in<int> i1; 12 int reg; 18 13 19 void save (ostream &o) 20 { 21 o << reg << endl; 22 } 14 void save(ostream & o) { 15 o << reg << endl; 16 } 23 17 24 void save_state (FILE *fic) 25 { 26 cerr << "saving " << name () << "\n"; 27 fprintf (fic, "%d\n", reg); 28 } 18 void save_state(FILE * fic) { 19 cerr << "saving " << name() << "\n"; 20 fprintf (fic, "%d\n", reg); 21 } 29 22 30 void restore_state (FILE *fic) 31 { 32 cerr << "restoring " << name () << "\n"; 33 int i; 34 fscanf (fic, "%d\n", &i); 35 reg = i; 36 } 23 void restore_state(FILE * fic) { 24 cerr << "restoring " << name () << "\n"; 25 int i; 26 fscanf (fic, "%d\n", &i); 27 reg = i; 28 } 37 29 38 void trans () 39 { 40 reg = i1.read(); 41 } 30 void trans() { 31 reg = i1.read(); 32 } 42 33 43 SC_HAS_PROCESS(inner);44 inner (sc_module_name n) : sc_module(n),34 SC_HAS_PROCESS(inner); 35 inner(sc_module_name n) : sc_module(n), 45 36 clk("clk"), 46 i1("i1") 47 { 48 SC_METHOD(trans); 49 sensitive << clk.pos(); 50 dont_initialize(); 37 i1("i1") { 38 SC_METHOD(trans); 39 sensitive << clk.pos(); 40 dont_initialize(); 51 41 #ifdef SYSTEMCASS_SPECIFIC 52 //SAVE_HANDLER(save); 53 SAVE_HANDLER(save_state); 42 SAVE_HANDLER(save_state); 54 43 #endif 55 }; 44 } 45 56 46 }; 57 47 48 58 49 struct test : sc_module { 59 sc_in_clkclk;60 sc_in<bool>i1;61 sc_in<int>i2;62 sc_in<int>i3;63 innerinner1;50 sc_in_clk clk; 51 sc_in<bool> i1; 52 sc_in<int> i2; 53 sc_in<int> i3; 54 inner inner1; 64 55 65 int tab[16];66 bool b;56 int tab[16]; 57 bool b; 67 58 68 void trans () 69 { 70 b = i1.read() ^ b; 71 tab[i3.read() % 16] = i2; 72 } 59 void trans() { 60 b = i1.read() ^ b; 61 tab[i3.read() % 16] = i2; 62 } 73 63 74 64 75 void save (ostream &o)76 {77 o << ((b)?1:0) << endl;78 int i;79 for (i = 0; i < 16; ++i)80 o << tab[i] << endl;81 }65 void save(ostream & o) { 66 o << ((b) ? 1 : 0) << endl; 67 int i; 68 for (i = 0; i < 16; ++i) { 69 o << tab[i] << endl; 70 } 71 } 82 72 83 void save_state (FILE *fic) 84 { 85 cerr << "saving " << name () << "\n"; 86 fprintf (fic, "%c\n", ((b)?'1':'0')); 87 int i; 88 for (i = 0; i < 16; ++i) 89 { 90 fprintf (fic, "%d\n", tab[i]); 73 void save_state(FILE * fic) { 74 cerr << "saving " << name() << "\n"; 75 fprintf (fic, "%c\n", ((b) ? '1' : '0')); 76 int i; 77 for (i = 0; i < 16; ++i) { 78 fprintf(fic, "%d\n", tab[i]); 79 } 91 80 } 92 }93 81 94 void restore_state (FILE *fic) 95 { 96 cerr << "restoring " << name () << "\n"; 97 int j; 98 fscanf (fic, "%d\n", &j); 99 b = (j > 0); 100 int i; 101 for (i = 0; i < 16; ++i) 102 { 103 fscanf (fic, "%d\n", &j); 104 tab[i] = j; 82 void restore_state(FILE * fic) { 83 cerr << "restoring " << name() << "\n"; 84 int j; 85 fscanf (fic, "%d\n", &j); 86 b = (j > 0); 87 int i; 88 for (i = 0; i < 16; ++i) { 89 fscanf(fic, "%d\n", &j); 90 tab[i] = j; 91 } 105 92 } 106 }107 93 108 SC_HAS_PROCESS(test);109 94 SC_HAS_PROCESS(test); 95 test (sc_module_name n) : sc_module (n), 110 96 clk("clk"), 111 97 i1("i1"), i2("i2"), i3("i3"), 112 inner1 ("inner1") 113 { 114 SC_METHOD(trans); 115 sensitive << clk.pos(); 116 dont_initialize(); 98 inner1 ("inner1") { 99 SC_METHOD(trans); 100 sensitive << clk.pos(); 101 dont_initialize(); 117 102 #ifdef SYSTEMCASS_SPECIFIC 118 //SAVE_HANDLER(save); 119 SAVE_HANDLER(save_state); 103 SAVE_HANDLER(save_state); 120 104 #endif 121 }; 105 } 106 122 107 }; 123 108 124 int 125 usage (const char *com) 126 { 127 cout << "Usage :\n" << com << " [#cycles]\n"; 128 return EXIT_FAILURE; 109 110 int usage (const char * com) { 111 cout << "Usage :\n" << com << " [#cycles]\n"; 112 return EXIT_FAILURE; 129 113 } 130 114 131 sc_signal<bool> s01 ("bool");132 sc_signal<int> s02 ("tab_index"),133 s03 ("value_to_write_in_tab");134 115 135 void* 136 func () 137 { 138 cerr << "func () at #" << sc_time_stamp () << endl; 139 int i = (int)(sc_time_stamp ().to_double ()) / 1000; 140 s01 = (i & 1) > 0; 141 s02 = (i + (i << 1)) << 6; 142 s03 = i; 143 ++i; 144 return 0; 116 sc_signal<bool> s01("bool"); 117 sc_signal<int> s02("tab_index"), 118 s03 ("value_to_write_in_tab"); 119 120 121 void * func() { 122 cerr << "func () at #" << sc_time_stamp() << endl; 123 int i = (int) (sc_time_stamp().to_double()) / 1000; 124 s01 = (i & 1) > 0; 125 s02 = (i + (i << 1)) << 6; 126 s03 = i; 127 ++i; 128 return 0; 145 129 } 146 130 147 void 148 save () 149 { 131 132 void save() { 150 133 #ifdef SYSTEMCASS_SPECIFIC 151 int current_cycle = ((int)sc_time_stamp().to_double() / 1000); 152 if (current_cycle != 20) 153 return; 154 char name[256]; 155 sprintf (name,"test2_systemcass_%d.dat",current_cycle); 156 sc_save_simulation (name); 134 int current_cycle = ((int) sc_time_stamp().to_double() / 1000); 135 if (current_cycle != 20) { 136 return; 137 } 138 char name[256]; 139 sprintf(name, "test2_systemcass_%d.dat", current_cycle); 140 sc_save_simulation(name); 157 141 #endif 158 142 } 159 143 160 int sc_main (int argc, char *argv[])161 {162 int errnum = 0;163 sc_clock signal_clk("my_clock",1, 0.5);164 144 165 test test1("test1"); 166 test1.clk (signal_clk); 167 test1.i1 (s01); 168 test1.i2 (s02); 169 test1.i3 (s03); 170 test1.inner1.clk (signal_clk); 171 test1.inner1.i1 (s02); 145 int sc_main (int argc, char * argv[]) { 146 sc_clock signal_clk("my_clock",1, 0.5); 172 147 173 // Init & run 174 sc_start (0); 148 test test1("test1"); 149 test1.clk(signal_clk); 150 test1.i1(s01); 151 test1.i2(s02); 152 test1.i3(s03); 153 test1.inner1.clk(signal_clk); 154 test1.inner1.i1(s02); 155 156 // Init & run 157 sc_start(sc_time(0, sc_core::SC_NS)); 175 158 176 159 #ifndef SOCVIEW 177 if (argc != 2) 178 { 179 return usage (argv[0]); 180 } 160 if (argc != 2) { 161 return usage(argv[0]); 162 } 181 163 182 164 int nb = atoi(argv[1]); 183 165 184 if (nb == 0) 185 { 186 return usage (argv[0]); 187 } 166 if (nb == 0) { 167 return usage(argv[0]); 168 } 188 169 189 int i = 0; 190 while (i++ < nb) 191 { 192 func (); 193 sc_start (1); 194 save (); 195 } 170 int i = 0; 171 while (i++ < nb) { 172 func(); 173 sc_start(sc_time(1, sc_core::SC_NS)); 174 save(); 175 } 196 176 #else 197 debug(&func);177 debug(&func); 198 178 #endif 199 179 200 180 return EXIT_SUCCESS; 201 181 } 202 182 183 184 /* 185 # Local Variables: 186 # tab-width: 4; 187 # c-basic-offset: 4; 188 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 189 # indent-tabs-mode: nil; 190 # End: 191 # 192 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 193 */ 194 -
sources/test_regression/19122005/system3.cpp
r1 r55 1 #include <systemc.h>2 1 3 #define ASSERT(x) \ 4 { errnum++; \ 5 if (!(x)) \ 6 { \ 7 cerr << "ASSERT : " #x "\n"; \ 8 exit (errnum); \ 9 } \ 10 } 2 #include "systemc.h" 3 #include "test.h" 4 11 5 12 6 using namespace std; 13 7 8 14 9 struct inner : sc_module { 15 sc_in_clkclk;16 sc_in<int>i1;17 int reg;10 sc_in_clk clk; 11 sc_in<int> i1; 12 int reg; 18 13 19 void save_state (FILE *fic) 20 { 21 cerr << "saving " << name () << "\n"; 22 fprintf (fic, "%d\n", reg); 23 } 14 void save_state (FILE * fic) { 15 cerr << "saving " << name() << "\n"; 16 fprintf (fic, "%d\n", reg); 17 } 24 18 25 void restore_state (FILE *fic) 26 { 27 cerr << "restoring " << name () << "\n"; 28 int i; 29 fscanf (fic, "%d\n", &i); 30 reg = i; 31 } 19 void restore_state (FILE * fic) { 20 cerr << "restoring " << name() << "\n"; 21 int i; 22 fscanf (fic, "%d\n", &i); 23 reg = i; 24 } 32 25 33 void trans () 34 { 35 reg = i1.read(); 36 } 26 void trans() { 27 reg = i1.read(); 28 } 37 29 38 SC_HAS_PROCESS(inner);39 inner (sc_module_name n) : sc_module(n),30 SC_HAS_PROCESS(inner); 31 inner(sc_module_name n) : sc_module(n), 40 32 clk("clk"), 41 i1("i1") 42 { 43 SC_METHOD(trans); 44 sensitive << clk.pos(); 45 dont_initialize(); 33 i1("i1") { 34 SC_METHOD(trans); 35 sensitive << clk.pos(); 36 dont_initialize(); 46 37 #ifdef SYSTEMCASS_SPECIFIC 47 SAVE_HANDLER(save_state);38 SAVE_HANDLER(save_state); 48 39 #endif 49 }; 40 } 41 50 42 }; 51 43 44 52 45 struct test : sc_module { 53 sc_in_clkclk;54 sc_in<bool>i1;55 sc_in<int>i2;56 sc_in<int>i3;57 innerinner1;46 sc_in_clk clk; 47 sc_in<bool> i1; 48 sc_in<int> i2; 49 sc_in<int> i3; 50 inner inner1; 58 51 59 inttab[16];60 bool b;52 int tab[16]; 53 bool b; 61 54 62 void trans () 63 { 64 b = i1.read() ^ b; 65 tab[i3.read() % 16] = i2; 66 } 55 void trans() { 56 b = i1.read() ^ b; 57 tab[i3.read() % 16] = i2; 58 } 67 59 68 void save_state (FILE *fic) 69 { 70 cerr << "saving " << name () << "\n"; 71 fprintf (fic, "%c\n", ((b)?'1':'0')); 72 int i; 73 for (i = 0; i < 16; ++i) 74 { 75 fprintf (fic, "%d\n", tab[i]); 60 void save_state (FILE * fic) { 61 cerr << "saving " << name() << "\n"; 62 fprintf(fic, "%c\n", ((b) ? '1' : '0')); 63 int i; 64 for (i = 0; i < 16; ++i) { 65 fprintf(fic, "%d\n", tab[i]); 66 } 76 67 } 77 }78 68 79 void restore_state (FILE *fic) 80 { 81 cerr << "restoring " << name () << "\n"; 82 int j; 83 fscanf (fic, "%d\n", &j); 84 b = (j > 0); 85 int i; 86 for (i = 0; i < 16; ++i) 87 { 88 fscanf (fic, "%d\n", &j); 89 tab[i] = j; 69 void restore_state(FILE * fic) { 70 cerr << "restoring " << name() << "\n"; 71 int j; 72 fscanf (fic, "%d\n", &j); 73 b = (j > 0); 74 int i; 75 for (i = 0; i < 16; ++i) { 76 fscanf (fic, "%d\n", &j); 77 tab[i] = j; 78 } 90 79 } 91 }92 80 93 SC_HAS_PROCESS(test);94 81 SC_HAS_PROCESS(test); 82 test (sc_module_name n) : sc_module (n), 95 83 clk("clk"), 96 84 i1("i1"), i2("i2"), i3("i3"), 97 inner1 ("inner1") 98 { 99 SC_METHOD(trans); 100 sensitive << clk.pos(); 101 dont_initialize(); 85 inner1 ("inner1") { 86 SC_METHOD(trans); 87 sensitive << clk.pos(); 88 dont_initialize(); 102 89 #ifdef SYSTEMCASS_SPECIFIC 103 SAVE_HANDLER(save_state);90 SAVE_HANDLER(save_state); 104 91 #endif 105 }; 92 } 93 106 94 }; 107 95 108 int 109 usage (const char *com) 110 { 111 cout << "Usage :\n" << com << " [#cycles]\n"; 112 return EXIT_FAILURE; 96 97 int usage(const char * com) { 98 cout << "Usage :\n" << com << " [#cycles]\n"; 99 return EXIT_FAILURE; 113 100 } 114 101 115 sc_signal<bool> s01 ("bool"); 116 sc_signal<int> s02 ("tab_index"), 117 s03 ("value_to_write_in_tab"); 102 sc_signal<bool> s01("bool"); 103 sc_signal<int> s02("tab_index"), s03("value_to_write_in_tab"); 118 104 119 void* 120 func () 121 { 122 cerr << "func () at #" << sc_time_stamp () << endl; 123 int i = (int)(sc_time_stamp ().to_double ()) / 1000; 124 s01 = (i & 1) > 0; 125 s02 = (i + (i << 1)) << 6; 126 s03 = i; 127 ++i; 128 return 0; 105 106 void * func() { 107 cerr << "func () at #" << sc_time_stamp() << endl; 108 int i = (int)(sc_time_stamp().to_double()) / 1000; 109 s01 = (i & 1) > 0; 110 s02 = (i + (i << 1)) << 6; 111 s03 = i; 112 ++i; 113 return 0; 129 114 } 130 115 131 int sc_main (int argc, char *argv[])132 {133 int errnum = 0;134 sc_clock signal_clk("my_clock",1, 0.5);135 116 136 test test1("test1"); 137 test1.clk (signal_clk); 138 test1.i1 (s01); 139 test1.i2 (s02); 140 test1.i3 (s03); 141 test1.inner1.clk (signal_clk); 142 test1.inner1.i1 (s02); 117 int sc_main (int argc, char * argv[]) { 118 sc_clock signal_clk("my_clock", 1, 0.5); 143 119 144 // Init & run 145 sc_start (0); 120 test test1("test1"); 121 test1.clk(signal_clk); 122 test1.i1(s01); 123 test1.i2(s02); 124 test1.i3(s03); 125 test1.inner1.clk(signal_clk); 126 test1.inner1.i1(s02); 127 128 // Init & run 129 sc_start(sc_time(0, sc_core::SC_NS)); 146 130 147 131 #ifndef SOCVIEW 148 if (argc != 2) 149 { 150 return usage (argv[0]); 151 } 132 if (argc != 2) { 133 return usage(argv[0]); 134 } 152 135 153 136 int nb = atoi(argv[1]); 154 137 155 if (nb == 0) 156 { 157 return usage (argv[0]); 158 } 138 if (nb == 0) { 139 return usage(argv[0]); 140 } 159 141 160 int i = 0; 161 while (i++ < nb) 162 { 163 func (); 164 sc_start (1); 165 } 142 int i = 0; 143 while (i++ < nb) { 144 func(); 145 sc_start(sc_time(1, sc_core::SC_NS)); 146 } 166 147 #else 167 debug(&func);148 debug(&func); 168 149 #endif 169 150 170 151 return EXIT_SUCCESS; 171 152 } 172 153 154 155 /* 156 # Local Variables: 157 # tab-width: 4; 158 # c-basic-offset: 4; 159 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 160 # indent-tabs-mode: nil; 161 # End: 162 # 163 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 164 */ 165 -
sources/test_regression/20122006/Makefile
r15 r55 1 1 2 include ../env.mk 3 SIGNAL_GRAPH = signal_graph.dot 4 MODULE_GRAPH = module_graph.dot 5 PORT_GRAPH = port_graph.dot 6 PROCESS_ORDER = process_order.dot 7 SIGNAL_ORDER = signal_order.txt 8 ERASE = $(SIGNAL_GRAPH) $(MODULE_GRAPH) $(PORT_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER) 9 include ../Makefile.common 2 10 3 EXE_SCASS = system_systemcass.x 4 EXE_SC = system_systemc.x 5 EXE = ${EXE_SCASS} ${EXE_SC} 6 OBJECTS = $(EXE:.x=.o) 7 LINKS = $(OBJECTS:.o=.cpp) 11 MODULE_GRAPH_REF = module_graph_cass_ref.dot 12 PORT_GRAPH_REF = port_graph_ref.dot 13 SIGNAL_GRAPH_REF = signal_graph_ref.dot 14 PROCESS_ORDER_M_REF = process_order_mouchard_ref.dot 15 PROCESS_ORDER_B_REF = process_order_buchmann_ref.dot 8 16 9 .SECONDARY: 17 test: $(EXE_SCASS) 18 @echo -ne "| Testing $$(basename $$(pwd)): " ; \ 19 ./$(EXE_SCASS) --a --t --k 2> /dev/null; \ 20 (tail -n +3 $(MODULE_GRAPH) | diff $(MODULE_GRAPH_REF) -) > /dev/null || res=1 ; \ 21 ./$(EXE_SCASS) --m --t --k 2> /dev/null; \ 22 (tail -n +3 $(PORT_GRAPH) | diff $(PORT_GRAPH_REF) -) > /dev/null || res=1 ; \ 23 (tail -n +3 $(SIGNAL_GRAPH) | diff $(SIGNAL_GRAPH_REF) -) > /dev/null || res=1 ; \ 24 (tail -n +3 $(PROCESS_ORDER) | diff $(PROCESS_ORDER_M_REF) > /dev/null -) || res=1 ; \ 25 ./$(EXE_SCASS) --p --t --k 2> /dev/null; \ 26 (tail -n +3 $(PORT_GRAPH) | diff $(PORT_GRAPH_REF) -) > /dev/null || res=1 ; \ 27 (tail -n +3 $(SIGNAL_GRAPH) | diff $(SIGNAL_GRAPH_REF) -) > /dev/null || res=1 ; \ 28 (tail -n +3 $(PROCESS_ORDER) | diff $(PROCESS_ORDER_B_REF) -) > /dev/null || res=1 ; \ 29 if [ x"$$res" = x ] ; then echo "OK" ; else echo "KO" ; fi ; 10 30 11 main : $(EXE)12 31 13 test : ${EXE}14 ./system_systemcass.x --a --t --k; \15 (tail -n +3 module_graph.dot | diff module_graph_cass_reference.dot -) || eval ${failcom}16 ./system_systemcass.x --m --t --k; \17 (tail -n +3 port_graph.dot | diff port_graph_reference.dot -) || eval ${failcom} ; \18 (tail -n +3 signal_graph.dot | diff signal_graph_reference.dot -) || eval ${failcom} ; \19 (tail -n +3 process_order.dot | diff process_order_mouchard_reference.dot -) || eval ${failcom}20 ./system_systemcass.x --p --t --k; \21 (tail -n +3 port_graph.dot | diff port_graph_reference.dot -) || eval ${failcom} ; \22 (tail -n +3 signal_graph.dot | diff signal_graph_reference.dot -) || eval ${failcom} ; \23 (tail -n +3 process_order.dot | diff process_order_buchmann_reference.dot -) || eval ${failcom}24 @echo Test OK.25 26 %.png : %.dot27 dot -Tpng -o $*.png $*.dot28 29 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)30 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)31 32 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)33 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)34 35 -include Makefile.deps36 37 %_systemc.cpp : %.cpp38 ln -s $*.cpp $*_systemc.cpp39 40 %_systemcass.cpp : %.cpp41 ln -s $*.cpp $*_systemcass.cpp42 43 %_systemc.o : %_systemc.cpp44 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps45 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o46 47 %_systemcass.o : %_systemcass.cpp48 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps49 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o50 51 clean :52 rm -f Makefile.deps53 -rm -f *.o gmon.out54 -rm -f signal_order.txt module_order.dot signal_graph.dot port_graph.dot55 -rm -f module_graph.dot process_order.dot56 -rm -f $(EXE) $(OBJECTS)57 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null58 -rm -f core*59 -rm -rf generated_by_systemcass60 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd61 -
sources/test_regression/20122006/system.cpp
r1 r55 1 #include <systemc.h> 1 2 2 #include <signal.h> 3 #include "chrono.h" 3 #include <iostream> 4 5 #include "systemc.h" 6 #include "test.h" 4 7 5 8 using namespace std; 6 9 10 7 11 struct M_0i1o : sc_module { 8 sc_in_clk clk; 9 sc_out<bool> o1; 10 11 void eval () { 12 o1 = (rand()%2) == 0; 13 } 14 15 SC_CTOR (M_0i1o) : clk ("clk"), o1("o1") { 16 SC_METHOD(eval); 17 sensitive << clk.neg(); 18 #ifdef SYSTEMCASS_SPECIFIC 19 //o1(); /* no need */ 20 #endif 21 }; 22 }; 12 sc_in_clk clk; 13 sc_out<bool> o1; 14 15 void eval() { 16 o1 = (rand() % 2) == 0; 17 } 18 19 SC_CTOR (M_0i1o) : clk ("clk"), o1("o1") { 20 SC_METHOD(eval); 21 sensitive << clk.neg(); 22 dont_initialize(); 23 } 24 }; 25 23 26 24 27 struct M_1i1o : sc_module { 25 sc_in_clk clk; 26 sc_in<bool> i1; 27 sc_out<bool> o1; 28 29 void eval1 () { 30 o1 = ~i1; 31 } 32 33 SC_CTOR (M_1i1o) : clk ("clk"), i1 ("i1"), o1("o1") { 34 SC_METHOD(eval1); 35 sensitive << clk.neg(); 36 sensitive << i1; 37 #ifdef SYSTEMCASS_SPECIFIC 38 o1(i1); 39 #endif 40 }; 41 }; 28 sc_in_clk clk; 29 sc_in<bool> i1; 30 sc_out<bool> o1; 31 32 void eval1() { 33 o1 = ~i1; 34 } 35 36 SC_CTOR (M_1i1o) : clk("clk"), i1 ("i1"), o1("o1") { 37 SC_METHOD(eval1); 38 sensitive << clk.neg(); 39 sensitive << i1; 40 dont_initialize(); 41 #ifdef SYSTEMCASS_SPECIFIC 42 o1(i1); 43 #endif 44 } 45 46 }; 47 42 48 43 49 44 50 struct M_2i2o : sc_module { 45 sc_in_clk clk; 46 sc_in<bool> i1; 47 sc_in<bool> i2; 48 sc_out<bool> o1; 49 sc_out<bool> o2; 50 51 void eval1 () { 52 o1 = ~i1; 53 } 54 void eval2 () { 55 o2 = ~i2; 56 } 57 58 SC_CTOR (M_2i2o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2") { 59 SC_METHOD(eval1); 60 sensitive << clk.neg(); 61 sensitive << i1; 62 #ifdef SYSTEMCASS_SPECIFIC 63 o1(i1); 64 #endif 65 SC_METHOD(eval2); 66 sensitive << clk.neg(); 67 sensitive << i2; 68 #ifdef SYSTEMCASS_SPECIFIC 69 o2(i2); 70 #endif 71 }; 72 }; 51 sc_in_clk clk; 52 sc_in<bool> i1; 53 sc_in<bool> i2; 54 sc_out<bool> o1; 55 sc_out<bool> o2; 56 57 void eval1() { 58 o1 = ~i1; 59 } 60 void eval2() { 61 o2 = ~i2; 62 } 63 64 SC_CTOR (M_2i2o) : clk ("clk"), i1 ("i1"), i2("o1"), o1("o1"), o2("o2") { 65 SC_METHOD(eval1); 66 sensitive << clk.neg(); 67 sensitive << i1; 68 dont_initialize(); 69 #ifdef SYSTEMCASS_SPECIFIC 70 o1(i1); 71 #endif 72 73 SC_METHOD(eval2); 74 sensitive << clk.neg(); 75 sensitive << i2; 76 dont_initialize(); 77 #ifdef SYSTEMCASS_SPECIFIC 78 o2(i2); 79 #endif 80 } 81 }; 82 73 83 74 84 struct M_4i2o : sc_module { 75 sc_in_clk clk; 76 sc_in<bool> i1; 77 sc_in<bool> i2; 78 sc_in<bool> i3; 79 sc_in<bool> i4; 80 sc_out<bool> o1; 81 sc_out<bool> o2; 82 83 void eval1 () { 84 o1 = ~i1; 85 } 86 void eval2 () { 87 o2 = ~i2; 88 } 89 void eval3 () { 90 cout << i3 << i4 << "\n"; 91 } 92 93 SC_CTOR (M_4i2o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), 94 i3 ("i3"), i4 ("i4") { 95 SC_METHOD(eval1); 96 sensitive << clk.neg(); 97 sensitive << i1; 98 #ifdef SYSTEMCASS_SPECIFIC 99 o1(i1); 100 #endif 101 SC_METHOD(eval2); 102 sensitive << clk.neg(); 103 sensitive << i2; 104 #ifdef SYSTEMCASS_SPECIFIC 105 o2(i2); 106 #endif 107 SC_METHOD(eval3); 108 sensitive << clk.pos(); 109 // sensitive << i3 << i4; 110 #ifdef SYSTEMCASS_SPECIFIC 111 // No port dependency 112 #endif 113 }; 114 }; 85 sc_in_clk clk; 86 sc_in<bool> i1; 87 sc_in<bool> i2; 88 sc_in<bool> i3; 89 sc_in<bool> i4; 90 sc_out<bool> o1; 91 sc_out<bool> o2; 92 93 void eval1() { 94 o1 = ~i1; 95 } 96 97 void eval2() { 98 o2 = ~i2; 99 } 100 101 void eval3() { 102 cout << i3 << i4 << "\n"; 103 } 104 105 SC_CTOR (M_4i2o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), 106 o1("o1"), o2("o2") { 107 SC_METHOD(eval1); 108 sensitive << clk.neg(); 109 sensitive << i1; 110 dont_initialize(); 111 #ifdef SYSTEMCASS_SPECIFIC 112 o1(i1); 113 #endif 114 SC_METHOD(eval2); 115 sensitive << clk.neg(); 116 sensitive << i2; 117 dont_initialize(); 118 #ifdef SYSTEMCASS_SPECIFIC 119 o2(i2); 120 #endif 121 SC_METHOD(eval3); 122 sensitive << clk.pos(); 123 dont_initialize(); 124 #ifdef SYSTEMCASS_SPECIFIC 125 // No port dependency 126 #endif 127 } 128 129 }; 130 115 131 116 132 struct M_4i3o : sc_module { 117 sc_in_clk clk; 118 sc_in<bool> i1; 119 sc_in<bool> i2; 120 sc_in<bool> i3; 121 sc_in<bool> i4; 122 sc_out<bool> o1; 123 sc_out<bool> o2; 124 sc_out<bool> o3; 125 126 void eval1 () { 127 o1 = ~i1; 128 } 129 void eval2 () { 130 o2 = ~i2; 131 } 132 void eval3 () { 133 o3 = ~i3; 134 } 135 void eval4 () { 136 cout << i4 << "\n"; 137 } 138 139 SC_CTOR (M_4i3o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), i3 ("i3"), i4 ("i4"), o3 ("o3") { 140 SC_METHOD(eval1); 141 sensitive << clk.neg(); 142 sensitive << i1; 143 #ifdef SYSTEMCASS_SPECIFIC 144 o1(i1); 145 #endif 146 SC_METHOD(eval4); 147 sensitive << clk.pos(); 148 // sensitive << i4; 149 #ifdef SYSTEMCASS_SPECIFIC 150 // No port dependency 151 #endif 152 SC_METHOD(eval3); 153 sensitive << clk.neg(); 154 sensitive << i3; 155 #ifdef SYSTEMCASS_SPECIFIC 156 o3(i3); 157 #endif 158 SC_METHOD(eval2); 159 sensitive << clk.neg(); 160 sensitive << i2; 161 #ifdef SYSTEMCASS_SPECIFIC 162 o2(i2); 163 #endif 164 }; 165 }; 133 sc_in_clk clk; 134 sc_in<bool> i1; 135 sc_in<bool> i2; 136 sc_in<bool> i3; 137 sc_in<bool> i4; 138 sc_out<bool> o1; 139 sc_out<bool> o2; 140 sc_out<bool> o3; 141 142 void eval1() { 143 o1 = ~i1; 144 } 145 146 void eval2() { 147 o2 = ~i2; 148 } 149 150 void eval3() { 151 o3 = ~i3; 152 } 153 154 void eval4() { 155 cout << i4 << "\n"; 156 } 157 158 SC_CTOR (M_4i3o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), o1("o1"), o2("o2"), o3("o3") { 159 SC_METHOD(eval1); 160 sensitive << clk.neg(); 161 sensitive << i1; 162 dont_initialize(); 163 #ifdef SYSTEMCASS_SPECIFIC 164 o1(i1); 165 #endif 166 SC_METHOD(eval4); 167 sensitive << clk.pos(); 168 dont_initialize(); 169 #ifdef SYSTEMCASS_SPECIFIC 170 // No port dependency 171 #endif 172 SC_METHOD(eval3); 173 sensitive << clk.neg(); 174 sensitive << i3; 175 dont_initialize(); 176 #ifdef SYSTEMCASS_SPECIFIC 177 o3(i3); 178 #endif 179 SC_METHOD(eval2); 180 sensitive << clk.neg(); 181 sensitive << i2; 182 dont_initialize(); 183 #ifdef SYSTEMCASS_SPECIFIC 184 o2(i2); 185 #endif 186 } 187 188 }; 189 166 190 167 191 struct M_1i0o : sc_module { 168 sc_in_clk clk; 169 sc_in<bool> i1; 170 171 void eval1 () { 172 cout << i1.read() << "\n"; 173 } 174 175 SC_CTOR (M_1i0o) : clk ("clk"), i1 ("i1") { 176 SC_METHOD(eval1); 177 sensitive << clk.pos(); 178 // sensitive << i1; 179 #ifdef SYSTEMCASS_SPECIFIC 180 // No port dependency 181 #endif 182 }; 183 }; 184 185 int sc_main (int argc, char *argv[]) 186 { 187 sc_clock signal_clk("my_clock",1, 0.5); 188 sc_signal<bool> s1 ("s01"), 189 s2 ("s02"), 190 s3 ("s03"), 191 s4 ("s04"), 192 s5 ("s05"), 193 s6 ("s06"), 194 s7 ("s07"), 195 s8 ("s08"), 196 s9 ("s09"), 197 s10("s10"), 198 s11("s11"), 199 s12("s12"), 200 s13("s13"), 201 s14("s14"), 202 s15("s15"); 203 204 205 M_0i1o a("a"); 206 M_4i2o b("b"); 207 M_1i1o c("c"); 208 M_4i3o d("d"); 209 M_1i1o e("e"); 210 M_1i1o f("f"); 211 M_2i2o g("g"); 212 M_1i1o h("h"); 213 M_1i0o i("i"); 214 M_0i1o j("j"); 215 M_0i1o k("k"); 216 M_0i1o l("l"); 217 218 a.clk (signal_clk); 219 b.clk (signal_clk); 220 c.clk (signal_clk); 221 d.clk (signal_clk); 222 e.clk (signal_clk); 223 f.clk (signal_clk); 224 g.clk (signal_clk); 225 h.clk (signal_clk); 226 i.clk (signal_clk); 227 j.clk (signal_clk); 228 k.clk (signal_clk); 229 l.clk (signal_clk); 230 231 a.o1 (s1); 232 b.i1 (s1); 233 234 b.o2 (s2); 235 c.i1 (s2); 236 237 c.o1 (s3); 238 d.i1 (s3); 239 240 d.o1 (s4); 241 b.i3 (s4); 242 243 d.o2 (s5); 244 b.i4 (s5); 245 246 b.o1 (s6); 247 e.i1 (s6); 248 249 e.o1 (s7); 250 f.i1 (s7); 251 252 f.o1 (s8); 253 b.i2 (s8); 254 255 d.o3 (s9); 256 g.i1 (s9); 257 258 g.o1 (s10); 259 h.i1 (s10); 260 261 h.o1 (s11); 262 d.i4 (s11); 263 264 j.o1 (s12); 265 g.i2 (s12); 266 267 g.o2 (s13); 268 i.i1 (s13); 269 270 l.o1 (s14); 271 d.i3 (s14); 272 273 k.o1 (s15); 274 d.i2 (s15); 275 276 // Init & run 277 sc_initialize (); 278 279 if (argc == 1) 280 { 281 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 192 sc_in_clk clk; 193 sc_in<bool> i1; 194 195 void eval1() { 196 cout << i1.read() << "\n"; 197 } 198 199 SC_CTOR (M_1i0o) : clk("clk"), i1("i1") { 200 SC_METHOD(eval1); 201 sensitive << clk.pos(); 202 dont_initialize(); 203 #ifdef SYSTEMCASS_SPECIFIC 204 // No port dependency 205 #endif 206 } 207 }; 208 209 210 int sc_main (int argc, char * argv[]) { 211 sc_clock signal_clk("my_clock", 1, 0.5); 212 sc_signal<bool> s1 ("s01"), 213 s2 ("s02"), 214 s3 ("s03"), 215 s4 ("s04"), 216 s5 ("s05"), 217 s6 ("s06"), 218 s7 ("s07"), 219 s8 ("s08"), 220 s9 ("s09"), 221 s10("s10"), 222 s11("s11"), 223 s12("s12"), 224 s13("s13"), 225 s14("s14"), 226 s15("s15"); 227 228 229 M_0i1o a("a"); 230 M_4i2o b("b"); 231 M_1i1o c("c"); 232 M_4i3o d("d"); 233 M_1i1o e("e"); 234 M_1i1o f("f"); 235 M_2i2o g("g"); 236 M_1i1o h("h"); 237 M_1i0o i("i"); 238 M_0i1o j("j"); 239 M_0i1o k("k"); 240 M_0i1o l("l"); 241 242 a.clk(signal_clk); 243 b.clk(signal_clk); 244 c.clk(signal_clk); 245 d.clk(signal_clk); 246 e.clk(signal_clk); 247 f.clk(signal_clk); 248 g.clk(signal_clk); 249 h.clk(signal_clk); 250 i.clk(signal_clk); 251 j.clk(signal_clk); 252 k.clk(signal_clk); 253 l.clk(signal_clk); 254 255 a.o1(s1); 256 b.i1(s1); 257 258 b.o2(s2); 259 c.i1(s2); 260 261 c.o1(s3); 262 d.i1(s3); 263 264 d.o1(s4); 265 b.i3(s4); 266 267 d.o2(s5); 268 b.i4(s5); 269 270 b.o1(s6); 271 e.i1(s6); 272 273 e.o1(s7); 274 f.i1(s7); 275 276 f.o1(s8); 277 b.i2(s8); 278 279 d.o3(s9); 280 g.i1(s9); 281 282 g.o1(s10); 283 h.i1(s10); 284 285 h.o1(s11); 286 d.i4(s11); 287 288 j.o1(s12); 289 g.i2(s12); 290 291 g.o2(s13); 292 i.i1(s13); 293 294 l.o1(s14); 295 d.i3(s14); 296 297 k.o1(s15); 298 d.i2(s15); 299 300 // Init & run 301 sc_start(sc_time(0, sc_core::SC_NS)); 302 282 303 return EXIT_SUCCESS; 283 }284 285 chrono_t chrono;286 chrono.start ();287 288 sc_start (atoi(argv[1]));289 290 chrono.stop ();291 unsigned int t = chrono;292 cout << "Time elapsed (sec) : " << t << endl;293 cout << "Cycles done : " << sc_simulation_time () << endl;294 cout << "Performance : " << sc_simulation_time () / t << endl;295 printf("\nPress <RETURN> to exit simulation.");296 char buf_ret[2];297 cin.getline(buf_ret,1);298 return EXIT_SUCCESS;299 304 } 305 306 /* 307 # Local Variables: 308 # tab-width: 4; 309 # c-basic-offset: 4; 310 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 311 # indent-tabs-mode: nil; 312 # End: 313 # 314 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 315 */ 316 -
sources/test_regression/21062005/Makefile
r13 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SYSTEM = system.cpp #system2.cpp system3.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 5 test : all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo "OK" ; \ 11 else echo "KO" ; \ 12 fi ; 10 13 11 .SECONDARY:12 14 13 main : $(EXE)14 15 15 test : main16 ./system_systemcass.x || eval ${failcom} ; \17 echo Test OK.18 19 %.gif : %.dot20 dot -Tgif -o $*.gif $*.dot21 22 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)23 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)24 25 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)26 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)27 28 -include Makefile.deps29 30 %_systemc.cpp : %.cpp31 ln -s $*.cpp $*_systemc.cpp32 33 %_systemcass.cpp : %.cpp34 ln -s $*.cpp $*_systemcass.cpp35 36 %_systemc.o : %_systemc.cpp37 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps38 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o39 40 %_systemcass.o : %_systemcass.cpp41 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps42 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o43 44 clean :45 -rm -f Makefile.deps46 -rm -f *.o gmon.out *~47 -rm -f ${LOG}48 -rm -f signal_order.txt module_order.dot signal_graph.dot49 -rm -f module_order.gif signal_graph.gif50 -rm -f $(EXE) $(OBJECTS)51 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null52 -rm -f core*53 -rm -rf generated_by_systemcass54 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd55 -
sources/test_regression/21062005/system.cpp
r1 r55 1 #include "systemc.h" 1 2 2 #include <iostream> 3 3 #include <string> 4 4 5 #define ASSERT(x) \ 6 { errnum++; \ 7 if (!(x)) \ 8 { \ 9 cerr << "ASSERT : " #x "\n"; \ 10 exit (errnum); \ 11 } \ 12 } 5 #include "systemc.h" 6 #include "test.h" 7 13 8 14 9 using namespace std; 15 10 16 static int errnum = 0;17 11 18 struct internal_model : sc_module 19 { 20 sc_in<int> i; 21 sc_out<int> o; 22 internal_model (sc_module_name n) : sc_module (n), 23 i("i"), 24 o("o") 25 { 26 } 12 13 struct internal_model : sc_module { 14 sc_in<int> i; 15 sc_out<int> o; 16 internal_model(sc_module_name n) : sc_module(n), i("i"), o("o") {} 27 17 }; 28 18 29 struct model : sc_module 30 {31 sc_in<int>i1, i2, i3;32 sc_out<int>o1, o2, o3;33 34 internal_model internal1,internal2;35 sc_signal<int> internal_signal;36 model (sc_module_name n) : sc_module(n),19 20 struct model : sc_module { 21 sc_in<int> i1, i2, i3; 22 sc_out<int> o1, o2, o3; 23 sc_signal<int> r1, r2; 24 internal_model internal1,internal2; 25 sc_signal<int> internal_signal; 26 model(sc_module_name n) : sc_module(n), 37 27 i1("i1"), i2("i2"), i3("i3"), 38 o1("o1"), o2("o2"), o3("o3"), 39 r1("r1"), r2("r2"), 40 internal1 ("internal1"), 41 internal2 ("internal2"), 42 internal_signal ("internal_signal") 43 { 44 internal1.i (i3); 45 internal2.i (internal1.o); 46 internal1.o (internal_signal); 28 o1("o1"), o2("o2"), o3("o3"), 29 r1("r1"), r2("r2"), 30 internal1("internal1"), 31 internal2("internal2"), 32 internal_signal("internal_signal") { 33 internal1.i(i3); 34 internal2.i(internal1.o); 35 internal1.o(internal_signal); 47 36 #if defined(ERROR) 48 internal1.o(internal2.i); // SystemC 2.0.1 & 2.1.v1 error: no match for call to `(sc_out<int>) (sc_in<int>&)'37 internal1.o(internal2.i); // SystemC 2.0.1 & 2.1.v1 error: no match for call to `(sc_out<int>) (sc_in<int>&)' 49 38 #endif 50 internal2.o (o3); 51 } 39 internal2.o(o3); 40 } 41 52 42 }; 53 43 54 int55 sc_main (int argc, char ** argv)56 {57 model m("m");58 sc_clock clk ("clock");59 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4");60 44 61 m.i1 (s1); 62 m.i2 (s1); // 63 m.i3 (s1); 64 m.o1 (s4); // 65 m.o2 (s2); 66 m.o3 (s3); 45 int sc_main (int argc, char ** argv) { 46 model m("m"); 47 sc_clock clk("clock"); 48 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4"); 67 49 68 sc_start (0); 50 m.i1 (s1); 51 m.i2 (s1); 52 m.i3 (s1); 53 m.o1 (s4); 54 m.o2 (s2); 55 m.o3 (s3); 69 56 70 sc_start (1); 71 sc_start (10); 57 sc_start(sc_time(0, sc_core::SC_NS)); 72 58 73 cerr << "Test OK.\n"; 74 return 0; 59 sc_start(sc_time(1, sc_core::SC_NS)); 60 sc_start(sc_time(10, sc_core::SC_NS)); 61 62 cout << "OK" << endl; 63 return 0; 75 64 } 76 65 66 67 /* 68 # Local Variables: 69 # tab-width: 4; 70 # c-basic-offset: 4; 71 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 72 # indent-tabs-mode: nil; 73 # End: 74 # 75 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 76 */ 77 -
sources/test_regression/24082009/Makefile
r41 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 EXE_SCASS = system_systemcass.x 4 EXE_SC = system_systemc.x 5 EXE = ${EXE_SCASS} 6 OBJECTS = $(EXE:.x=.o) 7 LINKS = $(OBJECTS:.o=.cpp) 5 test : all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 time_scass=$$(/usr/bin/time -f "%e" 2>&1 ./$(EXE_SCASS) --nodynamiclink | tail -n 1) ; \ 11 time_sc=$$(/usr/bin/time -f "%e" 2>&1 ./$(EXE_SC) | tail -n 1) ; \ 12 echo "OK (time SystemCass: $$time_scass - time SystemC : $$time_sc)" ; \ 13 else echo "KO" ; \ 14 fi ; 15 8 16 9 RESULTS = perf10 11 .SECONDARY:12 13 main : $(EXE)14 15 test : ${RESULTS}16 @echo OK17 18 perf : system_systemcass.x19 time (./system_systemcass.x --nobanner --p --nodynamiclink 1000000 )20 21 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)22 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)23 24 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)25 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)26 27 -include Makefile.deps28 29 %_systemc.cpp : %.cpp30 ln -s $*.cpp $*_systemc.cpp31 32 %_systemcass.cpp : %.cpp33 ln -s $*.cpp $*_systemcass.cpp34 35 %_systemc.o : %_systemc.cpp36 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps37 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o38 39 %_systemcass.o : %_systemcass.cpp40 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps41 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o42 43 clean :44 rm -f Makefile.deps45 -rm -f *.o gmon.out46 -rm -f $(EXE) $(OBJECTS)47 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null48 -rm -f core*49 -rm -rf generated_by_systemcass50 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd51 -rm -rf ${RESULTS} -
sources/test_regression/24082009/system.cpp
r41 r55 1 #include <systemc.h> 1 2 2 #include <signal.h> 3 3 4 #include "systemc.h" 5 #include "test.h" 6 4 7 using namespace std; 5 8 6 9 struct A : sc_module { 7 sc_in_clkclk;8 sc_in <int>i1;9 sc_signal <int>r1;10 sc_out <int>o1;10 sc_in_clk clk; 11 sc_in <int> i1; 12 sc_signal <int> r1; 13 sc_out <int> o1; 11 14 12 void transition () { 13 int i; 14 for (i = 0; i < 1000; ++i) 15 ; 16 r1 = i1; 17 } 18 void gen_moore () { 19 int i; 20 for (i = 0; i < 1000; ++i) 21 ; 22 o1 = r1; 23 } 15 void transition() { 16 int i; 17 for (i = 0; i < 1000; ++i); 18 r1 = i1; 19 } 24 20 25 SC_CTOR (A) : clk ("clk"), o1("o1") { 26 SC_METHOD(transition); 27 sensitive << clk.pos(); 28 SC_METHOD(gen_moore); 29 sensitive << clk.neg(); 30 }; 21 void gen_moore() { 22 int i; 23 for (i = 0; i < 1000; ++i); 24 o1 = r1; 25 } 26 27 SC_CTOR (A) : clk("clk"), o1("o1") { 28 SC_METHOD(transition); 29 sensitive << clk.pos(); 30 dont_initialize(); 31 32 SC_METHOD(gen_moore); 33 sensitive << clk.neg(); 34 dont_initialize(); 35 } 36 31 37 }; 32 38 33 int sc_main (int argc, char *argv[])34 {35 sc_clock signal_clk("my_clock",1, 0.5);36 sc_signal<int> s1("s1"),s2("s2"),s3("s3"),s4("s4");37 39 38 A a("a"); 39 A b("b"); 40 41 a.clk (signal_clk); 42 b.clk (signal_clk); 43 44 a.i1 (s1); 45 a.o1 (s2); 40 int sc_main (int argc, char * argv[]) { 41 sc_clock signal_clk("my_clock"); 42 sc_signal<int> s1("s1"), s2("s2"), s3("s3"), s4("s4"); 46 43 47 b.i1 (s3);48 b.o1 (s4);44 A a("a"); 45 A b("b"); 49 46 50 // Init & run51 sc_initialize ();47 a.clk(signal_clk); 48 b.clk(signal_clk); 52 49 53 if (argc == 1) 54 { 55 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 50 a.i1(s1); 51 a.o1(s2); 52 53 b.i1(s3); 54 b.o1(s4); 55 56 // Init & run 57 sc_start(sc_time(0, sc_core::SC_NS)); 58 59 s1.write(1); 60 61 sc_start(sc_time(100000, sc_core::SC_NS)); 62 63 cout << s1.read() << endl; 64 cout << s2.read() << endl; 65 56 66 return EXIT_SUCCESS; 57 67 } 58 68 59 s1.write (1);60 69 61 sc_start (atoi(argv[1])); 70 /* 71 # Local Variables: 72 # tab-width: 4; 73 # c-basic-offset: 4; 74 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 75 # indent-tabs-mode: nil; 76 # End: 77 # 78 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 79 */ 62 80 63 cout << s1.read() << endl;64 cout << s2.read() << endl;65 66 return EXIT_SUCCESS;67 } -
sources/test_regression/25032005/Makefile
r18 r55 1 1 2 include ../env.mk 3 SIGNAL_GRAPH = signal_graph.dot 4 PROCESS_ORDER = process_order.dot 5 MODULE_GRAPH = module_graph.dot 6 SIGNAL_ORDER = signal_order.txt 7 ERASE = $(SIGNAL_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER) $(MODULE_GRAPH) 8 include ../Makefile.common 2 9 3 EXE_SCASS = system_systemcass.x 4 EXE_SC = system_systemc.x 5 EXE = ${EXE_SCASS} ${EXE_SC} 6 OBJECTS = $(EXE:.x=.o) 7 LINKS = $(OBJECTS:.o=.cpp) 10 SIGNAL_GRAPH_REF = signal_graph_ref.dot 11 PROCESS_ORDER_REF = process_order_ref.dot 12 SIGNAL_ORDER_REF = signal_order_ref.txt 8 13 9 .SECONDARY: 10 11 main : $(EXE) 12 13 test : main 14 ./system_systemc.x ; \ 15 ./system_systemcass.x --p --t || eval ${failcom} ; \ 16 ((tail --lines=+3 signal_graph.dot | diff signal_graph_reference.dot -) || (tail -n +3 signal_graph.dot | diff signal_graph_reference2.dot -)) || eval ${failcom} 17 tail --lines=+3 process_order.dot | diff process_order_reference.dot - 18 diff signal_order_reference.txt signal_order.txt 19 @echo Test OK. 20 21 %_systemc.x : %_systemc.o $(SYSTEMC_LIB) 22 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 23 24 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB) 25 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 26 27 -include Makefile.deps 28 29 %_systemc.cpp : %.cpp 30 ln -s $*.cpp $*_systemc.cpp 31 32 %_systemcass.cpp : %.cpp 33 ln -s $*.cpp $*_systemcass.cpp 34 35 %_systemc.o : %_systemc.cpp 36 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps 37 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o 38 39 %_systemcass.o : %_systemcass.cpp 40 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps 41 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o 42 43 %.gif : %.dot 44 dot -Tgif -o $*.gif $*.dot 45 46 clean : 47 rm -f Makefile.deps 48 -rm -f *.o gmon.out 49 -rm -f port_graph.dot signal_order.txt process_order.dot signal_graph.dot 50 -rm -f $(EXE) $(OBJECTS) 51 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null 52 -rm -f core* 53 -rm -f *~ 54 -rm -rf generated_by_systemcass 55 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd 14 test : all 15 @echo -ne "| Testing $$(basename $$(pwd)): " ; 16 @./$(EXE_SC) 2> /dev/null || res=1 ; \ 17 ./$(EXE_SCASS) --p --t 2> /dev/null || res=1 ; \ 18 (tail -n +3 $(SIGNAL_GRAPH) | diff $(SIGNAL_GRAPH_REF) -) > /dev/null || res=1 ; \ 19 (tail -n +3 $(PROCESS_ORDER) | diff $(PROCESS_ORDER_REF) -) > /dev/null || res=1 ; \ 20 diff $(SIGNAL_ORDER_REF) $(SIGNAL_ORDER) > /dev/null || res=1 ;\ 21 if [ x"$$res" = x ] ; then echo "OK" ; else echo "KO" ; fi ; 56 22 -
sources/test_regression/25032005/system.cpp
r35 r55 1 #include <systemc.h>2 1 #include <signal.h> 3 #include "chrono.h" 2 3 #include "systemc.h" 4 #include "test.h" 5 4 6 5 7 using namespace std; 6 8 7 9 struct A : sc_module { 8 sc_in_clkclk;9 sc_out<bool>o1;10 sc_in_clk clk; 11 sc_out<bool> o1; 10 12 11 void eval() {12 o1 = (rand()%2) == 0;13 }13 void eval() { 14 o1 = (rand() % 2) == 0; 15 } 14 16 15 SC_CTOR (A) : clk ("clk"), o1("o1") { 16 SC_METHOD(eval); 17 sensitive << clk.neg(); 18 #ifdef SYSTEMCASS_SPECIFIC 19 // s1(); 20 #endif 21 }; 17 SC_CTOR (A) : clk("clk"), o1("o1") { 18 SC_METHOD(eval); 19 sensitive << clk.neg(); 20 dont_initialize(); 21 } 22 22 }; 23 23 24 24 25 struct B : sc_module { 25 sc_in_clkclk;26 sc_in<bool>i1;27 sc_in<bool> i2;28 sc_out<bool> o1;29 sc_out<bool>o2;26 sc_in_clk clk; 27 sc_in<bool> i1; 28 sc_out<bool> o1; 29 sc_in<bool> i2; 30 sc_out<bool> o2; 30 31 31 void eval1 () { 32 o1 = ~i1; 33 } 34 void eval2 () { 35 o2 = ~i2; 36 } 32 void eval1() { 33 o1 = ~i1; 34 } 37 35 38 SC_CTOR (B) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2") { 39 SC_METHOD(eval1); 40 sensitive << clk.neg(); 41 sensitive << i1; 36 void eval2() { 37 o2 = ~i2; 38 } 39 40 SC_CTOR (B) : clk("clk"), i1("i1"), o1("o1"), i2("i2"), o2("o2") { 41 SC_METHOD(eval1); 42 sensitive << clk.neg(); 43 sensitive << i1; 44 dont_initialize(); 42 45 #ifdef SYSTEMCASS_SPECIFIC 43 o1(i1);46 o1(i1); 44 47 #endif 45 SC_METHOD(eval2); 46 sensitive << clk.neg(); 47 sensitive << i2; 48 SC_METHOD(eval2); 49 sensitive << clk.neg(); 50 sensitive << i2; 51 dont_initialize(); 48 52 #ifdef SYSTEMCASS_SPECIFIC 49 o2(i2);53 o2(i2); 50 54 #endif 51 }; 55 } 56 52 57 }; 53 58 59 54 60 struct C : sc_module { 55 sc_in_clkclk;56 sc_in<bool>i1;57 sc_in<bool> i2;58 sc_out<bool> o1;61 sc_in_clk clk; 62 sc_in<bool> i1; 63 sc_out<bool> o1; 64 sc_in<bool> i2; 59 65 60 void eval1() {61 o1 = i1 ^ i2;62 }66 void eval1() { 67 o1 = i1 ^ i2; 68 } 63 69 64 SC_CTOR (C) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2") { 65 SC_METHOD(eval1); 66 sensitive << clk.neg(); 67 sensitive << i1 << i2; 70 SC_CTOR (C) : clk ("clk"), i1("i1"), o1("o1"), i2("i2") { 71 SC_METHOD(eval1); 72 sensitive << clk.neg(); 73 sensitive << i1 << i2; 74 dont_initialize(); 68 75 #ifdef SYSTEMCASS_SPECIFIC 69 o1(i1);70 o1(i2);76 o1(i1); 77 o1(i2); 71 78 #endif 72 }; 79 } 80 73 81 }; 74 82 83 75 84 struct D : sc_module { 76 sc_in_clkclk;77 sc_out<bool>o1;85 sc_in_clk clk; 86 sc_out<bool> o1; 78 87 79 void eval() {80 o1 = (rand()%2) == 0;81 }88 void eval() { 89 o1 = (rand() % 2) == 0; 90 } 82 91 83 SC_CTOR (D) : clk ("clk"), o1("o1") { 84 SC_METHOD(eval); 85 sensitive << clk.neg(); 86 #ifdef SYSTEMCASS_SPECIFIC 87 // s1(); 88 #endif 89 }; 92 SC_CTOR (D) : clk("clk"), o1("o1") { 93 SC_METHOD(eval); 94 sensitive << clk.neg(); 95 dont_initialize(); 96 } 97 90 98 }; 91 99 92 int sc_main (int argc, char *argv[])93 {94 sc_clock signal_clk("my_clock",1, 0.5);95 sc_signal<bool> s1("s1"),s2("s2"),s3("s3"),s4("s4"),s5("s5");96 100 97 A a("a"); 98 B b("b"); 99 C c("c"); 100 D d("d"); 101 102 a.clk (signal_clk); 103 b.clk (signal_clk); 104 c.clk (signal_clk); 105 d.clk (signal_clk); 106 107 a.o1 (s1); 108 b.i1 (s1); 109 110 d.o1 (s2); 111 c.i2 (s2); 101 int sc_main (int argc, char * argv[]) { 102 sc_clock signal_clk("my_clock"); 103 sc_signal<bool> s1("s1"), s2("s2"), s3("s3"), s4("s4"), s5("s5"); 112 104 113 b.o1 (s3); 114 c.i1 (s3); 115 116 c.o1 (s4); 117 b.i2 (s4); 118 119 b.o2 (s5); 120 121 // Init & run 122 sc_initialize (); 105 A a("a"); 106 B b("b"); 107 C c("c"); 108 D d("d"); 123 109 124 if (argc == 1) 125 { 126 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 110 a.clk(signal_clk); 111 b.clk(signal_clk); 112 c.clk(signal_clk); 113 d.clk(signal_clk); 114 115 a.o1(s1); 116 b.i1(s1); 117 118 d.o1(s2); 119 c.i2(s2); 120 121 b.o1(s3); 122 c.i1(s3); 123 124 c.o1(s4); 125 b.i2(s4); 126 127 b.o2(s5); 128 129 // Init & run 130 sc_start(sc_time(1, sc_core::SC_NS)); 131 127 132 return EXIT_SUCCESS; 128 133 } 129 134 130 chrono_t chrono;131 chrono.start ();132 135 133 sc_start (atoi(argv[1])); 136 /* 137 # Local Variables: 138 # tab-width: 4; 139 # c-basic-offset: 4; 140 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 141 # indent-tabs-mode: nil; 142 # End: 143 # 144 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 145 */ 134 146 135 chrono.stop ();136 unsigned int t = chrono;137 cout << "Time elapsed (sec) : " << t << endl;138 cout << "Cycles done : " << sc_simulation_time () << endl;139 cout << "Performance : " << sc_simulation_time () / t << endl;140 printf("\nPress <RETURN> to exit simulation.");141 char buf_ret[2];142 cin.getline(buf_ret,1);143 return EXIT_SUCCESS;144 } -
sources/test_regression/28102005/Makefile
r15 r55 1 1 2 include ../env.mk 3 include ../Makefile.common 2 4 3 SYSTEM = system.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 5 test : all 6 @echo -ne "| Testing $$(basename $$(pwd)): " ; 7 @./$(EXE_SCASS) > $(LOG_SCASS) 2> /dev/null 8 @./$(EXE_SC) > $(LOG_SC) 2> /dev/null 9 @if diff $(LOG_SC) $(LOG_SCASS) > /dev/null ; then \ 10 echo "OK" ; \ 11 else echo "KO" ; \ 12 fi ; 10 13 11 .SECONDARY:12 14 13 main : $(EXE)14 15 test : main16 @./system_systemcass.x || eval ${failcom}17 18 %.gif : %.dot19 dot -Tgif -o $*.gif $*.dot20 21 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)22 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)23 24 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)25 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)26 27 -include Makefile.deps28 29 %_systemc.cpp : %.cpp30 ln -s $*.cpp $*_systemc.cpp31 32 %_systemcass.cpp : %.cpp33 ln -s $*.cpp $*_systemcass.cpp34 35 %_systemc.o : %_systemc.cpp36 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps37 $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o38 39 %_systemcass.o : %_systemcass.cpp40 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps41 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o42 43 clean :44 rm -f Makefile.deps45 -rm -f *.o gmon.out *~46 -rm -f ${LOG}47 -rm -f signal_order.txt module_order.dot signal_graph.dot48 -rm -f module_order.gif signal_graph.gif49 -rm -f $(EXE) $(OBJECTS)50 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null51 -rm -f core*52 -rm -rf generated_by_systemcass53 -rm -rf system_systemcass.x.vcd system_systemc.x.vcd54 -
sources/test_regression/28102005/system.cpp
r35 r55 1 #include <systemc.h> 1 2 2 #include <iostream> 3 3 #include <cstring> 4 4 5 #define ASSERT(x) \ 6 { errnum++; \ 7 if (!(x)) \ 8 { \ 9 cerr << "ASSERT : " #x "\n"; \ 10 exit (errnum); \ 11 } \ 12 } 13 14 #ifdef DEBUG 15 #define CERR(x) \ 16 { cerr << "" #x " = " << x << "\n"; } 17 #else 18 #define CERR(x) 19 #endif 5 #include "systemc.h" 6 #include "test.h" 20 7 21 8 22 9 using namespace std; 23 10 24 static int errnum = 0;25 11 26 void 27 check_time (int i) 28 { 29 const sc_time &t = sc_time_stamp (); 30 CERR(i); 31 CERR(t.to_double()); 12 void check_time(int i) { 13 const sc_time & t = sc_time_stamp(); 14 cout << i << endl; 15 32 16 #ifdef SYSTEMCASS_SPECIFIC 33 ASSERT((int) (t.to_double()) == i);17 ASSERT((int) (t.to_double()) == i); 34 18 #else 35 ASSERT((int) (t.to_double()) == i * 1000);19 ASSERT((int) (t.to_double()) == i * 1000); 36 20 #endif 37 CERR(t.to_seconds ()); 38 double seconds = t.to_seconds()*1000000000; 39 CERR(seconds); 40 ASSERT(((int)seconds) == i); 41 char s[256]; 42 const char *unit; 21 22 cout << t.to_seconds() << endl; 23 double seconds = t.to_seconds() * 1000000000; 24 cout << seconds << endl; 25 ASSERT(((int) seconds) == i); 26 char s[256]; 27 const char * unit; 28 43 29 #ifdef SYSTEMCASS_SPECIFIC 44 unit = "NS";30 unit = "NS"; 45 31 #else 46 if (i == 0)47 unit = "s";48 else if (i < 1000)49 unit = "ns";50 else51 unit = "ns";32 if (i == 0) { 33 unit = "s"; 34 } 35 else { 36 unit = "ns"; 37 } 52 38 #endif 53 sprintf (s, "%d %s", i,unit); 54 CERR(s);55 CERR(t.to_string()); 56 ASSERT(strcmp (t.to_string ().c_str(), s)== 0);39 40 sprintf(s, "%d %s", i, unit); 41 42 ASSERT(strcmp(t.to_string().c_str(), s) == 0); 57 43 } 58 44 59 int60 sc_main (int argc, char ** argv)61 {62 sc_clock clk ("clock");63 45 64 check_time (0); 65 sc_start (0);46 int sc_main (int argc, char ** argv) { 47 sc_clock clk("clock"); 66 48 67 check_time (0); 68 sc_start (1); 69 check_time (1); 49 check_time(0); 50 sc_start(sc_time(0, sc_core::SC_NS)); 70 51 71 sc_start (15); 72 check_time (16); 52 check_time(0); 53 sc_start(sc_time(1, sc_core::SC_NS)); 54 check_time(1); 73 55 74 sc_start (7);75 check_time (23);56 sc_start(sc_time(15, sc_core::SC_NS)); 57 check_time(16); 76 58 77 sc_start (100);78 check_time (123);59 sc_start(sc_time(7, sc_core::SC_NS)); 60 check_time(23); 79 61 80 sc_start (1000); 81 check_time (1123); 82 cerr << "Test OK.\n"; 83 return 0; 62 sc_start(sc_time(100, sc_core::SC_NS)); 63 check_time(123); 64 65 sc_start(sc_time(1000, sc_core::SC_NS)); 66 check_time(1123); 67 68 return 0; 84 69 } 85 70 71 72 /* 73 # Local Variables: 74 # tab-width: 4; 75 # c-basic-offset: 4; 76 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 77 # indent-tabs-mode: nil; 78 # End: 79 # 80 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 81 */ 82 -
sources/test_regression/29032005/Makefile
r18 r55 1 1 2 include ../env.mk 3 SIGNAL_GRAPH = signal_graph.dot 4 PROCESS_ORDER = process_order.dot 5 MODULE_GRAPH = module_graph.dot 6 PORT_GRAPH = port_graph.dot 7 SIGNAL_ORDER = signal_order.txt 8 ERASE = $(SIGNAL_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER) $(MODULE_GRAPH) $(PORT_GRAPH) 9 include ../Makefile.common 2 10 3 EXE_SCASS = system_systemcass.x 4 EXE_SC = system_systemc.x 5 EXE = ${EXE_SCASS} ${EXE_SC} 6 OBJECTS = $(EXE:.x=.o) 7 LINKS = $(OBJECTS:.o=.cpp) 11 SIGNAL_GRAPH_REF = signal_graph_ref.dot 12 PROCESS_ORDER_REF = process_order_ref.dot 13 PORT_GRAPH_REF = port_graph_ref.dot 14 SIGNAL_ORDER_REF = signal_order_ref.txt 8 15 9 .SECONDARY: 16 test : $(EXE_SCASS) 17 @echo -ne "| Testing $$(basename $$(pwd)): " ; 18 @./$(EXE_SCASS) --p --t --k 2> /dev/null || res=1 ; \ 19 (tail -n +3 $(SIGNAL_GRAPH) | diff $(SIGNAL_GRAPH_REF) -) > /dev/null || res=1 ; \ 20 (tail -n +3 $(PROCESS_ORDER) | diff $(PROCESS_ORDER_REF) -) > /dev/null || res=1 ; \ 21 (tail -n +3 $(PORT_GRAPH) | diff $(PORT_GRAPH_REF) -) > /dev/null || res=1 ; \ 22 diff $(SIGNAL_ORDER_REF) $(SIGNAL_ORDER) > /dev/null || res=1 ; \ 23 if [ x"$$res" = x ] ; then echo "OK" ; else echo "KO" ; fi ; 24 10 25 11 main : $(EXE)12 26 13 test : ${EXE}14 @for i in ${EXE_SCASS} ; do \15 ./$$i --p --t --k; \16 (tail -n +3 port_graph.dot | diff port_graph_reference.dot -) || eval ${failcom} ; \17 ((tail -n +3 signal_graph.dot | diff signal_graph_reference.dot -) \18 || (tail -n +3 signal_graph.dot | diff signal_graph_reference2.dot -) \19 || (tail -n +3 signal_graph.dot | diff signal_graph_reference3.dot -)) \20 || eval ${failcom} ; \21 ((tail -n +3 process_order.dot | diff process_order_reference.dot -) \22 || (tail -n +3 process_order.dot | diff process_order_reference2.dot -) \23 || (tail -n +3 process_order.dot | diff process_order_reference3.dot -)) \24 || eval ${failcom} ; \25 (diff signal_order_reference.txt signal_order.txt) \26 || (diff signal_order_reference2.txt signal_order.txt) \27 || (diff signal_order_reference3.txt signal_order.txt) \28 || eval ${failcom} ; \29 done30 @echo Test OK.31 32 %.gif : %.dot33 dot -Tgif -o $*.gif $*.dot34 35 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)36 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)37 38 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)39 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)40 41 -include Makefile.deps42 43 %_systemc.cpp : %.cpp44 ln -s $*.cpp $*_systemc.cpp45 46 %_systemcass.cpp : %.cpp47 ln -s $*.cpp $*_systemcass.cpp48 49 %_systemc.o : %_systemc.cpp50 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps51 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o52 53 %_systemcass.o : %_systemcass.cpp54 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps55 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o56 57 clean :58 rm -f Makefile.deps59 -rm -f *.o gmon.out60 -rm -f signal_order.txt module_order.dot signal_graph.dot61 -rm -f $(EXE) $(OBJECTS)62 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null63 -rm -f core*64 -rm -rf generated_by_systemcass65 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd66 -
sources/test_regression/29032005/system.cpp
r1 r55 1 #include <systemc.h> 1 2 2 #include <signal.h> 3 #include "chrono.h" 3 4 #include "systemc.h" 5 #include "test.h" 6 4 7 5 8 using namespace std; 6 9 7 10 struct M_0i1o : sc_module { 8 sc_in_clk clk; 9 sc_out<bool> o1; 10 11 void eval () { 12 o1 = (rand()%2) == 0; 13 } 14 15 SC_CTOR (M_0i1o) : clk ("clk"), o1("o1") { 16 SC_METHOD(eval); 17 sensitive << clk.neg(); 18 #ifdef SYSTEMCASS_SPECIFIC 19 //o1(); /* no need */ 20 #endif 21 }; 11 sc_in_clk clk; 12 sc_out<bool> o1; 13 14 void eval() { 15 o1 = (rand() % 2) == 0; 16 } 17 18 SC_CTOR (M_0i1o) : clk("clk"), o1("o1") { 19 SC_METHOD(eval); 20 sensitive << clk.neg(); 21 dont_initialize(); 22 } 23 22 24 }; 23 25 24 26 struct M_1i1o : sc_module { 25 sc_in_clk clk; 26 sc_in<bool> i1; 27 sc_out<bool> o1; 28 29 void eval1 () { 30 o1 = ~i1; 31 } 32 33 SC_CTOR (M_1i1o) : clk ("clk"), i1 ("i1"), o1("o1") { 34 SC_METHOD(eval1); 35 sensitive << clk.neg(); 36 sensitive << i1; 37 #ifdef SYSTEMCASS_SPECIFIC 38 o1(i1); 39 #endif 40 }; 41 }; 27 sc_in_clk clk; 28 sc_in<bool> i1; 29 sc_out<bool> o1; 30 31 void eval1() { 32 o1 = ~i1; 33 } 34 35 SC_CTOR (M_1i1o) : clk("clk"), i1("i1"), o1("o1") { 36 SC_METHOD(eval1); 37 sensitive << clk.neg(); 38 sensitive << i1; 39 dont_initialize(); 40 #ifdef SYSTEMCASS_SPECIFIC 41 o1(i1); 42 #endif 43 } 44 45 }; 46 42 47 43 48 44 49 struct M_2i2o : sc_module { 45 sc_in_clk clk; 46 sc_in<bool> i1; 47 sc_in<bool> i2; 48 sc_out<bool> o1; 49 sc_out<bool> o2; 50 51 void eval1 () { 52 o1 = ~i1; 53 } 54 void eval2 () { 55 o2 = ~i2; 56 } 57 58 SC_CTOR (M_2i2o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2") { 59 SC_METHOD(eval1); 60 sensitive << clk.neg(); 61 sensitive << i1; 62 #ifdef SYSTEMCASS_SPECIFIC 63 o1(i1); 64 #endif 65 SC_METHOD(eval2); 66 sensitive << clk.neg(); 67 sensitive << i2; 68 #ifdef SYSTEMCASS_SPECIFIC 69 o2(i2); 70 #endif 71 }; 72 }; 50 sc_in_clk clk; 51 sc_in<bool> i1; 52 sc_in<bool> i2; 53 sc_out<bool> o1; 54 sc_out<bool> o2; 55 56 void eval1() { 57 o1 = ~i1; 58 } 59 void eval2() { 60 o2 = ~i2; 61 } 62 63 SC_CTOR (M_2i2o) : clk("clk"), i1("i1"), i2("i2"), o1("o1"), o2("o2") { 64 SC_METHOD(eval1); 65 sensitive << clk.neg(); 66 sensitive << i1; 67 dont_initialize(); 68 #ifdef SYSTEMCASS_SPECIFIC 69 o1(i1); 70 #endif 71 SC_METHOD(eval2); 72 sensitive << clk.neg(); 73 sensitive << i2; 74 dont_initialize(); 75 #ifdef SYSTEMCASS_SPECIFIC 76 o2(i2); 77 #endif 78 } 79 80 }; 81 73 82 74 83 struct M_4i2o : sc_module { 75 sc_in_clk clk; 76 sc_in<bool> i1; 77 sc_in<bool> i2; 78 sc_in<bool> i3; 79 sc_in<bool> i4; 80 sc_out<bool> o1; 81 sc_out<bool> o2; 82 83 void eval1 () { 84 o1 = ~i1; 85 } 86 void eval2 () { 87 o2 = ~i2; 88 } 89 void eval3 () { 90 cout << i3 << i4 << "\n"; 91 } 92 93 SC_CTOR (M_4i2o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), 94 i3 ("i3"), i4 ("i4") { 95 SC_METHOD(eval1); 96 sensitive << clk.neg(); 97 sensitive << i1; 98 #ifdef SYSTEMCASS_SPECIFIC 99 o1(i1); 100 #endif 101 SC_METHOD(eval2); 102 sensitive << clk.neg(); 103 sensitive << i2; 104 #ifdef SYSTEMCASS_SPECIFIC 105 o2(i2); 106 #endif 107 SC_METHOD(eval3); 108 sensitive << clk.pos(); 109 // sensitive << i3 << i4; 110 #ifdef SYSTEMCASS_SPECIFIC 111 // No port dependency 112 #endif 113 }; 114 }; 84 sc_in_clk clk; 85 sc_in<bool> i1; 86 sc_in<bool> i2; 87 sc_in<bool> i3; 88 sc_in<bool> i4; 89 sc_out<bool> o1; 90 sc_out<bool> o2; 91 92 void eval1() { 93 o1 = ~i1; 94 } 95 96 void eval2() { 97 o2 = ~i2; 98 } 99 100 void eval3() { 101 cout << i3 << i4 << "\n"; 102 } 103 104 SC_CTOR (M_4i2o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), 105 o1("o1"), o2("o2") { 106 SC_METHOD(eval1); 107 sensitive << clk.neg(); 108 sensitive << i1; 109 dont_initialize(); 110 #ifdef SYSTEMCASS_SPECIFIC 111 o1(i1); 112 #endif 113 SC_METHOD(eval2); 114 sensitive << clk.neg(); 115 sensitive << i2; 116 dont_initialize(); 117 #ifdef SYSTEMCASS_SPECIFIC 118 o2(i2); 119 #endif 120 SC_METHOD(eval3); 121 sensitive << clk.pos(); 122 dont_initialize(); 123 } 124 125 }; 126 115 127 116 128 struct M_4i3o : sc_module { 117 sc_in_clk clk; 118 sc_in<bool> i1; 119 sc_in<bool> i2; 120 sc_in<bool> i3; 121 sc_in<bool> i4; 122 sc_out<bool> o1; 123 sc_out<bool> o2; 124 sc_out<bool> o3; 125 126 void eval1 () { 127 o1 = ~i1; 128 } 129 void eval2 () { 130 o2 = ~i2; 131 } 132 void eval3 () { 133 o3 = ~i3; 134 } 135 void eval4 () { 136 cout << i4 << "\n"; 137 } 138 139 SC_CTOR (M_4i3o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), i3 ("i3"), i4 ("i4"), o3 ("o3") { 140 SC_METHOD(eval1); 141 sensitive << clk.neg(); 142 sensitive << i1; 143 #ifdef SYSTEMCASS_SPECIFIC 144 o1(i1); 145 #endif 146 SC_METHOD(eval4); 147 sensitive << clk.pos(); 148 // sensitive << i4; 149 #ifdef SYSTEMCASS_SPECIFIC 150 // No port dependency 151 #endif 152 SC_METHOD(eval3); 153 sensitive << clk.neg(); 154 sensitive << i3; 155 #ifdef SYSTEMCASS_SPECIFIC 156 o3(i3); 157 #endif 158 SC_METHOD(eval2); 159 sensitive << clk.neg(); 160 sensitive << i2; 161 #ifdef SYSTEMCASS_SPECIFIC 162 o2(i2); 163 #endif 164 }; 165 }; 129 sc_in_clk clk; 130 sc_in<bool> i1; 131 sc_in<bool> i2; 132 sc_in<bool> i3; 133 sc_in<bool> i4; 134 sc_out<bool> o1; 135 sc_out<bool> o2; 136 sc_out<bool> o3; 137 138 void eval1() { 139 o1 = ~i1; 140 } 141 142 void eval2() { 143 o2 = ~i2; 144 } 145 146 void eval3() { 147 o3 = ~i3; 148 } 149 150 void eval4() { 151 cout << i4 << "\n"; 152 } 153 154 SC_CTOR (M_4i3o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), o1("o1"), o2("o2"), o3("o3") { 155 SC_METHOD(eval1); 156 sensitive << clk.neg(); 157 sensitive << i1; 158 dont_initialize(); 159 #ifdef SYSTEMCASS_SPECIFIC 160 o1(i1); 161 #endif 162 SC_METHOD(eval4); 163 sensitive << clk.pos(); 164 dont_initialize(); 165 166 SC_METHOD(eval3); 167 sensitive << clk.neg(); 168 sensitive << i3; 169 dont_initialize(); 170 #ifdef SYSTEMCASS_SPECIFIC 171 o3(i3); 172 #endif 173 SC_METHOD(eval2); 174 sensitive << clk.neg(); 175 sensitive << i2; 176 dont_initialize(); 177 #ifdef SYSTEMCASS_SPECIFIC 178 o2(i2); 179 #endif 180 } 181 }; 182 166 183 167 184 struct M_1i0o : sc_module { 168 sc_in_clk clk; 169 sc_in<bool> i1; 170 171 void eval1 () { 172 cout << i1.read() << "\n"; 173 } 174 175 SC_CTOR (M_1i0o) : clk ("clk"), i1 ("i1") { 176 SC_METHOD(eval1); 177 sensitive << clk.pos(); 178 // sensitive << i1; 179 #ifdef SYSTEMCASS_SPECIFIC 180 // No port dependency 181 #endif 182 }; 183 }; 184 185 int sc_main (int argc, char *argv[]) 186 { 187 sc_clock signal_clk("my_clock",1, 0.5); 188 sc_signal<bool> s1 ("s01"), 189 s2 ("s02"), 190 s3 ("s03"), 191 s4 ("s04"), 192 s5 ("s05"), 193 s6 ("s06"), 194 s7 ("s07"), 195 s8 ("s08"), 196 s9 ("s09"), 197 s10("s10"), 198 s11("s11"), 199 s12("s12"), 200 s13("s13"), 201 s14("s14"), 202 s15("s15"); 203 204 205 M_0i1o a("a"); 206 M_4i2o b("b"); 207 M_1i1o c("c"); 208 M_4i3o d("d"); 209 M_1i1o e("e"); 210 M_1i1o f("f"); 211 M_2i2o g("g"); 212 M_1i1o h("h"); 213 M_1i0o i("i"); 214 M_0i1o j("j"); 215 M_0i1o k("k"); 216 M_0i1o l("l"); 217 218 a.clk (signal_clk); 219 b.clk (signal_clk); 220 c.clk (signal_clk); 221 d.clk (signal_clk); 222 e.clk (signal_clk); 223 f.clk (signal_clk); 224 g.clk (signal_clk); 225 h.clk (signal_clk); 226 i.clk (signal_clk); 227 j.clk (signal_clk); 228 k.clk (signal_clk); 229 l.clk (signal_clk); 230 231 a.o1 (s1); 232 b.i1 (s1); 233 234 b.o2 (s2); 235 c.i1 (s2); 236 237 c.o1 (s3); 238 d.i1 (s3); 239 240 d.o1 (s4); 241 b.i3 (s4); 242 243 d.o2 (s5); 244 b.i4 (s5); 245 246 b.o1 (s6); 247 e.i1 (s6); 248 249 e.o1 (s7); 250 f.i1 (s7); 251 252 f.o1 (s8); 253 b.i2 (s8); 254 255 d.o3 (s9); 256 g.i1 (s9); 257 258 g.o1 (s10); 259 h.i1 (s10); 260 261 h.o1 (s11); 262 d.i4 (s11); 263 264 j.o1 (s12); 265 g.i2 (s12); 266 267 g.o2 (s13); 268 i.i1 (s13); 269 270 l.o1 (s14); 271 d.i3 (s14); 272 273 k.o1 (s15); 274 d.i2 (s15); 275 276 // Init & run 277 sc_initialize (); 278 279 if (argc == 1) 280 { 281 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 185 sc_in_clk clk; 186 sc_in<bool> i1; 187 188 void eval1() { 189 cout << i1.read() << "\n"; 190 } 191 192 SC_CTOR (M_1i0o) : clk("clk"), i1("i1") { 193 SC_METHOD(eval1); 194 sensitive << clk.pos(); 195 dont_initialize(); 196 } 197 }; 198 199 200 int sc_main (int argc, char * argv[]) { 201 sc_clock signal_clk("my_clock",1, 0.5); 202 sc_signal<bool> s1("s01"), 203 s2 ("s02"), 204 s3 ("s03"), 205 s4 ("s04"), 206 s5 ("s05"), 207 s6 ("s06"), 208 s7 ("s07"), 209 s8 ("s08"), 210 s9 ("s09"), 211 s10("s10"), 212 s11("s11"), 213 s12("s12"), 214 s13("s13"), 215 s14("s14"), 216 s15("s15"); 217 218 219 M_0i1o a("a"); 220 M_4i2o b("b"); 221 M_1i1o c("c"); 222 M_4i3o d("d"); 223 M_1i1o e("e"); 224 M_1i1o f("f"); 225 M_2i2o g("g"); 226 M_1i1o h("h"); 227 M_1i0o i("i"); 228 M_0i1o j("j"); 229 M_0i1o k("k"); 230 M_0i1o l("l"); 231 232 a.clk(signal_clk); 233 b.clk(signal_clk); 234 c.clk(signal_clk); 235 d.clk(signal_clk); 236 e.clk(signal_clk); 237 f.clk(signal_clk); 238 g.clk(signal_clk); 239 h.clk(signal_clk); 240 i.clk(signal_clk); 241 j.clk(signal_clk); 242 k.clk(signal_clk); 243 l.clk(signal_clk); 244 245 a.o1(s1); 246 b.i1(s1); 247 248 b.o2(s2); 249 c.i1(s2); 250 251 c.o1(s3); 252 d.i1(s3); 253 254 d.o1(s4); 255 b.i3(s4); 256 257 d.o2(s5); 258 b.i4(s5); 259 260 b.o1(s6); 261 e.i1(s6); 262 263 e.o1(s7); 264 f.i1(s7); 265 266 f.o1(s8); 267 b.i2(s8); 268 269 d.o3(s9); 270 g.i1(s9); 271 272 g.o1(s10); 273 h.i1(s10); 274 275 h.o1(s11); 276 d.i4(s11); 277 278 j.o1(s12); 279 g.i2(s12); 280 281 g.o2(s13); 282 i.i1(s13); 283 284 l.o1(s14); 285 d.i3(s14); 286 287 k.o1(s15); 288 d.i2(s15); 289 290 // Init & run 291 sc_start(sc_time(0, sc_core::SC_NS)); 292 282 293 return EXIT_SUCCESS; 283 }284 285 chrono_t chrono;286 chrono.start ();287 288 sc_start (atoi(argv[1]));289 290 chrono.stop ();291 unsigned int t = chrono;292 cout << "Time elapsed (sec) : " << t << endl;293 cout << "Cycles done : " << sc_simulation_time () << endl;294 cout << "Performance : " << sc_simulation_time () / t << endl;295 printf("\nPress <RETURN> to exit simulation.");296 char buf_ret[2];297 cin.getline(buf_ret,1);298 return EXIT_SUCCESS;299 294 } 295 296 297 /* 298 # Local Variables: 299 # tab-width: 4; 300 # c-basic-offset: 4; 301 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 302 # indent-tabs-mode: nil; 303 # End: 304 # 305 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 306 */ 307 -
sources/test_regression/30032005a/Makefile
r15 r55 1 1 2 include ../env.mk 3 SIGNAL_GRAPH = signal_graph.dot 4 PROCESS_ORDER = process_order.dot 5 MODULE_GRAPH = module_graph.dot 6 PORT_GRAPH = port_graph.dot 7 SIGNAL_ORDER = signal_order.txt 8 ERASE = $(SIGNAL_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER) $(MODULE_GRAPH) $(PORT_GRAPH) 9 include ../Makefile.common 2 10 3 SYSTEM = system.cpp system2.cpp system3.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 11 SIGNAL_GRAPH_REF = signal_graph_ref.dot 12 PROCESS_ORDER_REF = process_order_ref.dot 13 SIGNAL_ORDER_REF = signal_order_ref.txt 14 MODULE_GRAPH_REF = module_graph_ref.dot 10 15 11 PREFIX = $(SYSTEM:.cpp=) 12 13 #DIFF = $(SYSTEM:.cpp=.diff) 14 15 .SECONDARY: 16 17 #%.diff : %_module_graph_reference.dot %_module_graph.dot 18 # diff $*_module_graph_reference.dot $*_module_graph.dot 19 # diff $*_signal_graph_reference.dot $*_signal_graph.dot 20 # diff $*_module_order_reference.dot $*_module_order.dot 21 # diff $*_signal_order_reference.dot $*_signal_order.dot 22 23 #%_signal_graph_reference.dot %_signal_graph.dot \ 24 # %_module_order_reference.dot %_module_order.dot \ 25 # %_signal_order_reference.dot %_signal_order.dot 26 27 #%_module_graph.dot : %_systemcass.x 28 # $*_systemcass.x --t 29 # mv module_graph.dot $*_module_graph.dot 30 31 #%_module_order.dot %_signal_graph.dot %_signal_order.dot : %_systemcass.x 32 # $*_systemcass.x --t --p 33 34 main : $(EXE) 35 36 #diff : ${DIFF} 37 38 test : ${EXE} 39 for i in ${PREFIX} ; do \ 40 echo Testing $$i... ; \ 41 (./$${i}_systemcass.x --t) || eval ${failcom}; \ 42 tail -n +3 module_graph.dot | diff $${i}_module_graph_reference.dot - || eval ${failcom}; \ 43 ./$${i}_systemcass.x --p --t || eval ${failcom}; \ 44 tail -n +3 signal_graph.dot | diff $${i}_signal_graph_reference.dot - \ 45 || tail -n +3 signal_graph.dot | diff $${i}_signal_graph_reference2.dot - \ 46 || eval ${failcom}; \ 47 tail -n +3 process_order.dot | diff $${i}_process_order_reference.dot - || eval ${failcom}; \ 48 diff signal_order.txt $${i}_signal_order_reference.txt \ 49 || diff signal_order.txt $${i}_signal_order_reference2.txt \ 50 || eval ${failcom}; \ 51 done 52 (./system_systemc.x) || eval ${failcom} 53 (./system2_systemc.x) || eval ${failcom} 54 (./system3_systemc.x) || eval ${failcom} 55 @echo Test OK. 16 test : $(EXE_SCASS) 17 @echo -ne "| Testing $$(basename $$(pwd)): " ; \ 18 ./$(EXE_SCASS) --t 2> /dev/null || res=1 ; \ 19 (tail -n +3 $(MODULE_GRAPH) | diff $(MODULE_GRAPH_REF) -) > /dev/null || res=1 ; \ 20 ./$(EXE_SCASS) --p --t 2> /dev/null || res=1 ; \ 21 (tail -n +3 $(SIGNAL_GRAPH) | diff $(SIGNAL_GRAPH_REF) -) > /dev/null || res=1 ; \ 22 (tail -n +3 $(PROCESS_ORDER) | diff $(PROCESS_ORDER_REF) -) > /dev/null || res=1 ; \ 23 diff $(SIGNAL_ORDER_REF) $(SIGNAL_ORDER) > /dev/null || res=1 ; \ 24 if [ x"$$res" = x ] ; then echo "OK" ; else echo "KO" ; fi ; 25 56 26 57 27 58 59 %.gif : %.dot60 dot -Tgif -o $*.gif $*.dot61 62 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)63 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)64 65 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)66 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)67 68 -include Makefile.deps69 70 %_systemc.cpp : %.cpp71 ln -s $*.cpp $*_systemc.cpp72 73 %_systemcass.cpp : %.cpp74 ln -s $*.cpp $*_systemcass.cpp75 76 %_systemc.o : %_systemc.cpp77 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps78 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o79 80 %_systemcass.o : %_systemcass.cpp81 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps82 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o83 84 clean :85 rm -f Makefile.deps86 -rm -f *.o gmon.out87 -rm -f *~88 -rm -f ${LOG}89 -rm -f signal_order.txt module_order.dot signal_graph.dot90 -rm -f module_order.gif signal_graph.gif91 -rm -f $(EXE) $(OBJECTS)92 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null93 -rm -f core*94 -rm -rf generated_by_systemcass95 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd96 -
sources/test_regression/30032005a/system.cpp
r1 r55 1 #include <systemc.h>2 1 #include <signal.h> 3 #include "chrono.h" 2 3 #include "systemc.h" 4 #include "test.h" 5 4 6 5 7 using namespace std; 6 8 7 9 struct M1_3i3o : sc_module { 8 sc_in_clkclk;9 sc_in<bool>i1;10 sc_in<bool>i2;11 sc_in<bool>i3;12 sc_out<bool>o1;13 sc_out<bool>o2;14 sc_out<bool>o3;10 sc_in_clk clk; 11 sc_in<bool> i1; 12 sc_in<bool> i2; 13 sc_in<bool> i3; 14 sc_out<bool> o1; 15 sc_out<bool> o2; 16 sc_out<bool> o3; 15 17 16 sc_signal<bool>reg;18 sc_signal<bool> reg; 17 19 18 void eval_mealy1() {19 o1 = ~i1;20 20 void eval_mealy1() { 21 o1 = ~i1; 22 } 21 23 22 void eval_mealy2() {23 o2 = ~i2;24 24 void eval_mealy2() { 25 o2 = ~i2; 26 } 25 27 26 void tr_moore() {27 reg = i3;28 28 void tr_moore() { 29 reg = i3; 30 } 29 31 30 void gen_moore() {31 o3 = ~reg;32 32 void gen_moore() { 33 o3 = ~reg; 34 } 33 35 34 SC_CTOR (M1_3i3o) : clk("clk"), i1("i1"), o1("o1"), i2("i2"), o2("o2"), 35 i3("i3"), o3("o3") { 36 SC_METHOD(eval_mealy1); 37 sensitive << clk.neg(); 38 sensitive << i1; 36 SC_CTOR (M1_3i3o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), o1("o1"), 37 o2("o2"), o3("o3") { 38 SC_METHOD(eval_mealy1); 39 sensitive << clk.neg(); 40 sensitive << i1; 41 dont_initialize(); 39 42 #ifdef SYSTEMCASS_SPECIFIC 40 43 o1(i1); 41 44 #endif 42 SC_METHOD(eval_mealy2); 43 sensitive << clk.neg(); 44 sensitive << i2; 45 46 SC_METHOD(eval_mealy2); 47 sensitive << clk.neg(); 48 sensitive << i2; 49 dont_initialize(); 50 45 51 #ifdef SYSTEMCASS_SPECIFIC 46 52 o2(i2); 47 53 #endif 48 49 50 #ifdef SYSTEMCASS_SPECIFIC 51 #endif 52 53 54 #ifdef SYSTEMCASS_SPECIFIC 55 #endif 56 }; 54 SC_METHOD(tr_moore); 55 sensitive << clk.pos(); 56 dont_initialize(); 57 58 SC_METHOD(gen_moore); 59 sensitive << clk.neg(); 60 dont_initialize(); 61 } 62 57 63 }; 58 64 59 65 60 66 struct M2_4i4o : sc_module { 61 sc_in_clkclk;62 sc_in<bool>i1;63 sc_in<bool>i2;64 sc_in<bool>i3;65 sc_in<bool>i4;66 sc_out<bool>o1;67 sc_out<bool>o2;68 sc_out<bool>o3;69 sc_out<bool>o4;70 sc_signal<sc_uint<2> >reg;67 sc_in_clk clk; 68 sc_in<bool> i1; 69 sc_in<bool> i2; 70 sc_in<bool> i3; 71 sc_in<bool> i4; 72 sc_out<bool> o1; 73 sc_out<bool> o2; 74 sc_out<bool> o3; 75 sc_out<bool> o4; 76 sc_signal<sc_uint<2> > reg; 71 77 72 void tr_moore() {73 reg = ((i1.read() & i3.read())?2:0) + (i2.read() | i4.read());74 78 void tr_moore() { 79 reg = ((i1.read() & i3.read()) ? 2 : 0) + (i2.read() | i4.read()); 80 } 75 81 76 void gen_moore() {77 o1 = reg.read() & 1;78 o2 = reg.read() & 2;79 o3 = ~(reg.read() & 1);80 o4 = ~(reg.read() & 2);81 82 void gen_moore() { 83 o1 = reg.read() & 1; 84 o2 = reg.read() & 2; 85 o3 = ~(reg.read() & 1); 86 o4 = ~(reg.read() & 2); 87 } 82 88 83 SC_CTOR (M2_4i4o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), i3 ("i3"), o3("o3"), i4 ("i4"), o4 ("o4") { 84 SC_METHOD(tr_moore); 85 sensitive << clk.pos();86 #ifdef SYSTEMCASS_SPECIFIC 87 // no needs88 #endif 89 SC_METHOD(gen_moore); 90 sensitive << clk.neg(); 91 #ifdef SYSTEMCASS_SPECIFIC 92 #endif 93 }; 89 90 SC_CTOR (M2_4i4o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), i4("i4"), o1("o1"), o2("o2"), o3("o3"), o4("o4") { 91 SC_METHOD(tr_moore); 92 sensitive << clk.pos(); 93 dont_initialize(); 94 95 SC_METHOD(gen_moore); 96 sensitive << clk.neg(); 97 dont_initialize(); 98 } 99 94 100 }; 95 101 96 int sc_main (int argc, char *argv[])97 {98 sc_clock signal_clk("my_clock",1, 0.5);99 sc_signal<bool> s1 ("s01"),100 s2 ("s02"),101 s3 ("s03"),102 s4 ("s04"),103 s5 ("s05"),104 s6 ("s06"),105 s7 ("s07"),106 s8 ("s08"),107 s9 ("s09"),108 s10("s10"),109 s11("s11"),110 s12("s12"),111 s13("s13"),112 s14("s14"),113 s15("s15");114 115 102 116 M1_3i3o a ("a"); 117 M1_3i3o b ("b"); 118 M2_4i4o Moore("Moore"); 119 120 a.clk (signal_clk); 121 b.clk (signal_clk); 122 Moore.clk (signal_clk); 123 124 Moore.o1 (s1); 125 a.i1 (s1); 103 int sc_main (int argc, char * argv[]) { 104 sc_clock signal_clk("my_clock"); 105 sc_signal<bool> s1 ("s01"), 106 s2 ("s02"), 107 s3 ("s03"), 108 s4 ("s04"), 109 s5 ("s05"), 110 s6 ("s06"), 111 s7 ("s07"), 112 s8 ("s08"), 113 s9 ("s09"), 114 s10("s10"), 115 s11("s11"), 116 s12("s12"), 117 s13("s13"), 118 s14("s14"), 119 s15("s15"); 126 120 127 a.o1 (s2);128 b.i1 (s2);129 130 b.o1 (s3);131 Moore.i1 (s3);132 121 133 Moore.o2 (s4); 134 b.i2 (s4); 135 136 b.o2 (s5); 137 a.i2 (s5); 138 139 a.o2 (s6); 140 Moore.i2 (s6); 141 142 Moore.o3 (s7); 143 b.i3 (s7); 144 145 Moore.o4 (s8); 146 a.i3 (s8); 147 148 b.o3 (s9); 149 Moore.i4 (s9); 150 151 a.o3 (s10); 152 Moore.i3 (s10); 153 154 // Init & run 155 sc_initialize (); 122 M1_3i3o a("a"); 123 M1_3i3o b("b"); 124 M2_4i4o Moore("Moore"); 156 125 157 if (argc == 1) 158 { 159 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 126 a.clk(signal_clk); 127 b.clk(signal_clk); 128 Moore.clk(signal_clk); 129 130 Moore.o1(s1); 131 a.i1(s1); 132 133 a.o1(s2); 134 b.i1(s2); 135 136 b.o1(s3); 137 Moore.i1(s3); 138 139 Moore.o2(s4); 140 b.i2(s4); 141 142 b.o2(s5); 143 a.i2(s5); 144 145 a.o2(s6); 146 Moore.i2(s6); 147 148 Moore.o3(s7); 149 b.i3(s7); 150 151 Moore.o4(s8); 152 a.i3(s8); 153 154 b.o3(s9); 155 Moore.i4(s9); 156 157 a.o3(s10); 158 Moore.i3(s10); 159 160 // Init & run 161 sc_start(sc_time(0, sc_core::SC_NS)); 162 160 163 return EXIT_SUCCESS; 161 164 } 162 165 163 chrono_t chrono; 164 chrono.start (); 166 /* 167 # Local Variables: 168 # tab-width: 4; 169 # c-basic-offset: 4; 170 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 171 # indent-tabs-mode: nil; 172 # End: 173 # 174 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 175 */ 165 176 166 sc_start (atoi(argv[1]));167 168 chrono.stop ();169 unsigned int t = chrono;170 cout << "Time elapsed (sec) : " << t << endl;171 cout << "Cycles done : " << sc_simulation_time () << endl;172 cout << "Performance : " << sc_simulation_time () / t << endl;173 return EXIT_SUCCESS;174 } -
sources/test_regression/30032005b/Makefile
r15 r55 1 include ../env.mk2 1 3 SYSTEM = system.cpp system2.cpp system3.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 2 include ../30032005a/Makefile 10 3 11 PREFIX = $(SYSTEM:.cpp=)12 13 #DIFF = $(SYSTEM:.cpp=.diff)14 15 .SECONDARY:16 17 #%.diff : %_module_graph_reference.dot %_module_graph.dot18 # diff $*_module_graph_reference.dot $*_module_graph.dot19 # diff $*_signal_graph_reference.dot $*_signal_graph.dot20 # diff $*_module_order_reference.dot $*_module_order.dot21 # diff $*_signal_order_reference.dot $*_signal_order.dot22 23 #%_signal_graph_reference.dot %_signal_graph.dot \24 # %_module_order_reference.dot %_module_order.dot \25 # %_signal_order_reference.dot %_signal_order.dot26 27 #%_module_graph.dot : %_systemcass.x28 # $*_systemcass.x --t29 # mv module_graph.dot $*_module_graph.dot30 31 #%_module_order.dot %_signal_graph.dot %_signal_order.dot : %_systemcass.x32 # $*_systemcass.x --t --p33 34 main : $(EXE)35 36 #diff : ${DIFF}37 38 test : ${EXE}39 for i in ${PREFIX} ; do \40 echo Testing $$i... ; \41 (./$${i}_systemcass.x --t) || eval ${failcom}; \42 tail -n +3 module_graph.dot | diff $${i}_module_graph_reference.dot - || eval ${failcom}; \43 ./$${i}_systemcass.x --p --t || eval ${failcom}; \44 tail -n +3 signal_graph.dot | diff $${i}_signal_graph_reference.dot - \45 || tail -n +3 signal_graph.dot | diff $${i}_signal_graph_reference2.dot - \46 || eval ${failcom}; \47 tail -n +3 process_order.dot | diff $${i}_process_order_reference.dot - || eval ${failcom}; \48 diff signal_order.txt $${i}_signal_order_reference.txt \49 || diff signal_order.txt $${i}_signal_order_reference2.txt \50 || eval ${failcom}; \51 done52 (./system_systemc.x) || eval ${failcom}53 (./system2_systemc.x) || eval ${failcom}54 (./system3_systemc.x) || eval ${failcom}55 @echo Test OK.56 57 58 59 %.gif : %.dot60 dot -Tgif -o $*.gif $*.dot61 62 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)63 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)64 65 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)66 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)67 68 -include Makefile.deps69 70 %_systemc.cpp : %.cpp71 ln -s $*.cpp $*_systemc.cpp72 73 %_systemcass.cpp : %.cpp74 ln -s $*.cpp $*_systemcass.cpp75 76 %_systemc.o : %_systemc.cpp77 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps78 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o79 80 %_systemcass.o : %_systemcass.cpp81 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps82 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o83 84 clean :85 rm -f Makefile.deps86 -rm -f *.o gmon.out87 -rm -f *~88 -rm -f ${LOG}89 -rm -f signal_order.txt module_order.dot signal_graph.dot90 -rm -f module_order.gif signal_graph.gif91 -rm -f $(EXE) $(OBJECTS)92 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null93 -rm -f core*94 -rm -rf generated_by_systemcass95 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd96 -
sources/test_regression/30032005b/system.cpp
r1 r55 1 #include <systemc.h> 1 2 2 #include <signal.h> 3 #include "chrono.h" 3 4 #include "systemc.h" 5 #include "test.h" 4 6 5 7 using namespace std; 6 7 struct M1_3i3o : sc_module {8 sc_in_clk clk;9 sc_in<bool> i1;10 sc_in<bool> i2;11 sc_in<bool> i3;12 sc_out<bool> o1;13 sc_out<bool> o2;14 sc_out<bool> o3;15 8 16 sc_signal<bool> reg; 9 struct M1_1i1o : sc_module { 10 sc_in_clk clk; 11 sc_in<bool> i1; 12 sc_out<bool> o1; 17 13 18 void eval_mealy1() {19 o1 = ~i1;20 } 14 void eval_mealy1() { 15 o1 = ~i1; 16 }; 21 17 22 void eval_mealy2 () { 23 o2 = ~i2; 24 } 18 SC_CTOR (M1_1i1o) : clk("clk"), i1("i1"), o1("o1") { 19 SC_METHOD(eval_mealy1); 20 sensitive << clk.neg(); 21 sensitive << i1; 22 dont_initialize(); 23 #ifdef SYSTEMCASS_SPECIFIC 24 o1(i1); 25 #endif 26 } 25 27 26 void tr_moore () {27 reg = i3;28 }29 30 void gen_moore () {31 o3 = ~reg;32 }33 34 SC_CTOR (M1_3i3o) : clk("clk"), i1("i1"), o1("o1"), i2("i2"), o2("o2"),35 i3("i3"), o3("o3") {36 SC_METHOD(eval_mealy1);37 sensitive << clk.neg();38 sensitive << i1;39 #ifdef SYSTEMCASS_SPECIFIC40 o1(i1);41 #endif42 SC_METHOD(eval_mealy2);43 sensitive << clk.neg();44 sensitive << i2;45 #ifdef SYSTEMCASS_SPECIFIC46 o2(i2);47 #endif48 SC_METHOD(tr_moore);49 sensitive << clk.pos();50 #ifdef SYSTEMCASS_SPECIFIC51 #endif52 SC_METHOD(gen_moore);53 sensitive << clk.neg();54 #ifdef SYSTEMCASS_SPECIFIC55 #endif56 };57 28 }; 58 29 59 30 60 struct M2_4i4o : sc_module { 61 sc_in_clk clk; 62 sc_in<bool> i1; 63 sc_in<bool> i2; 64 sc_in<bool> i3; 65 sc_in<bool> i4; 66 sc_out<bool> o1; 67 sc_out<bool> o2; 68 sc_out<bool> o3; 69 sc_out<bool> o4; 70 sc_signal<sc_uint<2> > reg; 31 struct M2_1i1o : sc_module { 32 sc_in_clk clk; 33 sc_in<bool> i1; 34 sc_out<bool> o1; 71 35 72 void tr_moore () { 73 reg = ((i1.read() & i3.read())?2:0) + (i2.read() | i4.read()); 74 } 36 sc_signal<bool> reg; 75 37 76 void gen_moore () { 77 o1 = reg.read() & 1; 78 o2 = reg.read() & 2; 79 o3 = ~(reg.read() & 1); 80 o4 = ~(reg.read() & 2); 81 } 38 void tr_moore1() { 39 reg = ~i1; 40 } 82 41 83 SC_CTOR (M2_4i4o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), i3 ("i3"), o3("o3"), i4 ("i4"), o4 ("o4") { 84 SC_METHOD(tr_moore); 85 sensitive << clk.pos(); 86 #ifdef SYSTEMCASS_SPECIFIC 87 // no needs 88 #endif 89 SC_METHOD(gen_moore); 90 sensitive << clk.neg(); 91 #ifdef SYSTEMCASS_SPECIFIC 92 #endif 93 }; 42 void gen_moore1() { 43 o1 = ~reg; 44 } 45 46 SC_CTOR (M2_1i1o) : clk("clk"), i1("i1"), o1("o1") { 47 SC_METHOD(tr_moore1); 48 sensitive << clk.pos(); 49 dont_initialize(); 50 51 SC_METHOD(gen_moore1); 52 sensitive << clk.neg(); 53 dont_initialize(); 54 } 94 55 }; 95 56 96 int sc_main (int argc, char *argv[])97 {98 sc_clock signal_clk("my_clock",1, 0.5);99 sc_signal<bool> s1 ("s01"),100 s2 ("s02"),101 s3 ("s03"),102 s4 ("s04"),103 s5 ("s05"),104 s6 ("s06"),105 s7 ("s07"),106 s8 ("s08"),107 s9 ("s09"),108 s10("s10"),109 s11("s11"),110 s12("s12"),111 s13("s13"),112 s14("s14"),113 s15("s15");114 115 57 116 M1_3i3o a ("a"); 117 M1_3i3o b ("b"); 118 M2_4i4o Moore("Moore"); 119 120 a.clk (signal_clk); 121 b.clk (signal_clk); 122 Moore.clk (signal_clk); 123 124 Moore.o1 (s1); 125 a.i1 (s1); 58 int sc_main (int argc, char * argv[]) { 59 sc_clock signal_clk("my_clock"); 60 sc_signal<bool> s1 ("s01"), 61 s2 ("s02"), 62 s3 ("s03"), 63 s4 ("s04"), 64 s5 ("s05"), 65 s6 ("s06"), 66 s7 ("s07"), 67 s8 ("s08"), 68 s9 ("s09"), 69 s10("s10"), 70 s11("s11"), 71 s12("s12"), 72 s13("s13"), 73 s14("s14"), 74 s15("s15"); 126 75 127 a.o1 (s2);128 b.i1 (s2);129 130 b.o1 (s3);131 Moore.i1 (s3);132 76 133 Moore.o2 (s4); 134 b.i2 (s4); 135 136 b.o2 (s5); 137 a.i2 (s5); 138 139 a.o2 (s6); 140 Moore.i2 (s6); 141 142 Moore.o3 (s7); 143 b.i3 (s7); 144 145 Moore.o4 (s8); 146 a.i3 (s8); 147 148 b.o3 (s9); 149 Moore.i4 (s9); 150 151 a.o3 (s10); 152 Moore.i3 (s10); 153 154 // Init & run 155 sc_initialize (); 77 M1_1i1o a("a"); 78 M1_1i1o b("b"); 79 M1_1i1o c("c"); 80 M1_1i1o d("d"); 81 M1_1i1o e("e"); 82 M2_1i1o f("f"); 83 M1_1i1o g("g"); 156 84 157 if (argc == 1) 158 { 159 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 85 a.clk(signal_clk); 86 b.clk(signal_clk); 87 c.clk(signal_clk); 88 d.clk(signal_clk); 89 e.clk(signal_clk); 90 f.clk(signal_clk); 91 g.clk(signal_clk); 92 93 a.i1(s1); 94 95 a.o1(s2); 96 b.i1(s2); 97 d.i1(s2); 98 99 b.o1(s3); 100 c.i1(s3); 101 102 c.o1(s4); 103 104 d.o1(s5); 105 e.i1(s5); 106 107 e.o1(s6); 108 f.i1(s6); 109 110 f.o1(s7); 111 g.i1(s7); 112 113 g.o1(s8); 114 115 // Init & run 116 sc_start(sc_time(0, sc_core::SC_NS)); 117 160 118 return EXIT_SUCCESS; 161 119 } 162 120 163 chrono_t chrono;164 chrono.start ();165 121 166 sc_start (atoi(argv[1])); 122 /* 123 # Local Variables: 124 # tab-width: 4; 125 # c-basic-offset: 4; 126 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 127 # indent-tabs-mode: nil; 128 # End: 129 # 130 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 131 */ 167 132 168 chrono.stop ();169 unsigned int t = chrono;170 cout << "Time elapsed (sec) : " << t << endl;171 cout << "Cycles done : " << sc_simulation_time () << endl;172 cout << "Performance : " << sc_simulation_time () / t << endl;173 return EXIT_SUCCESS;174 } -
sources/test_regression/30032005c/Makefile
r15 r55 1 include ../env.mk2 1 3 SYSTEM = system.cpp system2.cpp system3.cpp 4 EXE_SCASS = $(SYSTEM:.cpp=_systemcass.x) 5 EXE_SC = $(SYSTEM:.cpp=_systemc.x) 6 EXE = ${EXE_SCASS} ${EXE_SC} 7 LOG = $(SYSTEM:.cpp=.log) 8 OBJECTS = $(EXE:.x=.o) 9 LINKS = $(OBJECTS:.o=.cpp) 2 include ../30032005a/Makefile 10 3 11 PREFIX = $(SYSTEM:.cpp=)12 13 #DIFF = $(SYSTEM:.cpp=.diff)14 15 .SECONDARY:16 17 #%.diff : %_module_graph_reference.dot %_module_graph.dot18 # diff $*_module_graph_reference.dot $*_module_graph.dot19 # diff $*_signal_graph_reference.dot $*_signal_graph.dot20 # diff $*_module_order_reference.dot $*_module_order.dot21 # diff $*_signal_order_reference.dot $*_signal_order.dot22 23 #%_signal_graph_reference.dot %_signal_graph.dot \24 # %_module_order_reference.dot %_module_order.dot \25 # %_signal_order_reference.dot %_signal_order.dot26 27 #%_module_graph.dot : %_systemcass.x28 # $*_systemcass.x --t29 # mv module_graph.dot $*_module_graph.dot30 31 #%_module_order.dot %_signal_graph.dot %_signal_order.dot : %_systemcass.x32 # $*_systemcass.x --t --p33 34 main : $(EXE)35 36 #diff : ${DIFF}37 38 test : ${EXE}39 for i in ${PREFIX} ; do \40 echo Testing $$i... ; \41 (./$${i}_systemcass.x --t) || eval ${failcom}; \42 tail -n +3 module_graph.dot | diff $${i}_module_graph_reference.dot - || eval ${failcom}; \43 ./$${i}_systemcass.x --p --t || eval ${failcom}; \44 tail -n +3 signal_graph.dot | diff $${i}_signal_graph_reference.dot - \45 || tail -n +3 signal_graph.dot | diff $${i}_signal_graph_reference2.dot - \46 || eval ${failcom}; \47 tail -n +3 process_order.dot | diff $${i}_process_order_reference.dot - || eval ${failcom}; \48 diff signal_order.txt $${i}_signal_order_reference.txt \49 || diff signal_order.txt $${i}_signal_order_reference2.txt \50 || eval ${failcom}; \51 done52 (./system_systemc.x) || eval ${failcom}53 (./system2_systemc.x) || eval ${failcom}54 (./system3_systemc.x) || eval ${failcom}55 @echo Test OK.56 57 58 59 %.gif : %.dot60 dot -Tgif -o $*.gif $*.dot61 62 %_systemc.x : %_systemc.o $(SYSTEMC_LIB)63 $(CXX) -o $@ $*_systemc.o $(LFLAGS_SYSTEMC) 2>&1 | $(CPPFILT)64 65 %_systemcass.x : %_systemcass.o $(SYSTEMCASS_LIB)66 $(CXX) -o $@ $*_systemcass.o $(LFLAGS_SYSTEMCASS) 2>&1 | $(CPPFILT)67 68 -include Makefile.deps69 70 %_systemc.cpp : %.cpp71 ln -s $*.cpp $*_systemc.cpp72 73 %_systemcass.cpp : %.cpp74 ln -s $*.cpp $*_systemcass.cpp75 76 %_systemc.o : %_systemc.cpp77 $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps78 $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o79 80 %_systemcass.o : %_systemcass.cpp81 $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps82 $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o83 84 clean :85 rm -f Makefile.deps86 -rm -f *.o gmon.out87 -rm -f *~88 -rm -f ${LOG}89 -rm -f signal_order.txt module_order.dot signal_graph.dot90 -rm -f module_order.gif signal_graph.gif91 -rm -f $(EXE) $(OBJECTS)92 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null93 -rm -f core*94 -rm -rf generated_by_systemcass95 -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd96 -
sources/test_regression/30032005c/system.cpp
r1 r55 1 #include <systemc.h> 1 2 2 #include <signal.h> 3 #include "chrono.h" 3 4 #include "systemc.h" 5 #include "test.h" 6 4 7 5 8 using namespace std; 6 7 struct M1_3i3o : sc_module {8 sc_in_clk clk;9 sc_in<bool> i1;10 sc_in<bool> i2;11 sc_in<bool> i3;12 sc_out<bool> o1;13 sc_out<bool> o2;14 sc_out<bool> o3;15 9 16 sc_signal<bool> reg;17 10 18 void eval_mealy1 () { 19 o1 = ~i1; 20 } 11 struct M1_1i1o : sc_module { 12 sc_in_clk clk; 13 sc_in<bool> i1; 14 sc_out<bool> o1; 21 15 22 void eval_mealy2() {23 o2 = ~i2;24 16 void eval_mealy1() { 17 o1 = ~i1; 18 } 25 19 26 void tr_moore () { 27 reg = i3; 28 } 20 SC_CTOR (M1_1i1o) : clk("clk"), i1("i1"), o1("o1") { 21 SC_METHOD(eval_mealy1); 22 sensitive << clk.neg(); 23 sensitive << i1; 24 dont_initialize(); 25 #ifdef SYSTEMCASS_SPECIFIC 26 o1(i1); 27 #endif 28 } 29 29 30 void gen_moore () {31 o3 = ~reg;32 }33 34 SC_CTOR (M1_3i3o) : clk("clk"), i1("i1"), o1("o1"), i2("i2"), o2("o2"),35 i3("i3"), o3("o3") {36 SC_METHOD(eval_mealy1);37 sensitive << clk.neg();38 sensitive << i1;39 #ifdef SYSTEMCASS_SPECIFIC40 o1(i1);41 #endif42 SC_METHOD(eval_mealy2);43 sensitive << clk.neg();44 sensitive << i2;45 #ifdef SYSTEMCASS_SPECIFIC46 o2(i2);47 #endif48 SC_METHOD(tr_moore);49 sensitive << clk.pos();50 #ifdef SYSTEMCASS_SPECIFIC51 #endif52 SC_METHOD(gen_moore);53 sensitive << clk.neg();54 #ifdef SYSTEMCASS_SPECIFIC55 #endif56 };57 30 }; 58 31 59 32 60 struct M2_4i4o : sc_module { 61 sc_in_clk clk; 62 sc_in<bool> i1; 63 sc_in<bool> i2; 64 sc_in<bool> i3; 65 sc_in<bool> i4; 66 sc_out<bool> o1; 67 sc_out<bool> o2; 68 sc_out<bool> o3; 69 sc_out<bool> o4; 70 sc_signal<sc_uint<2> > reg; 33 struct M1_3i2o : sc_module { 34 sc_in_clk clk; 35 sc_in<bool> i1; 36 sc_in<bool> i2; 37 sc_in<bool> i3; 38 sc_out<bool> o1; 39 sc_out<bool> o2; 71 40 72 void tr_moore () { 73 reg = ((i1.read() & i3.read())?2:0) + (i2.read() | i4.read()); 74 } 41 void eval_mealy1() { 42 o1 = ~i1 & i2; 43 o2 = ~i2 & i3; 44 } 75 45 76 void gen_moore () {77 o1 = reg.read() & 1;78 o2 = reg.read() & 2;79 o3 = ~(reg.read() & 1);80 o4 = ~(reg.read() & 2);81 }82 46 83 SC_CTOR (M2_4i4o) : clk ("clk"), i1 ("i1"), o1("o1"), i2 ("i2"), o2 ("o2"), i3 ("i3"), o3("o3"), i4 ("i4"), o4 ("o4") { 84 SC_METHOD(tr_moore); 85 sensitive << clk.pos(); 47 SC_CTOR (M1_3i2o) : clk("clk"), i1("i1"), i2("i2"), i3("i3"), o1("o1"), o2("o2") { 48 SC_METHOD(eval_mealy1); 49 sensitive << clk.neg(); 50 sensitive << i1 << i2; 51 sensitive << i3; 52 dont_initialize(); 86 53 #ifdef SYSTEMCASS_SPECIFIC 87 // no needs 54 o1(i1); 55 o1(i2); 56 o2(i2); 57 o2(i3); 88 58 #endif 89 SC_METHOD(gen_moore); 90 sensitive << clk.neg(); 91 #ifdef SYSTEMCASS_SPECIFIC 92 #endif 93 }; 59 } 60 94 61 }; 95 62 96 int sc_main (int argc, char *argv[])97 {98 sc_clock signal_clk("my_clock",1, 0.5);99 sc_signal<bool> s1 ("s01"),100 s2 ("s02"),101 s3 ("s03"),102 s4 ("s04"),103 s5 ("s05"),104 s6 ("s06"),105 s7 ("s07"),106 s8 ("s08"),107 s9 ("s09"),108 s10("s10"),109 s11("s11"),110 s12("s12"),111 s13("s13"),112 s14("s14"),113 s15("s15");114 115 63 116 M1_3i3o a ("a"); 117 M1_3i3o b ("b"); 118 M2_4i4o Moore("Moore"); 119 120 a.clk (signal_clk); 121 b.clk (signal_clk); 122 Moore.clk (signal_clk); 123 124 Moore.o1 (s1); 125 a.i1 (s1); 64 struct M2_1i1o : sc_module { 65 sc_in_clk clk; 66 sc_in<bool> i1; 67 sc_out<bool> o1; 126 68 127 a.o1 (s2); 128 b.i1 (s2); 129 130 b.o1 (s3); 131 Moore.i1 (s3); 69 sc_signal<bool> reg; 132 70 133 Moore.o2 (s4); 134 b.i2 (s4); 135 136 b.o2 (s5); 137 a.i2 (s5); 138 139 a.o2 (s6); 140 Moore.i2 (s6); 141 142 Moore.o3 (s7); 143 b.i3 (s7); 144 145 Moore.o4 (s8); 146 a.i3 (s8); 147 148 b.o3 (s9); 149 Moore.i4 (s9); 150 151 a.o3 (s10); 152 Moore.i3 (s10); 153 154 // Init & run 155 sc_initialize (); 71 void tr_moore1() { 72 reg = ~i1; 73 } 156 74 157 if (argc == 1) 158 { 159 cout << "Usage :\n" << argv[0] << " [#cycles]\n"; 75 void gen_moore1() { 76 o1 = ~reg; 77 }; 78 79 SC_CTOR (M2_1i1o) : clk("clk"), i1("i1"), o1("o1") { 80 SC_METHOD(tr_moore1); 81 sensitive << clk.pos(); 82 dont_initialize(); 83 84 SC_METHOD(gen_moore1); 85 sensitive << clk.neg(); 86 dont_initialize(); 87 } 88 89 }; 90 91 92 int sc_main (int argc, char * argv[]) { 93 sc_clock signal_clk("my_clock",1, 0.5); 94 sc_signal<bool> s1 ("s01"), 95 s2 ("s02"), 96 s3 ("s03"), 97 s4 ("s04"), 98 s5 ("s05"), 99 s6 ("s06"), 100 s7 ("s07"), 101 s8 ("s08"), 102 s9 ("s09"), 103 s10("s10"), 104 s11("s11"), 105 s12("s12"), 106 s13("s13"), 107 s14("s14"), 108 s15("s15"); 109 110 111 M1_3i2o a("a"); 112 M1_1i1o b("b"); 113 M1_3i2o c("c"); 114 M1_1i1o d("d"); 115 M1_1i1o e("e"); 116 117 a.clk(signal_clk); 118 b.clk(signal_clk); 119 c.clk(signal_clk); 120 d.clk(signal_clk); 121 e.clk(signal_clk); 122 123 a.i1(s1); 124 125 a.o1(s2); 126 b.i1(s2); 127 128 b.o1(s3); 129 c.i1(s3); 130 131 c.o1(s4); 132 133 a.i2(s5); 134 135 a.o2(s6); 136 c.i2(s6); 137 d.i1(s6); 138 139 c.o2(s7); 140 141 a.i3(s8); 142 143 d.o1(s9); 144 e.i1(s9); 145 146 e.o1(s10); 147 c.i3(s10); 148 149 // Init & run 150 sc_start(sc_time(0, sc_core::SC_NS)); 151 160 152 return EXIT_SUCCESS; 161 153 } 162 154 163 chrono_t chrono;164 chrono.start ();165 155 166 sc_start (atoi(argv[1])); 156 /* 157 # Local Variables: 158 # tab-width: 4; 159 # c-basic-offset: 4; 160 # c-file-offsets:((innamespace . 0)(inline-open . 0)); 161 # indent-tabs-mode: nil; 162 # End: 163 # 164 # vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 165 */ 167 166 168 chrono.stop ();169 unsigned int t = chrono;170 cout << "Time elapsed (sec) : " << t << endl;171 cout << "Cycles done : " << sc_simulation_time () << endl;172 cout << "Performance : " << sc_simulation_time () / t << endl;173 return EXIT_SUCCESS;174 } -
sources/test_regression/Makefile
r47 r55 52 52 53 53 DIR = \ 54 17032005 \ 55 25032005 \ 56 29032005 \ 57 30032005 \ 58 19042005 \ 59 04052005 \ 60 07052005 \ 61 21062005 \ 62 16062005 \ 63 05092005 \ 64 08092005 \ 65 09092005 \ 66 09092005b\ 67 09092005c\ 68 14092005 \ 69 15092005 \ 70 28102005 \ 71 16112005 \ 72 16122005 \ 73 02052006 \ 74 07122006 \ 75 20122006 \ 76 16022007 \ 77 15042009 \ 78 ${SOCVIEW_TEST} \ 79 # 54 02052006 \ 55 04052005 \ 56 05092005 \ 57 07052005 \ 58 07122006a \ 59 07122006b \ 60 08092005 \ 61 09092005a \ 62 09092005b \ 63 09092005c \ 64 11062007 \ 65 14092005 \ 66 15042009a \ 67 15042009b \ 68 15042009c \ 69 15062006 \ 70 15092005a \ 71 15092005b \ 72 15092005c \ 73 15092005d \ 74 17022006 \ 75 17032005 \ 76 20122006 \ 77 21062005 \ 78 24082009 \ 79 25032005 \ 80 28102005 \ 81 29032005 \ 82 30032005a \ 83 30032005b \ 84 30032005c \ 85 16022007 \ 86 16062005a \ 87 16062005b \ 88 16112005a \ 89 16112005b \ 90 16112005c \ 91 16122005 \ 92 19042005 93 #$(SOCVIEW_TEST) \ 80 94 81 failcom = 'exit 1'82 95 83 compile : ${DIR} 84 @for i in ${DIR} ; do \ 85 echo Testing $$i... ; \ 86 ($(MAKE) -C $$i) || eval ${failcom} ; \ 87 done; 96 all: compile 88 97 89 test : ${DIR} 90 @for i in ${DIR} ; do \ 91 echo Testing $$i... ; \ 92 ($(MAKE) -C $$i test) || eval ${failcom} ; ($(MAKE) -C $$i clean) ; \ 93 done; 98 compile : 99 @for i in $(DIR) ; do \ 100 ($(MAKE) --no-print-directory -C $$i) ; \ 101 done; 102 103 test : $(DIR) 104 @for i in $(DIR) ; do \ 105 ($(MAKE) --no-print-directory -C $$i test | grep "Testing") ; \ 106 done; 94 107 95 108 clean : 96 @for i in $ {DIR}; do \97 echo Testing $$i...; \98 ($(MAKE) -C $$i clean) || eval ${failcom} ; \99 done; 109 @for i in $(DIR) ; do \ 110 ($(MAKE) --no-print-directory -C $$i clean) ; \ 111 done; 112 -
sources/test_regression/env.mk
r49 r55 1 #TARGET_ARCH =Linux.SLA4x 2 TARGET_ARCH = linux 3 #TARGET_PLATFORM =i386 1 2 SYSTEMCASS = $(HOME)/src/systemcass/sandbox_test/objdir/ 3 SYSTEMC = /users/outil/soc/systemc/sc22-64 4 5 TARGET_ARCH = linux64 4 6 5 7 ifeq (${TARGET_ARCH},Darwin) … … 15 17 endif 16 18 17 #BFD_LIBERTY = -lbfd -liberty18 #SYSTEMC = /users/outil/systemc/systemc-2.0.119 19 SYSTEMC_INC = $(SYSTEMC)/include 20 20 SYSTEMCASS_INC = $(SYSTEMCASS)/include 21 21 SYSTEMC_LIB = $(SYSTEMC)/lib-${TARGET_ARCH}/libsystemc.a 22 22 SYSTEMCASS_LIB = $(SYSTEMCASS)/lib-linux/libsystemc.a 23 #CXX = g++ 24 #CXX = icc -w1 25 CPPFILT = c++filt 23 CXX = g++ 24 CPPFILT = c++filt 26 25 DEBUG = -g -DDEBUG 27 26 #OPT = -O2 28 #PROF = -pg # gcc29 #PROF = -qp # icc30 #EFENCE = /users/cao/viaud/bin/lib/libefence.a -lpthread31 CFLAGS 27 #PROF = -pg # gcc 28 #PROF = -qp # icc 29 #EFENCE = /users/cao/viaud/bin/lib/libefence.a -lpthread 30 CFLAGS = $(PROF) $(DEBUG) $(OPT) \ 32 31 -Wall \ 33 32 -fopenmp \ 34 -UENABLE_TRACE -UENABLE_PAT -I. \33 -UENABLE_TRACE -UENABLE_PAT -I. -I.. \ 35 34 ${ENDIANESS_FLAG} 36 35 37 LFLAGS 36 LFLAGS = $(PROF) $(BFD_LIBERTY) -ldl -fopenmp 38 37 39 38 CFLAGS_SYSTEMC = $(CFLAGS) \ … … 50 49 ${DYNAMICLIB_FLAG} $(SYSTEMCASS_LIB) ${EFENCE} 51 50 52 #ifndef TARGET_PLATFORM 53 #$(error TARGET_PLATFORM is not defined.) 54 #endif 55 #ifndef TARGET_ARCH 56 #$(error TARGET_ARCH is not defined.) 57 #endif 51 58 52 ifndef SYSTEMC 59 53 $(error SYSTEMC is not defined.) … … 62 56 $(error SYSTEMCASS is not defined.) 63 57 endif 64 #ifndef SOCVIEW65 #$(error SOCVIEW is not defined. This environment variable is optional.)66 #endif67 58 68 failcom = 'exit 1'69 59 60
Note: See TracChangeset
for help on using the changeset viewer.