SystemCのシミュレーションスクリプトは、
慣れれば難しくはないのだけれど、
慣れるまで、少し作成に時間がかかるので、
NSLからスケルトンを生成できるようにした。
慣れれば難しくはないのだけれど、
慣れるまで、少し作成に時間がかかるので、
NSLからスケルトンを生成できるようにした。
#include <systemc.h> #include "inc16.sc" #include <stdlib.h> sc_clock m_clock("m_clock",10,0.5,0,false); sc_signal<bool> p_reset; sc_signal<sc_uinit<16> > a; sc_signal<sc_uinit<16> > q; sc_signal<sc_uint<1> > exe; inc16 inc16("inc16"); static int ctrl_clock=0; SC_MODULE (c_clock) { sc_in<bool> m_clock; void do_reset() { ctrl_clock++; if(ctrl_clock==0) p_reset=1; if(ctrl_clock==1) p_reset=0 } SC_CTOR(c_clock) { SC_METHOD(do_reset); sensitive << m_clock.pos(); } }; int sc_main(int argc, char *argv[]) { int stop; if(argc>1 && (stop=atoi(argv[1])<=0)) stop=1000; sc_trace_file *tf = sc_create_vcd_trace_file("inc16"); sc_trace(tf,inc16.p_reset,"inc16.p_reset"); sc_trace(tf,inc16.m_clock,"inc16.m_clock"); sc_trace(tf,inc16.a,"inc16.a"); sc_trace(tf,inc16.q,"inc16.q"); sc_trace(tf,inc16.exe,"inc16.exe"); c_clock cclk("cclk"); cclk.m_clock(m_clock); inc16.p_reset(p_reset); inc16.m_clock(m_clock); inc16.a(a); inc16.q(q); inc16.exe(exe); sc_start(stop, SC_NS); sc_close_vcd_trace_file(tf) }