1. A method of synthesising an electronic circuit for performing a function, the method comprising: programming said function using a programming language by defining one or more terms, each term comprising one or more functional constants; applying game semantics to interpret the programmed function, wherein each term is interpreted as one or more strategies defined on moves; associating each of said constants of the programmed function with a sub-circuit that comprises at least one input port and at least one output port, wherein each move is associated with at least one input or output port of the associated sub-circuit, and wherein a move occurrence defined by a strategy produces a change of state of an associated port; and combining the associated sub-circuits to provide a synthesised circuit for performing said function.