Skip to content

Use "private" keyword in type declaration to prevent objects of this type.

Allow the use of the VHDL 2019 private keyword in type declarations, preventing creating objects of this type directly. A user then must use a defined subtype:

eg:

type axis_t is private record
  tdata : std_logic_vector;
  tkeep : std_logic_vector;
  --etc
end record axis_t;

signal s1 : axis_t(tdata(63 downto 0), tkeep(7 downto 0));  -- ilegal and compiler error;

subtype axis_64_t is axis_t(tdata(63 downto 0), tkeep(7 downto 0));

signal s2 : axis_64_t;  -- legal

private should also be available in subtypes if a user wanted to create a partially constrained version of the base type, but still require a fully constrained final version.

On an interface list, a user can still use a private type, as the object connected will always be a legal subtype.

Edited by Richard Head
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information