Date: Fri Aug 22 2003 - 12:24:34 PDT
>Originator: Jay Lawrence - Cadence Design Systems
The following enhancment proposes a new compiler directive intended to allow for including lexically scoped information in a description. This enhancment is motivated by the desire to eliminate the use of comments as a way of embedding content in a description.
Comments in any language are intended to allow the embedding of arbitrary text in a source file. They are intended to make the code more readable and document the functionality and are commonly used for content like copyright notices and revision control information. Over the years however, a form of proprietary language extension has been widely used in the Verilog community by embedding special tokens within comments.
Examples of this include:
// synopsys full_case
// 0-in known_drive
// Sugar assert
This mechanism, first proliferated by synthesis specific directives, has become widely adopted in the industry at this point. It is attractive because the data is inside a comment and tools which do not understand the specific keyword sequence following the comment character just interpret the line as a comment and ignore the content. Its use however points out the need for being able to associate vendor, tool, or methodology specific data with a design in two ways, lexically and syntactically.
A lexical association is one that is has meaning based solely on where it occurs in the source text, not where it occurs relative to the Verilog grammar. The best example of this are the translate_off and translate_on directives commonly used to indicate that a region of a file is not intended for synthesis. These directives can occur anywhere in a source file and have no specified relationship to a given grammatical construct.
To handle the case of lexical association, I proposes a new `pragma compiler directive. This proposal is included in this enhancement request.
A syntactic association is one that is associated syntactically with the design. For instance a full_case directive occurs in specific locations near or in a case statement and applies to that specific statement. Similarly a one_hot directive applies to the registers declared syntactically in the declaration to which the one_hot directive is applied.
To handle the case of syntactic association, a second enhancement will be added that proposes system attributes as a language standard mechanism.
This archive was generated by hypermail 2.1.4
: Fri Aug 22 2003 - 12:31:50 PDT
sponsored by Boyd Technology, Inc.