viswanathb Posted March 18, 2014 Report Share Posted March 18, 2014 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 dutclk_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 scopeclk_dut.h:18: error: ‘clk1’ was not declared in this scopeclk_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. Quote Link to comment Share on other sites More sharing options...
apfitch Posted March 18, 2014 Report Share Posted March 18, 2014 You've declared your clock objects as member variables of an SC_THREAD, which is a bad idea - when the thread ends, the clocks disappear. Also your thread has no infinite loop, so it will end immediately. The clock objects should be class members, something like this: //CLOCK DUT //clk_dut.h #include "systemc.h" SC_MODULE(clk_dut) { sc_clock refclk; sc_clock clk1; sc_clock clk2; SC_CTOR(clk_dut): refclk("refclk",100,SC_NS), clk1("clk1",10,SC_NS), clk2("clk2",5,SC_NS) { } }; If you want to declare them in a module, as you've shown, then you'll probably want to bind the clocks to some ports as well, regards Alan Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.