Method and apparatus for translating an imperative programming language
description of a circuit into a hardware description is described. In one
example, a state object in a function of the imperative programming
language description is identified. Use of the state object in the
function is compared against criteria associated with each of a plurality
of hardware objects. The state object is mapped to a hardware object of
the plurality of hardware objects such that the use of the state object
in the function satisfies the criteria of the hardware object. At least
one instance of the hardware object is generated in the hardware
description.