Why is this an issue?

integer, natural and positive declarations should always be constrained by a range to optimize synthesis.

How to fix it

Code examples

Noncompliant code example

signal s : integer; -- Noncompliant
subtype st is natural; -- Noncompliant
variable v : positive; -- Noncompliant
generic (
  a : integer; -- Noncompliant
);

Compliant solution

signal s : integer range 0 to 3;
subtype st is natural range 0 to 3;
variable v : positive range 1 to 3;
generic (
  a : integer range 0 to 3;
);