This chapter describes the implementation of the tool that is behind all the optimizations through this thesis. It has been written in a very modular way, in order to permit efficiently the insertion of new algorithms and new simulators. It consists of about ten thousand lines of C++, and it exploits deeply the object-oriented features, in order to hide to new developers the implementing details.