Hi Tristan,

I'm investigating why one of my testbenches runs very slowly.

Now according to valgrind, about 63% of the CPU time is spent in
grt__processes__simulation_cycle. This function spends almost all the
time in the following pointer chasing loop:

                     El := Proc.Sensitivity;
                     while El /= null loop
                        if El.Sig.Event then
                           Resume_Process (Pid);
                           exit;
                        else
                           El := El.Next;
                        end if;
                     end loop;

(The 63% exclude the time when Resume_Process is actually called, so the
63% are just the pointer chasing).

In my case, Non_Sensitized_Process_Table.Last seems to be 481 (I'm
actually a bit surprised why there are this many nonsensitized
processes. There are about 10-20 explicitly coded nonsensitized
processes, according to grep).

Another 17% is spent in grt__stack2__allocate, 7% in
grt__signals__find_next_time, 6% in grt__processes__compute_next_time.
Actual "user" code accounts for less than 1% in total.

What can I do to make my simulation run faster?

Thanks,
Tom



_______________________________________________
Ghdl-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to