You can also see the *.lib for detail.
Basically, its based on look-up tables. The input is usually input trasition and output load, the look-up table output will be output transion and signal delay.
Of cause there will be some filter if the input data not in the *.lib look-up table (ususally is the case).