Rocket - diplomacy - 模块结构信息
作者:互联网
https://mp.weixin.qq.com/s/cTRxXwWNEeb4-XX_t4bRcg
讨论模块结构信息的来源及使用方式。 1. diplomacy diplomacy:外交,谈判的意思。主要用于模块之间的协商参数。 基本思想是首先把模块结构(module hierarchy)抽象为DAG: a. 把模块抽象为点(Node),把模块之间的连接抽象为边(Edge); b. 边是有方向的,上游节点为SourceNode,下游节点为SinkNode; c. Node和Edge组成有向无环图(DAG); 然后根据图的结构,确定部分所需的参数。 因为图就是最终要构建的模块结构,所以全部参数都已经体现在图中,而无需单独维护参数,只需要从图中提取出所需要的参数即可。 2. 模块结构信息 电路模块结构的信息,首先来自于设计者(designer)。 设计者根据模块结构信息,构建出最终的电路模块结构。 从模块结构信息到最终电路结构有几种方式呢? 3. 最传统的方法 最传统的方法是,结构信息始终存在于设计者的心中。设计者根据心中的结构信息,直接构建出具体的模块,然后连接到一起,组成模块结构; 4. 目前流行的做法 目前流行的做法是,把部分结构信息作为parameter或macro提取出来,在模块实现中使用。这样只需要修改parameter的值,而不需要修改模块的实现; 这里有两种情况,一是参数作为模块中的参数使用,用于模块的实现;二是参数决定了模块的个数,用于模块的生成(generate)过程。 5. diplomacy的做法(初步理解) 设计者根据心中的结构信息,构建出模块结构,然后从结构中提取出所需要的参数信息。比如bus上挂了2个模块,那么仲裁所需要的比特数就是2;挂了3个就是3。 这种方法有哪些优点呢? 决定所生成模块个数的参数可以省掉吗?不能,但是要使用DRY(Don't Repeat Yourself)模式,限制参数只在一个集中的地方出现。 可以省掉一部分参数,降低耦合。比如bus不需要知道其上所挂的模块的个数信息。 相较于静态的参数集合直接决定模块结构,这里可以根据模块结构信息,动态的调整上下级节点所使用的参数。参数可以向上游(upward)和下游(downward)进行传播(propagate)。 6. 总结 综合这几种方式,相对比较好的方法是: a. 只集中维护一份参数; b. 这份参数中包含的是每个独立模块的参数,没有模块之间如何耦合的参数; c. 根据模块结构,获取模块之间如何耦合的信息; d. 进行部分参数优化(可省略); e. 生成最终模块结构;标签:Rocket,diplomacy,信息,参数,模块,设计者,结构 来源: https://www.cnblogs.com/wjcdx/p/10427496.html