A calculus in which the behaviour of circuits may be described and analysed is presented. A concurrent composition operator allows descriptions of components to be composed to give descriptions of a complete device. This operator allows synchronous and asynchronous behaviour to be naturally modelled so allowing us to represent and analyse timing issues in circuits. An abstraction operator allows for the formalisation of hierarchical design notions and causes the behaviour of a circuit to be described only in terms of its potential interactions with the environment. To illustrate the use of the calculus, various VLSI circuits have their behaviour described in Circal.