当方、C言語に関してまったくの初心者なのですが(始めて一週間です;;)、現在verilogのシミュレーション環境からPLI関数を呼びだしてクロックを生成することを目指しています。
具体的にはCのソース部分で100MHzのクロックを生成したいのですが、どのようにクロック周波数やシミュレーション時間を定義したらよいのかわからず途方にくれております。
見様見真似でかいた.cのソースコードは以下の通りです。
.C file
#include "acc_user.h"
#include "veriuser.h"
// Define the ON and OFF time of clock
#define init_time 0.0
#define last_time 100.0ps
#define step 10e-8s
clock ()
{
int i;
char clock = 0, last_clock;
// Main routine which toggles the clock
for (i = 0; i < step; i++) {
last_clock = clock;
clock = !( last_clock ) ;
io_printf ("i:%2d", i) ;
io_printf ("clock:%1d", clock) ;
}
}
.v file
module clkGen(clk);
output clk;
reg clk;
initial
begin
//$shm_open("trn_open");
//$shm_probe("AC");
$clkGen(clk);
end
endmodule
これだとテキスト出力はされるのですが、時間の流れが負えず、所望の波形が出力されているのかどうか確認できません。何かよい知恵がございましたら、ご教授ください。
よろしくお願いいたします。