My intention is to devise a clock multiplier or divider circuit based on a reference clock.
//CLOCK DUT
//clk_dut.h
#include "systemc.h"
SC_MODULE(clk_dut)
{
void gen()
{
double ref_clk =100;
double clk1_div =10;
double clk2_div=5;
sc_clock refclk("refclk",ref_clk,SC_NS);
sc_clock clk1("clk1",ref_clk/clk1_div,SC_NS);
sc_clock clk2("clk2",ref_clk/clk2_div,SC_NS);
}
SC_CTOR(clk_dut)
{
SC_THREAD(gen);
sensitive << refclk.pos() << clk1.pos() << clk2.pos();
}
};
//TOP MODULE
#include "systemc.h"
#include "clk_dut.h"
int sc_main(int argc,char *argv[])
{
//instantiating the dut
clk_dut dut("dut");
dut.gen();
sc_start(100,SC_NS);
return0;
}
Error Message
clk_dut.h: In constructor ‘clk_dut::clk_dut(sc_core::sc_module_name)’:
clk_dut.h:18: error: ‘refclk’ was not declared in this scope
clk_dut.h:18: error: ‘clk1’ was not declared in this scope
clk_dut.h:18: error: ‘clk2’ was not declared in this scope
./sim: Command not found.
Please help me resolve this.
Also When i try to trace the clock files in the SC_THREAD after the sensitivity list using
sc_trace_file *fp;
fp=sc_create_vcd_trace_file("wave");
sc_trace(fp,refclk,"clk");
I get the same kind of scope error.
Please help me resolve this.