ISAC: Analysis of IR 2112 (note correct number this time!)

From: Chuck Swart <cswart_at_.....>
Date: Mon Apr 02 2007 - 11:07:25 PDT
Peter has provided the analysis for this.

Chuck


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



VHDL Issue Number:        2112

Language_Version          VHDL-2002
Classification            Language Definition Problem
Summary                   Can attributes be applied to a signal on the entity within the 
                          architecture for that entity?
Relevant_LRM_Sections     VHDL LRM (2002) and in the section 4.4 (Attribute declarations)
Related_Issues
Key_Words_and_Phrases
Authors_Name              Kevin Jennings
Authors_Phone_Number      734-737-4268
Authors_Fax_Number        734-737-4740
Authors_Email_Address     Kevin.Jennings@Unisys.com
Authors_Affiliation       Unisys
Authors_Address1          41100 Plymouth Road
Authors_Address2          Plymouth, Michigan 48170
Authors_Address3

Current Status:           Analyzed

Superseded By:

------------------------
Date Submitted:           28 March 2007
Date Analyzed:            31 March 2007
Author of Analysis:       Peter Ashenden
Revision Number:          1
Date Last Revised:        31 March 2007

Description of Problem
----------------------

Below I've attached some VHDL code where a particular signal on the
entity (za_data) has an attribute defined for it in the architecture
for that entity.  This code is being handled correctly by both
Modelsim (6.2c) and Quartus (6.1) but Synplify 8.8 spits out a warning
(also pasted below) which essentially says that the attribute
declaration must be put in the entity, not in the architecture.

I've opened a service request to Synplify about this back in September
2006 and just recently.  Back in September, the folks at Synplicity
agreed that this was a bug and they would fix it in the next release.
The next release (8.8) came out, I tried it and saw that the problem
has not been fixed so I opened another service request.  Now they are
saying that this 'seems to' not be a bug.  So, per the LRM, is it a
bug or isn't it?

 The short version synopsis of the code is something like

    entity sdram_0 is
            port (
            ...
                     signal za_data : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
            ...
                  );
    end entity sdram_0;


    architecture europa of sdram_0 is
        ...
    attribute ALTERA_ATTRIBUTE : string;
    attribute ALTERA_ATTRIBUTE of za_data : signal is "FAST_INPUT_REGISTER:    ON";

    begin
        ...
    end europa;

    ---- Start of warning message ----
    No such identifier, za_data, of proper type in current declarative region
    ---- End of warning message ----



Proposed Resolution
-------------------

I'd just like a clarification on the issue.

VASG-ISAC Analysis & Rationale
------------------------------

Subclause 5.1 of IEEE 1076-2002 states:

  "... an attribute specification for an attribute of an interface
  object of a design unit, subprogram, or block statement must appear
  immediately within the declarative part of that design unit,
  subprogram, or block statement."

A port of an entity is an interface object of the entity, and so any
attribute specification decorating the port must appear immediately
within the declarative part of the entity. The declarative part of an
entity is defined in the syntax rules for an entity in subclause 1.1,
and does not include the text of any architecture body associated with
that entity. It is possible that the submitter is confusing the
declarative part of the entity with the declarative region, which does
extend to the architecture.

Thus, the submitter's code is incorrect. The attribute specification
should appear immediately within the entity declarative part.


VASG-ISAC Recommendation for IEEE Std 1076-2002
-----------------------------------------------

No change.

VASG-ISAC Recommendation for Future Revisions
---------------------------------------------

No change.


-------------END OF IR----------------
Received on Mon Apr 2 11:07:41 2007

This archive was generated by hypermail 2.1.8 : Mon Apr 02 2007 - 11:07:42 PDT