【问题标题】:What is the usefulness of a component declaration?组件声明的用处是什么?
【发布时间】:2019-03-19 07:05:49
【问题描述】:

随着 VHDL '93 引入直接实例化,当您的实体在 VHDL 中时,您现在何时实际使用组件?以下是我能想到的唯一需要组件的情况:

  1. 组件映射到非 VHDL 源代码(Verilog、网表等)
  2. 你还没有源代码,需要一些东西来编译(例如,同事还没有完成他们的代码)
  3. 您正在通过配置将不同的实体/架构对绑定到特定实体中的特定组件。 (但谁真正做到了这一点?也许如果你有一个模拟拱门和合成拱门 - 但同样 - 从未见过它以任何有意义的方式使用)

我不赞成那些说“一个组件让我看到同一个文件中的端口映射”或“拥有一个组件库让我看到一切”的人。这主要是人们已经习惯的老式方法。在我看来,在两个地方维护相同的代码是没有意义的。

还有其他我错过的吗?

【问题讨论】:

  • 括号中的 cmets 和最后一段征求使用意见。参见 IEEE Std 1076-2008 6.8 组件声明“组件声明声明了一个与虚拟设计实体的接口,该接口可用于组件实例化语句中。组件配置或配置规范可用于将组件实例与设计实体相关联位于图书馆中。”
  • 但是我在一个需要组件声明的例子之后,而不是可以选择使用的地方。对于我提到的那些实例,在文件或包中包含组件声明通常只是一种编码风格,而不是代码要求(撇开编码指南要求的公司)。
  • 我想你已经回答了你自己的问题。除了 2 和 3 之外,我想不出任何其他原因(并且没有遇到需要 1 的模拟器,但我没有做过调查)。
  • 组件声明有什么用处? 11.7.2 组件的实例化 “组件实例化语句,其实例化单元包含一个名称,表示一个组件相当于一对嵌套块语句,它们将包含设计单元中的块层次结构耦合到另一个设计单元中包含的块层次结构的唯一副本......外部块代表组件声明;内部块代表组件绑定到的设计实体。每个都由块语句定义。此处需要组件声明。
  • @MatthewTaylor 请查看我对其他用例的回答。

标签: vhdl


【解决方案1】:

抱歉Can't compile VHDL package - Modelsim error: (vcom-1576) expecting END回复晚了

除了 OP 列出的用例以及符合他不太有用的用例标准,我将再添加两个用例:

  1. 要编写独立于平台的代码,需要实现例如Altera 和 Xilinx 特定解决方案。此代码将引用供应商特定的库,例如 alter_mfunisim。两种供应商特定的实现都可以通过 if ... generate 语句来选择,或者从 VHDL-2008 开始通过 case ... generate 语句来选择。
    但即使使用 generate 语句,此解决方案也需要实例化组件,因为直接实体实例化的实例是绑定的,而不管某些实例永远不会出现在详细模型中的事实。 (我认为这是语言中的一个错误 - 但没有时间针对 VHDL-2018 进行调查和修复。)因为一个实体被立即绑定,该工具会尝试加载引用的供应商库及其包。
    假设您使用 Quartus 在 Altera 上编译,它会报错未知的 unisim 库和未知的 vcomponents 包。 Xilinx 上也发生了同样的情况,Vivado 抱怨未知的 altera_mf 库。
    因此,为了切断(直接)实例化树,需要一个组件实例化。

    PoC-Library 使用此技术。例如,请参阅 PoC.misc.sync.Bits 实现,了解标准双 FF 同步器,该同步器具有应用于 Altera、Xilinx 或通用实现的不同属性。

  2. Open Source VHDL Verification Methodology (OSVVM) 中,组件用于两个用例:

    1. 在顶级 DUT 中,IP 内核被实例化为组件,因此它们可以被虚拟实现替换。作为未绑定的组件或作为加载虚拟架构的组件。这可以加快模拟速度,减少测试中可能出现的错误源,用更简单、更快的实现代替复杂的慢速实现,例如 MGT 或内存控制器,...
    2. 在 OSVVM 中,测试控制在名为 TestController 的单独实体中实现。该实体有几种架构来实现应用于相同测试难度的不同测试用例。架构与每个测试用例/架构的顶级配置绑定。因此,运行“测试平台”意味着精心设计和模拟其中一种配置。

【讨论】:

    猜你喜欢
    • 2016-11-07
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多