[an error occurred while processing this directive]
|
function "<"(L: UNSIGNED; R: INTEGER) return BOOLEAN is
-- pragma label_applies_to lt
-- synopsys subpgm_id 309
constant length: INTEGER := L'length + 1;
begin
return is_less(CONV_SIGNED(L, length),
CONV_SIGNED(R, length)); -- pragma label lt
end;
Так что, ISE синтезирует правильно.
А вот причиной того, что в реализации CONV_SIGNED нет ассерта на отсутствие переполнения, чтобы отсечь такие ошибки при симуляции, на мой взгляд, является недостаточно качественная реализация функции conv_signed. Я, например, с некоторых пор стараюсь std_logic не пользовать без особой нужды. А если пользую - стараюсь писать явное преобразование типа, когда яспользую в выражениях совместно с другими типами.
E-mail: info@telesys.ru