Sigasi Studio can check for a number of array / vector index related problems:
- Index out of range (rule 210).
architecture RTL of array_range_check is signal foo: bit_vector(7 downto 0); signal bar, baz: bit; begin bar <= foo(8); -- 8 is out of range 7 downto 0 baz <= foo(7); end architecture RTL;
- Slice has wrong direction (rule 211).
Slice ranges must use the same direction as the vector.
architecture RTL of array_range_check is constant iterations : integer := 8; signal foo: bit_vector(7 downto 0); signal bar, baz: bit_vector(0 to 7); begin bar <= foo(0 to 7); -- foo has a downto range baz <= foo; end architecture RTL;
These rules can be disabled for your project, or its severity can be modified in the project linting settings.
Manual configuration in