Определенно, тело пакета IEEE std_logic_1164 не определено Aldec, но все еще распространяется IEEE. Пожалуйста, просто отключите ускорение для этого пакета в других симуляторах, чтобы получить те же результаты, что и Aldec.
Вы превышаете границы своего измерения массива. Пример, который Вам дали, принимал 1 индексный массив, но массивы в рубине 0-индексируемы. Первая строка должна быть
for j in 1...num.length
Другой ответ корректен, что Вы идете мимо конца значений в массиве, потому что это на основе 0, но существуют другие изменения, которые необходимо внести, чтобы заставить алгоритм работать:
for j in 1..(num.length - 1)
и
while i >= 0 and num[i] > key
Просто незначительное дополнение к другому, превосходным ответам:
Я думаю, что является теперь общепринятым, что индексация с 0 источниками имеет много практических и эмпирических преимуществ перед индексацией с 1 источником. Опыт показывает, что это просто "работы лучше" и менее подвержено ошибкам.
Вот почему много вещей числа программистов от нуля, и удивляет "нормальных" людей.