This is an old revision of the document!
Hardware description and specification languages
ACT permits the specification and description of circuits at multiple levels of abstraction. These languages are embedded into ACT as sub-languages. These sub-languages can be used to specify circuits in a variety of ways and at different levels of abstraction. Some sub-languages are only useful when combined with others.
Sub-languages to specify circuits
ACT has the following four sub-languages that are used to specify circuits:
- Communicating hardware processes: a programming language for describing hardware
- Dataflow: a language for specifying static dataflow graphs
- Handshaking expansions: an intermediate form between CHP and PRS
- Production rules: gate-level and transistor-level circuit specification
When simulating a design or translating the circuit to an implementation, the designer must select one of the descriptions in a process. The default level of abstraction selected is PRS followed by HSE (if PRS doesn't exist) followed by CHP (if HSE doesn't exist). Note that dataflow can be viewed as subset of CHP. Often the selection of the sub-language is implicit in the functionality provided by a particular ACT tool/transform. For example, generation of a SPICE output selects the PRS level of abstraction; translation of CHP to PRS selects the CHP level of abstraction. In the case of simulation, configuration files can be used to specify the level of abstraction selected when there is more than one option for a process.
The CHP sub-language is used to describe the circuits using a programming notation. The HSE sub-language operates on Boolean-valued variables, and has syntax similar to the CHP block. A process can have at most one CHP block and at most one HSE block; if multiple blocks of the same type are detected, an error will be flagged.
The dataflow sub-language can be used to specify computations as a static dataflow graph. The PRS sub-language can be used to specify gates as well as transistor-level implementations of circuits. These blocks can be repeated in a process, and the result is the concurrent composition of the blocks.
When translating circuits from one level of abstraction to another (especially going down to production rules), it may be helpful to add additional levels of design hierarchy (e.g. by instantiating standard gates). To support this, ACT includes a refinement body.
- Refinement: specifying circuits using sub-components
The refinement body is simply a standard ACT body. When the refinement body is selected, the other circuit languages are omitted. Similarly when one of CHP/HSE/PRS are selected, the refinement body is omitted.