TWiki
>
P1076 Web
>
Vhdl2019CollectedRequirements
>
TopLCS2016_026b
(2020-02-17,
JimLewis
)
(raw view)
E
dit
A
ttach
---+ Language Change Specification for Long Integers ---++ | <sticky><b>LCS Number:</b></sticky> | LCS-2016-026b | | <sticky><b>Version:</b> </sticky> | 2 | | <sticky><b>Date:</b> </sticky> | 24-Mar-2017 | | <sticky><b>Status:</b> </sticky> | Voting | | <sticky><b>Author:</b> </sticky> | Patrick Lehmann | | <sticky><b>Email:</b> </sticky> | [[Main.PatrickLehmann]] | | <sticky><b>Source Doc:</b></sticky> | [[LongIntegers][Long Integers]] | | <sticky><b>Summary:</b> </sticky> | Extends the range of integer types values. | ---+++ Voting Results: Cast your votes here Yes: 1 %USERSIG{PatrickLehmann - 2017-03-24}% - ver 2 No: 1 Abstain: 1 ---++ Style Notes <noautolink> <sticky> Changes are shown in %RED%red font%ENDCOLOR%.%BR% Deletions are %RED%<del>crossed out</del>%ENDCOLOR%.%BR% Editing or reviewing notes in %GREEN%green font%ENDCOLOR%. ---++ Reviewing Notes *Version 2:* 24-Mar-2017 * Added overload with <i>universal integer</i> to solve ambiguity problems *Version 1:* 28-Jan-2017 * This is a new variation of the LCS 026 series. It widens the range of universal integer and other related integer sizes but keeps INTEGER as is. ---++ Details of Language Change ---+++ 5.2.3.1 General %GREEN%[Editor note: Paragraph 8]%ENDCOLOR% An implementation may restrict the bounds of the range constraint of integer types other than type _universal_integer_ . However, an implementation %BR% shall allow the declaration of any integer type whose range is wholly contained within the bounds %RED%-(2**63)<del>–2147483647</del>%ENDCOLOR% and %RED%+(2**63)-1<del>+2147483647</del>%ENDCOLOR% %BR% inclusive. ---+++ 5.2.3.2 Predefined integer types %RED%<del>The only predefined integer type is the type INTEGER. The range of INTEGER is implementation dependent, but it is guaranteed %BR% to include the range –2147483647 to +2147483647. It is defined with an ascending range.</del>%ENDCOLOR% %RED%There are three predefined integer types: SYSTEM_INTEGER, INTEGER64 and INTEGER32. The range of SYSTEM_INTEGER is implementation %BR% dependent, but it is guaranteed to include the range -(2**63) to +(2**63)-1. The range of INTEGER64 is -(2**63) to +(2**63)-1 and the range of INTEGER32 is %BR% -(2**31) to +(2**31)-1. All are defined with an ascending range. The declaration of types SYSTEM_INTEGER, INTEGER64 and INTEGER32 appear in package %BR% STANDARD in Clause 16.%ENDCOLOR% <pre>%RED% type SYSTEM_INTEGER is range <implementation_defined%gt;; type INTEGER64 is -(2**63) to (2**63) - 1; type INTEGER32 is -(2**31) to (2**31) - 1; %ENDCOLOR% </pre> NOTE — The range of %RED%SYSTEM%ENDCOLOR%_INTEGER in a particular implementation is determinable from the values of its 'LOW and 'HIGH attributes. %RED%It represents %BR% the biggest available integer range in the tool.%ENDCOLOR% ---+++ 5.2.3.3 Predefined integer subtypes %GREEN%[New]%ENDCOLOR% %RED%The following integer subtypes are predefined: NATURAL64, POSITIVE64, NATURAL32 and POSITIVE32. The listed subtypes appears in %BR% package STANDARD in Clause 16.%ENDCOLOR% <pre>%RED% subtype NATURAL64 is INTEGER64 range 0 to INTEGER64'HIGH; subtype POSITIVE64 is INTEGER64 range 1 to INTEGER64'HIGH; subtype NATURAL32 is INTEGER32 range 0 to INTEGER32'HIGH; subtype POSITIVE32 is INTEGER32 range 1 to INTEGER32'HIGH; %ENDCOLOR% </pre> %RED%For compatibility, the following aliases are defined:%ENDCOLOR% <pre> %RED% alias INTEGER is INTEGER32; alias NATURAL is NATURAL32; alias POSITIVE is POSITIVE32; %ENDCOLOR%</pre> ---+++ 5.2.4.1 General %GREEN%[Editor note: Paragraph 14]%ENDCOLOR% An implementation may restrict the bounds of the range constraint of a physical type. However, an implementation shall allow the declaration of any %BR% physical type whose range is wholly contained within the bounds %RED%-(2**63)<del>–2147483647</del>%ENDCOLOR% and %RED%+(2**63)-1<del>+2147483647</del>%ENDCOLOR% inclusive. ---+++ 5.2.4.2 Predefined physical types The only predefined physical type is type TIME. The range of TIME is implementation dependent, but it is guaranteed to include the range %BR% %RED%-(2**63)<del>–2147483647</del>%ENDCOLOR% to %RED%+(2**63)-1<del>+2147483647</del>%ENDCOLOR%. It is defined with an ascending range. All specifications of delays and pulse rejection limits shall %BR% be of type TIME. The declaration of type TIME appears in package STANDARD in Clause 16. ---+++ 5.2.5.2 Predefined floating-point types The only predefined floating-point type is the type REAL. The range of REAL is host-dependent, but it is guaranteed to be the largest allowed by the %BR% chosen representation. It is defined with an ascending range. %RED%The declaration of type REAL appears in package STANDARD in Clause 16.%ENDCOLOR% ---+++ 5.3.2.2 Index constraints and discrete ranges An index constraint determines the index range for every index of an array type and, thereby, the corresponding array bounds. For a discrete range %BR% used in a constrained array definition and defined by a range, an implicit conversion to the predefined type INTEGER%RED%32%ENDCOLOR% is assumed if the type of %BR% both bounds (prior to the implicit conversion) is the type universal_integer. Otherwise, the type of the range shall be determined by applying the rules %BR% of 12.5 to the range, considered as a complete context, using the rules that the type shall be discrete and that both bounds shall have the same type. %BR% These rules apply also to a discrete range used in a loop parameter specification (see 10.10) or a generate parameter specification (see 11.8). ---+++ 5.3.2.3 Predefined array types The predefined array types are STRING, BOOLEAN_VECTOR, BIT_VECTOR, %RED%INTEGER64_VECTOR,%ENDCOLOR% INTEGER%RED%32%ENDCOLOR%_VECTOR, REAL_VECTOR, and %BR% TIME_VECTOR, defined in package STANDARD in Clause 16. %RED%For compatibility, the alias INTEGER_VECTOR is declared.%ENDCOLOR% The values of the predefined type STRING are one-dimensional arrays of the predefined type CHARACTER, indexed by values of the predefined %BR% subtype POSITIVE%RED%32%ENDCOLOR%: <pre> %RED%<del>subtype POSITIVE is INTEGER range 1 to INTEGER'HIGH;</del>%ENDCOLOR% type STRING is array (POSITIVE%RED%32%ENDCOLOR% range <>) of CHARACTER; </pre> The values of the predefined types BOOLEAN_VECTOR, BIT_VECTOR, %RED%INTEGER64_VECTOR,%ENDCOLOR% INTEGER%RED%32%ENDCOLOR%_VECTOR, REAL_VECTOR, and %BR% TIME_VECTOR, are one-dimensional arrays of the predefined types BOOLEAN, BIT, %RED%INTEGER64,%ENDCOLOR% INTEGER%RED%32%ENDCOLOR%, REAL, and TIME, respectively, indexed %BR% by values of the predefined subtype NATURAL%RED%32%ENDCOLOR%: <pre> %RED%<del>subtype NATURAL is INTEGER range 0 to INTEGER'HIGH;</del>%ENDCOLOR% type BOOLEAN_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of BOOLEAN; type BIT_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of BIT; %RED%type INTEGER64_VECTOR is array (NATURAL32 range <>) of INTEGER64;%ENDCOLOR% type INTEGER%RED%32%ENDCOLOR%_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of INTEGER%RED%32%ENDCOLOR%; type REAL_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of REAL; type TIME_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of TIME; </pre> %RED%For compatibility, the following aliases are defined:%ENDCOLOR% <pre> %RED%alias INTEGER_VECTOR is INTEGER32_VECTOR;%ENDCOLOR% </pre> ---+++ 9.2.4 Shift operators %GREEN%[Editor note: first table]%ENDCOLOR% | *Operator* | *Operation* | *Left operand type* | *Right operand type* | *Result type* | | sll | Shift left %BR% logical | Any one-dimensional array type whose %BR% \ element type is BIT or BOOLEAN | INTEGER%RED%32%ENDCOLOR% | Same as left | | srl | Shift right %BR% logical | Any one-dimensional array type whose %BR% \ element type is BIT or BOOLEAN | INTEGER%RED%32%ENDCOLOR% | Same as left | | sla | Shift left %BR% arithmetic | Any one-dimensional array type whose %BR% \ element type is BIT or BOOLEAN | INTEGER%RED%32%ENDCOLOR% | Same as left | | sra | Shift right %BR% arithmetic | Any one-dimensional array type whose %BR% \ element type is BIT or BOOLEAN | INTEGER%RED%32%ENDCOLOR% | Same as left | | rol | Rotate left %BR% logical | Any one-dimensional array type whose %BR% \ element type is BIT or BOOLEAN | INTEGER%RED%32%ENDCOLOR% | Same as left | | ror | Rotate right %BR% logical | Any one-dimensional array type whose %BR% \ element type is BIT or BOOLEAN | INTEGER%RED%32%ENDCOLOR% | Same as left | ---+++ 9.2.7 Multiplying operators %GREEN%[Editor note: second table]%ENDCOLOR% | *Operator* | *Operation* | *Left operand type* | *Right operand type* | *Result type* | | * | Multiplication | Any physical type | INTEGER%RED%32%ENDCOLOR% | Same as left | | | | %RED%Any physical type%ENDCOLOR% | %RED%INTEGER64%ENDCOLOR% | %RED%Same as left%ENDCOLOR% | | | | %RED%Any physical type%ENDCOLOR% | %RED%<i>Universal integer</i>%ENDCOLOR% | %RED%Same as left%ENDCOLOR% | | | | Any physical type | REAL | Same as left | | | | INTEGER%RED%32%ENDCOLOR% | Any physical type | Same as right | | | | %RED%INTEGER64%ENDCOLOR% | %RED%Any physical type%ENDCOLOR% | %RED%Same as right%ENDCOLOR%| | | | %RED%<i>Universal integer</i>%ENDCOLOR% | %RED%Any physical type%ENDCOLOR% | %RED%Same as right%ENDCOLOR% | | | | REAL | Any physical type | Same as right | | / | Division | Any physical type | INTEGER%RED%32%ENDCOLOR% | Same as left | | | | %RED%Any physical type%ENDCOLOR% | %RED%INTEGER64%ENDCOLOR% | %RED%Same as left%ENDCOLOR% | | | | %RED%Any physical type%ENDCOLOR% | %RED%<i>Universal integer</i>%ENDCOLOR% | %RED%Same as left%ENDCOLOR% | | | | Any physical type | REAL | Same as left | | | | Any physical type | The same type | <i>Universal integer</i> | | mod | Modulus | Any physical type | Same type | Same type | | rem | Remainder | Any physical type | Same type | Same type | Multiplication of a value P of a physical type T<sub>p</sub> by a value I of type INTEGER%RED%64%ENDCOLOR% is equivalent to the following computation: T<sub>p</sub>'Val( Tp'Pos(P) * I ) Multiplication of a value P of a physical type T<sub>p</sub> by a value F of type REAL is equivalent to the following computation: T<sub>p</sub>'Val( INTEGER%RED%64%ENDCOLOR%( REAL( T<sub>p</sub>'Pos(P) ) * F )) Division of a value P of a physical type T<sub>p</sub> by a value I of type INTEGER%RED%64%ENDCOLOR% is equivalent to the following computation: T<sub>p</sub>'Val( T<sub>p</sub>'Pos(P) / I ) %GREEN%[...]%ENDCOLOR% The exponentiating operator !** is predefined for each integer type and for each floating-point type. In either case the right operand, %BR% called the exponent, is of the predefined type INTEGER%RED%32%ENDCOLOR%. %GREEN%[Editor note: last table]%ENDCOLOR% | *Operator* | *Operation* | *Left operand type* | *Right operand type* | *Result type* | | !** | Exponentiation | Any integer type | INTEGER%RED%32%ENDCOLOR% | Same as left | | | | Any floating-point type | INTEGER%RED%32%ENDCOLOR% | Same as left | ---+++ 16.3 Package STANDARD <pre> package STANDARD is %GREEN%[...]%ENDCOLOR% type %RED%SYSTEM%ENDCOLOR%_INTEGER is range implementation_defined; -- The predefined operations for this type are as follows: -- function "**"(anonymous: universal_integer; anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return universal_integer; -- function "**"(anonymous: universal_real; anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return universal_real; -- function "="(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return BOOLEAN; -- function "/="(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return BOOLEAN; -- function "<"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return BOOLEAN; -- function "<="(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return BOOLEAN; -- function ">"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return BOOLEAN; -- function ">="(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return BOOLEAN; -- function "+"(anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "-"(anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "abs"(anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "+"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "-"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "*"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "/"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "mod"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "rem"(anonymous, anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function "**"(anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER; anonymous: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function MINIMUM (L, R: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; -- function MAXIMUM (L, R: %RED%SYSTEM%ENDCOLOR%_INTEGER) return %RED%SYSTEM%ENDCOLOR%_INTEGER; %RED%type INTEGER64 is range implementation_defined; -- The predefined operations for this type are as follows: -- function "**"(anonymous: universal_integer; anonymous: INTEGER64) return universal_integer; -- function "**"(anonymous: universal_real; anonymous: INTEGER64) return universal_real; -- function "="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "+"(anonymous: INTEGER64) return INTEGER64; -- function "-"(anonymous: INTEGER64) return INTEGER64; -- function "abs"(anonymous: INTEGER64) return INTEGER64; -- function "+"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "-"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "*"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "/"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "mod"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "rem"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "**"(anonymous: INTEGER64; anonymous: INTEGER64) return INTEGER64; -- function MINIMUM (L, R: INTEGER64) return INTEGER64; -- function MAXIMUM (L, R: INTEGER64) return INTEGER64;%ENDCOLOR% %RED%type INTEGER32 is range implementation_defined; -- The predefined operations for this type are as follows: -- function "**"(anonymous: universal_integer; anonymous: INTEGER32) return universal_integer; -- function "**"(anonymous: universal_real; anonymous: INTEGER32) return universal_real; -- function "="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "+"(anonymous: INTEGER32) return INTEGER32; -- function "-"(anonymous: INTEGER32) return INTEGER32; -- function "abs"(anonymous: INTEGER32) return INTEGER32; -- function "+"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "-"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "*"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "/"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "mod"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "rem"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "**"(anonymous: INTEGER32; anonymous: INTEGER32) return INTEGER32; -- function MINIMUM (L, R: INTEGER32) return INTEGER32; -- function MAXIMUM (L, R: INTEGER32) return INTEGER32;%ENDCOLOR% %GREEN%[...]%ENDCOLOR% -- Predefined type TIME: type TIME is range implementation_defined units fs; -- femtosecond ps = 1000 fs; -- picosecond ns = 1000 ps; -- nanosecond us = 1000 ns; -- microsecond ms = 1000 us; -- millisecond sec = 1000 ms; -- second min = 60 sec; -- minute hr = 60 min; -- hour end units; -- The predefined operations for this type are as follows: -- function "="(anonymous, anonymous: TIME) return BOOLEAN; -- function "/="(anonymous, anonymous: TIME) return BOOLEAN; -- function "<"(anonymous, anonymous: TIME) return BOOLEAN; -- function "<="(anonymous, anonymous: TIME) return BOOLEAN; -- function ">"(anonymous, anonymous: TIME) return BOOLEAN; -- function ">="(anonymous, anonymous: TIME) return BOOLEAN; -- function "+"(anonymous: TIME) return TIME; -- function "- (anonymous: TIME) return TIME; -- function "abs"(anonymous: TIME) return TIME; -- function "+"(anonymous, anonymous: TIME) return TIME; -- function "-"(anonymous, anonymous: TIME) return TIME; -- function "*"(anonymous: TIME; anonymous: INTEGER%RED%32%ENDCOLOR%) return TIME; %RED%-- function "*"(anonymous: TIME; anonymous: INTEGER64) return TIME;%ENDCOLOR% -- function "*"(anonymous: TIME; anonymous: REAL) return TIME; -- function "*"(anonymous: INTEGER%RED%32%ENDCOLOR%; anonymous: TIME) return TIME; %RED%-- function "*"(anonymous: INTEGER64; anonymous: TIME) return TIME;%ENDCOLOR% -- function "*"(anonymous: REAL; anonymous: TIME) return TIME; -- function "/"(anonymous: TIME; anonymous: INTEGER%RED%32%ENDCOLOR%) return TIME; %RED%-- function "/"(anonymous: TIME; anonymous: INTEGER64) return TIME;%ENDCOLOR% -- function "/"(anonymous: TIME; anonymous: REAL) return TIME; -- function "/"(anonymous, anonymous: TIME) return universal_integer; -- function "mod"(anonymous, anonymous: TIME) return TIME; -- function "rem"(anonymous, anonymous: TIME) return TIME; -- function MINIMUM (L, R: TIME) return TIME; -- function MAXIMUM (L, R: TIME) return TIME; %GREEN%[...]%ENDCOLOR% -- Predefined numeric subtypes: %RED%subtype NATURAL64 is INTEGER64 range 0 to INTEGER64'HIGH;%ENDCOLOR% %RED%subtype POSITIVE64 is INTEGER64 range 1 to INTEGER64'HIGH;%ENDCOLOR% subtype NATURAL%RED%32%ENDCOLOR% is INTEGER%RED%32%ENDCOLOR% range 0 to INTEGER%RED%32%ENDCOLOR%'HIGH; subtype POSITIVE%RED%32%ENDCOLOR% is INTEGER%RED%32%ENDCOLOR% range 1 to INTEGER%RED%32%ENDCOLOR%'HIGH; %RED%alias INTEGER is INTEGER32;%ENDCOLOR% %RED%alias NATURAL is NATURAL32;%ENDCOLOR% %RED%alias POSITIVE is POSITIVE32;%ENDCOLOR% %GREEN%[...]%ENDCOLOR% -- Predefined array types: type STRING is array (POSITIVE%RED%32%ENDCOLOR% range <>) of CHARACTER; -- The predefined operations for these types are as follows: %GREEN%[...]%ENDCOLOR% type BOOLEAN_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of BOOLEAN; -- The predefined operations for this type are as follows: %GREEN%[...]%ENDCOLOR% type BIT_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of BIT; -- The predefined operations for this type are as follows: %GREEN%[...]%ENDCOLOR% %RED%type INTEGER64_VECTOR is array (NATURAL64 range <>) of INTEGER64; -- The predefined operations for this type are as follows: -- function "="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "&"(anonymous: INTEGER64_VECTOR; anonymous: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function "&"(anonymous: INTEGER64_VECTOR; anonymous: INTEGER64) return INTEGER64_VECTOR; -- function "&"(anonymous: INTEGER64; anonymous: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function "&"(anonymous: INTEGER64; anonymous: INTEGER64) return INTEGER64_VECTOR; -- function MINIMUM (L, R: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function MAXIMUM (L, R: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function MINIMUM (L: INTEGER64_VECTOR) return INTEGER64; -- function MAXIMUM (L: INTEGER64_VECTOR) return INTEGER64;%ENDCOLOR% type INTEGER%RED%32%ENDCOLOR%_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of INTEGER%RED%32%ENDCOLOR%; -- The predefined operations for this type are as follows: -- function "="(anonymous, anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return BOOLEAN; -- function "&"(anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR; anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return INTEGER%RED%32%ENDCOLOR%_VECTOR; -- function "&"(anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR; anonymous: INTEGER%RED%32%ENDCOLOR%) return INTEGER%RED%32%ENDCOLOR%_VECTOR; -- function "&"(anonymous: INTEGER%RED%32%ENDCOLOR%; anonymous: INTEGER%RED%32%ENDCOLOR%_VECTOR) return INTEGER%RED%32%ENDCOLOR%_VECTOR; -- function "&"(anonymous: INTEGER%RED%32%ENDCOLOR%; anonymous: INTEGER%RED%32%ENDCOLOR%) return INTEGER%RED%32%ENDCOLOR%_VECTOR; -- function MINIMUM (L, R: INTEGER%RED%32%ENDCOLOR%_VECTOR) return INTEGER%RED%32%ENDCOLOR%_VECTOR; -- function MAXIMUM (L, R: INTEGER%RED%32%ENDCOLOR%_VECTOR) return INTEGER%RED%32%ENDCOLOR%_VECTOR; -- function MINIMUM (L: INTEGER%RED%32%ENDCOLOR%_VECTOR) return INTEGER%RED%32%ENDCOLOR%; -- function MAXIMUM (L: INTEGER%RED%32%ENDCOLOR%_VECTOR) return INTEGER%RED%32%ENDCOLOR%;%ENDCOLOR% %RED%alias INTEGER_VECTOR is INTEGER32_VECTOR;%ENDCOLOR% %GREEN%[...]%ENDCOLOR% type REAL_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of REAL; -- The predefined operations for this type are as follows: %GREEN%[...]%ENDCOLOR% type TIME_VECTOR is array (NATURAL%RED%32%ENDCOLOR% range <>) of TIME; -- The predefined operations for this type are as follows: %GREEN%[...]%ENDCOLOR% -- Predefined TO_STRING operations on scalar types -- function TO_STRING (VALUE: BOOLEAN) return STRING; -- function TO_STRING (VALUE: BIT) return STRING; -- function TO_STRING (VALUE: CHARACTER) return STRING; -- function TO_STRING (VALUE: SEVERITY_LEVEL) return STRING; -- function TO_STRING (VALUE: universal_integer) return STRING; -- function TO_STRING (VALUE: universal_real) return STRING; -- function TO_STRING (VALUE: %RED%SYSTEM_%ENDCOLOR%INTEGER) return STRING; %RED%-- function TO_STRING (VALUE: INTEGER32%ENDCOLOR%) return STRING; %RED%-- function TO_STRING (VALUE: INTEGER64%ENDCOLOR%) return STRING; -- function TO_STRING (VALUE: REAL) return STRING; -- function TO_STRING (VALUE: TIME) return STRING; -- function TO_STRING (VALUE: FILE_OPEN_KIND) return STRING; -- function TO_STRING (VALUE: FILE_OPEN_STATUS) return STRING; -- Predefined overloaded TO_STRING operations -- function TO_STRING (VALUE: REAL; DIGITS: NATURAL%RED%32%ENDCOLOR%) return STRING; -- function TO_STRING (VALUE: REAL; FORMAT: STRING) return STRING; -- function TO_STRING (VALUE: TIME; UNIT: TIME) return STRING; </pre> ---+++ Annex D (Potentially nonportable constructs) The use of the following constructs may lead to nonportable VHDL descriptions: * icon:line_lr Resolution functions that do not treat all inputs symmetrically * icon:line_lr The comparison of floating-point values * icon:line_lr Events on floating-point-valued signals * icon:line_lr The use of explicit type conversion to convert floating-point values to integer values * icon:line_lr Any value that does not fall within the minimum guaranteed range for the type * icon:line_lr The use of architectures and subprogram bodies implemented via the foreign language interface (the 'FOREIGN attribute) * icon:line_lr Processes that communicate via file I/O, including TEXTIO * icon:line_lr Impure functions * icon:line_lr Linkage ports * icon:line_lr Ports and generics in the root of a design hierarchy * icon:line_lr Use of a time resolution greater than 1 fs * icon:line_lr Shared variables * icon:line_lr Procedure calls passing a single object of an array or record type to multiple formals where at least one of the formals is of mode out or inout * icon:line_lr Models that depend on a particular format of T'IMAGE * icon:line_lr %RED%<del>Declarations of integer or physical types that have a secondary unit whose position number is outside of the range –(2**31–1) to 2**31–1</del>%ENDCOLOR% * icon:line_lr The predefined attributes 'INSTANCE_NAME or 'PATH_NAME, if the behavior of the model is dependent on the values returned by the attributes * icon:line_lr Use of a conversion specifier F, a, or A in the value for the FORMAT parameter of a call to the predefined function TO_STRING ---++ Comments ---+++ Version 1 %COMMENT% </sticky> </noautolink>
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r5
<
r4
<
r3
<
r2
<
r1
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r5 - 2020-02-17 - 15:34:41 -
JimLewis
P1076
Log In
or
Register
P1076 Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
Webs
Main
P1076
Ballots
LCS2016_080
P10761
P1647
P16661
P1685
P1734
P1735
P1778
P1800
P1801
Sandbox
TWiki
VIP
VerilogAMS
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback