diff options
author | Johannes Stoelp <johannes.stoelp@gmail.com> | 2023-08-27 21:18:53 +0200 |
---|---|---|
committer | Johannes Stoelp <johannes.stoelp@gmail.com> | 2023-08-27 21:18:53 +0200 |
commit | f396fab26611d6107e223a6a3f41c9dff3e2ee9e (patch) | |
tree | d1b22fd265f883404d7e484b7f7c460367a136be /sc_export.cc | |
parent | 7a0f884c6b11db6a59cfafce7b53158ad59a365e (diff) | |
download | sysc-playground-f396fab26611d6107e223a6a3f41c9dff3e2ee9e.tar.gz sysc-playground-f396fab26611d6107e223a6a3f41c9dff3e2ee9e.zip |
move sources into src/ subdir
Diffstat (limited to 'sc_export.cc')
-rw-r--r-- | sc_export.cc | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/sc_export.cc b/sc_export.cc deleted file mode 100644 index 7acca58..0000000 --- a/sc_export.cc +++ /dev/null @@ -1,76 +0,0 @@ -#include <systemc> -#include "utils.h" - -using sc_core::sc_export; -using sc_core::sc_in; -using sc_core::sc_module; -using sc_core::sc_module_name; -using sc_core::SC_NS; -using sc_core::sc_signal; -using sc_core::sc_signal_inout_if; - -// -- CLOCK_GEN ---------------------------------------------------------------- - -struct clock_gen : public sc_module { - SC_HAS_PROCESS(clock_gen); - - explicit clock_gen(sc_module_name nm, unsigned period_ns = 20) - : sc_module(nm), m_half_period(period_ns / 2) { - assert(period_ns == m_half_period * 2); - - // Bind sc_signal (clk) against export. - p_clk(m_clk); - - SC_METHOD(tick); - } - - // Export to expose sc_signal (clk) outside this module. - sc_export<sc_signal_inout_if<bool>> p_clk; - - private: - // Implementation of sc_signal_inout_if. - sc_signal<bool> m_clk; - - const unsigned m_half_period; - - void tick() { - m_clk.write(!m_clk.read()); - next_trigger(m_half_period, SC_NS); - } -}; - -// -- TICKTOCK ----------------------------------------------------------------- - -struct ticktock : public sc_module { - SC_HAS_PROCESS(ticktock); - - explicit ticktock(sc_module_name nm) : sc_module(nm) { - SC_METHOD(handle_clk); - sensitive << p_clk; - dont_initialize(); - } - - // In port, where sc_in is just a sc_port<sc_signal_in_if<bool>>. - sc_in<bool> p_clk; - - private: - void handle_clk() { - if (p_clk.read()) { - LOGM("TICK"); - } else { - LOGM("TOCK"); - } - } -}; - -// -- SC_MAIN ------------------------------------------------------------------ - -extern "C" int sc_main(int, char*[]) { - clock_gen clk("clk"); - ticktock tiktok{"listen"}; - - tiktok.p_clk(clk.p_clk); - - sc_start(200, SC_NS); - return 0; -} |