#include <systemc>using namespace sc_core;using namespace sc_dt;using namespace std;/* Simple DFF */SC_MODULE(dff) {sc_in<bool> clk;sc_in<sc_logic> din;sc_out<sc_logic> dout;SC_CTOR(dff) {SC_METHOD(on_clk_neg);sensitive << clk.neg();}private:void on_clk_neg() {dout->write(din->read());}};SC_MODULE(tb_dff) {sc_clock clk;sc_signal<sc_logic> din;sc_signal<sc_logic> dout;SC_CTOR(tb_dff):clk("clk",10,SC_NS,0.5), DUT("dff") {DUT.din(din);DUT.dout(dout);DUT.clk(clk);SC_THREAD(main);}private:dff DUT;void main() {din.write(SC_LOGIC_0);wait(31, SC_NS);din.write(SC_LOGIC_1);wait(42, SC_NS);din.write(SC_LOGIC_0);}};int sc_main(int argc, char* argv[]) {tb_dff TB("tb_dff");sc_trace_file *tf(sc_create_vcd_trace_file("trace"));tf->set_time_unit(1, SC_NS);sc_trace(tf, TB.clk, "clk");sc_trace(tf, TB.din, "din");sc_trace(tf, TB.dout, "dout");sc_start(100, SC_NS);sc_close_vcd_trace_file(tf);return 0;}
Geef hier een voorbeeld van een debugsessie. Kun je single steppen? Hoe zet je een breakpoint? Hoe kun je variabelen bekijken? Snapt ModelSim de SystemC objecten (zoals sc_signal)?