parsing at semantic level due to ambiguities
There is no reason to "distinguish between value_expression and
type_conversion" since, according to the grammar a type_conversion is
a value_expression.

You probably mean to distinguish between indexed_name and
type_conversion ... and possibly also function_call, but you do not
give its syntax, so I am not sure.

I do not know VHDL, but it may be that the syntax you have is the
syntax used to explain the language to users, not the syntax actually
used in the parser. The parser could simply use a grammar that does not distinguish between
indexed_name and type_conversion, and leave the distinction for a
later processing stage, when the lexical entities have been identified
and their "nature" is known: array, type or function name.

Alternatively, and more likely, it is possible that symbol tables are built as the
program is parsed, and when an identifier is found by the lexer
(lexical analyser), the lexer will look in the table and will tell the
parser whether it is a type_mark or a prefix (i.e., array identifier) before
the parentheses. Then the parser can proceed with the proper rule for
type_conversion or indexed_name.