Depricated: Protected Type Update - Now separate proposals
Proposal Information
- State of this Proposal: Raw / Stream of Conscious
- Current Owner: JimLewis, ...
- Contributors: JimLewis, ...
- Date Proposed: 2012-Jan-05
- Date Last Updated: 2012-Aug-10
- Priority:
- Complexity:
- Focus: Testbench
- Related Issues: None
- Competing Issues: None
Requirement Summary
Collection of potential updates to protected types
What is the nature of a protected type?
A protected type is a container. It has members in the form of private variables and subprogram methods (aka: procedures and functions). Variables inside a protected type are local and cannot be modified directly. Instead they are modified by calls to the protected type methods.
As a container, protected types are useful for creating data structures, such as scoreboards, FIFOs, memories, and functional coverage models.
A protected type is used with a shared variable (when declared in a
concurrent declaration region - such as an architecture) or a
regular variable (when declared in a sequential declaration region - such as a process).
However, calling it a variable in some ways is troubling.
Assignment operations are not supported for protected type.
So instead, a variable of a protected type is simply a handle
that is used to call methods within the protected type.
With modification, it has potential to be an abstract interface or
channel between objects (such as entities).
Proposed 202X: Mechanism to Suspend and Wake on Event
See proposal:
Protected Types: Wait and Private Signals
Motivation: Handshaking between different models connected by a shared variable.
Proposed 202X: Private Signal Members
See proposal:
Protected Types: Wait and Private Signals
Motivation: Event triggers
Proposed 202X: Public Signal Members
See proposal:
Protected Types with Public Signals
Motivation: Abstract interface/Communication Channel. Connection similar to a record.
Clarified LRM in 2019: Attributes to Determine Declaration Context
See proposal:
Paths to Protected Type Instances and Subprogram Calls
Motivation: get 'instance_name and 'path_name of corresponding variable / shared variable declaration
Done 2019: Usage on Entity Interfaces
See proposal:
Shared Variables on Entity Interface
Motivation: Abstract interface/Communication Channel
Done 2019: File Parameters on Protected Type Methods
See proposal
Allow Protected Type Method Parameters to be ...
Done 2019: Alias to Methods
See proposal:
Protected Types and Aliases
Motivation: allow subprograms to have alternate names. Helps with long term maintence of subprograms where a name change may be necessary to align with another group's methodology.
Done 2019: Composites of PTs
See proposal:
composites of protected types
Arrays and records with PTs as elements.
Uses: Arrays of scoreboards, Arrays of Coverage Models, Arrays of Interfaces, ...
Done 2019: Function with protected type inputs
See Proposal:
Allow access and protected type parameters on function interfaces
Done 2019: Generics on Protected Types
See proposal:
Generics on Protected Types