Utilizando el siguiente código del tutorial de doulos en SystemC
#include "systemc.h"
#include
SC_MODULE(mon)
{
sc_in<bool> A,B,F;
sc_in<bool> Clk;
void monitor()
{
cout << setw(10) << "Time";
cout << setw(2) << "A" ;
cout << setw(2) << "B";
cout << setw(2) << "F" << endl;
while (true)
{
cout << setw(10) << sc_time_stamp();
cout << setw(2) << A.read();
cout << setw(2) << B.read();
cout << setw(2) << F.read() << endl;
wait(); // wait for 1 clock cycle
}
}
SC_CTOR(mon)
{
SC_THREAD(monitor);
sensitive << Clk.pos();
}
};
y una declaración de reloj sc_clock TestClk("TestClock", 10, SC_NS,0.5);
en sc_main
La salida contiene resultados del tiempo 0
pero cuando el borde positivo del reloj se retrasa 1 ns (es decir, sc_clock TestClk("TestClock", 10, SC_NS,0.5, 1, SC_NS);
), la salida comienza desde el momento 1 ns.
Esto es lógico, ya que el primer desencadenante del proceso se retrasa hasta 1 ns.
La pregunta es ¡no se supone que el kernel de simulación ejecute todos los procesos una vez en el tiempo cero!
De acuerdo con esto, los resultados deben comenzar desde el momento 0 en ambos casos. ¿que me estoy perdiendo aqui?