1. 程式人生 > >Rocket - diplomacy - 模塊結構信息

Rocket - diplomacy - 模塊結構信息

als sin init nod roc 對比 initials 限制 這份

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 - 模塊結構信息