【问题标题】:What are labels used for in VHDL?VHDL中使用的标签是什么?
【发布时间】:2018-06-06 09:08:39
【问题描述】:

很多 VHDL 结构在声明前都有optional_label 的选项,但是这个标签是做什么用的?

这是来自vdlande 的流程声明示例,显示了标签选项:

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

【问题讨论】:

    标签: vhdl


    【解决方案1】:

    标签用于识别。

    例如 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),这将显示为

    即标签foo 是固定的,而其他进程只是分配了一些引用,在这种情况下是行号。您是否正在使用属性、配置、别名等,您经常需要引用特定对象及其位置。你需要固定的名字。

    如果您查看 IEEE1076-2008 标准,您会发现几乎每个语句都可以有一个标签:ifcaseloop 等。

    【讨论】:

      【解决方案2】:

      正如 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 ( ...
      

      (具体名称取决于合成器。)

      【讨论】:

        猜你喜欢
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-05
        • 1970-01-01
        相关资源
        最近更新 更多