1. A method of producing a flexible timing-driven routing tree comprising the steps of: sorting two or more target nodes in accordance with data criticality; building a source-sink grid from one or more source nodes and the two or more target nodes; building an initial routing tree comprising the one or more source nodes; and executing a routing tree generation algorithm on the initial routing tree, utilizing the sorted two or more target nodes and the source-sink grid in accordance with a user-defined timing factor to construct a flexible timing-driven routing tree, wherein the user-defined timing factor specifies an extent of isolation for a routing path from a given one of the one or more source nodes to a given one of the two or more target nodes.