Changeset 55 for sources


Ignore:
Timestamp:
May 28, 2013, 11:17:14 AM (11 years ago)
Author:
meunier
Message:

Tried to clean the test_regression directory:

  • Code formatting
  • Supressed warnings
  • Made comprehensible outputs
  • Factorized Makefiles

There's still a lot to do (many tests don't pass for either good or bad reasons)

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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
     5test: 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 ;
    914
    10 .SECONDARY:
    11 
    12 main : $(EXE)
    13 
    14 test : main
    15         @./system_systemcass.x --p || eval ${failcom}
    16        
    17 %.gif : %.dot
    18         dot -Tgif -o $*.gif $*.dot
    19 
    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.deps
    30 
    31 %_systemc.cpp : %.cpp
    32         ln -s $*.cpp $*_systemc.cpp
    33 
    34 %_systemcass.cpp : %.cpp
    35         ln -s $*.cpp $*_systemcass.cpp
    36 
    37 %_socview.cpp : %.cpp
    38         ln -s $*.cpp $*_socview.cpp
    39 
    40 %_systemc.o : %_systemc.cpp
    41         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    43 
    44 %_systemcass.o : %_systemcass.cpp
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -DCHECK_MULTIWRITE -MM $*_systemcass.cpp >> Makefile.deps
    46         $(CXX) $(CFLAGS_SYSTEMCASS) -DCHECK_MULTIWRITE -c $*_systemcass.cpp -o $*_systemcass.o
    47 
    48 %_socview.o : %_socview.cpp
    49         $(CXX) $(CFLAGS_SOCVIEW) -MM $*_socview.cpp >> Makefile.deps
    50         $(CXX) $(CFLAGS_SOCVIEW) -c $*_socview.cpp -o $*_socview.o
    51 
    52 clean :
    53         -rm -f Makefile.deps
    54         -rm -f gmon.out *~
    55         -rm -f $(EXE) $(OBJECTS)
    56         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    57         -rm -f core*
    58         -rm -rf generated_by_systemcass
    59        
  • sources/test_regression/02052006/system.cpp

    r23 r55  
     1
    12#include <systemc.h>
     3#include <typeinfo>
    24
    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
    1113
    1214using namespace std;
    1315
    1416struct 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;
    3135
    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());
    4345#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;
    5062#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        }
    82106    }
    83   }
    84107
    85   SC_HAS_PROCESS(test);
    86     test (sc_module_name n) : sc_module (n),
    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
    93116};
    94117
    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");
    99118
    100   test test1("test1");
    101   test1.clk    (signal_clk);
    102   test1.resetn (resetn);
     119int 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");
    103122
    104   // Init & run
    105   sc_start (0);
     123    test test1("test1");
     124    test1.clk(signal_clk);
     125    test1.resetn(resetn);
    106126
    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));
    111129
    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;
    113136}
    114137
    115138#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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
     5test : 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 ;
    1013
    11 .SECONDARY:
    1214
    13 main : $(EXE)
    14 
    15 test : ${EXE}
    16         ./system_systemcass.x || eval ${failcom}
    17 
    18 %.gif : %.dot
    19         dot -Tgif -o $*.gif $*.dot
    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.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 clean :
    44         rm -f Makefile.deps
    45         -rm -f *.o gmon.out *~
    46         -rm -f ${LOG}
    47         -rm -f signal_order.txt module_order.dot signal_graph.dot
    48         -rm -f module_order.gif signal_graph.gif
    49         -rm -f $(EXE) $(OBJECTS)
    50         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    51         -rm -f core*
    52         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    53         -rm -rf generated_by_systemcass
    54        
  • sources/test_regression/04052005/system.cpp

    r1 r55  
    1 #include "systemc.h"
     1
    22#include <iostream>
    33
     4#include "systemc.h"
     5#include "test.h"
    46
    57using namespace std;
    68
    79
    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;
     10int sc_main (int argc, char ** argv) {
    1911
    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;
    3118
    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;
    3625
    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");
    4128
    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");
    4631
    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");
    5134
    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}
    5673
    5774
    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*/
    6285
    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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
    105
    11 .SECONDARY:
     6test: $(EXE_SCASS)
     7        @echo -ne "| Testing $$(basename $$(pwd)): " ;
     8        @./$< 2> /dev/null ;
     9        @if [ $$? -eq 0 ] ; then echo "KO" ; else echo "OK" ; fi ;
    1210
    13 main : $(EXE)
    1411
    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 : %.dot
    24         dot -Tgif -o $*.gif $*.dot
    25 
    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.deps
    33 
    34 %_systemc.cpp : %.cpp
    35         ln -s $*.cpp $*_systemc.cpp
    36 
    37 %_systemcass.cpp : %.cpp
    38         ln -s $*.cpp $*_systemcass.cpp
    39 
    40 %_systemc.o : %_systemc.cpp
    41         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    43 
    44 %_systemcass.o : %_systemcass.cpp
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    46         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    47 
    48 clean :
    49         rm -f Makefile.deps
    50         -rm -f *.o gmon.out *~
    51         -rm -f ${LOG}
    52         -rm -f signal_order.txt module_order.dot signal_graph.dot
    53         -rm -f module_order.gif signal_graph.gif
    54         -rm -f $(EXE) $(OBJECTS)
    55         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    56         -rm -f core*
    57         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    58         -rm -rf generated_by_systemcass
    59        
  • sources/test_regression/05092005/system.cpp

    r1 r55  
     1
    12#include "systemc.h"
    23
    3 #define ASSERT(x) \
    4   { errnum++; \
    5     if (!(x)) \
    6     { \
    7     cerr << "ASSERT : " #x "\n"; \
    8     exit (errnum); \
    9     } \
    10   }
     4#include "test.h"
    115
    126using namespace std;
    137
    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   }
     8struct hard : sc_module {
     9    sc_in<bool> i;
     10    sc_out<bool> o;
     11    SC_HAS_PROCESS(hard);
     12    hard(sc_module_name) {}
    2213};
    2314
    24 int
    25 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]);
    3415
    35   sc_initialize ();
    36   sc_start (1);
     16int 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]);
    3725
    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;
    4031}
    4132
     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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
     5test: 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 ;
    1013
    11 .SECONDARY:
    12 
    13 main : $(EXE)
    14 
    15 test : ${LOG}
    16         @echo Test OK.
    17 
    18 %.log : %_systemcass.x %_systemc.x
    19         ./$*_systemcass.x
    20         touch $*.log
    21 
    22 %.gif : %.dot
    23         dot -Tgif -o $*.gif $*.dot
    24 
    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.deps
    32 
    33 %_systemc.cpp : %.cpp
    34         ln -s $*.cpp $*_systemc.cpp
    35 
    36 %_systemcass.cpp : %.cpp
    37         ln -s $*.cpp $*_systemcass.cpp
    38 
    39 %_systemc.o : %_systemc.cpp
    40         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    41         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    42 
    43 %_systemcass.o : %_systemcass.cpp
    44         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    46 
    47 clean :
    48         rm -f Makefile.deps
    49         -rm -f *.o gmon.out *~
    50         -rm -f ${LOG}
    51         -rm -f signal_order.txt module_order.dot signal_graph.dot
    52         -rm -f module_order.gif signal_graph.gif
    53         -rm -f $(EXE) $(OBJECTS)
    54         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    55         -rm -f core*
    56         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    57         -rm -rf generated_by_systemcass
    58        
  • sources/test_regression/07052005/system.cpp

    r1 r55  
    1 #include <systemc.h>
     1
     2
    23#include <iostream>
     4
     5#include "systemc.h"
     6#include "test.h"
    37
    48
     
    610
    711
    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;
     12int sc_main (int argc, char ** argv) {
    2213
    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;
    2923
    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;
    3730
    38   h = g.range (11,4);
     31    // bit vector concatenation and boolean concatenation
     32    a = (b, (c1 | c2), d & (b, c1), e);
    3933
    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);
    4635
    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);
    5337
    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");
    6040
    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;
    6350}
    6451
     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  
    11include ../env.mk
     2include ../Makefile.common
    23
    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)
     4test: $(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 ;
    1020
    11 .SECONDARY:
    1221
    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 : %.dot
    26         dot -Tgif -o $*.gif $*.dot
    27 
    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.deps
    35 
    36 %_systemc.cpp : %.cpp
    37         ln -s $*.cpp $*_systemc.cpp
    38 
    39 %_systemcass.cpp : %.cpp
    40         ln -s $*.cpp $*_systemcass.cpp
    41 
    42 %_systemc.o : %_systemc.cpp
    43         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    44         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    45 
    46 %_systemcass.o : %_systemcass.cpp
    47         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    48         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    49 
    50 clean :
    51         rm -f Makefile.deps
    52         -rm -f *.o gmon.out *~
    53         -rm -f ${LOG}
    54         -rm -f signal_order.txt module_order.dot signal_graph.dot
    55         -rm -f module_order.gif signal_graph.gif
    56         -rm -f $(EXE) $(OBJECTS)
    57         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    58         -rm -f core*
    59         -rm -rf generated_by_systemcass
    60         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    61        
  • sources/test_regression/08092005/system.cpp

    r1 r55  
     1
     2// Circular sensitivity dependency
     3// Does not compile with systemcass
     4
    15#include "systemc.h"
    26
    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"
    119
    1210using namespace std;
    1311
    14 struct hard : sc_module
    15 {
    16   sc_in_clk    clk;
    17   sc_in <int>  i1, i2;
    18   sc_out<int>  o1, o2;
     12struct hard : sc_module {
     13    sc_in_clk clk;
     14    sc_in <int> i1, i2;
     15    sc_out<int> o1, o2;
    1916
    20   void f ()
    21   {
    22     o1 = i1;
    23     o2 = i2;
    24   }
     17    void f() {
     18        o1 = i1;
     19        o2 = i2;
     20    }
    2521
    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
    3728#ifdef SYSTEMCASS_SPECIFIC
    38     o1 (i1);
    39     o2 (i2);
     29        o1(i1);
     30        o2(i2);
    4031#endif
    41   }
     32    }
    4233};
    4334
    44 int
    45 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");
    5235
    53   a.clk (clk);
    54   b.clk (clk);
     36int 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");
    5542
    56   a.i1 (s[0]);
     43    a.clk(clk);
     44    b.clk(clk);
    5745
    58   a.o1 (s[1]);
    59   b.i1 (s[1]);
     46    a.i1(s[0]);
    6047
    61   b.o1 (s[2]);
     48    a.o1(s[1]);
     49    b.i1(s[1]);
    6250
    63   b.i2 (s[3]);
     51    b.o1(s[2]);
    6452
    65   b.o2 (s[4]);
    66   a.i2 (s[4]);
     53    b.i2(s[3]);
    6754
    68   a.o2 (s[5]);
     55    b.o2(s[4]);
     56    a.i2(s[4]);
    6957
    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]);
    7459
    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]);
    7964
    80   sc_start (1);
     65    sc_start(sc_time(0, sc_core::SC_NS));
    8166
    82   s[0] = 123;
    83   s[3] = 321;
     67    s[0] = 1;
     68    s[3] = 1;
    8469
    85   sc_start (1);
     70    sc_start(sc_time(0, sc_core::SC_NS));
    8671
    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;
    8878}
    8979
     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  
    11include ../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)
     2include ../Makefile.common
    143
    154test : $(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 ;
    1812
    19 %.gif : %.dot
    20         dot -Tgif -o $*.gif $*.dot
    2113
    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.deps
    29 
    30 %_systemc.cpp : %.cpp
    31         ln -s $*.cpp $*_systemc.cpp
    32 
    33 %_systemcass.cpp : %.cpp
    34         ln -s $*.cpp $*_systemcass.cpp
    35 
    36 %_systemc.o : %_systemc.cpp
    37         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    38         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    39 
    40 %_systemcass.o : %_systemcass.cpp
    41         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    43 
    44 clean :
    45         rm -f Makefile.deps
    46         -rm -f *.o gmon.out *~
    47         -rm -f ${LOG}
    48         -rm -f signal_order.txt module_order.dot signal_graph.dot
    49         -rm -f module_order.gif signal_graph.gif
    50         -rm -f $(EXE) $(OBJECTS)
    51         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    52         -rm -f core*
    53         -rm -rf generated_by_systemcass
    54         -rm -rf trace_file.vcd
    55        
  • sources/test_regression/09092005b/system.cpp

    r1 r55  
     1
    12#include "systemc.h"
    23
    3 #define ASSERT(x) \
    4   { errnum++; \
    5     if (!(x)) \
    6     { \
    7     cerr << "ASSERT : " #x "\n"; \
    8     exit (errnum); \
    9     } \
    10   }
     4#include "test.h"
    115
    126using namespace std;
    137
    14 struct hard : sc_module
    15 {
    16   sc_in_clk    clk;
    17   sc_in <int>  i1, i2;
    18   sc_out<int>  o1, o2;
     8struct hard : sc_module {
     9    sc_in_clk clk;
     10    sc_in <int> i1, i2;
     11    sc_out<int> o1, o2;
    1912
    20   void f ()
    21   {
    22     o1 = i1;
    23     o2 = i2;
    24   }
     13    void f() {
     14        o1 = i1;
     15        o2 = i2;
     16    }
    2517
    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
    3225#ifdef SYSTEMCASS_SPECIFIC
    33     o1 (i1);
    34     o2 (i2);
     26        o1 (i1);
     27        o2 (i2);
    3528#endif
    36   }
     29    }
     30
    3731};
    3832
    39 int
    40 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");
    4833
    49   a.clk (clk1);
    50   b.clk (clk2);
    51   c.clk (clk2);
     34int 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");
    5241
    53   a.i1 (s[0]);
     42    a.clk(clk1);
     43    b.clk(clk2);
     44    c.clk(clk2);
    5445
    55   a.o1 (s[1]);
    56   b.i1 (s[1]);
     46    a.i1(s[0]);
    5747
    58   b.o1 (s[2]);
     48    a.o1(s[1]);
     49    b.i1(s[1]);
    5950
    60   b.i2 (s[3]);
     51    b.o1(s[2]);
    6152
    62   b.o2 (s[4]);
    63   a.i2 (s[4]);
     53    b.i2(s[3]);
    6454
    65   a.o2 (s[5]);
     55    b.o2(s[4]);
     56    a.i2(s[4]);
    6657
    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]);
    7159
    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]);
    7964
    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");
    8668
    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");
    8972
    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    }
    9177
    92   s[0] = 123;
    93   s[3] = 321;
     78    /* initilization */
     79    sc_start(sc_time(0, sc_core::SC_NS));
    9480
    95   sc_start (1);
     81    s[0] = 1;
     82    s[3] = 1;
    9683
    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;
    9892}
    9993
     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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
     5test: 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 ;
    1013
    11 .SECONDARY:
    1214
    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 : %.dot
    22         dot -Tgif -o $*.gif $*.dot
    23 
    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.deps
    31 
    32 %_systemc.cpp : %.cpp
    33         ln -s $*.cpp $*_systemc.cpp
    34 
    35 %_systemcass.cpp : %.cpp
    36         ln -s $*.cpp $*_systemcass.cpp
    37 
    38 %_systemc.o : %_systemc.cpp
    39         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    40         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    41 
    42 %_systemcass.o : %_systemcass.cpp
    43         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    44         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    45 
    46 clean :
    47         rm -f Makefile.deps
    48         -rm -f *.o gmon.out *~
    49         -rm -f ${LOG}
    50         -rm -f signal_order.txt module_order.dot signal_graph.dot
    51         -rm -f module_order.gif signal_graph.gif
    52         -rm -f $(EXE) $(OBJECTS)
    53         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    54         -rm -f core*
    55         -rm -rf generated_by_systemcass
    56         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    57        
  • sources/test_regression/09092005c/system.cpp

    r1 r55  
     1
    12#include "systemc.h"
     3
    24#include <iostream>
     5
     6#include "test.h"
    37
    48using namespace std;
    59
    6 #define ASSERT(x) \
    7   { errnum++; \
    8     if (!(x)) \
    9     { \
    10     cerr << "ASSERT : " #x "\n"; \
    11     exit (errnum); \
    12     } \
    13   }
    1410
    15 using namespace std;
     11struct observer : sc_module {
     12    sc_in_clk clk;
    1613
    17 struct observer : sc_module
    18 {
    19   sc_in_clk    clk;
     14    sc_in<int> i;
    2015
    21   sc_in<int>   i;
     16    void f() {}
    2217
    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    }
    4125};
    4226
    43 struct generator : sc_module
    44 {
    45   sc_in_clk    clk;
    4627
    47   sc_out<int>   o;
     28struct generator : sc_module {
     29    sc_in_clk clk;
     30    sc_out<int> o;
    4831
    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    }
    5736
    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
    6844};
    6945
    70 struct top_level : sc_module
    71 {
    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;
    7846
    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);
    9347
    94     g.o   (o);
    95     obs1.i(o);
    96     obs2.i(o);
    97   }
     48struct 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
    9872};
    9973
    100 int
    101 sc_main (int argc, char ** argv)
    102 {
    103   int errnum = 0;
    104   sc_clock       clk("top_clk");
    105   sc_signal<int> out("top_out");
    10674
    107   top_level t("top_level");
     75int sc_main (int argc, char ** argv) {
     76    sc_clock       clk("top_clk");
     77    sc_signal<int> out("top_out");
    10878
    109   t.clk (clk);
    110   t.o   (out);
     79    top_level t("top_level");
    11180
     81    t.clk(clk);
     82    t.o  (out);
     83
     84    // QM : pourquoi est-ce tout commenté ??
    11285#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");
    12089
    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"));
    12497#endif
    12598
    126   /* initilization */
    127 #if 0
    128   cout << "initilization...\n";
    129 #endif
    130   sc_initialize ();
     99    sc_start(sc_time(0, sc_core::SC_NS));
    131100
    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;
    149108}
    150109
     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
    12include ../env.mk
     3RES1 = systemcass_a_nodynamiclink_10.txt
     4RES2 = systemcass_p_nodynamiclink_10.txt
     5RES3 = systemcass_m_nodynamiclink_10.txt
     6RES4 = systemcass_dynamiclink_10.txt
     7ERASE = $(RES1) $(RES2) $(RES3) $(RES4)
     8include ../Makefile.common
    29
    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)
     10test: $(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 ;
    829
    9 RESULTS   = systemcass_dynamiclink_10.txt systemcass_m_nodynamiclink_10.txt systemcass_a_nodynamiclink_10.txt systemcass_p_nodynamiclink_10.txt
    1030
    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.x
    22         ((./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.x
    25         ((./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.x
    28         ((./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.x
    31         ((./system_systemcass.x --nobanner 10 ) | tail -n 5 > systemcass_dynamiclink_10.txt) || eval ${failcom}
    32 
    33 %.png : %.dot
    34         dot -Tpng -o $*.png $*.dot
    35 
    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.deps
    43 
    44 %_systemc.cpp : %.cpp
    45         ln -s $*.cpp $*_systemc.cpp
    46 
    47 %_systemcass.cpp : %.cpp
    48         ln -s $*.cpp $*_systemcass.cpp
    49 
    50 %_systemc.o : %_systemc.cpp
    51         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    52         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    53 
    54 %_systemcass.o : %_systemcass.cpp
    55         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    56         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    57 
    58 clean :
    59         rm -f Makefile.deps
    60         -rm -f *.o gmon.out
    61         -rm -f signal_order.txt module_order.dot signal_graph.dot port_graph.dot
    62         -rm -f module_graph.dot process_order.dot
    63         -rm -f $(EXE) $(OBJECTS)
    64         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    65         -rm -f core*
    66         -rm -rf generated_by_systemcass
    67         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    68         -rm -rf ${RESULTS}
    69        
  • sources/test_regression/11062007/system.cpp

    r1 r55  
    1 #include <systemc.h>
     1
    22#include <signal.h>
    33
     4#include "systemc.h"
     5
     6#include "test.h"
     7
    48using namespace std;
    5        
     9
     10
    611struct A : sc_module {
    7         sc_in_clk                      clk;
    8         sc_out<bool>                    o1;
     12    sc_in_clk clk;
     13    sc_out<bool> o1;
    914
    10         void eval () {
    11     o1 = (rand()%2) == 0;
    12         }
     15    void eval() {
     16        o1 = (rand() % 2) == 0;
     17    }
    1318
    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    }
    2124};
    2225
     26
    2327struct B : sc_module {
    24         sc_in_clk                       clk;
    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;
    2933
    30         void eval1 () {
    31     o1 = ~i1;
    32         }
    33         void eval2 () {
    34     o2 = ~i2;
    35         }
     34    void eval1() {
     35        o1 = ~i1;
     36    }
    3637
    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();
    4147#ifdef SYSTEMCASS_SPECIFIC
    42                 o1(i1);
     48        o1(i1);
    4349#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();
    4754#ifdef SYSTEMCASS_SPECIFIC
    48                 o2(i2);
     55        o2(i2);
    4956#endif
    50         };
     57    }
    5158};
    5259
     60
    5361struct C : sc_module {
    54         sc_in_clk                       clk;
    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;
    5866
    59         void eval1 () {
    60     o1 = i1 ^ i2;
    61         }
     67    void eval1() {
     68        o1 = i1 ^ i2;
     69    }
    6270
    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();
    6776#ifdef SYSTEMCASS_SPECIFIC
    68                 o1(i1);
    69                 o1(i2);
     77        o1(i1);
     78        o1(i2);
    7079#endif
    71         };
     80    }
     81
    7282};
    7383
     84
    7485struct D : sc_module {
    75         sc_in_clk                       clk;
    76         sc_out<bool>                    o1;
     86    sc_in_clk    clk;
     87    sc_out<bool> o1;
    7788
    78         void eval () {
    79     o1 = (rand()%2) == 0;
    80         }
     89    void eval () {
     90        o1 = (rand() % 2) == 0;
     91    }
    8192
    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
    8999};
    90100
    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");
    95101
    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);
     102int 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");
    111105
    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");
    122110
    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
    126146    return EXIT_SUCCESS;
    127   }
     147}
    128148
    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*/
    130159
    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
    12include ../env.mk
     3TRACE1 = trace_file_scass.vcd
     4TRACE2 = trace_file_systemc.vcd
     5ERASE = $(TRACE1) $(TRACE2)
     6include ../Makefile.common
    27
    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)
     8TRACE = trace_file.vcd
     9TRACE_REF = trace_file_reference.vcd
    1010
    11 .SECONDARY:
     11test: 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 ;
    1226
    13 main : $(EXE)
    1427
    15 test : trace_file_scass.vcd trace_file_systemc.vcd trace_file_reference.vcd
    16         -diff trace_file_systemc.vcd trace_file_scass.vcd
    17         diff trace_file_reference.vcd trace_file_scass.vcd
    18 
    19 trace_file_scass.vcd : system_systemcass.x
    20         ./system_systemcass.x
    21         tail -n +11 trace_file.vcd > trace_file_temp.vcd
    22         mv trace_file_temp.vcd trace_file_scass.vcd
    23 
    24 trace_file_systemc.vcd : system_systemc.x
    25         ./system_systemc.x
    26         tail -n +11 trace_file.vcd > trace_file_temp.vcd
    27         mv trace_file_temp.vcd trace_file_systemc.vcd
    28 
    29 %.gif : %.dot
    30         dot -Tgif -o $*.gif $*.dot
    31 
    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.deps
    39 
    40 %_systemc.cpp : %.cpp
    41         ln -s $*.cpp $*_systemc.cpp
    42 
    43 %_systemcass.cpp : %.cpp
    44         ln -s $*.cpp $*_systemcass.cpp
    45 
    46 %_systemc.o : %_systemc.cpp
    47         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    48         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    49 
    50 %_systemcass.o : %_systemcass.cpp
    51         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    52         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    53 
    54 clean :
    55         rm -f Makefile.deps
    56         -rm -f *.o gmon.out *~
    57         -rm -f ${LOG}
    58         -rm -f signal_order.txt module_order.dot signal_graph.dot
    59         -rm -f module_order.gif signal_graph.gif
    60         -rm -f $(EXE) $(OBJECTS)
    61         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    62         -rm -f core*
    63         -rm -rf generated_by_systemcass
    64         -rm -rf trace_file.vcd
    65        
  • 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
    14#include "systemc.h"
    25
    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
    118
    129using namespace std;
    1310
    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;
     11struct 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;
    2117
    22   void fg ()
    23   {
    24     o1 = r1;
    25   }
     18    void fg() {
     19        o1 = r1;
     20    }
    2621
    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    }
    3430
    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    }
    4742};
    4843
    49 int
    50 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");
    5744
    58   a.clk    (clk1);
    59   a.resetn (resetn);
     45int 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");
    6050
    61   a.i1 (s[0]);
    62   a.o1 (s[1]);
     51    a.clk   (clk1);
     52    a.resetn(resetn);
    6353
    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]);
    7356
    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");
    7660
    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");
    7966
    80   sc_start (5);
     67    /* initilization */
     68    sc_start(sc_time(0, sc_core::SC_NS));
    8169
    82   s[0] = 0x7B;
    83   resetn = 1;
     70    s[0] = 0;
     71    resetn = 0;
    8472
    85   sc_start (1);
     73    sc_start(sc_time(5, sc_core::SC_NS));
    8674
    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;
    9577
    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;
    9887}
    9988
     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
    12include ../env.mk
     3include ../Makefile.common
    24
    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}
     5test : 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 ;
    713
    8 SYSTEM    = system.cpp
    9 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)
    1514
    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 \
    2915
    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.dat
    33 
    34 .SECONDARY:
    35 
    36 main : $(EXE)
    37 
    38 test : system_systemcass.x
    39         ./system_systemcass.x
    40        
    41 %.gif : %.dot
    42         dot -Tgif -o $*.gif $*.dot
    43 
    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.deps
    54 
    55 %_systemc.cpp : %.cpp
    56         ln -s $*.cpp $*_systemc.cpp
    57 
    58 %_systemcass.cpp : %.cpp
    59         ln -s $*.cpp $*_systemcass.cpp
    60 
    61 %_socview.cpp : %.cpp
    62         ln -s $*.cpp $*_socview.cpp
    63 
    64 %_systemc.o : %_systemc.cpp
    65         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    66         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    67 
    68 %_systemcass.o : %_systemcass.cpp
    69         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    70         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    71 
    72 %_socview.o : %_socview.cpp
    73         $(CXX) $(CFLAGS_SOCVIEW) -MM $*_socview.cpp >> Makefile.deps
    74         $(CXX) $(CFLAGS_SOCVIEW) -c $*_socview.cpp -o $*_socview.o
    75 
    76 clean :
    77         rm -f Makefile.deps
    78         -rm -f *.o gmon.out *~
    79         -rm -f results
    80         -rm -f signal_order.txt module_order.dot signal_graph.dot
    81         -rm -f module_order.gif signal_graph.gif
    82         -rm -f $(EXE) $(OBJECTS)
    83         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    84         -rm -f core*
    85         -rm -rf generated_by_systemcass
    86         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    87        
  • 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
    14#include <systemc.h>
    25
    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
    118
    129using namespace std;
     
    1411template<typename datatype>
    1512class 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;
    2113
    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;
    3119
    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    }
    4740};
     41
    4842
    4943template<typename datatype>
    5044class test : public module_base<datatype> {
    51 public:
    52   sc_in<datatype>                      i2;
    53   sc_out<datatype>                     o2;
    54   sc_signal<datatype>                  reg2;
    5545
    56 private:
    57   void trans ()
    58   {
    59   }
     46    public:
     47    sc_in<datatype> i2;
     48    sc_out<datatype> o2;
     49    sc_signal<datatype> reg2;
    6050
    61   void gen ()
    62   {
    63   }
    64   virtual void kikoo ()
    65   { }
     51    private:
     52    void trans() {}
    6653
    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),
    7061    i2("i2"),
    7162    o2("o2"),
    72     reg2("reg2")
    73   {
    74                 SC_METHOD(trans);
    75                 this->sensitive << this->clk.pos();
    76     this->dont_initialize();
    77                 SC_METHOD(gen);
    78                 this->sensitive << this->clk.neg();
    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    }
    8172};
    8273
    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");
    9174
    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);
     75int 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");
    9878
    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);
    10185
    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;
    10391}
    10492
     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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
    85
    9 .SECONDARY:
     6test : 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 ;
    1014
    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} ; fi
    17         @echo Test OK.
    18 
    19 %.png : %.dot
    20         dot -Tpng -o $*.png $*.dot
    21 
    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.deps
    29 
    30 %_systemc.cpp : %.cpp
    31         ln -s $*.cpp $*_systemc.cpp
    32 
    33 %_systemcass.cpp : %.cpp
    34         ln -s $*.cpp $*_systemcass.cpp
    35 
    36 %_systemc.o : %_systemc.cpp
    37         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    38         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    39 
    40 %_systemcass.o : %_systemcass.cpp
    41         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    43 
    44 clean :
    45         rm -f Makefile.deps
    46         -rm -f *.o gmon.out
    47         -rm -f signal_order.txt module_order.dot signal_graph.dot port_graph.dot
    48         -rm -f module_graph.dot process_order.dot
    49         -rm -f $(EXE) $(OBJECTS)
    50         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    51         -rm -f core*
    52         -rm -rf generated_by_systemcass
    53         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    54        
  • sources/test_regression/16022007/system.cpp

    r1 r55  
    1 #include <systemc.h>
     1
    22#include <signal.h>
    33
     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
    49using namespace std;
    5        
     10
     11
    612struct 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
    1927};
    2028
    2129struct 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
    3646};
    3747
    3848
    3949struct 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
    6480
    6581struct 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
    99124
    100125struct 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();
    136168#ifdef SYSTEMCASS_SPECIFIC
    137                 o3(i3);
     169        o3(i3);
    138170#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
    144179
    145180struct 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
     197int 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;
    264293}
     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
    12include ../env.mk
     3HIERARCHY = object_hierarchy.txt
     4ERASE = $(HIERARCHY)
     5include ../Makefile.common
    26
    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)
     7HIERARCHY_REF = object_hierarchy_ref.txt
    108
    11 .SECONDARY:
     9test : $(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 ;
    1216
    13 main : $(EXE_SCASS)
    1417
    15 test : main
    16         ./system_systemcass.x object_hierarchy1.txt
    17         diff object_hierarchy1_reference.txt object_hierarchy1.txt
    18         ./system2_systemcass.x object_hierarchy2.txt
    19         diff object_hierarchy2_reference.txt object_hierarchy2.txt
    20         @echo Test OK.
    2118
    22 %.gif : %.dot
    23         dot -Tgif -o $*.gif $*.dot
    24 
    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.deps
    32 
    33 %_systemc.cpp : %.cpp
    34         ln -s $*.cpp $*_systemc.cpp
    35 
    36 %_systemcass.cpp : %.cpp
    37         ln -s $*.cpp $*_systemcass.cpp
    38 
    39 %_systemc.o : %_systemc.cpp
    40         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    41         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    42 
    43 %_systemcass.o : %_systemcass.cpp
    44         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    46 
    47 clean :
    48         rm -f Makefile.deps
    49         -rm -f *.o gmon.out *~
    50         -rm -f ${LOG}
    51         -rm -f signal_order.txt module_order.dot signal_graph.dot
    52         -rm -f module_order.gif signal_graph.gif
    53         -rm -f $(EXE) $(OBJECTS)
    54         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    55         -rm -f core*
    56         -rm -rf generated_by_systemcass
    57         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    58        
  • sources/test_regression/16062005a/system.cpp

    r1 r55  
    1 #include "systemc.h"
     1
    22#include <iostream>
    33#include <fstream>
    44#include <vector>
    55
    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"
    128
    139
    1410using namespace std;
    1511
    16 struct D : sc_module
    17 {
    18   D (sc_module_name)
    19   {
    20   }
     12struct D : sc_module {
     13    D(sc_module_name) {}
    2114};
    2215
    23 struct C : sc_module
    24 {
    25   C (sc_module_name)
    26   {
    27   }
     16
     17
     18struct C : sc_module {
     19    C(sc_module_name) {}
    2820};
    2921
    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
     23struct B : sc_module {
     24    D d1;
     25    D d2;
     26    C c;
     27    B(sc_module_name) : d1("d1"), d2("d2"), c("c") {}
    3828};
    3929
    40 struct A : sc_module
    41 {
    42   B b;
    43   C c;
    44   A (sc_module_name) : b("b"), c("c")
    45   {
    46   }
     30
     31struct A : sc_module {
     32    B b;
     33    C c;
     34    A(sc_module_name) : b("b"), c("c") {}
    4735};
    4836
    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
     38struct top_level1 : sc_module {
     39    A a;
     40    D d;
     41    top_level1(sc_module_name) : a("a"), d("d") {}
    5642};
    5743
    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
     45struct 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") {}
    6650};
    6751
    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
     53void 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;
    7661}
    7762
    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
     64void 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    }
    8368}
    8469
    85 int
    86 sc_main (int argc, char ** argv)
    87 {
    88   if (argc < 2)
    89   {
    90     cerr << "Usage : " << argv[0] << " <filename>\n";
    91     exit (-1);
    92   }
    9370
    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   }
     71int sc_main (int argc, char ** argv) {
     72    if (argc < 2) {
     73        cerr << "Usage : " << argv[0] << " <filename>\n";
     74        exit(-1);
     75    }
    10576
    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");
    15680
    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    }
    15887
    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;
    160118}
    161119
     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.mk
    21
    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)
     2include ../16062005a/Makefile
    103
    11 .SECONDARY:
    124
    13 main : $(EXE_SCASS)
    14 
    15 test : main
    16         ./system_systemcass.x object_hierarchy1.txt
    17         diff object_hierarchy1_reference.txt object_hierarchy1.txt
    18         ./system2_systemcass.x object_hierarchy2.txt
    19         diff object_hierarchy2_reference.txt object_hierarchy2.txt
    20         @echo Test OK.
    21 
    22 %.gif : %.dot
    23         dot -Tgif -o $*.gif $*.dot
    24 
    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.deps
    32 
    33 %_systemc.cpp : %.cpp
    34         ln -s $*.cpp $*_systemc.cpp
    35 
    36 %_systemcass.cpp : %.cpp
    37         ln -s $*.cpp $*_systemcass.cpp
    38 
    39 %_systemc.o : %_systemc.cpp
    40         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    41         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    42 
    43 %_systemcass.o : %_systemcass.cpp
    44         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    46 
    47 clean :
    48         rm -f Makefile.deps
    49         -rm -f *.o gmon.out *~
    50         -rm -f ${LOG}
    51         -rm -f signal_order.txt module_order.dot signal_graph.dot
    52         -rm -f module_order.gif signal_graph.gif
    53         -rm -f $(EXE) $(OBJECTS)
    54         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    55         -rm -f core*
    56         -rm -rf generated_by_systemcass
    57         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    58        
  • 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
     1Top level :
     2s_clk, noname_0, noname_1, noname_2, noname_3, m, top_level_module
     3
     4Child of "m" :
     5m.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
     7Child of "m.intern_module_of_moldu" :
     8m.intern_module_of_moldu.noname_5
     9
     10Child of "top_level_module" :
     11top_level_module.noname_6
  • sources/test_regression/16062005b/system.cpp

    r1 r55  
    1 #include "systemc.h"
     1
    22#include <iostream>
    33#include <fstream>
    44#include <vector>
    55
    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"
    138
    149using namespace std;
    1510
    16 struct D : sc_module
    17 {
    18   D (sc_module_name)
    19   {
    20   }
     11
     12struct intramoldu : sc_module {
     13    sc_signal<long> reg_long;
     14    intramoldu(sc_module_name n) {}
    2115};
    2216
    23 struct C : sc_module
    24 {
    25   C (sc_module_name)
    26   {
    27   }
     17
     18
     19struct 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") {}
    2844};
    2945
    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   }
    38 };
    3946
    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;
     47void 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";
    7658}
    7759
    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
     61int 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;
    83101}
    84102
    85 int
    86 sc_main (int argc, char ** argv)
    87 {
    88   if (argc < 2)
    89   {
    90     cerr << "Usage : " << argv[0] << " <filename>\n";
    91     exit (-1);
    92   }
    93103
    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*/
    105114
    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
    156 
    157   o.close ();
    158 
    159   return 0;
    160 }
    161 
  • sources/test_regression/16112005a/Makefile

    r15 r55  
    11include ../env.mk
     2include ../Makefile.common
    23
    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)
     4test : 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 ;
    1012
    11 .SECONDARY:
    1213
    13 main : $(EXE)
    14 
    15 test : main
    16         ./system_systemcass.x  || eval ${failcom} ; \
     14#./system_systemcass.x  || eval ${failcom} ; \
    1715        ./system2_systemcass.x ; \
    1816   if [ $$? -ne 29 ] ; then eval ${failcom} ; fi ; \
     
    2119        echo Test OK.
    2220
    23 %.gif : %.dot
    24         dot -Tgif -o $*.gif $*.dot
    25 
    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.deps
    33 
    34 %_systemc.cpp : %.cpp
    35         ln -s $*.cpp $*_systemc.cpp
    36 
    37 %_systemcass.cpp : %.cpp
    38         ln -s $*.cpp $*_systemcass.cpp
    39 
    40 %_systemc.o : %_systemc.cpp
    41         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o
    43 
    44 %_systemcass.o : %_systemcass.cpp
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    46         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    47 
    48 clean :
    49         rm -f Makefile.deps
    50         -rm -f *.o gmon.out *~
    51         -rm -f ${LOG}
    52         -rm -f signal_order.txt module_order.dot signal_graph.dot
    53         -rm -f module_order.gif signal_graph.gif
    54         -rm -f $(EXE) $(OBJECTS)
    55         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    56         -rm -f core*
    57         -rm -rf generated_by_systemcass
    58         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    59        
  • sources/test_regression/16112005a/system.cpp

    r35 r55  
    1 #include <systemc.h>
     1
    22#include <iostream>
    33#include <string>
    44
    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
    138
    149using namespace std;
    1510
    16 static int errnum = 0;
    1711
    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   }
     12struct 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") {}
    2716};
    2817
    29 struct model : sc_module
    30 {
    31   sc_in<int>     i1, i2, i3;
    32   sc_out<int>    o1, o2, o3;
    33   sc_signal<int> r1, r2;
    34   internal_model internal;
    3518
    36   model (sc_module_name n) : sc_module (n),
     19struct 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),
    3726    i1("i1"), i2("i2"), i3("i3"),
    3827    o1("o1"), o2("o2"), o3("o3"),
    3928    r1("r1"), r2("r2"),
    4029    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    }
    4634};
    4735
    48 int
    49 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");
    5436
    55   m.i1 (s1);
    56   m.i2 (s1); //
    57   m.i3 (s1);
    58   m.o1 (s4); //
    59   m.o2 (s2);
    60   m.o3 (s3);
     37int 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");
    6141
    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);
    6348
    64         sc_start (1);
    65         sc_start (10);
     49    sc_start(sc_time(0, sc_core::SC_NS));
    6650
    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;
    6957}
    7058
     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  
    11include ../env.mk
     2include ../Makefile.common
    23
    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)
     4test : $(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
    108
    11 .SECONDARY:
    129
    13 main : $(EXE)
    14 
    15 test : main
    16         ./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 : %.dot
    24         dot -Tgif -o $*.gif $*.dot
    25 
    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.deps
    33 
    34 %_systemc.cpp : %.cpp
    35         ln -s $*.cpp $*_systemc.cpp
    36 
    37 %_systemcass.cpp : %.cpp
    38         ln -s $*.cpp $*_systemcass.cpp
    39 
    40 %_systemc.o : %_systemc.cpp
    41         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o
    43 
    44 %_systemcass.o : %_systemcass.cpp
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    46         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    47 
    48 clean :
    49         rm -f Makefile.deps
    50         -rm -f *.o gmon.out *~
    51         -rm -f ${LOG}
    52         -rm -f signal_order.txt module_order.dot signal_graph.dot
    53         -rm -f module_order.gif signal_graph.gif
    54         -rm -f $(EXE) $(OBJECTS)
    55         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    56         -rm -f core*
    57         -rm -rf generated_by_systemcass
    58         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    59        
  • sources/test_regression/16112005b/system.cpp

    r35 r55  
    1 #include <systemc.h>
     1
    22#include <iostream>
    33#include <string>
    44
    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
    138
    149using namespace std;
    1510
    16 static int errnum = 0;
    1711
    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   }
     12struct 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") {}
    2716};
    2817
    29 struct model : sc_module
    30 {
    31   sc_in<int>     i1, i2, i3;
    32   sc_out<int>    o1, o2, o3;
    33   sc_signal<int> r1, r2;
    34   internal_model internal;
    3518
    36   model (sc_module_name n) : sc_module (n),
     19struct 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),
    3725    i1("i1"), i2("i2"), i3("i3"),
    3826    o1("o1"), o2("o2"), o3("o3"),
    3927    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    }
    4632};
    4733
    48 int
    49 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");
    5434
    55   m.i1 (s1);
    56   m.i2 (s1); //
    57   m.i3 (s1);
    58   m.o1 (s4); //
    59   m.o2 (s2);
    60   m.o3 (s3);
     35int 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");
    6139
    62         sc_start (0);
     40    m.i1(s1);
     41    m.i3(s1);
     42    m.o1(s4);
     43    m.o2(s2);
     44    m.o3(s3);
    6345
    64         sc_start (1);
    65         sc_start (10);
     46    sc_start(sc_time(0, sc_core::SC_NS));
    6647
    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;
    6952}
    7053
     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  
    11include ../env.mk
     2include ../Makefile.common
    23
    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)
     4test : $(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
    108
    11 .SECONDARY:
    129
    13 main : $(EXE)
    14 
    15 test : main
    16         ./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 : %.dot
    24         dot -Tgif -o $*.gif $*.dot
    25 
    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.deps
    33 
    34 %_systemc.cpp : %.cpp
    35         ln -s $*.cpp $*_systemc.cpp
    36 
    37 %_systemcass.cpp : %.cpp
    38         ln -s $*.cpp $*_systemcass.cpp
    39 
    40 %_systemc.o : %_systemc.cpp
    41         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o
    43 
    44 %_systemcass.o : %_systemcass.cpp
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    46         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    47 
    48 clean :
    49         rm -f Makefile.deps
    50         -rm -f *.o gmon.out *~
    51         -rm -f ${LOG}
    52         -rm -f signal_order.txt module_order.dot signal_graph.dot
    53         -rm -f module_order.gif signal_graph.gif
    54         -rm -f $(EXE) $(OBJECTS)
    55         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    56         -rm -f core*
    57         -rm -rf generated_by_systemcass
    58         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    59        
  • sources/test_regression/16112005c/system.cpp

    r35 r55  
    1 #include <systemc.h>
     1
    22#include <iostream>
    33#include <string>
    44
    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
    138
    149using namespace std;
    1510
    16 static int errnum = 0;
    1711
    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   }
     12struct 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") {}
    2716};
    2817
    29 struct model : sc_module
    30 {
    31   sc_in<int>     i1, i2, i3;
    32   sc_out<int>    o1, o2, o3;
    33   sc_signal<int> r1, r2;
    34   internal_model internal;
    3518
    36   model (sc_module_name n) : sc_module (n),
     19struct 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),
    3725    i1("i1"), i2("i2"), i3("i3"),
    3826    o1("o1"), o2("o2"), o3("o3"),
    3927    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    }
    4632};
    4733
    48 int
    49 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");
    5434
    55   m.i1 (s1);
    56   m.i2 (s1); //
    57   m.i3 (s1);
    58   m.o1 (s4); //
    59   m.o2 (s2);
    60   m.o3 (s3);
     35int 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");
    6139
    62         sc_start (0);
     40    m.i1 (s1);
     41    m.i2 (s1);
     42    m.i3 (s1);
     43    m.o2 (s2);
     44    m.o3 (s3);
    6345
    64         sc_start (1);
    65         sc_start (10);
     46    sc_start(sc_time(0, sc_core::SC_NS));
    6647
    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;
    6954}
    7055
     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
    12include ../env.mk
     3RESULTS = results.txt
     4ERASE = $(RESULTS)
     5include ../Makefile.common
    26
    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)
     7RESULTS_REF = results_ref.txt
    98
    10 .SECONDARY:
     9test : $(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 ;
    1116
    12 main : $(EXE)
    1317
    14 test : main
    15         ./system_systemcass.x
    16         diff results.txt results_reference.txt
    17         @echo Test OK.
    1818
    19 %.gif : %.dot
    20         dot -Tgif -o $*.gif $*.dot
    21 
    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.deps
    29 
    30 %_systemc.cpp : %.cpp
    31         ln -s $*.cpp $*_systemc.cpp
    32 
    33 %_systemcass.cpp : %.cpp
    34         ln -s $*.cpp $*_systemcass.cpp
    35 
    36 %_systemc.o : %_systemc.cpp
    37         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    38         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    39 
    40 %_systemcass.o : %_systemcass.cpp
    41         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    43 
    44 clean :
    45         rm -f Makefile.deps
    46         -rm -f *.o gmon.out *~
    47         -rm -f results.txt
    48         -rm -f signal_order.txt module_order.dot signal_graph.dot
    49         -rm -f module_order.gif signal_graph.gif
    50         -rm -f $(EXE) $(OBJECTS)
    51         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    52         -rm -f core*
    53         -rm -rf generated_by_systemcass
    54         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    55        
  • sources/test_regression/16122005/system.cpp

    r35 r55  
    1 #include <systemc.h>
     1
    22#include <iostream>
    33#include <fstream>
     
    55#include <cstring> //strcmp
    66
    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"
    139
    1410
    1511using namespace std;
    1612
    17 struct D : sc_module
    18 {
    19   D (sc_module_name n)
    20   {
    21   }
     13
     14struct D : sc_module {
     15    D (sc_module_name n) {}
    2216};
    2317
    24 struct C : sc_module
    25 {
    26   C (sc_module_name n)
    27   {
    28   }
     18
     19struct C : sc_module {
     20    C(sc_module_name n) {}
    2921};
    3022
    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
     24struct B : sc_module {
     25    D d1;
     26    D d2;
     27    C c;
     28    B(sc_module_name n) : d1("d1"), d2("d2"), c("c") {}
    3929};
    4030
    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
     32struct A : sc_module {
     33    B b;
     34    C c;
     35    A(sc_module_name n) : b("b"), c("c") {}
    4836};
    4937
    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
     39struct 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    }
    5845};
    5946
    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
     48struct 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    }
    7460};
    7561
    76 int
    77 sc_main (int argc, char ** argv)
    78 {
    79   if (argc < 1)
    80   {
    81     cerr << "Usage : " << argv[0] << "\n";
    82     exit (-1);
    83   }
    8462
    85   sc_clock   clk("clock");
    86   top_level1 top1("top1");
    87   top_level2 top2("top2");
     63int sc_main (int argc, char ** argv) {
     64    if (argc < 1) {
     65        cerr << "Usage : " << argv[0] << "\n";
     66        exit(-1);
     67    }
    8868
    89   sc_start(0);
     69    sc_clock clk("clock");
     70    top_level1 top1("top1");
     71    top_level2 top2("top2");
    9072
    91   return 0;
     73    sc_start(sc_time(0, sc_core::SC_NS));
     74
     75    return 0;
    9276}
    9377
     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
    12include ../env.mk
     3include ../Makefile.common
    24
    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}
     5test : 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 ;
    713
    8 SYSTEM    = system.cpp
    9 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)
    1514
    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.dat
    33 
    34 .SECONDARY:
    35 
    36 main : $(EXE)
    37 
    38 test : system_systemc.x system_systemcass.x system_socview.x
    39         ./system_systemc.x ; ./system_systemcass.x ;    ./system_socview.x
    40        
    41 %.gif : %.dot
    42         dot -Tgif -o $*.gif $*.dot
    43 
    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.deps
    54 
    55 %_systemc.cpp : %.cpp
    56         ln -s $*.cpp $*_systemc.cpp
    57 
    58 %_systemcass.cpp : %.cpp
    59         ln -s $*.cpp $*_systemcass.cpp
    60 
    61 %_socview.cpp : %.cpp
    62         ln -s $*.cpp $*_socview.cpp
    63 
    64 %_systemc.o : %_systemc.cpp
    65         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    66         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    67 
    68 %_systemcass.o : %_systemcass.cpp
    69         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    70         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    71 
    72 %_socview.o : %_socview.cpp
    73         $(CXX) $(CFLAGS_SOCVIEW) -MM $*_socview.cpp >> Makefile.deps
    74         $(CXX) $(CFLAGS_SOCVIEW) -c $*_socview.cpp -o $*_socview.o
    75 
    76 clean :
    77         rm -f Makefile.deps
    78         -rm -f *.o gmon.out *~
    79         -rm -f results
    80         -rm -f signal_order.txt module_order.dot signal_graph.dot
    81         -rm -f module_order.gif signal_graph.gif
    82         -rm -f $(EXE) $(OBJECTS)
    83         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    84         -rm -f core*
    85         -rm -rf generated_by_systemcass
    86         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    87        
  • sources/test_regression/17022006/system.cpp

    r1 r55  
    1 #include <systemc.h>
    21
    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
    117
    128using namespace std;
    139
     10
    1411struct test : sc_module {
    15         sc_in_clk                      clk;
    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];
    2017
    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];
    2522
    26   void trans ()
    27   {
    28   }
     23    void trans() {}
    2924
    30   void gen ()
    31   {
    32   }
     25    void gen() {}
    3326
    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),
    3630    clk("clk"),
    3731    i1("i1"),
     
    3933    reg1("reg1"),
    4034    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
    4944#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
    5459    }
    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
    6561};
    6662
    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");
    7563
    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);
     64int 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");
    8770
    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);
    9082
    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);
    10197#endif
    102         return EXIT_SUCCESS;
     98
     99    cout << "OK" << endl;
     100
     101    return EXIT_SUCCESS;
    103102}
    104103
    105104#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
    12include ../env.mk
     3TRACE1 = trace_file_scass.vcd
     4TRACE2 = trace_file_systemc.vcd
     5ERASE = $(TRACE1) $(TRACE2)
     6include ../Makefile.common
    27
    3 EXE     = system_systemc.x system_systemcass.x
    4 OBJECTS = $(EXE:.x=.o)
    5 LINKS   = $(OBJECTS:.o=.cpp)
     8TRACE = trace_file.vcd
     9TRACE_REF = trace_file_reference.vcd
    610
    7 .SECONDARY:
     11test: 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 ;
    826
    9 main : $(EXE)
    1027
    11 test : system-23.vcd system-23_reference.vcd
    12         -diff system-23.vcd system-23_reference.vcd
    13         @echo Test OK.
    1428
    15 system-23.vcd : system_systemcass.x
    16         ./system_systemcass.x --nodynamiclink system 23
    17         tail -n +8 system.vcd > system-23.vcd
    18         rm system.vcd
    19 
    20 system-23_reference.vcd : system_systemc.x
    21         ./system_systemc.x system 23
    22         tail -n +8 system.vcd > system-23_reference.vcd
    23         rm system.vcd
    24 
    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.deps
    32 
    33 %_systemc.cpp : %.cpp
    34         ln -s $*.cpp $*_systemc.cpp
    35 
    36 %_systemcass.cpp : %.cpp
    37         ln -s $*.cpp $*_systemcass.cpp
    38 
    39 %_systemc.o : %_systemc.cpp
    40         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    41         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    42 
    43 %_systemcass.o : %_systemcass.cpp
    44         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    46 
    47 clean :
    48         rm -f Makefile.deps
    49         -rm -f *.o gmon.out
    50         -rm -f *.txt
    51         -rm -f $(EXE) $(OBJECTS)
    52         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    53         -rm -f core*
    54         -rm -f *~
    55         -rm -rf generated_by_systemcass
    56         -rm -rf trace_system_systemcass.x.vcd trace_system_systemc.x.vcd
    57         -rm -rf system-23.vcd
    58         -rm -rf system_systemcass.log
    59        
  • sources/test_regression/17032005/system.cpp

    r35 r55  
    1 #include <systemc.h>
    21#include <signal.h>
    32#include <iostream>
     
    54#include <cstdlib> //exit
    65
    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"
    158
    169using namespace std;
    17        
    18 struct sc_test : public sc_module
    19 {
    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;
    3210
    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;
     11struct 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;
    3824
    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        }
    8060    }
    81   }
    8261
    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
    8968};
    9069
    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;
    10370
    104   if (argc != 3)
    105   {
    106     cerr << "Usage : " << argv[0] << " <trace filename> <#cycles>\n";
    107     exit (-1);
    108   }
     71int sc_main(int argc, char * argv[]) {
     72    sc_clock clk("clk");
     73    sc_signal<bool> resetn("resetn");
    10974
    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);
    12578
    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;
    13280
    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");
    13493
    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);
    140100
    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; 
    146114#endif
    147   cerr << test.ui6.read() << endl;
     115    cout << test.ui6.read() << endl;
    148116
    149   union t {
    150     int v1:3;
    151     int v2;
    152   };
    153117
    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    };
    159122
    160   ASSERT(test.ui6.read() == 0x3f);
    161   ASSERT(test.ui31.read() == 0x100fffff);
    162   ASSERT(test.ui32.read() == 0x211fffff);
    163123
    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
    167138#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;   
    172143#endif
    173144
    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);
    178149
    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);
    183154
    184 //  cout << "0x4294967315" << " 0x" << hex << test.bui64 << endl;   
    185   cout << "Test OK.\n";
    186155
    187   sc_close_vcd_trace_file (tf);
     156    sc_close_vcd_trace_file(tf);
    188157
    189   return EXIT_SUCCESS;
     158    return EXIT_SUCCESS;
    190159}
     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
    12include ../env.mk
     3TRACE1 = trace_file_scass.vcd
     4TRACE2 = trace_file_systemc.vcd
     5ERASE = $(TRACE1) $(TRACE2)
     6include ../Makefile.common
    27
    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)
     8TRACE = trace_file.vcd
     9TRACE_REF = trace_file_reference.vcd
    1010
    11 .SECONDARY:
     11test: 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 ;
    1226
    13 main : $(EXE)
    14 
    15 test : system.vcd system_systemcass.x-60_reference.vcd
    16         -diff system.vcd system_systemcass.x-60_reference.vcd
    17 
    18 %.vcd : %_systemcass.x %_systemc.x
    19         ./$*_systemcass.x $*_systemcass.x 60
    20         tail -n +8 $*_systemcass.x.vcd > $*.vcd
    21         rm $*_systemcass.x.vcd
    22 
    23 %.gif : %.dot
    24         dot -Tgif -o $*.gif $*.dot
    25 
    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.deps
    33 
    34 %_systemc.cpp : %.cpp
    35         ln -s $*.cpp $*_systemc.cpp
    36 
    37 %_systemcass.cpp : %.cpp
    38         ln -s $*.cpp $*_systemcass.cpp
    39 
    40 %_systemc.o : %_systemc.cpp
    41         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    43 
    44 %_systemcass.o : %_systemcass.cpp
    45         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    46         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    47 
    48 clean :
    49         rm -f Makefile.deps
    50         -rm -f *.o gmon.out *~
    51         -rm -f ${LOG}
    52         -rm -f signal_order.txt module_order.dot signal_graph.dot
    53         -rm -f module_order.gif signal_graph.gif
    54         -rm -f $(EXE) $(OBJECTS)
    55         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    56         -rm -f core*
    57         -rm -rf generated_by_systemcass
    58         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    5927       
  • sources/test_regression/19042005/system.cpp

    r49 r55  
    1 #include <systemc.h>
     1
    22#include <stdint.h>
    33
    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"
    126
    137using namespace std;
    148
    15 //#define sc_inout sc_out
    16        
     9
    1710struct 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;
    3526
    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;
    4534
    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    }
    5745
    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    }
    7155
    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
    8167};
    8268
    8369
    8470
    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");
     71int 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");
    10580
    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);
    12497
    125         /* Open trace file */
    126         sc_trace_file *system_trace_file;
    127         system_trace_file = sc_create_vcd_trace_file (argv[1]);
    128         /* clk waveform is always useful */
    129         sc_trace(system_trace_file, signal_clk, "clk");
     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");
    130103
    131   bool    b1 = 0;
    132   uint64_t l1 = 0;
     104    bool b1 = 0;
     105    uint64_t l1 = 0;
    133106
    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
    142139
    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));
    179142
    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);
    182147
    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));
    187149
    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;
    200152
    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
    204168    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 0
    226 #if defined(SYSTEMCASS_SPECIFIC)
    227   ui1 <<= 1; ui1 += 1;
    228   i1  <<= 1; i1 += 1;
    229 #endif
    230 #endif
    231 #if 0
    232     cerr << test1.io4.read() << " " << s16.read() << "\n";
    233 #endif
    234     sc_start (1);
    235   }
    236 
    237         sc_close_vcd_trace_file (system_trace_file);
    238 
    239         return EXIT_SUCCESS;
    240169}
    241170
    242171#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>
    21
    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
    116
    127using namespace std;
    138
     9
    1410struct 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;
    4221
    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;
    5727
    58   void fmealy1 ()
    59   {
    60     mealy1 = i2.read();
    61   }
     28    void fmealy1() {
     29        mealy1 = i2.read();
     30    }
    6231
    63   void fmealy2 ()
    64   {
    65     mealy2 = i2.read() + reg2.read();
    66   }
     32    void fmealy2() {
     33        mealy2 = i2.read() + reg2.read();
     34    }
    6735
    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    }
    7942
    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    }
    9350
    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),
    9653    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     io1("io1"), */io4("io4"),
     54    i1("i1"), i2("i2"), i3("i3"),
     55    o1("o1"), o2("o2"), o3("o3"),
     56    io4("io4"),
    10057    mealy1("mealy1_equivalent_to_i2"),
    10158    mealy2("mealy2_equivalent_to_i2_plus_reg2"),
     
    10360    reg2("reg2_cycle_number"),
    10461    reg3("reg3_cycle_number"),
    105 //    reg4("reg4"),
    106 //    reg5("reg5"),
    107 //    reg6("reg6"),
    108 //    reg7("reg7"),
    109 //    reg8("reg8"),
    11062    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    }
    12680};
    12781
    128 int
    129 usage (const char *com)
    130 {
    131   cout << "Usage :\n" << com << " [#cycles]\n";
    132   return EXIT_FAILURE;
     82
     83int usage (const char * com) {
     84    cout << "Usage :\n" << com << " [#cycles]\n";
     85    return EXIT_FAILURE;
    13386}
    13487
    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 0
    142 sc_signal<sc_int<4> >        s07 ("s07"),
    143                              s08 ("s08");
    144 sc_signal<sc_uint<4> >       s09 ("s09"),
    145                              s10 ("s10");
    146 #endif
    147 #if 0
    148 sc_signal<sc_uint<64> >      s11 ("s11"),
    149                              s12 ("s12"),
    150                              s13 ("s13");
    151 #endif
    152 //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");
    15788
    158 int
    159 s (int i)
    160 {
    161   int val = 0;
    162   while (i)
    163     val += i--;
    164   return val;
     89sc_signal<bool> s01("i1_cycle_number_not_parity"), s02("o2_not_reg1");
     90sc_signal<int>  s03("i2_cycle_number_x2"), s04("o2_reg2_plus_one");
     91sc_signal<int>  s05("i3_cycle_number_x3"), s06("o3_reg3_plus_one");
     92sc_signal< sc_uint<32> > s16("io4_reg9_plus_one");
     93sc_signal<int>  s17("mealy1_equivalent_to_i2");
     94sc_signal<int>  s18("mealy2_i2_plus_reg2");
     95
     96
     97int s(int i) {
     98    int val = 0;
     99    while (i) {
     100        val += i--;
     101    }
     102    return val;
    165103}
    166104
    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
     106void * 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;
    180114}
    181115
    182 void
    183 save ()
    184 {
     116
     117void save() {
    185118#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);
    189122#endif
    190123}
    191124
    192 int sc_main (int argc, char *argv[])
    193 {
    194   int errnum = 0;
    195         sc_clock  signal_clk("my_clock",1, 0.5);
    196125
    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);
     126int sc_main (int argc, char * argv[]) {
     127    sc_clock  signal_clk("my_clock", 1, 0.5);
    217128
    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));
    220143
    221144#ifndef SOCVIEW
    222   if (argc != 2)
    223   {
    224     return usage (argv[0]);
    225   }
     145    if (argc != 2) {
     146        return usage(argv[0]);
     147    }
    226148
    227         int nb = atoi(argv[1]);
     149    int nb = atoi(argv[1]);
    228150
    229   if (nb == 0)
    230   {
    231     return usage (argv[0]);
    232   }
     151    if (nb == 0) {
     152        return usage(argv[0]);
     153    }
    233154
    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    }
    242162#else
    243   debug(&func);
     163    debug(&func);
    244164#endif
    245165
    246         return EXIT_SUCCESS;
     166    return EXIT_SUCCESS;
    247167}
    248168
    249169#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>
    21
    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
    115
    126using namespace std;
    137
     8
    149struct inner : sc_module {
    15         sc_in_clk      clk;
    16   sc_in<int>      i1;
    17   int reg;
     10    sc_in_clk clk;
     11    sc_in<int> i1;
     12    int reg;
    1813
    19   void save (ostream &o)
    20   {
    21     o << reg << endl;
    22   }
     14    void save(ostream & o) {
     15        o << reg << endl;
     16    }
    2317
    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    }
    2922
    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    }
    3729
    38   void trans ()
    39   {
    40     reg = i1.read();
    41   }
     30    void trans() {
     31        reg = i1.read();
     32    }
    4233
    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),
    4536    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();
    5141#ifdef SYSTEMCASS_SPECIFIC
    52     //SAVE_HANDLER(save);
    53     SAVE_HANDLER(save_state);
     42        SAVE_HANDLER(save_state);
    5443#endif
    55         };
     44    }
     45
    5646};
    5747
     48
    5849struct test : sc_module {
    59         sc_in_clk      clk;
    60         sc_in<bool>    i1;
    61         sc_in<int>      i2;
    62         sc_in<int>      i3;
    63   inner          inner1;
     50    sc_in_clk clk;
     51    sc_in<bool> i1;
     52    sc_in<int> i2;
     53    sc_in<int> i3;
     54    inner inner1;
    6455
    65   int  tab[16];
    66   bool b;
     56    int  tab[16];
     57    bool b;
    6758
    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    }
    7363
    7464
    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    }
    8272
    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        }
    9180    }
    92   }
    9381
    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        }
    10592    }
    106   }
    10793
    108   SC_HAS_PROCESS(test);
    109         test (sc_module_name n) : sc_module (n),
     94    SC_HAS_PROCESS(test);
     95    test (sc_module_name n) : sc_module (n),
    11096    clk("clk"),
    11197    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();
    117102#ifdef SYSTEMCASS_SPECIFIC
    118     //SAVE_HANDLER(save);
    119     SAVE_HANDLER(save_state);
     103        SAVE_HANDLER(save_state);
    120104#endif
    121         };
     105    }
     106
    122107};
    123108
    124 int
    125 usage (const char *com)
    126 {
    127   cout << "Usage :\n" << com << " [#cycles]\n";
    128   return EXIT_FAILURE;
     109
     110int usage (const char * com) {
     111    cout << "Usage :\n" << com << " [#cycles]\n";
     112    return EXIT_FAILURE;
    129113}
    130114
    131 sc_signal<bool>              s01 ("bool");
    132 sc_signal<int>               s02 ("tab_index"),
    133                              s03 ("value_to_write_in_tab");
    134115
    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;
     116sc_signal<bool> s01("bool");
     117sc_signal<int> s02("tab_index"),
     118s03 ("value_to_write_in_tab");
     119
     120
     121void * 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;
    145129}
    146130
    147 void
    148 save ()
    149 {
     131
     132void save() {
    150133#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);
    157141#endif
    158142}
    159143
    160 int sc_main (int argc, char *argv[])
    161 {
    162   int errnum = 0;
    163         sc_clock                     signal_clk("my_clock",1, 0.5);
    164144
    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);
     145int sc_main (int argc, char * argv[]) {
     146    sc_clock signal_clk("my_clock",1, 0.5);
    172147
    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));
    175158
    176159#ifndef SOCVIEW
    177   if (argc != 2)
    178   {
    179     return usage (argv[0]);
    180   }
     160    if (argc != 2) {
     161        return usage(argv[0]);
     162    }
    181163
    182         int nb = atoi(argv[1]);
     164    int nb = atoi(argv[1]);
    183165
    184   if (nb == 0)
    185   {
    186     return usage (argv[0]);
    187   }
     166    if (nb == 0) {
     167        return usage(argv[0]);
     168    }
    188169
    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    }
    196176#else
    197   debug(&func);
     177    debug(&func);
    198178#endif
    199179
    200         return EXIT_SUCCESS;
     180    return EXIT_SUCCESS;
    201181}
    202182
     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>
    21
    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
    115
    126using namespace std;
    137
     8
    149struct inner : sc_module {
    15         sc_in_clk      clk;
    16   sc_in<int>      i1;
    17   int reg;
     10    sc_in_clk clk;
     11    sc_in<int> i1;
     12    int reg;
    1813
    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    }
    2418
    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    }
    3225
    33   void trans ()
    34   {
    35     reg = i1.read();
    36   }
     26    void trans() {
     27        reg = i1.read();
     28    }
    3729
    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),
    4032    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();
    4637#ifdef SYSTEMCASS_SPECIFIC
    47     SAVE_HANDLER(save_state);
     38        SAVE_HANDLER(save_state);
    4839#endif
    49         };
     40    }
     41
    5042};
    5143
     44
    5245struct test : sc_module {
    53         sc_in_clk      clk;
    54         sc_in<bool>    i1;
    55         sc_in<int>      i2;
    56         sc_in<int>      i3;
    57   inner          inner1;
     46    sc_in_clk clk;
     47    sc_in<bool> i1;
     48    sc_in<int> i2;
     49    sc_in<int> i3;
     50    inner inner1;
    5851
    59   int tab[16];
    60   bool b;
     52    int tab[16];
     53    bool b;
    6154
    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    }
    6759
    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        }
    7667    }
    77   }
    7868
    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        }
    9079    }
    91   }
    9280
    93   SC_HAS_PROCESS(test);
    94         test (sc_module_name n) : sc_module (n),
     81    SC_HAS_PROCESS(test);
     82    test (sc_module_name n) : sc_module (n),
    9583    clk("clk"),
    9684    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();
    10289#ifdef SYSTEMCASS_SPECIFIC
    103     SAVE_HANDLER(save_state);
     90        SAVE_HANDLER(save_state);
    10491#endif
    105         };
     92    }
     93
    10694};
    10795
    108 int
    109 usage (const char *com)
    110 {
    111   cout << "Usage :\n" << com << " [#cycles]\n";
    112   return EXIT_FAILURE;
     96
     97int usage(const char * com) {
     98    cout << "Usage :\n" << com << " [#cycles]\n";
     99    return EXIT_FAILURE;
    113100}
    114101
    115 sc_signal<bool>              s01 ("bool");
    116 sc_signal<int>               s02 ("tab_index"),
    117                              s03 ("value_to_write_in_tab");
     102sc_signal<bool> s01("bool");
     103sc_signal<int> s02("tab_index"), s03("value_to_write_in_tab");
    118104
    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
     106void * 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;
    129114}
    130115
    131 int sc_main (int argc, char *argv[])
    132 {
    133   int errnum = 0;
    134         sc_clock                     signal_clk("my_clock",1, 0.5);
    135116
    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);
     117int sc_main (int argc, char * argv[]) {
     118    sc_clock signal_clk("my_clock", 1, 0.5);
    143119
    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));
    146130
    147131#ifndef SOCVIEW
    148   if (argc != 2)
    149   {
    150     return usage (argv[0]);
    151   }
     132    if (argc != 2) {
     133        return usage(argv[0]);
     134    }
    152135
    153         int nb = atoi(argv[1]);
     136    int nb = atoi(argv[1]);
    154137
    155   if (nb == 0)
    156   {
    157     return usage (argv[0]);
    158   }
     138    if (nb == 0) {
     139        return usage(argv[0]);
     140    }
    159141
    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    }
    166147#else
    167   debug(&func);
     148    debug(&func);
    168149#endif
    169150
    170         return EXIT_SUCCESS;
     151    return EXIT_SUCCESS;
    171152}
    172153
     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
    12include ../env.mk
     3SIGNAL_GRAPH = signal_graph.dot
     4MODULE_GRAPH = module_graph.dot
     5PORT_GRAPH = port_graph.dot
     6PROCESS_ORDER = process_order.dot
     7SIGNAL_ORDER = signal_order.txt
     8ERASE = $(SIGNAL_GRAPH) $(MODULE_GRAPH) $(PORT_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER)
     9include ../Makefile.common
    210
    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)
     11MODULE_GRAPH_REF = module_graph_cass_ref.dot
     12PORT_GRAPH_REF = port_graph_ref.dot
     13SIGNAL_GRAPH_REF = signal_graph_ref.dot
     14PROCESS_ORDER_M_REF = process_order_mouchard_ref.dot
     15PROCESS_ORDER_B_REF = process_order_buchmann_ref.dot
    816
    9 .SECONDARY:
     17test: $(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 ;
    1030
    11 main : $(EXE)
    1231
    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 : %.dot
    27         dot -Tpng -o $*.png $*.dot
    28 
    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.deps
    36 
    37 %_systemc.cpp : %.cpp
    38         ln -s $*.cpp $*_systemc.cpp
    39 
    40 %_systemcass.cpp : %.cpp
    41         ln -s $*.cpp $*_systemcass.cpp
    42 
    43 %_systemc.o : %_systemc.cpp
    44         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    45         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    46 
    47 %_systemcass.o : %_systemcass.cpp
    48         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    49         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    50 
    51 clean :
    52         rm -f Makefile.deps
    53         -rm -f *.o gmon.out
    54         -rm -f signal_order.txt module_order.dot signal_graph.dot port_graph.dot
    55         -rm -f module_graph.dot process_order.dot
    56         -rm -f $(EXE) $(OBJECTS)
    57         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    58         -rm -f core*
    59         -rm -rf generated_by_systemcass
    60         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    61        
  • sources/test_regression/20122006/system.cpp

    r1 r55  
    1 #include <systemc.h>
     1
    22#include <signal.h>
    3 #include "chrono.h"
     3#include <iostream>
     4
     5#include "systemc.h"
     6#include "test.h"
    47
    58using namespace std;
    6        
     9
     10
    711struct 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
    2326
    2427struct 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
    4248
    4349
    4450struct 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
    7383
    7484struct 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
    115131
    116132struct 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
    166190
    167191struct 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
     210int 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
    282303    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;
    299304}
     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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
     5test : 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 ;
    1013
    11 .SECONDARY:
    1214
    13 main : $(EXE)
    1415
    15 test : main
    16         ./system_systemcass.x || eval ${failcom} ; \
    17         echo Test OK.
    18 
    19 %.gif : %.dot
    20         dot -Tgif -o $*.gif $*.dot
    21 
    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.deps
    29 
    30 %_systemc.cpp : %.cpp
    31         ln -s $*.cpp $*_systemc.cpp
    32 
    33 %_systemcass.cpp : %.cpp
    34         ln -s $*.cpp $*_systemcass.cpp
    35 
    36 %_systemc.o : %_systemc.cpp
    37         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps
    38         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -c $*_systemc.cpp -o $*_systemc.o
    39 
    40 %_systemcass.o : %_systemcass.cpp
    41         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    42         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    43 
    44 clean :
    45         -rm -f Makefile.deps
    46         -rm -f *.o gmon.out *~
    47         -rm -f ${LOG}
    48         -rm -f signal_order.txt module_order.dot signal_graph.dot
    49         -rm -f module_order.gif signal_graph.gif
    50         -rm -f $(EXE) $(OBJECTS)
    51         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    52         -rm -f core*
    53         -rm -rf generated_by_systemcass
    54         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    55        
  • sources/test_regression/21062005/system.cpp

    r1 r55  
    1 #include "systemc.h"
     1
    22#include <iostream>
    33#include <string>
    44
    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
    138
    149using namespace std;
    1510
    16 static int errnum = 0;
    1711
    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
     13struct 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") {}
    2717};
    2818
    29 struct model : sc_module
    30 {
    31   sc_in<int>    i1, i2, i3;
    32   sc_out<int>    o1, o2, o3;
    33         sc_signal<int> r1, r2;
    34   internal_model internal1,internal2;
    35   sc_signal<int> internal_signal;
    36         model (sc_module_name n) : sc_module (n),
     19
     20struct 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),
    3727    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);
    4736#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>&)'
    4938#endif
    50     internal2.o (o3);
    51   }
     39        internal2.o(o3);
     40    }
     41
    5242};
    5343
    54 int
    55 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");
    6044
    61   m.i1 (s1);
    62   m.i2 (s1); //
    63   m.i3 (s1);
    64   m.o1 (s4); //
    65   m.o2 (s2);
    66   m.o3 (s3);
     45int 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");
    6749
    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);
    6956
    70         sc_start (1);
    71         sc_start (10);
     57    sc_start(sc_time(0, sc_core::SC_NS));
    7258
    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;
    7564}
    7665
     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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
     5test : 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 
    816
    9 RESULTS   = perf
    10 
    11 .SECONDARY:
    12 
    13 main : $(EXE)
    14 
    15 test : ${RESULTS}
    16         @echo OK
    17 
    18 perf : system_systemcass.x
    19         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.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 clean :
    44         rm -f Makefile.deps
    45         -rm -f *.o gmon.out
    46         -rm -f $(EXE) $(OBJECTS)
    47         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    48         -rm -f core*
    49         -rm -rf generated_by_systemcass
    50         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    51         -rm -rf ${RESULTS}
  • sources/test_regression/24082009/system.cpp

    r41 r55  
    1 #include <systemc.h>
     1
    22#include <signal.h>
    33
     4#include "systemc.h"
     5#include "test.h"
     6
    47using namespace std;
    5  
     8
    69struct A : sc_module {
    7   sc_in_clk                      clk;
    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;
    1114
    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    }
    2420
    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
    3137};
    3238
    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");
    3739
    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);
     40int 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");
    4643
    47   b.i1          (s3);
    48   b.o1          (s4);
     44    A a("a");
     45    A b("b");
    4946
    50   // Init & run
    51   sc_initialize ();
     47    a.clk(signal_clk);
     48    b.clk(signal_clk);
    5249
    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
    5666    return EXIT_SUCCESS;
    57   }
     67}
    5868
    59   s1.write (1);
    6069
    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*/
    6280
    63   cout << s1.read() << endl;
    64   cout << s2.read() << endl;
    65 
    66   return EXIT_SUCCESS;
    67 }
  • sources/test_regression/25032005/Makefile

    r18 r55  
     1
    12include ../env.mk
     3SIGNAL_GRAPH = signal_graph.dot
     4PROCESS_ORDER = process_order.dot
     5MODULE_GRAPH = module_graph.dot
     6SIGNAL_ORDER = signal_order.txt
     7ERASE = $(SIGNAL_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER) $(MODULE_GRAPH)
     8include ../Makefile.common
    29
    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)
     10SIGNAL_GRAPH_REF = signal_graph_ref.dot
     11PROCESS_ORDER_REF = process_order_ref.dot
     12SIGNAL_ORDER_REF = signal_order_ref.txt
    813
    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
     14test : 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 ;
    5622       
  • sources/test_regression/25032005/system.cpp

    r35 r55  
    1 #include <systemc.h>
    21#include <signal.h>
    3 #include "chrono.h"
     2
     3#include "systemc.h"
     4#include "test.h"
     5
    46
    57using namespace std;
    6  
     8
    79struct A : sc_module {
    8   sc_in_clk                      clk;
    9   sc_out<bool>                    o1;
     10    sc_in_clk clk;
     11    sc_out<bool> o1;
    1012
    11   void eval () {
    12     o1 = (rand()%2) == 0;
    13   }
     13    void eval() {
     14        o1 = (rand() % 2) == 0;
     15    }
    1416
    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    }
    2222};
    2323
     24
    2425struct B : sc_module {
    25   sc_in_clk                       clk;
    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;
    3031
    31   void eval1 () {
    32     o1 = ~i1;
    33   }
    34   void eval2 () {
    35     o2 = ~i2;
    36   }
     32    void eval1() {
     33        o1 = ~i1;
     34    }
    3735
    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();
    4245#ifdef SYSTEMCASS_SPECIFIC
    43     o1(i1);
     46        o1(i1);
    4447#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();
    4852#ifdef SYSTEMCASS_SPECIFIC
    49     o2(i2);
     53        o2(i2);
    5054#endif
    51   };
     55    }
     56
    5257};
    5358
     59
    5460struct C : sc_module {
    55   sc_in_clk                       clk;
    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;
    5965
    60   void eval1 () {
    61     o1 = i1 ^ i2;
    62   }
     66    void eval1() {
     67        o1 = i1 ^ i2;
     68    }
    6369
    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();
    6875#ifdef SYSTEMCASS_SPECIFIC
    69     o1(i1);
    70     o1(i2);
     76        o1(i1);
     77        o1(i2);
    7178#endif
    72   };
     79    }
     80
    7381};
    7482
     83
    7584struct D : sc_module {
    76   sc_in_clk                      clk;
    77   sc_out<bool>                    o1;
     85    sc_in_clk clk;
     86    sc_out<bool> o1;
    7887
    79   void eval () {
    80     o1 = (rand()%2) == 0;
    81   }
     88    void eval() {
     89        o1 = (rand() % 2) == 0;
     90    }
    8291
    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
    9098};
    9199
    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");
    96100
    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);
     101int 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");
    112104
    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");
    123109
    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
    127132    return EXIT_SUCCESS;
    128   }
     133}
    129134
    130   chrono_t chrono;
    131   chrono.start ();
    132135
    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*/
    134146
    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
    12include ../env.mk
     3include ../Makefile.common
    24
    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)
     5test : 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 ;
    1013
    11 .SECONDARY:
    1214
    13 main : $(EXE)
    14 
    15 test : main
    16         @./system_systemcass.x || eval ${failcom}
    17 
    18 %.gif : %.dot
    19         dot -Tgif -o $*.gif $*.dot
    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.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) -Wno-deprecated -MM $*_systemc.cpp >> Makefile.deps
    37         $(CXX) $(CFLAGS_SYSTEMC) -Wno-deprecated -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 clean :
    44         rm -f Makefile.deps
    45         -rm -f *.o gmon.out *~
    46         -rm -f ${LOG}
    47         -rm -f signal_order.txt module_order.dot signal_graph.dot
    48         -rm -f module_order.gif signal_graph.gif
    49         -rm -f $(EXE) $(OBJECTS)
    50         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    51         -rm -f core*
    52         -rm -rf generated_by_systemcass
    53         -rm -rf system_systemcass.x.vcd system_systemc.x.vcd
    54        
  • sources/test_regression/28102005/system.cpp

    r35 r55  
    1 #include <systemc.h>
     1
    22#include <iostream>
    33#include <cstring>
    44
    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"
    207
    218
    229using namespace std;
    2310
    24 static int errnum = 0;
    2511
    26 void
    27 check_time (int i)
    28 {
    29   const sc_time &t = sc_time_stamp ();
    30   CERR(i);
    31   CERR(t.to_double());
     12void check_time(int i) {
     13    const sc_time & t = sc_time_stamp();
     14    cout << i << endl;
     15
    3216#ifdef SYSTEMCASS_SPECIFIC
    33   ASSERT((int) (t.to_double ()) == i);
     17    ASSERT((int) (t.to_double()) == i);
    3418#else
    35   ASSERT((int) (t.to_double ()) == i * 1000);
     19    ASSERT((int) (t.to_double()) == i * 1000);
    3620#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
    4329#ifdef SYSTEMCASS_SPECIFIC
    44   unit = "NS";
     30    unit = "NS";
    4531#else
    46   if (i == 0)
    47     unit = "s";
    48   else if (i < 1000)
    49     unit = "ns";
    50   else
    51     unit = "ns";
     32    if (i == 0) {
     33        unit = "s";
     34    }
     35    else {
     36        unit = "ns";
     37    }
    5238#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);
    5743}
    5844
    59 int
    60 sc_main (int argc, char ** argv)
    61 {
    62   sc_clock clk ("clock");
    6345
    64   check_time (0);
    65   sc_start (0);
     46int sc_main (int argc, char ** argv) {
     47    sc_clock clk("clock");
    6648
    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));
    7051
    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);
    7355
    74   sc_start (7);
    75   check_time (23);
     56    sc_start(sc_time(15, sc_core::SC_NS));
     57    check_time(16);
    7658
    77   sc_start (100);
    78   check_time (123);
     59    sc_start(sc_time(7, sc_core::SC_NS));
     60    check_time(23);
    7961
    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;
    8469}
    8570
     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
    12include ../env.mk
     3SIGNAL_GRAPH = signal_graph.dot
     4PROCESS_ORDER = process_order.dot
     5MODULE_GRAPH = module_graph.dot
     6PORT_GRAPH = port_graph.dot
     7SIGNAL_ORDER = signal_order.txt
     8ERASE = $(SIGNAL_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER) $(MODULE_GRAPH) $(PORT_GRAPH)
     9include ../Makefile.common
    210
    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)
     11SIGNAL_GRAPH_REF = signal_graph_ref.dot
     12PROCESS_ORDER_REF = process_order_ref.dot
     13PORT_GRAPH_REF = port_graph_ref.dot
     14SIGNAL_ORDER_REF = signal_order_ref.txt
    815
    9 .SECONDARY:
     16test : $(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       
    1025
    11 main : $(EXE)
    1226
    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   done
    30         @echo Test OK.
    31 
    32 %.gif : %.dot
    33         dot -Tgif -o $*.gif $*.dot
    34 
    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.deps
    42 
    43 %_systemc.cpp : %.cpp
    44         ln -s $*.cpp $*_systemc.cpp
    45 
    46 %_systemcass.cpp : %.cpp
    47         ln -s $*.cpp $*_systemcass.cpp
    48 
    49 %_systemc.o : %_systemc.cpp
    50         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    51         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    52 
    53 %_systemcass.o : %_systemcass.cpp
    54         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    55         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    56 
    57 clean :
    58         rm -f Makefile.deps
    59         -rm -f *.o gmon.out
    60         -rm -f signal_order.txt module_order.dot signal_graph.dot
    61         -rm -f $(EXE) $(OBJECTS)
    62         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    63         -rm -f core*
    64         -rm -rf generated_by_systemcass
    65         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    66        
  • sources/test_regression/29032005/system.cpp

    r1 r55  
    1 #include <systemc.h>
     1
    22#include <signal.h>
    3 #include "chrono.h"
     3
     4#include "systemc.h"
     5#include "test.h"
     6
    47
    58using namespace std;
    6        
     9
    710struct 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
    2224};
    2325
    2426struct 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
    4247
    4348
    4449struct 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
    7382
    7483struct 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
    115127
    116128struct 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
    166183
    167184struct 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
     200int 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
    282293    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;
    299294}
     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
    12include ../env.mk
     3SIGNAL_GRAPH = signal_graph.dot
     4PROCESS_ORDER = process_order.dot
     5MODULE_GRAPH = module_graph.dot
     6PORT_GRAPH = port_graph.dot
     7SIGNAL_ORDER = signal_order.txt
     8ERASE = $(SIGNAL_GRAPH) $(PROCESS_ORDER) $(SIGNAL_ORDER) $(MODULE_GRAPH) $(PORT_GRAPH)
     9include ../Makefile.common
    210
    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)
     11SIGNAL_GRAPH_REF = signal_graph_ref.dot
     12PROCESS_ORDER_REF = process_order_ref.dot
     13SIGNAL_ORDER_REF = signal_order_ref.txt
     14MODULE_GRAPH_REF = module_graph_ref.dot
    1015
    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.
     16test : $(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       
    5626
    5727
    58 
    59 %.gif : %.dot
    60         dot -Tgif -o $*.gif $*.dot
    61 
    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.deps
    69 
    70 %_systemc.cpp : %.cpp
    71         ln -s $*.cpp $*_systemc.cpp
    72 
    73 %_systemcass.cpp : %.cpp
    74         ln -s $*.cpp $*_systemcass.cpp
    75 
    76 %_systemc.o : %_systemc.cpp
    77         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    78         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    79 
    80 %_systemcass.o : %_systemcass.cpp
    81         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    82         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    83 
    84 clean :
    85         rm -f Makefile.deps
    86         -rm -f *.o gmon.out
    87         -rm -f *~
    88         -rm -f ${LOG}
    89         -rm -f signal_order.txt module_order.dot signal_graph.dot
    90         -rm -f module_order.gif signal_graph.gif
    91         -rm -f $(EXE) $(OBJECTS)
    92         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    93         -rm -f core*
    94         -rm -rf generated_by_systemcass
    95         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    96        
  • sources/test_regression/30032005a/system.cpp

    r1 r55  
    1 #include <systemc.h>
    21#include <signal.h>
    3 #include "chrono.h"
     2
     3#include "systemc.h"
     4#include "test.h"
     5
    46
    57using namespace std;
    6        
     8
    79struct 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;
     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;
    1517
    16   sc_signal<bool>                reg;
     18    sc_signal<bool> reg;
    1719
    18         void eval_mealy1 () {
    19     o1 = ~i1;
    20         }
     20    void eval_mealy1() {
     21        o1 = ~i1;
     22    }
    2123
    22         void eval_mealy2 () {
    23     o2 = ~i2;
    24         }
     24    void eval_mealy2() {
     25        o2 = ~i2;
     26    }
    2527
    26         void tr_moore () {
    27     reg = i3;
    28         }
     28    void tr_moore() {
     29        reg = i3;
     30    }
    2931
    30         void gen_moore () {
    31     o3 = ~reg;
    32         }
     32    void gen_moore() {
     33        o3 = ~reg;
     34    }
    3335
    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();
    3942#ifdef SYSTEMCASS_SPECIFIC
    40                 o1(i1);
     43        o1(i1);
    4144#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
    4551#ifdef SYSTEMCASS_SPECIFIC
    46                 o2(i2);
     52        o2(i2);
    4753#endif
    48                 SC_METHOD(tr_moore);
    49                 sensitive << clk.pos();
    50 #ifdef SYSTEMCASS_SPECIFIC
    51 #endif
    52                 SC_METHOD(gen_moore);
    53                 sensitive << clk.neg();
    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
    5763};
    5864
    5965
    6066struct 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;
     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;
    7177
    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    }
    7581
    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    }
    8288
    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         };
     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
    94100};
    95101
    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                                
    115102
    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);
     103int 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");
    126120
    127         a.o1          (s2);
    128         b.i1          (s2);
    129                
    130         b.o1          (s3);
    131         Moore.i1      (s3);
    132121
    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");
    156125
    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
    160163    return EXIT_SUCCESS;
    161   }
     164}
    162165
    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*/
    165176
    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.mk
    21
    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)
     2include ../30032005a/Makefile
    103
    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.
    56 
    57 
    58 
    59 %.gif : %.dot
    60         dot -Tgif -o $*.gif $*.dot
    61 
    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.deps
    69 
    70 %_systemc.cpp : %.cpp
    71         ln -s $*.cpp $*_systemc.cpp
    72 
    73 %_systemcass.cpp : %.cpp
    74         ln -s $*.cpp $*_systemcass.cpp
    75 
    76 %_systemc.o : %_systemc.cpp
    77         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    78         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    79 
    80 %_systemcass.o : %_systemcass.cpp
    81         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    82         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    83 
    84 clean :
    85         rm -f Makefile.deps
    86         -rm -f *.o gmon.out
    87         -rm -f *~
    88         -rm -f ${LOG}
    89         -rm -f signal_order.txt module_order.dot signal_graph.dot
    90         -rm -f module_order.gif signal_graph.gif
    91         -rm -f $(EXE) $(OBJECTS)
    92         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    93         -rm -f core*
    94         -rm -rf generated_by_systemcass
    95         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    96        
  • sources/test_regression/30032005b/system.cpp

    r1 r55  
    1 #include <systemc.h>
     1
    22#include <signal.h>
    3 #include "chrono.h"
     3
     4#include "systemc.h"
     5#include "test.h"
    46
    57using 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;
    158
    16   sc_signal<bool>                 reg;
     9struct M1_1i1o : sc_module {
     10    sc_in_clk clk;
     11    sc_in<bool> i1;
     12    sc_out<bool> o1;
    1713
    18         void eval_mealy1 () {
    19     o1 = ~i1;
    20         }
     14    void eval_mealy1() {
     15        o1 = ~i1;
     16    };
    2117
    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    }
    2527
    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_SPECIFIC
    40                 o1(i1);
    41 #endif
    42                 SC_METHOD(eval_mealy2);
    43                 sensitive << clk.neg();
    44                 sensitive << i2;
    45 #ifdef SYSTEMCASS_SPECIFIC
    46                 o2(i2);
    47 #endif
    48                 SC_METHOD(tr_moore);
    49                 sensitive << clk.pos();
    50 #ifdef SYSTEMCASS_SPECIFIC
    51 #endif
    52                 SC_METHOD(gen_moore);
    53                 sensitive << clk.neg();
    54 #ifdef SYSTEMCASS_SPECIFIC
    55 #endif
    56         };
    5728};
    5829
    5930
    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;
     31struct M2_1i1o : sc_module {
     32    sc_in_clk clk;
     33    sc_in<bool> i1;
     34    sc_out<bool> o1;
    7135
    72         void tr_moore () {
    73     reg = ((i1.read() & i3.read())?2:0) + (i2.read() | i4.read());
    74         }
     36    sc_signal<bool> reg;
    7537
    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    }
    8241
    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    }
    9455};
    9556
    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                                
    11557
    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);
     58int 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");
    12675
    127         a.o1          (s2);
    128         b.i1          (s2);
    129                
    130         b.o1          (s3);
    131         Moore.i1      (s3);
    13276
    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");
    15684
    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
    160118    return EXIT_SUCCESS;
    161   }
     119}
    162120
    163         chrono_t chrono;
    164         chrono.start ();
    165121
    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*/
    167132
    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.mk
    21
    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)
     2include ../30032005a/Makefile
    103
    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.
    56 
    57 
    58 
    59 %.gif : %.dot
    60         dot -Tgif -o $*.gif $*.dot
    61 
    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.deps
    69 
    70 %_systemc.cpp : %.cpp
    71         ln -s $*.cpp $*_systemc.cpp
    72 
    73 %_systemcass.cpp : %.cpp
    74         ln -s $*.cpp $*_systemcass.cpp
    75 
    76 %_systemc.o : %_systemc.cpp
    77         $(CXX) $(CFLAGS_SYSTEMC) -MM $*_systemc.cpp >> Makefile.deps
    78         $(CXX) $(CFLAGS_SYSTEMC) -c $*_systemc.cpp -o $*_systemc.o
    79 
    80 %_systemcass.o : %_systemcass.cpp
    81         $(CXX) $(CFLAGS_SYSTEMCASS) -MM $*_systemcass.cpp >> Makefile.deps
    82         $(CXX) $(CFLAGS_SYSTEMCASS) -c $*_systemcass.cpp -o $*_systemcass.o
    83 
    84 clean :
    85         rm -f Makefile.deps
    86         -rm -f *.o gmon.out
    87         -rm -f *~
    88         -rm -f ${LOG}
    89         -rm -f signal_order.txt module_order.dot signal_graph.dot
    90         -rm -f module_order.gif signal_graph.gif
    91         -rm -f $(EXE) $(OBJECTS)
    92         -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
    93         -rm -f core*
    94         -rm -rf generated_by_systemcass
    95         -rm -rf tracesystem_systemcass.x.vcd tracesystem_systemc.x.vcd
    96        
  • sources/test_regression/30032005c/system.cpp

    r1 r55  
    1 #include <systemc.h>
     1
    22#include <signal.h>
    3 #include "chrono.h"
     3
     4#include "systemc.h"
     5#include "test.h"
     6
    47
    58using 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;
    159
    16   sc_signal<bool>                 reg;
    1710
    18         void eval_mealy1 () {
    19     o1 = ~i1;
    20         }
     11struct M1_1i1o : sc_module {
     12    sc_in_clk    clk;
     13    sc_in<bool>  i1;
     14    sc_out<bool> o1;
    2115
    22         void eval_mealy2 () {
    23     o2 = ~i2;
    24         }
     16    void eval_mealy1() {
     17        o1 = ~i1;
     18    }
    2519
    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    }
    2929
    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_SPECIFIC
    40                 o1(i1);
    41 #endif
    42                 SC_METHOD(eval_mealy2);
    43                 sensitive << clk.neg();
    44                 sensitive << i2;
    45 #ifdef SYSTEMCASS_SPECIFIC
    46                 o2(i2);
    47 #endif
    48                 SC_METHOD(tr_moore);
    49                 sensitive << clk.pos();
    50 #ifdef SYSTEMCASS_SPECIFIC
    51 #endif
    52                 SC_METHOD(gen_moore);
    53                 sensitive << clk.neg();
    54 #ifdef SYSTEMCASS_SPECIFIC
    55 #endif
    56         };
    5730};
    5831
    5932
    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;
     33struct 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;
    7140
    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    }
    7545
    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         }
    8246
    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();
    8653#ifdef SYSTEMCASS_SPECIFIC
    87     // no needs
     54        o1(i1);
     55        o1(i2);
     56        o2(i2);
     57        o2(i3);
    8858#endif
    89                 SC_METHOD(gen_moore);
    90                 sensitive << clk.neg();
    91 #ifdef SYSTEMCASS_SPECIFIC
    92 #endif
    93         };
     59    }
     60
    9461};
    9562
    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                                
    11563
    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);
     64struct M2_1i1o : sc_module {
     65    sc_in_clk    clk;
     66    sc_in<bool>  i1;
     67    sc_out<bool> o1;
    12668
    127         a.o1          (s2);
    128         b.i1          (s2);
    129                
    130         b.o1          (s3);
    131         Moore.i1      (s3);
     69    sc_signal<bool> reg;
    13270
    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    }
    15674
    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
     92int 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
    160152    return EXIT_SUCCESS;
    161   }
     153}
    162154
    163         chrono_t chrono;
    164         chrono.start ();
    165155
    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*/
    167166
    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  
    5252
    5353DIR = \
    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) \
    8094
    81 failcom   = 'exit 1'
    8295
    83 compile : ${DIR}
    84         @for i in ${DIR} ; do \
    85     echo Testing $$i... ; \
    86     ($(MAKE) -C $$i) || eval ${failcom} ; \
    87   done;
     96all: compile
    8897
    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;
     98compile :
     99        @for i in $(DIR) ; do \
     100   ($(MAKE) --no-print-directory -C $$i) ; \
     101   done;
     102
     103test : $(DIR)
     104        @for i in $(DIR) ; do \
     105   ($(MAKE) --no-print-directory -C $$i test | grep "Testing") ; \
     106   done;
    94107       
    95108clean :
    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
     2SYSTEMCASS = $(HOME)/src/systemcass/sandbox_test/objdir/
     3SYSTEMC = /users/outil/soc/systemc/sc22-64
     4
     5TARGET_ARCH             = linux64
    46
    57ifeq (${TARGET_ARCH},Darwin)
     
    1517endif
    1618
    17 #BFD_LIBERTY     = -lbfd -liberty
    18 #SYSTEMC         = /users/outil/systemc/systemc-2.0.1
    1919SYSTEMC_INC     = $(SYSTEMC)/include
    2020SYSTEMCASS_INC  = $(SYSTEMCASS)/include
    2121SYSTEMC_LIB     = $(SYSTEMC)/lib-${TARGET_ARCH}/libsystemc.a
    2222SYSTEMCASS_LIB  = $(SYSTEMCASS)/lib-linux/libsystemc.a
    23 #CXX                    = g++
    24 #CXX                    = icc -w1
    25 CPPFILT                 = c++filt
     23CXX             = g++
     24CPPFILT         = c++filt
    2625DEBUG           = -g -DDEBUG
    2726#OPT             = -O2
    28 #PROF        = -pg # gcc
    29 #PROF        = -qp # icc
    30 #EFENCE      = /users/cao/viaud/bin/lib/libefence.a -lpthread
    31 CFLAGS      = $(PROF) $(DEBUG) $(OPT) \
     27#PROF            = -pg # gcc
     28#PROF            = -qp # icc
     29#EFENCE          = /users/cao/viaud/bin/lib/libefence.a -lpthread
     30CFLAGS = $(PROF) $(DEBUG) $(OPT) \
    3231              -Wall \
    3332              -fopenmp \
    34               -UENABLE_TRACE -UENABLE_PAT -I. \
     33              -UENABLE_TRACE -UENABLE_PAT -I. -I.. \
    3534              ${ENDIANESS_FLAG}
    3635
    37 LFLAGS      = $(PROF) $(BFD_LIBERTY) -ldl -fopenmp
     36LFLAGS = $(PROF) $(BFD_LIBERTY) -ldl -fopenmp
    3837
    3938CFLAGS_SYSTEMC    = $(CFLAGS) \
     
    5049                    ${DYNAMICLIB_FLAG} $(SYSTEMCASS_LIB) ${EFENCE}
    5150
    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
    5852ifndef SYSTEMC
    5953$(error SYSTEMC is not defined.)
     
    6256$(error SYSTEMCASS is not defined.)
    6357endif
    64 #ifndef SOCVIEW
    65 #$(error SOCVIEW is not defined. This environment variable is optional.)
    66 #endif
    6758
    68 failcom   = 'exit 1'
    6959
     60
Note: See TracChangeset for help on using the changeset viewer.