2011年5月21日 星期六

SystemC 時序控制的方法

我是從UserGuide上整理出來的
也就是我們可以有下面兩種產生clock的方法
或者說是任意的波形

第一種方法
For examples, assume you have defined a clock as:
sc_clock clk(“my clock”, 20, 0.5);
You can simulate the generation of clocks for 200 default time units by calling
sc_start(200);

第二種方法
sc_signal clock;
sc_initialize(); //
使用此function to initialize the SystemC scheduler
for (int i = 0; i <= 200; i++)
clock = 1;
sc_cycle(10);
clock = 0;
sc_cycle(10);
}

另外關於非同步的時序
可參考我改寫的例子
此處可以寫出 VCD檔來

#include

int sc_main(int argc,char** argv){

// sc_clock clock;
sc_signal clock, reset;

sc_trace_file *wf = sc_create_vcd_trace_file("sc_cycle");
sc_trace(wf, clock, "clock");
sc_trace(wf, reset, "reset");

sc_initialize();
// Let the clock run for 10 cycles
for (int i = 0; i <= 200; i++) {
clock = 1;
sc_cycle(10);
clock = 0;
sc_cycle(10);
}
// Inject asynchronous reset
clock = 1;
sc_cycle(5);
reset = 1;
sc_cycle(5);
clock = 0;
sc_cycle(10);
clock = 1;
sc_cycle(5);
reset = 0;

sc_cycle(5);
clock = 0;
sc_cycle(10);
// Now let the clock run indefinitely
for (int i=0 ;i<300;i++) {
clock = 1;
sc_cycle(10);
clock = 0;
sc_cycle(10);
}


sc_close_vcd_trace_file(wf);

return 0;

}

沒有留言: