Различия между тем, как симулятор и синтезатор обрабатывает код VHDL - PullRequest
0 голосов
/ 22 мая 2018

В недавнем вопросе ( Разница в инициализации конечного автомата между симулятором и синтезатором ) я обнаружил, что симуляторы и синтезаторы не всегда обрабатывают код VHDL одинаково.Например, при инициализации конечного автомата с использованием перечислимого типа симулятор по умолчанию использует левое значение перечислителя;тем не менее, он не выглядит таким четким, как значение по умолчанию для синтезатора.

Будучи относительно новым для VHDL и FPGA, мне стало интересно, есть ли другие различия между этими двумя, которые были бы полезнызнать о.Кто-нибудь знает о таких различиях, которые они поделили бы?Даже ссылки на другие места, объясняющие такие различия, были бы полезны.

Спасибо

1 Ответ

0 голосов
/ 22 мая 2018

Я из Verilog, но применяются те же правила.

1 / Не используйте инициализацию, используйте сброс.
2 / Не используйте список чувствительности.Используйте всегда @ (*) или always_comb
Я не знаю VHDL-эквивалент этого, но я предполагаю, что кто-то скоро укажет это в комментарии; -)
3 / НикогдаПредположим, всегда знаю , какая логика будет генерироваться.Если вы не уверены, используйте другую языковую конструкцию или узнайте.
4 / Будьте суетливым, дотошным, точным, чрезмерно упорядоченным, лучшее описание: будьте анальным!

КстатиЯ следовал за упомянутым постом и был несколько ошеломлен этим.Я буду честен: я не люблю VHDL по многим причинам и думал, что единственное преимущество этого в том, что такие ошибки невозможны из-за строгой проверки типа и длины вектора.Очевидно, нет, поэтому единственная оставшаяся причина для использования VHDL выходит за рамки для меня.

...