An algorithmic programming language approach to system design enables
design, synthesis, and validation of structured, system-level
specifications, and integrates system-level design into the rest of the
design process. The algorithmic programming language design approach
includes various techniques and tools, which can be used in combination
or independently. For example, the design approach includes techniques
and tools for simplifying specification of a design unit interface in a
programming language specification and/or simplifying specification of
synchronization and sub-design unit concurrency for a design unit.
According to a first aspect of the design approach, design occurs at the
algorithmic level of abstraction. According to a second aspect, the
design approach leverages existing simulation technology for validation
at various stages of the design flow. According to a third aspect, a
design tool synthesizes a structured, programming language specification
into a lower-level specification, such as a VHDL specification.