specifications - 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 文件中为寄存器定义“内部”和“外部”的任何指导?
谢谢
解决方案
你的理解是正确的。和组件修饰符用于影响 RTL 生成器的输出internal
。internal
默认情况下,寄存器、regfile 和字段是内部的,因此它们将包含在 RTL 生成器的输出中。如果您将组件标记为外部组件,则表示您向编译器发出信号,您希望自己定义寄存器/字段/等的实现。然后编译器会为您提供某种形式的接口以在外部实现组件,但它仍然是导出到 RTL 的父级地址空间的一部分。
值得一提的是,addrmap
组件默认是隐式外部的,因为它们旨在描述 RTL 组件之间的物理边界。
推荐阅读
- cmake - cmake 中有没有办法保存 install_manifest.txt 以备后用
- c# - Swagger 没有使用 apiexplorer 为 swagger.json 生成版本 2
- python - 如何从 openpyxl 中的两个列表创建折线图?
- node.js - VSCode:Prettier 不适用于 Dart Flutter
- python - Python 在数百条记录后中止 - ValueError: If using all scalar values, you must pass a index
- swiftui - 获取 TabView 中的当前索引(PageTabViewStyle)
- python - Pandas Dataframe 从函数覆盖而不是附加
- msbuild - 自定义构建规则
标记检查 Visual Studio 2019 中更改的目录? - c++ - C ++:未调用移动构造函数
- json - API 平台:具有嵌套实体的组仅在删除 @ApiResource 时有效