ProGenitor assigns each function a number of call sites and a maximum recursion depth based on the corresponding input parameters. The number of call sites is the number of other functions that the given function will call whenever it is executed. The call sites are modeled as an ordered set of objects so that they will be visited in the same order every time the function is executed. We are now ready to simulate execution. A user function is picked to be the starting point, the clock counter is set to 0, and a function-entry event is output to the behavior file.
ProGenitor then proceeds to simulate execution of the function.
First, it uses the Execution Time between Calls parameter to increment the clock counter. Then it visits the first call site of the function. Since this is the first time this call site has been visited, ProGenitor has a little extra work to do. Being Fixed parameter. A value, d , is generated according to specified distribution.