Для чего используются метки в VHDL? - PullRequest
0 голосов
/ 06 июня 2018

У многих структур VHDL есть опция для optional_label перед объявлением, но для чего используется эта метка?

Вот пример объявления процесса из vdlande , показывающийопция для этикетки:

optional_label: process (optional sensitivity list)
    -- declarations
begin
    -- sequential statements
end process optional_label;

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы можете использовать метки для идентификации вещей в симуляторе, как говорит JHBonarius, но есть и другие варианты использования меток:

i) Определение конца длинного блока кода, например

my_if : if A = B then 
-- lots of lines of code
end if my_if;

ii) отслеживание сложного кода, например

my_if_1 : if A = B then
  my_if_2 : if A = B then
    my_if_3 : if A = B then
      my_if_4 : if A = B then
        my_if_5 : if A = B then
          my_if_6 : if A = B then
          -- blah blah blah
          end if my_if_6;
        end if my_if_5;
      end if my_if_4;
    end if my_if_3;
  end if my_if_2;
end if my_if_1;

iii) Обычно рекомендуется пометить утверждения, чтобы их можно было легко идентифицировать в инструменте EDA, например:

enable_check : assert enable = '1';

iv) Если вы что-то пометите, то вы можете украсить этим атрибутом (т.е. прикрепить некоторые метаданные для какого-либо другого инструмента EDA), например, что-то подобное может остановить синтезатор, оптимизирующий что-топрочь:

attribute KEEP : boolean;
attribute KEEP of g0:label is TRUE;
...
g0 : CLK_EN port map ( ...

(Точные имена будут зависеть от синтезатора.)

0 голосов
/ 06 июня 2018

Этикетки используются для идентификации.

Например, IEEE1076-2008 говорит

7.3.1 Общее

Спецификация конфигурации связывает информацию привязки с компонентом метки , представляющие экземпляры данного объявления компонента.

рассмотрим следующий фрагмент кода:

entity e is end entity;
architecture a of e is begin
    process is begin wait; end process;
    foo: process is begin wait; end process;
end architecture;

В симуляции (с modelsim) это будет отображаться как enter image description here

Т.е. метка foo является фиксированной, в то время как другому процессу просто присваивается некоторая ссылка, в данном случае номер строки.Если вы используете атрибуты, конфигурации, псевдонимы и т. Д., Вам часто приходится ссылаться на конкретные объекты и их местоположение.Для этого вам нужны фиксированные имена.

Если вы посмотрите на стандарт IEEE1076-2008, вы увидите, что у каждого оператора может быть метка: if, case, loop и т. Д.

...