A multi-die package comprising: a first die having a first clock tree feeding a first plurality of flip flops, the first die further having a first array of data nodes (101, 103) exposed on the surface of the first die and arranged in a first plurality of rows and columns, wherein individual ones of the first plurality of flip-flops correspond to individual ones of the first array of data nodes; and a second die having a second clock tree feeding a second plurality of flip flops, the second die further having a second array of data nodes (201, 203) exposed on the surface of the second die and arranged in a second plurality of rows and columns, wherein individual ones of the second plurality of flip-flops correspond to individual ones of the second array of data nodes; wherein individual ones of the first plurality of data nodes correspond to, and are in communication with, individual ones of the second plurality of data nodes to pass a plurality of parallel data bits, the first array of data nodes and the second array of data nodes sharing a physical layout, wherein the first array of data nodes on the first die is arranged as if the second array of data nodes on the second die has been spatially translated from the second die to the first die; further wherein the first plurality of flip-flops is disposed on a first side of the first array, and the second plurality of flip-flops is disposed on a second side of the second array, the first and second sides corresponding to opposite sides of the first and second arrays, respectively, wherein the first clock tree is disposed on the first side of the first array, and the second clock tree is disposed on the second side of the second array, wherein the first side of the first array and the second side of the second array are adjacent to each other. a first die having a first clock tree feeding a first plurality of flip flops, the first die further having a first array of data nodes (101, 103) exposed on the surface of the first die and arranged in a first plurality of rows and columns, wherein individual ones of the first plurality of flip-flops correspond to individual ones of the first array of data nodes; and a second die having a second clock tree feeding a second plurality of flip flops, the second die further having a second array of data nodes (201, 203) exposed on the surface of the second die and arranged in a second plurality of rows and columns, wherein individual ones of the second plurality of flip-flops correspond to individual ones of the second array of data nodes; wherein individual ones of the first plurality of data nodes correspond to, and are in communication with, individual ones of the second plurality of data nodes to pass a plurality of parallel data bits, the first array of data nodes and the second array of data nodes sharing a physical layout, wherein the first array of data nodes on the first die is arranged as if the second array of data nodes on the second die has been spatially translated from the second die to the first die; further wherein the first plurality of flip-flops is disposed on a first side of the first array, and the second plurality of flip-flops is disposed on a second side of the second array, the first and second sides corresponding to opposite sides of the first and second arrays, respectively, wherein the first clock tree is disposed on the first side of the first array, and the second clock tree is disposed on the second side of the second array, wherein the first side of the first array and the second side of the second array are adjacent to each other.