TWiki
>
P1076 Web
>
VHDL2017
>
LCS2016_045c
(2017-07-24,
JimLewis
)
(raw view)
E
dit
A
ttach
<sticky><!-- * Local SB = <sticky><b> * Local BS = </b></sticky> --></sticky> ---+!! Language Change Specification for Interface Construct and Port Mode Configurations Proposal %TOC% | %SB%LCS Number:%BS% | LCS-2016-045c | | %SB%Version:%BS% | 5 | | %SB%Date:%BS% | 26-Mar-17 | | %SB%Status:%BS% | Voting | | %SB%Author:%BS% | [[Main.BrentHahoe][Brent Hayhoe]] and [[Main.PatrickLehmann][Patrick Lehmann]] | | %SB%Email:%BS% | %USERINFO{"BrentHahoe" format="$emails"}% | | %SB%Source Doc:%BS% | [[InterfaceConstructandPortModeConfigurations#Analysis][Interface Construct and Port Mode Configurations]] %BR% \ [[UCComplexRTLSignalCPUInterface][Use Case - Complex RTL Signal CPU Interface]] | | %SB%History Doc:%BS% | [[LCS2016_045c_History][History]] | | %SB%Summary:%BS% | This LCS details a new attribute for the mode view construct. | | %SB%Related LCS:%BS% | [[LCS2016_045a][LCS-2016-045a]] %BR% \ [[TopLCS2016_045b][LCS-2016-045b]] | ---++ Voting Results: Cast your votes here * Yes: 1. %USERSIG{BrentHahoe - 2017-03-21}% - Version 4 1. %USERSIG{JimLewis - 2017-03-12}% - Version 5 1. %USERSIG{SteveGrout - 2017-03-16}% - Version 1 1. %USERSIG{RobGaddi - 2017-03-30}% - Version 5 - conditional of course on approval of 045a 1. %USERSIG{PatrickLehmann - 2017-03-26}% - Version 5 * No: 1. %USERSIG{PeterFlake - 2017-03-16}% - Version 1 * Abstain: ---++ Style Notes <noautolink> <sticky> * LRM text is shown between single quotes <sticky>%BLACK%'... P1076 LRM quoted text ...'%ENDCOLOR%</sticky> * Existing LRM text is shown in <sticky>%BLACK%<b>BLACK</b> coloured font%ENDCOLOR%</sticky> * Additional LRM text is shown in <sticky>%RED%<b>RED</b> coloured font%ENDCOLOR%</sticky> * Deleted LRM text is shown in <sticky>%RED%<strike><b>RED</b> with strike-through</strike>%ENDCOLOR%</sticky> * In order to try and emphasize text in italic font: * Italic font in existing LRM text is shown in <sticky>%GRAY%<i><b>GRAY</b> italic font</i>%BLACK%</sticky> * Italic font in new LRM text is shown in <sticky>%ORANGE%<i><b>ORANGE</b> italic font</i>%ENDCOLOR%</sticky> * Italic font in deleted LRM text is shown in <sticky>%ORANGE%<strike><i><b>ORANGE</b> with strike-through</i></strike>%ENDCOLOR%</sticky> * Editing instructions (and informative annotations) are shown in <sticky>%GREEN%<b>GREEN</b> coloured font%ENDCOLOR%</sticky> ---++ Reviewing Notes *Version 5:* 26-Mar-2017 * Improved attribute 'CONVERSE * Shrank example to a minimum ---++ Details of Language Change: ---+++ 16.2.1 General Predefined attributes denote values, functions, types, subtypes, %RED%mode views,%ENDCOLOR% signals, and ranges associated with various kinds of named entities. These attributes are described as follows. For each attribute, the following information is provided: %BR% \  — The kind of attribute: value, type, subtype, %RED%mode view,%ENDCOLOR% range, function, or signal %BR% \  — The prefixes for which the attribute is defined %BR% \  — A description of the parameter or argument, if one exists %BR% \  — The result of evaluating the attribute, and the result type (if applicable) %BR% \  — Any further restrictions or comments that apply ---+++ 16.2.7 Predefined attributes of named mode views %GREEN%[New section]%ENDCOLOR% %TABLE{disableallsort="on" tableframe="void" tablerules ="none" valign="baseline" dataalign="left" tablewidth ="800" columnwidths="15%,10%,70%"}% | %RED%M'CONVERSE%ENDCOLOR% | %RED%Kind:%ENDCOLOR% | %RED%Mode view.%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any named mode view M of composite type T, or an alias thereof.%ENDCOLOR% | | | %RED%Result:%ENDCOLOR% |>> %RED%A mode view of composite type T with each element mode EM declared as the converse as that of mode view M.%ENDCOLOR% * %RED%If EM is of mode *in*, the converse mode is *out*.%ENDCOLOR% * %RED%If EM is of mode *out*, the converse mode is *in*.%ENDCOLOR% * %RED%If EM is of mode *inout*, the converse mode is *inout*.%ENDCOLOR% * %RED%If EM is of mode *buffer*, the converse mode is *in*.%ENDCOLOR% * %BLUE%If EM is of mode *null*, the converse mode is *null*.%ENDCOLOR% %GREEN%[If LCS 045b is approved]%ENDCOLOR% * %RED%If EM is a mode view, the converse mode is EM'CONVERSE.%ENDCOLOR% <<| %ORANGE% _Example:_ <pre>%RED% -- A FIFO like streaming interface: <b>type</b> StreamingIf <b>is record</b> Valid : Std_uLogic; Data : Std_uLogic_Vector(7 <b>downto</b> 0); Ack : Std_uLogic; <b>end record</b> StreamingIf; <b>view</b> MasterView <b>of</b> StreamingIf <b>is</b> Valid : <b>out</b>; Data : <b>out</b>; Ack : <b>in</b>; <b>end view</b> MasterView; <b>alias</b> SlaveView is MasterView'CONVERSE; -- Equivalent mode view declaration -- <b>view</b> SlaveView <b>of</b> MasterView <b>is</b> -- Valid : <b>in</b>; -- Data : <b>in</b>; -- Ack : <b>out</b>; -- <b>end view</b> SlaveView; -- A stream processing element <b>entity</b> SPE <b>is</b> <b>port (</b> Clock : <b>in</b> Std_uLogic; Reset : <b>in</b> Std_uLogic; Input : <b>view</b> SlaveView; -- input from previous SPE Output : <b>view</b> MasterView -- output to next SPE <b>)</b>; <b>end entity</b>; %ENDCOLOR%</pre> ---+ Comments %BLACK% This LCS does not show where the attribute is used. -- %BUBBLESIG{PeterFlake - 2017-03-16}% !@PF: Use is shown in the new examples block. %RED%<u><b>Version 2</b></u> * Attribute mode description updated for subviews. * Examples of use added. -- %BUBBLESIG{BrentHahoe - 2017-03-19}% The list of possible kinds must be edited (16.2.1). Why are aliases excluded from the prefix? Why is =M'converse'converse= not allowed? Why uses the example 9-bit for e.g. =RdData=? Why uses =BusSlaveView= such a heavy construct instead of an alias? =alias BusSlaveView is BusMasterView'CONVERSE=. -- %BUBBLESIG{PatrickLehmann - 2017-03-20}% !@PL2: Likewise. For an example, see array attributes or LCS 018 !@PL5: Likewise. Example seems to be inconsistent with syntax. If 'CONVERSE is a record view, then it should be stand-alone or used with an alias and not inside of a view declaration. -- %BUBBLESIG{JimLewis - 2017-03-20}% !@PL1: Added modifications to include mode view entity class kind. !@PL2 & %BR% \ !@JL1: Added missing alias reference in attribute prefix. !@PL3: Why is it disallowed? !@PL4: Why not? This is example code. Have you not heard of parity? !@PL5: The examples are there to indicate how one can define views and not necessarily in the most efficient manner. I have added an alias based declaration example. !@JL2: 'CONVERSE returns a mode view. Mode view declarations may contain mode views of composite elements within that declaration. %RED%<u><b>Version 3</b></u> * Added modifications to section 16.2.1 * Added alias to attribute prefix section 16.2.6 * Added extra example illustrating use of *alias* to declare a mode *view* -- %BUBBLESIG{BrentHahoe - 2017-03-20}% !@BH WRT 'CONVERSE the example I object to is: <pre><b>view</b> BusSlaveView <b>of</b> BusRecordType <b>is</b> BusMasterView'CONVERSE <b>end</b> <b>view</b> BusSlaveView;</pre> Mode view declarations contain mode_view_element_definition. They may contain a choice whose mode is specified with a mode view as you demonstrated with SyncBusSlaveView. However, there are no syntax provisions for BusMasterView'CONVERSE by itself. I think this example should be done with an alias as follows <pre><b>alias</b> BusSlaveView <b>is</b> BusMasterView'CONVERSE ;</pre> -- %BUBBLESIG{JimLewis - 2017-03-20}% In 16.2.1, why did you change "named entities" to "named entity classes". The LRM uses "named entity" and "named entities" to mean any named object in numerous places. OTOH, "named entity classes" is probably not defined anywhere. -- %BUBBLESIG{JimLewis - 2017-03-20}% I'm with Jim there, I think that you can have <pre> <b>type</b> HoldTheBus <b>is record</b> busstop : BusRecordType <b>end record</b> HoldTheBus; <b>view</b> BusSlaveView <b>of</b> HoldTheBus <b>is</b> busstop : view BusMasterView'CONVERSE <b>end</b> <b>view</b> BusSlaveView; </pre> but don't see how you can legally have <pre><b>view</b> BusSlaveView <b>of</b> BusRecordType <b>is</b> BusMasterView'CONVERSE <b>end</b> <b>view</b> BusSlaveView;</pre> -- %BUBBLESIG{RobGaddi - 2017-03-23}% !@RG & !@JL WRT BusMasterView'CONVERSE Point taken. I've been thinking about it this way for so long that it seemed natural. I think *alias* is the correct way to make this converse declaration. We now do not need the second example. !@JL WRT 16.2.1 "entity classes" The BNF in the attribute defines what an entity class is. We seem to have a lot of confusion over entities and the entity class *entity* in the text. i thought that this may clarify the text. OTOH, we also talk about objects a lot when we mean object class. I'm not sure how we should go with this one and am happy to leave it as entities. There is a technical grammar here to be followed. I'm not the one to specify that. ---+++ Version 4 * Removed "entity classes" reference. * Changed 'CONVERSE mode view declaration to be *alias* based. * Removed second example. -- %BUBBLESIG{BrentHahoe - 2017-03-21}% Do we really need such a big example in the LRM? I suggest a smaller FIFO/Streaming bus example (=Data=, =Valid=, =Ack=). The *Result* row in the attribute description should mention that the modes are in the same order. I somehow dislike the <...> notation. The wording element mode does not apply to slices. | M'CONVERSE | Kind: | Mode view. | | | Prefix: | Any named mode view M of composite type T, or an alias thereof, as defined in 6.5.2.1. | | | Result: | %RED%A mode view of composite type T with each element mode EM declared as the converse as that of mode view M.%ENDCOLOR% | | | | * %RED%If EM is of mode *in*, the converse mode is *out*.%ENDCOLOR% | | | | * %RED%If EM is of mode *out*, the converse mode is *in*.%ENDCOLOR% | | | | * %RED%If EM is of mode *inout*, the converse mode is *inout*.%ENDCOLOR% | | | | * %RED%If EM is of mode *buffer*, the converse mode is *in*.%ENDCOLOR% | | | | * %RED%If EM is of mode *null*, the converse mode is *null*.%ENDCOLOR% | | | | * %RED%If EM is a mode view, the converse mode is EM'CONVERSE.%ENDCOLOR% | | | %RED%Restrictions:| %RED%A mode of *linkage* is disallowed within a mode view.%ENDCOLOR% | -- %BUBBLESIG{PatrickLehmann - 2017-03-25}% ---+++ Version 5 %COMMENT% </sticky> </noautolink>
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r23
<
r22
<
r21
<
r20
<
r19
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r23 - 2017-07-24 - 19:46:30 -
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