sc_port.cc (13053:a7a320144bc1) | sc_port.cc (13203:76ee4971fd9e) |
---|---|
1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 16 unchanged lines hidden (view full) --- 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 * Authors: Gabe Black 28 */ 29 30#include "base/logging.hh" 31#include "systemc/core/bindinfo.hh" 32#include "systemc/core/module.hh" | 1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 16 unchanged lines hidden (view full) --- 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 * Authors: Gabe Black 28 */ 29 30#include "base/logging.hh" 31#include "systemc/core/bindinfo.hh" 32#include "systemc/core/module.hh" |
33#include "systemc/core/scheduler.hh" 34#include "systemc/ext/core/sc_main.hh" |
|
33#include "systemc/ext/core/sc_port.hh" 34 35namespace sc_core 36{ 37 | 35#include "systemc/ext/core/sc_port.hh" 36 37namespace sc_core 38{ 39 |
40namespace 41{ 42 43void 44reportError(const char *id, const char *add_msg, 45 const char *name, const char *kind) 46{ 47 std::string msg; 48 if (add_msg) 49 msg = csprintf("%s: port '%s' (%s)", add_msg, name, kind); 50 else 51 msg = csprintf("port '%s' (%s)", name, kind); 52 53 SC_REPORT_ERROR(id, msg.c_str()); 54} 55 56} 57 |
|
38sc_port_base::sc_port_base(const char *name, int n, sc_port_policy p) : 39 sc_object(name), _maxSize(n), _size(0), finalized(false) 40{ | 58sc_port_base::sc_port_base(const char *name, int n, sc_port_policy p) : 59 sc_object(name), _maxSize(n), _size(0), finalized(false) 60{ |
61 if (sc_is_running()) { 62 reportError("(E110) insert port failed", "simulation running", 63 name, kind()); 64 } 65 if (::sc_gem5::scheduler.elaborationDone()) { 66 reportError("(E110) insert port failed", "elaboration done", 67 name, kind()); 68 } 69 |
|
41 ::sc_gem5::Module *m = ::sc_gem5::currentModule(); | 70 ::sc_gem5::Module *m = ::sc_gem5::currentModule(); |
42 m->ports.push_back(this); | 71 if (!m) { 72 reportError("(E100) port specified outside of module", 73 nullptr, name, kind()); 74 } else { 75 m->ports.push_back(this); 76 } |
43} 44 45void 46sc_port_base::warn_unimpl(const char *func) const 47{ 48 warn("%s not implemented.\n", func); 49} 50 --- 42 unchanged lines hidden --- | 77} 78 79void 80sc_port_base::warn_unimpl(const char *func) const 81{ 82 warn("%s not implemented.\n", func); 83} 84 --- 42 unchanged lines hidden --- |