CSE 144 Project
Overall Goal of the Project Implement a physical design tool for a two- row standard cell design
Problems to be resolved Positions of components Which row to place each component: Partitioning The relative position of components in each row: Placement Interconnect between components: Routing
What to optimize? In partitioning: minimize the number of interconnects between partitions (rows) In placement: minimize the overall horizontal length of interconnects In routing: fulfill the geometrical constraints --- wires in the same directions should not overlap
Input Specification Matrix form circuit model: First line: the number of components, N The following N lines: the output-input connections between components A non-zero entry Aij denotes a connection between components i and j The value of Aij denotes the pin number of i Last line: the size of each components
Output Specification Partitioning & Placement Routing Position of pins connected by each net Leftmost and rightmost boundaries of each nets Channel track occupied by each net
Part 1: Partitioning Goal: minimize the number of interconnects crossing the two rows Constraints: partition size should stay within a tolerance window The tolerance bound is the size of the largest component: floor(|V|/2 - Cmax) <= |A| <= ceiling( |V|/2 + Cmax)
Fundamental Ideas The flow of FM algorithm is the same as KL algorithm Two differences: KL: component swap per tentative move FM: one component per tentative move KL: any pair of unlocked components valid FM: only allow moves fulfilling area constraints
Algorithm Initial partitioning (subject to area constraints) Gain calculation (same equations as in KL) Move and lock the component with highest gain, which satisfies area constraints (one component per tentative move). Update gains. Repeat moving until no one can be moved Make permanent all the movements up to and including the move giving the highest accumulative gain Unlock all components and repeat until no improvement can be obtained
How to improve efficiency? Gain updating technique Locked components needn’t be updated Components unconnected to the ones being moved needn’t be updated Use efficient data structure Three data structure candidates provided
Data Structure 1: Linked List Gmax Gmax -2 Current max gain Comp 5Comp 0 Comp 1Comp 3 Comp 4 Gain stamps NIL Unlocked components Always choose component in the highest linked list for tentative move Gain updating corresponds to changing the position of components in the linked lists
Data Structure 2: Gain Matrix c1 c2c3 c4 c5 c Components Gain value Always choose component in the highest row that contains 1-entries Gain updating corresponds to changing the positions of 1- entries in the gain matrix
Data Structure 3: Gain Array Gain updating corresponds to changing the values of the gain array elements Components c1c2c3c4c5c0 Gain
Implementation Requirement Analyze the suggested data structures in terms of Primarily computational efficiency Secondarily space efficiency Implement the most efficient one you think Provide a detailed description of your analysis in your turn-in