VHDL中使用的标签是什么?

Sør*_*nHN 3 vhdl

许多VHDL结构optional_label在声明之前都有选项,但这个标签用于什么?

以下是vdlande的流程声明示例,显示了标签的选项:

optional_label: process (optional sensitivity list)
    -- declarations
begin
    -- sequential statements
end process optional_label;
Run Code Online (Sandbox Code Playgroud)

JHB*_*ius 7

标签用于识别.

例如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;
Run Code Online (Sandbox Code Playgroud)

在模拟中(使用modelsim),这将显示为 在此输入图像描述

即标签foo是固定的,而另一个过程只是分配了一些参考,在这种情况下是行号.您使用的是属性,配置,别名等,通常需要引用特定对象及其位置.你需要固定名称.

如果你看一下IEEE1076-2008标准,你可以看到,大约每隔语句可以有一个标签:if,case,loop,等.


Mat*_*lor 6

正如 JHBonarius 所说,您可以使用标签来识别模拟器中的事物,但标签还有其他用途:

i) 识别一个长代码块的结尾,例如

my_if : if A = B then 
-- lots of lines of code
end if my_if;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

iii) 标记断言通常是个好主意,以便可以在 EDA 工具中轻松识别它们,例如:

enable_check : assert enable = '1';
Run Code Online (Sandbox Code Playgroud)

iv) 如果你标记某物,那么你可以用一个属性来装饰它(即附加一些其他 EDA 工具的元数据),例如这样的事情可能会阻止合成器优化某些东西:

attribute KEEP : boolean;
attribute KEEP of g0:label is TRUE;
...
g0 : CLK_EN port map ( ...
Run Code Online (Sandbox Code Playgroud)

(确切的名称取决于合成器。)