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)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.