1. A non-transitory processor-readable storage medium having stored thereon a linker program of computer-executable instructions, wherein execution of the linker program by the computer causes the computer to perform steps comprising: (a) receiving into a linker location information indicative of a location where an amount of executable code is to be loaded; (b) receiving an instruction into the linker, wherein the instruction defines a first symbol to have a scope of a sub-circuit scope level and a second symbol to have a scope of a circuit scope level; (c) receiving into the linker an amount of object code having two instances of the first symbol and two instances of the second symbol, wherein the first instance of the first symbol and the first instance of the second symbol are in a first portion of code to be loaded into a first processor's program memory, and wherein the second instance of the first symbol and the second instance of the second symbol are in a second portion of code to be loaded into a second processor's program memory; (d) performing a symbol uniquification step by traversing the amount of object code and if an instance of an unresolved symbol is encountered and is of the sub-circuit scope level then the symbol is uniquified to create a new symbol, wherein the uniquification results in all instances of the same symbol within code for the same sub-circuit being replaced with instances of the same new symbol and such that the new symbol is unique with respect to symbols appearing in code for other sub-circuits, whereas if the symbol is of the circuit scope level then the symbol instance is not uniquified, wherein the symbol uniquification step (d) is performed by the linker; (e) performing an allocation of resource instances step thereby generating the amount of executable code, wherein in the amount of executable code the first instance of the first symbol is replaced with a first address of a resource instance, wherein the second instance of the first symbol is replaced with a second address of a resource instance, and wherein the first and second instances of the second symbol are both replaced with a third address of a resource instance, wherein the first, second and third addresses are all different addresses; and (f) outputting the amount of executable code from the linker.