1. A method comprising: arranging a plurality of digital blocks into one or more groups, each group comprising two or more group of two or more digital blocks; programming, by a micro-controller system, a first set of interconnection elements of a programmable interconnect to couple at least the two digital blocks of the one or more groups together; programming, by the micro-controller system, segmentation elements of the programmable interconnect to couple two or more of the first set of interconnection elements together; and programming, by the micro-controller system, the programmable interconnect to couple the plurality of digital blocks to one or more Inputs/Outputs (I/Os).