1. A method comprising: building, on a computer, at least one intermediate representation (IR) including a specification for one or more components and a plurality of interconnections between the one or more components; storing the at least one IR in a memory; analyzing, on the computer, the at least one IR, the analyzing comprising at least two of: determining a first condition of whether a first of the one or more components has a predetermined initial state; determining a second condition of whether the first of the one or more components produces an expected output value given an input value; or determining a third condition of whether the first of the one or more components produces no state change for a selected input value; and if at least two of the first, second or third conditions are determined to be true, then rearranging, on the computer, at least one of the plurality of interconnections or at least one of the one or more of the components in the at least one IR.