Here is my program:
#include <systemc.h> int sc_main(int argc, char* argv[]) { sc_signal<sc_logic> a, b, c, d; // trace file creation sc_trace_file *tf = sc_create_vcd_trace_file("test"); //tf->set_time_unit(1, SC_PS); sc_trace(tf, a, "A"); sc_trace(tf, b, "B"); sc_trace(tf, c, "C"); sc_trace(tf, d, "D"); sc_start(0, SC_PS); bool a_tmp = false; bool b_tmp = true; int c_tmp = 0; int d_tmp = 1; a = sc_logic(a_tmp); b = sc_logic(b_tmp); c = sc_logic(c_tmp); d = static_cast<sc_logic>(d_tmp); sc_start(1, SC_PS); a = SC_LOGIC_1; b = SC_LOGIC_1; c = SC_LOGIC_0; d = SC_LOGIC_1; sc_start(1, SC_PS); a = SC_LOGIC_0; b = SC_LOGIC_0; c = SC_LOGIC_1; d = SC_LOGIC_0; sc_start(1, SC_PS); a = SC_LOGIC_1; b = SC_LOGIC_0; c = SC_LOGIC_1; d = SC_LOGIC_0; sc_start(1, SC_PS); sc_close_vcd_trace_file(tf); return 0; }
It is very strange that the waveform between 3 ~ 4ps was lost and was not captured by the VCD file. What is the reason? Even changing a, b, c, d to variables cannot solve this problem.
source share