SystemC - 我可以从sc_in_clk端口检索时钟周期吗?

时间:2015-08-28 15:09:20

标签: systemc

我可以通过sc_port检索时钟周期吗?

以下代码不起作用。我想调用sc_clock中定义的方法“period()”。

sc_in_clk clk;

* clk.get_interface() - >周期();

1 个答案:

答案 0 :(得分:1)

您可以使用dynamic_cast<>将[{1}}返回的sc_interface转换为get_interface()

sc_clock

这是有效的,因为#include <iostream> #include <systemc> using namespace std; using namespace sc_core; SC_MODULE(A) { sc_in_clk clk; SC_CTOR(A) {} void start_of_simulation() { sc_clock *channel = dynamic_cast<sc_clock *>(clk.get_interface()); cout << name() << ": period is " << (channel ? channel->period() : SC_ZERO_TIME) << endl; } }; int sc_main(int argc, char *argv[]) { A a1("a1"); A a2("a2"); sc_clock clk("clk", 3.0, SC_NS); sc_signal<bool> fake_clk("fake_clk"); a1.clk(clk); a2.clk(fake_clk); sc_start(10, SC_NS); return EXIT_SUCCESS; } sc_clock的子类。

如果sc_interface成功,则返回有效的dynamic_cast<>指针。如果失败,则返回sc_clock