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