1. A method for simulating the operation of an integrated circuit, comprising: accessing a section of hardware description language which describes the operations of the integrated circuit, said section of hardware description language comprising at least one module; determining which at least one module of said section of hardware description language to include in a simulation; flattening each of said at least one modules determined to be included in said simulation into a single module; compiling said single module to an unordered list of assignments; sorting said unordered list of assignments into sorted sequential groups and sorted combinatorial groups of assignments; and compiling said sorted sequential groups and said sorted combinatorial groups into a alternative programming language.