首页 > 解决方案 > systemRDL 寄存器组件属性中的黑白“内部”和“外部”差异

问题描述

我对 systemRDL 注册组件属性使用中的“内部”和“外部”感到困惑。来自 SystemRDL 2.0 参考手册,它说:

Registers can be instantiated in three forms.
    — **internal** implies all register logic is created **by the SystemRDL compiler** for the instantiation (the default form).
    — **external** signifies the register/memory is implemented by the designer and the interface is inferred from instantiation.

如何理解它们?我了解此属性会影响从 RD 文件生成 RTL 模块

我的困惑点是“内部”部分描述中的“systemRDL 编译器”语句。如果我们说 systemRDL 编译器是解释 rd 文件并将所有相关属性放入一个普通数据库中,用户可以根据这些普通数据库自定义生成器,所以看起来这些“内部”和“外部”关键字只会在我们编写时使用RTL寄存器模块部分的生成器,我的理解正确吗?

在 RD 文件中为寄存器定义“内部”和“外部”的任何指导?

谢谢

标签: specifications

解决方案


你的理解是正确的。和组件修饰符用于影响 RTL 生成器的输出internalinternal默认情况下,寄存器、regfile 和字段是内部的,因此它们将包含在 RTL 生成器的输出中。如果您将组件标记为外部组件,则表示您向编译器发出信号,您希望自己定义寄存器/字段/等的实现。然后编译器会为您提供某种形式的接口以在外部实现组件,但它仍然是导出到 RTL 的父级地址空间的一部分。

值得一提的是,addrmap组件默认是隐式外部的,因为它们旨在描述 RTL 组件之间的物理边界。


推荐阅读