The vast majority of simulation times come from the simulation of the CTLE for the receiver, specifically lsim is responsible for 90% of run time during adaption. Each call to lsim takes approximately two seconds. Some proposed solutions:
- Attempt to parallelize its operation across all channels in a given link configuration. Currently the RX CTLE is applied to each of the combined channels (THRU, NEXT, FEXT) sequentially. With proper parallelization, this could cut the execution time for simulations that consider all these by 66%.
- Consider replacing
lsim with a convolution operation like what is done for pulse response generation. This is probably what goes on inside lsim but we could avoid repeatedly calculating this response by recording it the first time for a given CTLE. Then whenever the response is needed, read it from memory and convolve which is much faster than recalculating the impulse response repeatedly.
The vast majority of simulation times come from the simulation of the CTLE for the receiver, specifically
lsimis responsible for 90% of run time during adaption. Each call tolsimtakes approximately two seconds. Some proposed solutions:lsimwith a convolution operation like what is done for pulse response generation. This is probably what goes on insidelsimbut we could avoid repeatedly calculating this response by recording it the first time for a given CTLE. Then whenever the response is needed, read it from memory and convolve which is much faster than recalculating the impulse response repeatedly.