sc_in.hh revision 12841:22aa7ba47bf9
15086Sgblack@eecs.umich.edu/*
25086Sgblack@eecs.umich.edu * Copyright 2018 Google, Inc.
38466Snilay@cs.wisc.edu *
45086Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
55086Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
67087Snate@binkert.org * met: redistributions of source code must retain the above copyright
77087Snate@binkert.org * notice, this list of conditions and the following disclaimer;
87087Snate@binkert.org * redistributions in binary form must reproduce the above copyright
97087Snate@binkert.org * notice, this list of conditions and the following disclaimer in the
107087Snate@binkert.org * documentation and/or other materials provided with the distribution;
117087Snate@binkert.org * neither the name of the copyright holders nor the names of its
127087Snate@binkert.org * contributors may be used to endorse or promote products derived from
137087Snate@binkert.org * this software without specific prior written permission.
145086Sgblack@eecs.umich.edu *
157087Snate@binkert.org * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
167087Snate@binkert.org * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
177087Snate@binkert.org * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
187087Snate@binkert.org * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
197087Snate@binkert.org * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
207087Snate@binkert.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
217087Snate@binkert.org * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
227087Snate@binkert.org * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
235086Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
247087Snate@binkert.org * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
255086Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
265086Sgblack@eecs.umich.edu *
275086Sgblack@eecs.umich.edu * Authors: Gabe Black
285086Sgblack@eecs.umich.edu */
295086Sgblack@eecs.umich.edu
305086Sgblack@eecs.umich.edu#ifndef __SYSTEMC_EXT_CHANNEL_SC_IN_HH__
315086Sgblack@eecs.umich.edu#define __SYSTEMC_EXT_CHANNEL_SC_IN_HH__
325086Sgblack@eecs.umich.edu
335086Sgblack@eecs.umich.edu#include <string>
345086Sgblack@eecs.umich.edu
355086Sgblack@eecs.umich.edu#include "../core/sc_port.hh"
365086Sgblack@eecs.umich.edu#include "sc_signal_in_if.hh"
375086Sgblack@eecs.umich.edu#include "sc_signal_inout_if.hh"
385086Sgblack@eecs.umich.edu#include "warn_unimpl.hh"
395086Sgblack@eecs.umich.edu
405086Sgblack@eecs.umich.edunamespace sc_core
415647Sgblack@eecs.umich.edu{
428466Snilay@cs.wisc.edu
438466Snilay@cs.wisc.educlass sc_event;
445086Sgblack@eecs.umich.educlass sc_event_finder;
455135Sgblack@eecs.umich.educlass sc_trace_file;
465647Sgblack@eecs.umich.edu
479889Sandreas@sandberg.pp.setemplate <class T>
485234Sgblack@eecs.umich.educlass sc_in : public sc_port<sc_signal_in_if<T>, 1>
495086Sgblack@eecs.umich.edu{
505086Sgblack@eecs.umich.edu  public:
515086Sgblack@eecs.umich.edu    sc_in() : sc_port<sc_signal_in_if<T>, 1>() {}
527707Sgblack@eecs.umich.edu    explicit sc_in(const char *name) : sc_port<sc_signal_in_if<T>, 1>(name) {}
537707Sgblack@eecs.umich.edu    virtual ~sc_in() {}
547707Sgblack@eecs.umich.edu
559887Sandreas@sandberg.pp.se    virtual void
569887Sandreas@sandberg.pp.se    bind(const sc_signal_in_if<T> &)
579887Sandreas@sandberg.pp.se    {
589887Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
599887Sandreas@sandberg.pp.se    }
609887Sandreas@sandberg.pp.se    void
619887Sandreas@sandberg.pp.se    operator () (const sc_signal_in_if<T> &)
629887Sandreas@sandberg.pp.se    {
639887Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
649887Sandreas@sandberg.pp.se    }
659887Sandreas@sandberg.pp.se
669887Sandreas@sandberg.pp.se    virtual void
679887Sandreas@sandberg.pp.se    bind(sc_port<sc_signal_in_if<T>, 1> &)
689887Sandreas@sandberg.pp.se    {
699887Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
709887Sandreas@sandberg.pp.se    }
719887Sandreas@sandberg.pp.se    void
729887Sandreas@sandberg.pp.se    operator () (sc_port<sc_signal_in_if<T>, 1> &)
739887Sandreas@sandberg.pp.se    {
745086Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
755135Sgblack@eecs.umich.edu    }
765135Sgblack@eecs.umich.edu
775135Sgblack@eecs.umich.edu    virtual void
786048Sgblack@eecs.umich.edu    bind(sc_port<sc_signal_inout_if<T>, 1> &)
796048Sgblack@eecs.umich.edu    {
806048Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
816048Sgblack@eecs.umich.edu    }
826048Sgblack@eecs.umich.edu    void
836048Sgblack@eecs.umich.edu    operator () (sc_port<sc_signal_inout_if<T>, 1> &)
847720Sgblack@eecs.umich.edu    {
857720Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
867720Sgblack@eecs.umich.edu    }
877720Sgblack@eecs.umich.edu
885135Sgblack@eecs.umich.edu    virtual void
895135Sgblack@eecs.umich.edu    end_of_elaboration()
905135Sgblack@eecs.umich.edu    {
915135Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
925135Sgblack@eecs.umich.edu    }
935135Sgblack@eecs.umich.edu
945135Sgblack@eecs.umich.edu    const T &
955135Sgblack@eecs.umich.edu    read() const
965135Sgblack@eecs.umich.edu    {
975135Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
985135Sgblack@eecs.umich.edu        return *(const T *)nullptr;
995135Sgblack@eecs.umich.edu    }
1005135Sgblack@eecs.umich.edu    operator const T& () const
1015135Sgblack@eecs.umich.edu    {
1025135Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1035135Sgblack@eecs.umich.edu        return *(const T *)nullptr;
1045135Sgblack@eecs.umich.edu    }
1055264Sgblack@eecs.umich.edu
1065135Sgblack@eecs.umich.edu    const sc_event &
1075135Sgblack@eecs.umich.edu    default_event() const
1085135Sgblack@eecs.umich.edu    {
1095135Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1105141Sgblack@eecs.umich.edu        return *(const sc_event *)nullptr;
1115141Sgblack@eecs.umich.edu    }
1125141Sgblack@eecs.umich.edu    const sc_event &
1135141Sgblack@eecs.umich.edu    value_changed_event() const
1145141Sgblack@eecs.umich.edu    {
1155141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1165141Sgblack@eecs.umich.edu        return *(const sc_event *)nullptr;
1175141Sgblack@eecs.umich.edu    }
1185141Sgblack@eecs.umich.edu    bool
1195182Sgblack@eecs.umich.edu    event() const
1205141Sgblack@eecs.umich.edu    {
1215141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1225141Sgblack@eecs.umich.edu        return false;
1235141Sgblack@eecs.umich.edu    }
1245141Sgblack@eecs.umich.edu    sc_event_finder &
1255141Sgblack@eecs.umich.edu    value_changed() const
1265135Sgblack@eecs.umich.edu    {
1275141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1285141Sgblack@eecs.umich.edu        return *(sc_event_finder *)nullptr;
1295141Sgblack@eecs.umich.edu    }
1305141Sgblack@eecs.umich.edu
1315141Sgblack@eecs.umich.edu    virtual const char *kind() const { return "sc_in"; }
1325141Sgblack@eecs.umich.edu
1335141Sgblack@eecs.umich.edu  private:
1345141Sgblack@eecs.umich.edu    // Disabled
1355141Sgblack@eecs.umich.edu    sc_in(const sc_in<T> &) : sc_port<sc_signal_in_if<T>, 1>() {}
1365141Sgblack@eecs.umich.edu    sc_in<T> &operator = (const sc_in<T> &) { return *this; }
1375141Sgblack@eecs.umich.edu};
1385141Sgblack@eecs.umich.edu
1395135Sgblack@eecs.umich.edutemplate <class T>
1405141Sgblack@eecs.umich.eduinline void
1415141Sgblack@eecs.umich.edusc_trace(sc_trace_file *, const sc_in<T> &, const std::string &)
1425135Sgblack@eecs.umich.edu{
1435141Sgblack@eecs.umich.edu    sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1445141Sgblack@eecs.umich.edu}
1455141Sgblack@eecs.umich.edu
1465141Sgblack@eecs.umich.edutemplate <>
1475135Sgblack@eecs.umich.educlass sc_in<bool> : public sc_port<sc_signal_in_if<bool>, 1>
1485141Sgblack@eecs.umich.edu{
1495141Sgblack@eecs.umich.edu  public:
1505141Sgblack@eecs.umich.edu    sc_in() : sc_port<sc_signal_in_if<bool>, 1>() {}
1515141Sgblack@eecs.umich.edu    explicit sc_in(const char *name) :
1525141Sgblack@eecs.umich.edu        sc_port<sc_signal_in_if<bool>, 1>(name) {}
1535141Sgblack@eecs.umich.edu    virtual ~sc_in() {}
1545141Sgblack@eecs.umich.edu
1555141Sgblack@eecs.umich.edu    virtual void
1565141Sgblack@eecs.umich.edu    bind(const sc_signal_in_if<bool> &)
1575141Sgblack@eecs.umich.edu    {
1585141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1595141Sgblack@eecs.umich.edu    }
1605264Sgblack@eecs.umich.edu    void
1615141Sgblack@eecs.umich.edu    operator () (const sc_signal_in_if<bool> &)
1625141Sgblack@eecs.umich.edu    {
1635141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1645141Sgblack@eecs.umich.edu    }
1655141Sgblack@eecs.umich.edu
1665141Sgblack@eecs.umich.edu    virtual void
1675141Sgblack@eecs.umich.edu    bind(sc_port<sc_signal_in_if<bool>, 1> &)
1685141Sgblack@eecs.umich.edu    {
1695141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1705141Sgblack@eecs.umich.edu    }
1715141Sgblack@eecs.umich.edu    void
1725141Sgblack@eecs.umich.edu    operator () (sc_port<sc_signal_in_if<bool>, 1> &)
1735141Sgblack@eecs.umich.edu    {
1745141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1755141Sgblack@eecs.umich.edu    }
1765141Sgblack@eecs.umich.edu
1775141Sgblack@eecs.umich.edu    virtual void
1785135Sgblack@eecs.umich.edu    bind(sc_port<sc_signal_inout_if<bool>, 1> &)
1795135Sgblack@eecs.umich.edu    {
1805135Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1815360Sgblack@eecs.umich.edu    }
1825360Sgblack@eecs.umich.edu    void
1835360Sgblack@eecs.umich.edu    operator () (sc_port<sc_signal_inout_if<bool>, 1> &)
1845360Sgblack@eecs.umich.edu    {
1855360Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1865360Sgblack@eecs.umich.edu    }
1875647Sgblack@eecs.umich.edu
1885647Sgblack@eecs.umich.edu    virtual void
1895647Sgblack@eecs.umich.edu    end_of_elaboration()
1905360Sgblack@eecs.umich.edu    {
1915647Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1925647Sgblack@eecs.umich.edu    }
1935647Sgblack@eecs.umich.edu
1949157Sandreas.hansson@arm.com    const bool &
1955141Sgblack@eecs.umich.edu    read() const
1965141Sgblack@eecs.umich.edu    {
1975141Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
1985141Sgblack@eecs.umich.edu        return *(const bool *)nullptr;
1995141Sgblack@eecs.umich.edu    }
2005141Sgblack@eecs.umich.edu    operator const bool& () const
2015135Sgblack@eecs.umich.edu    {
2025135Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2035135Sgblack@eecs.umich.edu        return *(const bool *)nullptr;
2045135Sgblack@eecs.umich.edu    }
2058768Sgblack@eecs.umich.edu
2069180Sandreas.hansson@arm.com    const sc_event &
2075135Sgblack@eecs.umich.edu    default_event() const
2085135Sgblack@eecs.umich.edu    {
2095135Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2105135Sgblack@eecs.umich.edu        return *(const sc_event *)nullptr;
2119180Sandreas.hansson@arm.com    }
2125135Sgblack@eecs.umich.edu    const sc_event &
2135135Sgblack@eecs.umich.edu    value_changed_event() const
2145135Sgblack@eecs.umich.edu    {
2156329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2166329Sgblack@eecs.umich.edu        return *(const sc_event *)nullptr;
2176329Sgblack@eecs.umich.edu    }
2188466Snilay@cs.wisc.edu    const sc_event &
2198466Snilay@cs.wisc.edu    posedge_event() const
2208466Snilay@cs.wisc.edu    {
2216329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2226329Sgblack@eecs.umich.edu        return *(const sc_event *)nullptr;
2236329Sgblack@eecs.umich.edu    }
2246329Sgblack@eecs.umich.edu    const sc_event &
2256329Sgblack@eecs.umich.edu    negedge_event() const
2266329Sgblack@eecs.umich.edu    {
2276329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2286329Sgblack@eecs.umich.edu        return *(const sc_event *)nullptr;
2298466Snilay@cs.wisc.edu    }
2309751Sandreas@sandberg.pp.se
2319751Sandreas@sandberg.pp.se    bool
2329751Sandreas@sandberg.pp.se    event() const
2339751Sandreas@sandberg.pp.se    {
2349423SAndreas.Sandberg@arm.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2359423SAndreas.Sandberg@arm.com        return false;
2366329Sgblack@eecs.umich.edu    }
2376329Sgblack@eecs.umich.edu    bool
2386329Sgblack@eecs.umich.edu    posedge() const
2396329Sgblack@eecs.umich.edu    {
2406329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2416329Sgblack@eecs.umich.edu        return false;
2428466Snilay@cs.wisc.edu    }
2438466Snilay@cs.wisc.edu    bool
2446329Sgblack@eecs.umich.edu    negedge() const
2458466Snilay@cs.wisc.edu    {
2468466Snilay@cs.wisc.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2479921Syasuko.eckert@amd.com        return false;
2489921Syasuko.eckert@amd.com    }
2499921Syasuko.eckert@amd.com
2506329Sgblack@eecs.umich.edu    sc_event_finder &
2517720Sgblack@eecs.umich.edu    value_changed() const
2526329Sgblack@eecs.umich.edu    {
2536329Sgblack@eecs.umich.edu        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2547693SAli.Saidi@ARM.com        return *(sc_event_finder *)nullptr;
2557693SAli.Saidi@ARM.com    }
2567693SAli.Saidi@ARM.com    sc_event_finder &
2577693SAli.Saidi@ARM.com    pos() const
2587693SAli.Saidi@ARM.com    {
2597693SAli.Saidi@ARM.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2609759Sandreas@sandberg.pp.se        return *(sc_event_finder *)nullptr;
2619759Sandreas@sandberg.pp.se    }
2629759Sandreas@sandberg.pp.se    sc_event_finder &
2639759Sandreas@sandberg.pp.se    neg() const
2649921Syasuko.eckert@amd.com    {
2659921Syasuko.eckert@amd.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2669921Syasuko.eckert@amd.com        return *(sc_event_finder *)nullptr;
2679759Sandreas@sandberg.pp.se    }
2689759Sandreas@sandberg.pp.se
2699759Sandreas@sandberg.pp.se    virtual const char *kind() const { return "sc_in"; }
2709759Sandreas@sandberg.pp.se
2719759Sandreas@sandberg.pp.se  private:
2729759Sandreas@sandberg.pp.se    // Disabled
2739759Sandreas@sandberg.pp.se    sc_in(const sc_in<bool> &) : sc_port<sc_signal_in_if<bool>, 1>() {}
2749759Sandreas@sandberg.pp.se    sc_in<bool> &operator = (const sc_in<bool> &) { return *this; }
2759759Sandreas@sandberg.pp.se};
2769759Sandreas@sandberg.pp.se
2779759Sandreas@sandberg.pp.setemplate <>
2789759Sandreas@sandberg.pp.seinline void
2799921Syasuko.eckert@amd.comsc_trace<bool>(sc_trace_file *, const sc_in<bool> &, const std::string &)
2809921Syasuko.eckert@amd.com{
2819921Syasuko.eckert@amd.com    sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2829759Sandreas@sandberg.pp.se}
2839759Sandreas@sandberg.pp.se
2849921Syasuko.eckert@amd.comtemplate <>
2859921Syasuko.eckert@amd.comclass sc_in<sc_dt::sc_logic> :
2869759Sandreas@sandberg.pp.se    public sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>
2879759Sandreas@sandberg.pp.se{
2889759Sandreas@sandberg.pp.se  public:
2899759Sandreas@sandberg.pp.se    sc_in() : sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>() {}
2909759Sandreas@sandberg.pp.se    explicit sc_in(const char *name) :
2917693SAli.Saidi@ARM.com        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name)
2929880Sandreas@sandberg.pp.se    {}
2939880Sandreas@sandberg.pp.se    virtual ~sc_in() {}
2949880Sandreas@sandberg.pp.se
2959880Sandreas@sandberg.pp.se    virtual void
2969880Sandreas@sandberg.pp.se    bind(const sc_signal_in_if<sc_dt::sc_logic> &)
2979880Sandreas@sandberg.pp.se    {
2989880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
2999880Sandreas@sandberg.pp.se    }
3009880Sandreas@sandberg.pp.se    void
3019880Sandreas@sandberg.pp.se    operator () (const sc_signal_in_if<sc_dt::sc_logic> &)
3029880Sandreas@sandberg.pp.se    {
3039880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3049880Sandreas@sandberg.pp.se    }
3059880Sandreas@sandberg.pp.se
3069880Sandreas@sandberg.pp.se    virtual void
3079880Sandreas@sandberg.pp.se    bind(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &)
3089880Sandreas@sandberg.pp.se    {
3099880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3109880Sandreas@sandberg.pp.se    }
3119880Sandreas@sandberg.pp.se    void
3129880Sandreas@sandberg.pp.se    operator () (sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &)
3139880Sandreas@sandberg.pp.se    {
3149880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3159880Sandreas@sandberg.pp.se    }
3169880Sandreas@sandberg.pp.se
3179880Sandreas@sandberg.pp.se    virtual void
3189880Sandreas@sandberg.pp.se    bind(sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &)
3199880Sandreas@sandberg.pp.se    {
3209880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3219880Sandreas@sandberg.pp.se    }
3229880Sandreas@sandberg.pp.se    void
3239880Sandreas@sandberg.pp.se    operator () (sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &)
3249880Sandreas@sandberg.pp.se    {
3259880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3269880Sandreas@sandberg.pp.se    }
3279880Sandreas@sandberg.pp.se
3289880Sandreas@sandberg.pp.se    virtual void
3299880Sandreas@sandberg.pp.se    end_of_elaboration()
3309880Sandreas@sandberg.pp.se    {
3319880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3329880Sandreas@sandberg.pp.se    }
3339880Sandreas@sandberg.pp.se
3349880Sandreas@sandberg.pp.se    const sc_dt::sc_logic &
3359880Sandreas@sandberg.pp.se    read() const
3369880Sandreas@sandberg.pp.se    {
3379880Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3389765Sandreas@sandberg.pp.se        return *(const sc_dt::sc_logic *)nullptr;
3399765Sandreas@sandberg.pp.se    }
3409765Sandreas@sandberg.pp.se    operator const sc_dt::sc_logic& () const
3419765Sandreas@sandberg.pp.se    {
3429765Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3439765Sandreas@sandberg.pp.se        return *(const sc_dt::sc_logic *)nullptr;
3449765Sandreas@sandberg.pp.se    }
3459765Sandreas@sandberg.pp.se
3469765Sandreas@sandberg.pp.se    const sc_event &
3479765Sandreas@sandberg.pp.se    default_event() const
3489765Sandreas@sandberg.pp.se    {
3499765Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3509765Sandreas@sandberg.pp.se        return *(const sc_event *)nullptr;
3519765Sandreas@sandberg.pp.se    }
3529765Sandreas@sandberg.pp.se    const sc_event &
3539765Sandreas@sandberg.pp.se    value_changed_event() const
3549765Sandreas@sandberg.pp.se    {
3559765Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3569765Sandreas@sandberg.pp.se        return *(const sc_event *)nullptr;
3579765Sandreas@sandberg.pp.se    }
3589889Sandreas@sandberg.pp.se    const sc_event &
3599889Sandreas@sandberg.pp.se    posedge_event() const
3609889Sandreas@sandberg.pp.se    {
3619889Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3629889Sandreas@sandberg.pp.se        return *(const sc_event *)nullptr;
3639889Sandreas@sandberg.pp.se    }
3649889Sandreas@sandberg.pp.se    const sc_event &
3659889Sandreas@sandberg.pp.se    negedge_event() const
3669889Sandreas@sandberg.pp.se    {
3679889Sandreas@sandberg.pp.se        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
3689889Sandreas@sandberg.pp.se        return *(const sc_event *)nullptr;
3699889Sandreas@sandberg.pp.se    }
3709889Sandreas@sandberg.pp.se
3719889Sandreas@sandberg.pp.se    bool
3729889Sandreas@sandberg.pp.se    event() const
3739889Sandreas@sandberg.pp.se    {
3747811Ssteve.reinhardt@amd.com        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
375        return false;
376    }
377    bool
378    posedge() const
379    {
380        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
381        return false;
382    }
383    bool
384    negedge() const
385    {
386        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
387        return false;
388    }
389
390    sc_event_finder &
391    value_changed() const
392    {
393        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
394        return *(sc_event_finder *)nullptr;
395    }
396    sc_event_finder &
397    pos() const
398    {
399        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
400        return *(sc_event_finder *)nullptr;
401    }
402    sc_event_finder &
403    neg() const
404    {
405        sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
406        return *(sc_event_finder *)nullptr;
407    }
408
409    virtual const char *kind() const { return "sc_in"; }
410
411  private:
412    // Disabled
413    sc_in(const sc_in<sc_dt::sc_logic> &) :
414        sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>()
415    {}
416    sc_in<sc_dt::sc_logic> &
417    operator = (const sc_in<sc_dt::sc_logic> &)
418    {
419        return *this;
420    }
421};
422
423template <>
424inline void
425sc_trace<sc_dt::sc_logic>(
426        sc_trace_file *, const sc_in<sc_dt::sc_logic> &, const std::string &)
427{
428    sc_channel_warn_unimpl(__PRETTY_FUNCTION__);
429}
430
431} // namespace sc_core
432
433#endif  //__SYSTEMC_EXT_CHANNEL_SC_IN_HH__
434