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

Topic revision: r13 - 2020-06-12 - 05:58:30 - JimLewis
Copyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback