香山源代码剖析-笔记
超大规模集成电路 VLSI
参数协调与 Diplomacy
- 参数协调中的上下游, 取决于谁的参数更具有决定性, 谁的参数更不同于协商
- 例子: 在一个系统中, 二级缓存使用了 IP 核, 具有较小的可定制性, 只能让一级缓存迁就二级缓存, 此时即使从系统架构的角度来看, 二级缓存是一级缓存的下游, 而从参数协调来看, 一级缓存是二级缓存的下游
- 在 Diplomacy 中, 有三种节点 (模块), 这也是从参数协调的角度确定的, 而非通过传统意义上的输入输出端:
- 输入端与输出端数量相等的模块 -> MixedAdapterNode
- 仅有输入端 -> SinkNode
- 仅有输出端 -> SourceNode
- LazyModule
- 对于有参数需要协调的模块, 需要先经过参数的协调才能够创建
Module
, 因此, LazyModule 通过延迟模块的创建, 先进行参数的协调, 在参数协调后才进行模块的创建, 这也是被称为 Lazy
的原因 (延迟创建模块)
- LazyModule 的两个部分:
Module
部分: 所需要创建的 Module
对象, 也就是电路描述部分
Diplomacy
部分:
- 描述本模块中有什么参数需要进行协调? 主方或从方? 协调规则?
- 创建本模块内部的
LazyModule
- ! 注意,
LazyModule
只能在另一个 LazyModule
中创建, 这样才能够构成一个以顶层 LazyModule
为根的模块树
- 说明子模块之间需要有参数协调的互相连接
- 创建的过程:
- 创建
Diplomacy
: 构建整个系统的结构图和参数协调拓扑图
- 实施
Diplomacy
: 自顶向下, 使用深度优先遍历的方法实施参数协调
- 向上游方向进行参数一致化
- 向下游方向进行参数一致化
- 创建双边的物理连接
- 生成
Module
: 生成模块
外设与 AXI4