diff --git a/src/systemc/core/SConscript b/src/systemc/core/SConscript
index 8bff1b3..329e7c7 100644
--- a/src/systemc/core/SConscript
+++ b/src/systemc/core/SConscript
@@ -45,5 +45,6 @@
     Source('sc_process_handle.cc')
     Source('sc_prim.cc')
     Source('sc_sensitive.cc')
+    Source('sc_simcontext.cc')
     Source('sc_spawn.cc')
     Source('sc_time.cc')
diff --git a/src/systemc/core/sc_object.cc b/src/systemc/core/sc_object.cc
index 554bc22..b688344 100644
--- a/src/systemc/core/sc_object.cc
+++ b/src/systemc/core/sc_object.cc
@@ -134,6 +134,13 @@
     return *(sc_attr_cltn *)NULL;
 }
 
+sc_simcontext *
+sc_object::simcontext() const
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return nullptr;
+}
+
 sc_object::sc_object()
 {
     warn("%s not implemented.\n", __PRETTY_FUNCTION__);
diff --git a/src/systemc/core/sc_simcontext.cc b/src/systemc/core/sc_simcontext.cc
new file mode 100644
index 0000000..6a281e5
--- /dev/null
+++ b/src/systemc/core/sc_simcontext.cc
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2018 Google, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Gabe Black
+ */
+
+#include "base/logging.hh"
+#include "systemc/ext/core/sc_simcontext.hh"
+
+namespace sc_core
+{
+
+sc_dt::uint64
+sc_simcontext::delta_count() const
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return 0;
+}
+
+void
+sc_simcontext::reset()
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
+sc_curr_proc_handle
+sc_simcontext::get_curr_proc_info()
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return nullptr;
+}
+
+sc_simcontext *
+sc_get_curr_simcontext()
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return nullptr;
+}
+
+} // namespace sc_core
diff --git a/src/systemc/ext/core/_core.hh b/src/systemc/ext/core/_core.hh
index 648328c..f4ce54c 100644
--- a/src/systemc/ext/core/_core.hh
+++ b/src/systemc/ext/core/_core.hh
@@ -42,6 +42,7 @@
 #include "sc_prim.hh"
 #include "sc_process_handle.hh"
 #include "sc_sensitive.hh"
+#include "sc_simcontext.hh"
 #include "sc_spawn.hh"
 #include "sc_time.hh"
 
diff --git a/src/systemc/ext/core/_using.hh b/src/systemc/ext/core/_using.hh
index 255df33..9c779fd 100644
--- a/src/systemc/ext/core/_using.hh
+++ b/src/systemc/ext/core/_using.hh
@@ -135,6 +135,9 @@
 
 using sc_core::sc_sensitive;
 
+using sc_core::sc_simcontext;
+using sc_core::sc_get_curr_simcontext;
+
 using sc_core::sc_spawn_options;
 using sc_core::sc_spawn;
 
diff --git a/src/systemc/ext/core/sc_object.hh b/src/systemc/ext/core/sc_object.hh
index 0e97581..653df87 100644
--- a/src/systemc/ext/core/sc_object.hh
+++ b/src/systemc/ext/core/sc_object.hh
@@ -40,6 +40,7 @@
 class sc_event;
 class sc_attr_base;
 class sc_attr_cltn;
+class sc_simcontext;
 
 class sc_object
 {
@@ -64,6 +65,10 @@
     sc_attr_cltn &attr_cltn();
     const sc_attr_cltn &attr_cltn() const;
 
+    // Deprecated
+    sc_simcontext *
+    simcontext() const;
+
   protected:
     sc_object();
     sc_object(const char *);
diff --git a/src/systemc/ext/core/sc_simcontext.hh b/src/systemc/ext/core/sc_simcontext.hh
new file mode 100644
index 0000000..7abcbb3
--- /dev/null
+++ b/src/systemc/ext/core/sc_simcontext.hh
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2018 Google, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Gabe Black
+ */
+
+#ifndef __SYSTEMC_EXT_CORE_SC_SIMCONTEXT_HH__
+#define __SYSTEMC_EXT_CORE_SC_SIMCONTEXT_HH__
+
+#include "../dt/int/sc_nbdefs.hh"
+#include "sc_process_handle.hh"
+
+namespace sc_core
+{
+
+class sc_simcontext
+{
+  public:
+    sc_dt::uint64 delta_count() const;
+    void reset();
+    sc_curr_proc_handle get_curr_proc_info();
+};
+
+sc_simcontext *sc_get_curr_simcontext();
+
+} // namespace sc_core
+
+#endif  //__SYSTEMC_EXT_CORE_SC_SIMCONTEXT_HH__
