112852Sgabeblack@google.com/*
212852Sgabeblack@google.com * Copyright 2018 Google, Inc.
312852Sgabeblack@google.com *
412852Sgabeblack@google.com * Redistribution and use in source and binary forms, with or without
512852Sgabeblack@google.com * modification, are permitted provided that the following conditions are
612852Sgabeblack@google.com * met: redistributions of source code must retain the above copyright
712852Sgabeblack@google.com * notice, this list of conditions and the following disclaimer;
812852Sgabeblack@google.com * redistributions in binary form must reproduce the above copyright
912852Sgabeblack@google.com * notice, this list of conditions and the following disclaimer in the
1012852Sgabeblack@google.com * documentation and/or other materials provided with the distribution;
1112852Sgabeblack@google.com * neither the name of the copyright holders nor the names of its
1212852Sgabeblack@google.com * contributors may be used to endorse or promote products derived from
1312852Sgabeblack@google.com * this software without specific prior written permission.
1412852Sgabeblack@google.com *
1512852Sgabeblack@google.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1612852Sgabeblack@google.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1712852Sgabeblack@google.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1812852Sgabeblack@google.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1912852Sgabeblack@google.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2012852Sgabeblack@google.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2112852Sgabeblack@google.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2212852Sgabeblack@google.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2312852Sgabeblack@google.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2412852Sgabeblack@google.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2512852Sgabeblack@google.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2612852Sgabeblack@google.com *
2712852Sgabeblack@google.com * Authors: Gabe Black
2812852Sgabeblack@google.com */
2912852Sgabeblack@google.com
3013245Sgabeblack@google.com#include <vector>
3113245Sgabeblack@google.com
3213245Sgabeblack@google.com#include "systemc/core/scheduler.hh"
3313245Sgabeblack@google.com#include "systemc/ext/channel/sc_signal_in_if.hh"
3413245Sgabeblack@google.com#include "systemc/ext/core/sc_event.hh"
3513245Sgabeblack@google.com#include "systemc/ext/core/sc_time.hh"
3613245Sgabeblack@google.com#include "systemc/ext/dt/bit/sc_bv_base.hh"
3713245Sgabeblack@google.com#include "systemc/ext/dt/bit/sc_logic.hh"
3813245Sgabeblack@google.com#include "systemc/ext/dt/bit/sc_lv_base.hh"
3913245Sgabeblack@google.com#include "systemc/ext/dt/fx/sc_fxnum.hh"
4013245Sgabeblack@google.com#include "systemc/ext/dt/fx/sc_fxval.hh"
4113245Sgabeblack@google.com#include "systemc/ext/dt/int/sc_int_base.hh"
4213245Sgabeblack@google.com#include "systemc/ext/dt/int/sc_signed.hh"
4313245Sgabeblack@google.com#include "systemc/ext/dt/int/sc_uint_base.hh"
4413245Sgabeblack@google.com#include "systemc/ext/dt/int/sc_unsigned.hh"
4512852Sgabeblack@google.com#include "systemc/ext/utils/sc_trace_file.hh"
4613245Sgabeblack@google.com#include "systemc/utils/vcd.hh"
4712852Sgabeblack@google.com
4812852Sgabeblack@google.comnamespace sc_core
4912852Sgabeblack@google.com{
5012852Sgabeblack@google.com
5113245Sgabeblack@google.comsc_trace_file::sc_trace_file() {}
5213245Sgabeblack@google.comsc_trace_file::~sc_trace_file() {}
5313245Sgabeblack@google.com
5412852Sgabeblack@google.comsc_trace_file *
5512852Sgabeblack@google.comsc_create_vcd_trace_file(const char *name)
5612852Sgabeblack@google.com{
5713245Sgabeblack@google.com    auto tf = new ::sc_gem5::VcdTraceFile(name);
5813245Sgabeblack@google.com    ::sc_gem5::scheduler.registerTraceFile(tf);
5913245Sgabeblack@google.com    return tf;
6012852Sgabeblack@google.com}
6112852Sgabeblack@google.com
6212852Sgabeblack@google.comvoid
6312852Sgabeblack@google.comsc_close_vcd_trace_file(sc_trace_file *tf)
6412852Sgabeblack@google.com{
6513245Sgabeblack@google.com    ::sc_gem5::scheduler.unregisterTraceFile(
6613245Sgabeblack@google.com            static_cast<::sc_gem5::TraceFile *>(tf));
6713245Sgabeblack@google.com    delete tf;
6812852Sgabeblack@google.com}
6912852Sgabeblack@google.com
7012852Sgabeblack@google.comvoid
7112852Sgabeblack@google.comsc_write_comment(sc_trace_file *tf, const std::string &comment)
7212852Sgabeblack@google.com{
7313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->writeComment(comment);
7412852Sgabeblack@google.com}
7512852Sgabeblack@google.com
7612852Sgabeblack@google.comvoid
7713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const bool &v, const std::string &name)
7812852Sgabeblack@google.com{
7913245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
8012852Sgabeblack@google.com}
8112852Sgabeblack@google.com
8212852Sgabeblack@google.comvoid
8313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const bool *v, const std::string &name)
8412852Sgabeblack@google.com{
8513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
8612852Sgabeblack@google.com}
8712852Sgabeblack@google.com
8812852Sgabeblack@google.comvoid
8913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const float &v, const std::string &name)
9012852Sgabeblack@google.com{
9113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
9212852Sgabeblack@google.com}
9312852Sgabeblack@google.com
9412852Sgabeblack@google.comvoid
9513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const float *v, const std::string &name)
9612852Sgabeblack@google.com{
9713245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
9812852Sgabeblack@google.com}
9912852Sgabeblack@google.com
10012852Sgabeblack@google.comvoid
10113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const double &v, const std::string &name)
10212852Sgabeblack@google.com{
10313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
10412852Sgabeblack@google.com}
10512852Sgabeblack@google.com
10612852Sgabeblack@google.comvoid
10713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const double *v, const std::string &name)
10812852Sgabeblack@google.com{
10913245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
11012852Sgabeblack@google.com}
11112852Sgabeblack@google.com
11212852Sgabeblack@google.comvoid
11313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_logic &v, const std::string &name)
11412852Sgabeblack@google.com{
11513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
11612852Sgabeblack@google.com}
11712852Sgabeblack@google.com
11812852Sgabeblack@google.comvoid
11913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_logic *v, const std::string &name)
12012852Sgabeblack@google.com{
12113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
12212852Sgabeblack@google.com}
12312852Sgabeblack@google.com
12412852Sgabeblack@google.comvoid
12513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_int_base &v,
12613245Sgabeblack@google.com        const std::string &name)
12712852Sgabeblack@google.com{
12813245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
12912852Sgabeblack@google.com}
13012852Sgabeblack@google.com
13112852Sgabeblack@google.comvoid
13213245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_int_base *v,
13313245Sgabeblack@google.com        const std::string &name)
13412852Sgabeblack@google.com{
13513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
13612852Sgabeblack@google.com}
13712852Sgabeblack@google.com
13812852Sgabeblack@google.comvoid
13913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_uint_base &v,
14013245Sgabeblack@google.com        const std::string &name)
14112852Sgabeblack@google.com{
14213245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
14312852Sgabeblack@google.com}
14412852Sgabeblack@google.com
14512852Sgabeblack@google.comvoid
14613245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_uint_base *v,
14713245Sgabeblack@google.com        const std::string &name)
14812852Sgabeblack@google.com{
14913245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
15012852Sgabeblack@google.com}
15112852Sgabeblack@google.com
15212852Sgabeblack@google.comvoid
15313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_signed &v,
15413245Sgabeblack@google.com        const std::string &name)
15512852Sgabeblack@google.com{
15613245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
15712852Sgabeblack@google.com}
15812852Sgabeblack@google.com
15912852Sgabeblack@google.comvoid
16013245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_signed *v,
16113245Sgabeblack@google.com        const std::string &name)
16212852Sgabeblack@google.com{
16313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
16412852Sgabeblack@google.com}
16512852Sgabeblack@google.com
16612852Sgabeblack@google.comvoid
16713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_unsigned &v,
16813245Sgabeblack@google.com        const std::string &name)
16912852Sgabeblack@google.com{
17013245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
17112852Sgabeblack@google.com}
17212852Sgabeblack@google.com
17312852Sgabeblack@google.comvoid
17413245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_unsigned *v,
17513245Sgabeblack@google.com        const std::string &name)
17612852Sgabeblack@google.com{
17713245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
17812852Sgabeblack@google.com}
17912852Sgabeblack@google.com
18012852Sgabeblack@google.comvoid
18113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_bv_base &v,
18213245Sgabeblack@google.com        const std::string &name)
18312852Sgabeblack@google.com{
18413245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
18512852Sgabeblack@google.com}
18612852Sgabeblack@google.com
18712852Sgabeblack@google.comvoid
18813245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_bv_base *v,
18913245Sgabeblack@google.com        const std::string &name)
19012852Sgabeblack@google.com{
19113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
19212852Sgabeblack@google.com}
19312852Sgabeblack@google.com
19412852Sgabeblack@google.comvoid
19513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_lv_base &v,
19613245Sgabeblack@google.com        const std::string &name)
19712852Sgabeblack@google.com{
19813245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
19912852Sgabeblack@google.com}
20012852Sgabeblack@google.com
20112852Sgabeblack@google.comvoid
20213245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_lv_base *v,
20313245Sgabeblack@google.com        const std::string &name)
20412852Sgabeblack@google.com{
20513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
20612852Sgabeblack@google.com}
20712852Sgabeblack@google.com
20812852Sgabeblack@google.comvoid
20913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxval &v, const std::string &name)
21012852Sgabeblack@google.com{
21113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
21212852Sgabeblack@google.com}
21312852Sgabeblack@google.com
21412852Sgabeblack@google.comvoid
21513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxval *v, const std::string &name)
21612852Sgabeblack@google.com{
21713245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
21812852Sgabeblack@google.com}
21912852Sgabeblack@google.com
22012852Sgabeblack@google.comvoid
22113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxval_fast &v,
22213245Sgabeblack@google.com        const std::string &name)
22312852Sgabeblack@google.com{
22413245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
22512852Sgabeblack@google.com}
22612852Sgabeblack@google.com
22712852Sgabeblack@google.comvoid
22813245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxval_fast *v,
22913245Sgabeblack@google.com        const std::string &name)
23012852Sgabeblack@google.com{
23113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
23212852Sgabeblack@google.com}
23312852Sgabeblack@google.com
23412852Sgabeblack@google.comvoid
23513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxnum &v, const std::string &name)
23612852Sgabeblack@google.com{
23713245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
23812852Sgabeblack@google.com}
23912852Sgabeblack@google.com
24012852Sgabeblack@google.comvoid
24113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxnum *v, const std::string &name)
24212852Sgabeblack@google.com{
24313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
24412852Sgabeblack@google.com}
24512852Sgabeblack@google.com
24612852Sgabeblack@google.comvoid
24713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxnum_fast &v,
24813245Sgabeblack@google.com        const std::string &name)
24912852Sgabeblack@google.com{
25013245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
25112852Sgabeblack@google.com}
25212852Sgabeblack@google.com
25312852Sgabeblack@google.comvoid
25413245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::sc_fxnum_fast *v,
25513245Sgabeblack@google.com        const std::string &name)
25612852Sgabeblack@google.com{
25713245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
25812852Sgabeblack@google.com}
25912852Sgabeblack@google.com
26012852Sgabeblack@google.comvoid
26113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_event &v, const std::string &name)
26212905Sgabeblack@google.com{
26313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
26412905Sgabeblack@google.com}
26512905Sgabeblack@google.com
26612905Sgabeblack@google.comvoid
26713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_event *v, const std::string &name)
26812905Sgabeblack@google.com{
26913245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
27012905Sgabeblack@google.com}
27112905Sgabeblack@google.com
27212905Sgabeblack@google.comvoid
27313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_time &v, const std::string &name)
27412905Sgabeblack@google.com{
27513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name);
27612905Sgabeblack@google.com}
27712905Sgabeblack@google.com
27812905Sgabeblack@google.comvoid
27913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_time *v, const std::string &name)
28012905Sgabeblack@google.com{
28113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name);
28212905Sgabeblack@google.com}
28312905Sgabeblack@google.com
28412905Sgabeblack@google.comvoid
28513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned char &v,
28613245Sgabeblack@google.com         const std::string &name, int width)
28712877Sgabeblack@google.com{
28813245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
28912877Sgabeblack@google.com}
29012877Sgabeblack@google.com
29112877Sgabeblack@google.comvoid
29213245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned char *v,
29313245Sgabeblack@google.com         const std::string &name, int width)
29412877Sgabeblack@google.com{
29513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
29612877Sgabeblack@google.com}
29712877Sgabeblack@google.com
29812877Sgabeblack@google.comvoid
29913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned short &v,
30013245Sgabeblack@google.com         const std::string &name, int width)
30112877Sgabeblack@google.com{
30213245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
30312877Sgabeblack@google.com}
30412877Sgabeblack@google.com
30512877Sgabeblack@google.comvoid
30613245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned short *v,
30713245Sgabeblack@google.com         const std::string &name, int width)
30812877Sgabeblack@google.com{
30913245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
31012877Sgabeblack@google.com}
31112877Sgabeblack@google.com
31212877Sgabeblack@google.comvoid
31313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned int &v,
31413245Sgabeblack@google.com        const std::string &name, int width)
31512877Sgabeblack@google.com{
31613245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
31712877Sgabeblack@google.com}
31812877Sgabeblack@google.com
31912877Sgabeblack@google.comvoid
32013245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned int *v,
32113245Sgabeblack@google.com        const std::string &name, int width)
32212877Sgabeblack@google.com{
32313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
32412877Sgabeblack@google.com}
32512877Sgabeblack@google.com
32612877Sgabeblack@google.comvoid
32713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned long &v,
32813245Sgabeblack@google.com         const std::string &name, int width)
32912877Sgabeblack@google.com{
33013245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
33112877Sgabeblack@google.com}
33212877Sgabeblack@google.com
33312877Sgabeblack@google.comvoid
33413245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned long *v,
33513245Sgabeblack@google.com         const std::string &name, int width)
33612877Sgabeblack@google.com{
33713245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
33812877Sgabeblack@google.com}
33912877Sgabeblack@google.com
34012877Sgabeblack@google.comvoid
34113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const char &v, const std::string &name, int width)
34212852Sgabeblack@google.com{
34313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
34412852Sgabeblack@google.com}
34512852Sgabeblack@google.com
34612852Sgabeblack@google.comvoid
34713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const char *v, const std::string &name, int width)
34812852Sgabeblack@google.com{
34913245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
35012852Sgabeblack@google.com}
35112852Sgabeblack@google.com
35212852Sgabeblack@google.comvoid
35313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const short &v,
35413245Sgabeblack@google.com        const std::string &name, int width)
35512852Sgabeblack@google.com{
35613245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
35712852Sgabeblack@google.com}
35812852Sgabeblack@google.com
35912852Sgabeblack@google.comvoid
36013245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const short *v,
36113245Sgabeblack@google.com        const std::string &name, int width)
36212852Sgabeblack@google.com{
36313245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
36412852Sgabeblack@google.com}
36512852Sgabeblack@google.com
36612852Sgabeblack@google.comvoid
36713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const int &v, const std::string &name, int width)
36812852Sgabeblack@google.com{
36913245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
37012852Sgabeblack@google.com}
37112852Sgabeblack@google.com
37212852Sgabeblack@google.comvoid
37313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const int *v, const std::string &name, int width)
37412852Sgabeblack@google.com{
37513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
37612852Sgabeblack@google.com}
37712852Sgabeblack@google.com
37812852Sgabeblack@google.comvoid
37913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const long &v, const std::string &name, int width)
38012852Sgabeblack@google.com{
38113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
38212852Sgabeblack@google.com}
38312852Sgabeblack@google.com
38412852Sgabeblack@google.comvoid
38513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const long *v, const std::string &name, int width)
38612852Sgabeblack@google.com{
38713245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
38812852Sgabeblack@google.com}
38912852Sgabeblack@google.com
39012852Sgabeblack@google.comvoid
39113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::int64 &v,
39213245Sgabeblack@google.com        const std::string &name, int width)
39312852Sgabeblack@google.com{
39413245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
39512852Sgabeblack@google.com}
39612852Sgabeblack@google.com
39712852Sgabeblack@google.comvoid
39813245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::int64 *v,
39913245Sgabeblack@google.com        const std::string &name, int width)
40012852Sgabeblack@google.com{
40113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
40212852Sgabeblack@google.com}
40312852Sgabeblack@google.com
40412852Sgabeblack@google.comvoid
40513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::uint64 &v,
40613245Sgabeblack@google.com         const std::string &name, int width)
40712852Sgabeblack@google.com{
40813245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(&v, name, width);
40912852Sgabeblack@google.com}
41012852Sgabeblack@google.com
41112852Sgabeblack@google.comvoid
41213245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_dt::uint64 *v,
41313245Sgabeblack@google.com         const std::string &name, int width)
41412852Sgabeblack@google.com{
41513245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->addTraceVal(v, name, width);
41612852Sgabeblack@google.com}
41712852Sgabeblack@google.com
41812852Sgabeblack@google.comvoid
41913245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_signal_in_if<char> &v,
42013245Sgabeblack@google.com         const std::string &name, int width)
42112852Sgabeblack@google.com{
42213245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->
42313245Sgabeblack@google.com        addTraceVal(&v.read(), name, width);
42412852Sgabeblack@google.com}
42512852Sgabeblack@google.com
42612852Sgabeblack@google.comvoid
42713245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_signal_in_if<short> &v,
42813245Sgabeblack@google.com         const std::string &name, int width)
42912852Sgabeblack@google.com{
43013245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->
43113245Sgabeblack@google.com        addTraceVal(&v.read(), name, width);
43212852Sgabeblack@google.com}
43312852Sgabeblack@google.com
43412852Sgabeblack@google.comvoid
43513245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_signal_in_if<int> &v,
43613245Sgabeblack@google.com         const std::string &name, int width)
43712852Sgabeblack@google.com{
43813245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->
43913245Sgabeblack@google.com        addTraceVal(&v.read(), name, width);
44012852Sgabeblack@google.com}
44112852Sgabeblack@google.com
44212852Sgabeblack@google.comvoid
44313245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const sc_signal_in_if<long> &v,
44413245Sgabeblack@google.com         const std::string &name, int width)
44512852Sgabeblack@google.com{
44613245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->
44713245Sgabeblack@google.com        addTraceVal(&v.read(), name, width);
44812852Sgabeblack@google.com}
44912852Sgabeblack@google.com
45012877Sgabeblack@google.comvoid
45113245Sgabeblack@google.comsc_trace(sc_trace_file *tf, const unsigned int &v,
45213245Sgabeblack@google.com         const std::string &name, const char **enum_literals)
45312877Sgabeblack@google.com{
45413245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->
45513245Sgabeblack@google.com        addTraceVal(&v, name, enum_literals);
45612877Sgabeblack@google.com}
45712877Sgabeblack@google.com
45812913Sgabeblack@google.comvoid
45913245Sgabeblack@google.comsc_trace_delta_cycles(sc_trace_file *tf, bool on)
46012913Sgabeblack@google.com{
46113245Sgabeblack@google.com    static_cast<::sc_gem5::TraceFile *>(tf)->traceDeltas(on);
46212913Sgabeblack@google.com}
46312913Sgabeblack@google.com
46412852Sgabeblack@google.com} // namespace sc_core
465