test.cpp revision 12855:588919e0e4aa
12292SN/A/*****************************************************************************
22292SN/A
32292SN/A  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
42292SN/A  more contributor license agreements.  See the NOTICE file distributed
52292SN/A  with this work for additional information regarding copyright ownership.
62292SN/A  Accellera licenses this file to you under the Apache License, Version 2.0
72292SN/A  (the "License"); you may not use this file except in compliance with the
82292SN/A  License.  You may obtain a copy of the License at
92292SN/A
102292SN/A    http://www.apache.org/licenses/LICENSE-2.0
112292SN/A
122292SN/A  Unless required by applicable law or agreed to in writing, software
132292SN/A  distributed under the License is distributed on an "AS IS" BASIS,
142292SN/A  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
152292SN/A  implied.  See the License for the specific language governing
162292SN/A  permissions and limitations under the License.
172292SN/A
182292SN/A *****************************************************************************/
192292SN/A
202292SN/A/*****************************************************************************
212292SN/A
222292SN/A  test.cpp --
232292SN/A
242292SN/A  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
252292SN/A
262292SN/A *****************************************************************************/
272292SN/A
282292SN/A/*****************************************************************************
292316SN/A
302292SN/A  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
312292SN/A  changes you are making here.
322669Sktlim@umich.edu
332292SN/A      Name, Affiliation, Date:
342669Sktlim@umich.edu  Description of Modification:
352669Sktlim@umich.edu
362669Sktlim@umich.edu *****************************************************************************/
372292SN/A
382669Sktlim@umich.edu// test of signal port tracing.
392669Sktlim@umich.edu
402669Sktlim@umich.edu#include "systemc.h"
412669Sktlim@umich.edu
422669Sktlim@umich.eduSC_MODULE( mod_a )
432669Sktlim@umich.edu{
442669Sktlim@umich.edu    sc_in_clk clk;
452669Sktlim@umich.edu
462669Sktlim@umich.edu    sc_in<int>       in_int;
472669Sktlim@umich.edu    sc_in<bool>      in_bool;
482669Sktlim@umich.edu    sc_in<sc_logic>  in_logic;
492669Sktlim@umich.edu    sc_in_resolved   in_resolved;
502669Sktlim@umich.edu    sc_in_rv<1>      in_rv1;
512669Sktlim@umich.edu
522669Sktlim@umich.edu    sc_out<int>      out_int;
532669Sktlim@umich.edu    sc_out<bool>     out_bool;
542669Sktlim@umich.edu    sc_out<sc_logic> out_logic;
552669Sktlim@umich.edu    sc_out_resolved  out_resolved;
562669Sktlim@umich.edu    sc_out_rv<1>     out_rv1;
572669Sktlim@umich.edu
582669Sktlim@umich.edu    void main_action()
592669Sktlim@umich.edu    {
602669Sktlim@umich.edu        int      a_int      = 0;
612669Sktlim@umich.edu        bool     a_bool     = false;
622669Sktlim@umich.edu        sc_logic a_logic    = SC_LOGIC_X;
632669Sktlim@umich.edu        sc_logic a_resolved = SC_LOGIC_X;
642669Sktlim@umich.edu        sc_lv<1> a_rv1      = sc_lv<1>( SC_LOGIC_X );
652669Sktlim@umich.edu
662669Sktlim@umich.edu        wait();
672669Sktlim@umich.edu
682669Sktlim@umich.edu        while( true ) {
692292SN/A            out_int      = a_int;
702292SN/A            out_bool     = a_bool;
712669Sktlim@umich.edu            out_logic    = a_logic;
722292SN/A            out_resolved = a_resolved;
732669Sktlim@umich.edu            out_rv1      = a_rv1;
742292SN/A
752669Sktlim@umich.edu            a_int ++;
762292SN/A            a_bool     = ! a_bool;
772292SN/A            a_logic    = sc_dt::sc_logic_value_t( a_int % 4 );
782292SN/A            a_resolved = a_logic;
792292SN/A            a_rv1      = sc_lv<1>( a_logic );
802292SN/A
812307SN/A            wait();
822307SN/A        }
832307SN/A    }
842292SN/A
852669Sktlim@umich.edu    SC_CTOR( mod_a )
862669Sktlim@umich.edu    {
872669Sktlim@umich.edu        SC_THREAD( main_action );
882292SN/A        sensitive << clk.pos();
892669Sktlim@umich.edu    }
902292SN/A};
912292SN/A
922292SN/Aint
932669Sktlim@umich.edusc_main( int, char*[] )
942669Sktlim@umich.edu{
952292SN/A    sc_clock clk;
962669Sktlim@umich.edu
972669Sktlim@umich.edu    sc_signal<int>      sig_int;
982669Sktlim@umich.edu    sc_signal<bool>     sig_bool;
992669Sktlim@umich.edu    sc_signal<sc_logic> sig_logic;
1002669Sktlim@umich.edu    sc_signal_resolved  sig_resolved;
1012669Sktlim@umich.edu    sc_signal_rv<1>     sig_rv1;
1022669Sktlim@umich.edu
1032669Sktlim@umich.edu    mod_a a( "a" );
1042669Sktlim@umich.edu
1052669Sktlim@umich.edu    a.clk( clk );
1062669Sktlim@umich.edu
1072669Sktlim@umich.edu    a.in_int( sig_int );
1082669Sktlim@umich.edu    a.in_bool( sig_bool );
1092669Sktlim@umich.edu    a.in_logic( sig_logic );
1102669Sktlim@umich.edu    a.in_resolved( sig_resolved );
1112669Sktlim@umich.edu    a.in_rv1( sig_rv1 );
1122669Sktlim@umich.edu
1132669Sktlim@umich.edu    a.out_int( sig_int );
1142669Sktlim@umich.edu    a.out_bool( sig_bool );
1152669Sktlim@umich.edu    a.out_logic( sig_logic );
1162669Sktlim@umich.edu    a.out_resolved( sig_resolved );
1172669Sktlim@umich.edu    a.out_rv1( sig_rv1 );
1182669Sktlim@umich.edu
1192669Sktlim@umich.edu    sc_trace_file* tf = sc_create_vcd_trace_file( "test" );
1202669Sktlim@umich.edu
1212669Sktlim@umich.edu    sc_trace( tf, sig_int,      "sig_int" );
1222669Sktlim@umich.edu    sc_trace( tf, sig_bool,     "sig_bool" );
1232669Sktlim@umich.edu    sc_trace( tf, sig_logic,    "sig_logic" );
1242669Sktlim@umich.edu    sc_trace( tf, sig_resolved, "sig_resolved" );
1252669Sktlim@umich.edu    sc_trace( tf, sig_rv1,      "sig_rv1" );
1262669Sktlim@umich.edu
1272669Sktlim@umich.edu    sc_trace( tf, a.in_int,      "a.in_int" );
1282669Sktlim@umich.edu    sc_trace( tf, a.in_bool,     "a.in_bool" );
1292669Sktlim@umich.edu    sc_trace( tf, a.in_logic,    "a.in_logic" );
1302669Sktlim@umich.edu    sc_trace( tf, a.in_resolved, "a.in_resolved" );
1312669Sktlim@umich.edu    sc_trace( tf, a.in_rv1,      "a.in_rv1" );
1322669Sktlim@umich.edu
1332669Sktlim@umich.edu    sc_trace( tf, a.out_int,      "a.out_int" );
1342669Sktlim@umich.edu    sc_trace( tf, a.out_bool,     "a.out_bool" );
1352669Sktlim@umich.edu    sc_trace( tf, a.out_logic,    "a.out_logic" );
1362669Sktlim@umich.edu    sc_trace( tf, a.out_resolved, "a.out_resolved" );
1372669Sktlim@umich.edu    sc_trace( tf, a.out_rv1,      "a.out_rv1" );
1382669Sktlim@umich.edu
1392669Sktlim@umich.edu    sc_start( 10, SC_NS );
1402669Sktlim@umich.edu
1412292SN/A    sc_close_vcd_trace_file( tf );
1422292SN/A
1432292SN/A    return 0;
1442292SN/A}
1452292SN/A