5
Hier ist mein Programm:Warum kann SystemC trace die letzte Wellenform nicht erfassen?
#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;
}
Es ist sehr merkwürdig, dass die Wellenform zwischen 3 ~ 4ps verloren wurden, und wurden nicht von der VCD-Datei erfasst. Was ist der Grund? Selbst die Änderung von a, b, c, d in Variablen kann dieses Problem nicht lösen.
Thx. Ich habe die gleiche .vcd-Datei. Aber die gtkwave zeigt nicht die Wellenform zwischen 3ps bis 4ps. Entschuldigung, ich habe keinen guten Ruf und kann das Wellenformbild nicht hochladen. – swgchlry
Ich habe test.vcd in GTKwave geöffnet und ich denke ich sehe was du meinst. Bei 3 ps kann ich nur den Übergang von 'a' von 0 nach 1 sehen, aber nichts nach 3 ps. Ich denke, dass GTKwave diese Daten so rendert - es zeigt nichts nach dem letzten Zeitpunkt in der .vcd-Datei. – DarrylLawson