Unverified Commit ea586472 by ZhiangWang033 Committed by GitHub

Update README.md

parent cba4017f
...@@ -18,24 +18,19 @@ The following figure shows an example of netlist representation in Circuit Train ...@@ -18,24 +18,19 @@ The following figure shows an example of netlist representation in Circuit Train
The left part is the real netlist; The right part is the Netlist Protocol Buffer The left part is the real netlist; The right part is the Netlist Protocol Buffer
representation in Circuit Training. The solid arrow means the real signal net and the dashed representation in Circuit Training. The solid arrow means the real signal net and the dashed
arrow means the virtual nets between macro A and its macro pins. arrow means the virtual nets between macro A and its macro pins.
We can see that the macro pins and the related macro are both basic elements in the netlist, whereas there is no pins of standard cells. Thus, it's necessary to group the macros pins of the same macro into a cluster, because the macro pins of the same macro will always stay together during macro placement. Note that only the macro pins are grouped and the macro itself is not grouped. For example, in this figure, **D\[0\]**, **D\[1\]**, **D\[2\]**, **Q\[0\]**,
**Q\[1\]**, **Q\[2\]** are grouped into **cluster_1**, but **cluster_1** does not include macro A.
<img src="./macro_example.png" width= "1600"/> <img src="./macro_example.png" width= "1600"/>
As shown in above figure, the macro pins and the related macro are both basic elements in the netlist, whereas there is no pins of standard cells. Thus, it's necessary to group the macros pins of the same macro into a cluster, because the macro pins of the same macro will always stay together during macro placement. Note that only the macro pins are grouped and the macro itself is not grouped. For example, in above figure, **D[0]**, **D[1]**, **D[2]**, **Q[0]**,
**Q[1]**, **Q[2]** are grouped into **cluster_1**, but **cluster_1** does not include macro A.
- Group the IOs that are within close proximity of each other boundary by boundary, - Group the IOs that are within close proximity of each other boundary by boundary,
following the order of **LEFT** &rarr **TOP** &#8595 **RIGHT** &#8595 **BOTTOM**. following the order of **LEFT** <span>&rarr;</span> **TOP** <span>&rarr;</span> **RIGHT** <span>&rarr;</span> **BOTTOM**. For the **LEFT**/**RIGHT**(**TOP**/**Bottom**) boundary, we sort the all the ports on the boundary based on their y (x) coordinates in a non-decreasing order. Starting from the first IO port on the boundary, we group the IO ports within each **grid_height** (**grid_width**) into an IO cluster. For example, in following figure, we have three IO clusters on **TOP** boundary and two IO clusters on **RIGHT** boundary. The **grid_width** and **grid_height** are calculated based on the **n_cols** and **n_rows**:
For the **LEFT**/**RIGHT**(**TOP**/**Bottom**) boundary, - **grid_width** = **canvas_width** / **n_cols**
we sort the all the ports on the boundary based on their - **grid_height** = **canvas_height** / **n_rows**
y (x) coordinates in a non-decreasing order.
Starting from the first IO port on the boundary, we group
the IO ports within each **grid_height** (**grid_width**) into an IO cluster.
For example, in following figure,
we have three IO clusters on **TOP** boundary and two IO clusters on **RIGHT** boundary.
<img src="./IO_Groups.png" width= "1600"/> <img src="./IO_Groups.png" width= "1600"/>
The **grid_width** and **grid_height** are calculated based on the **n_cols** and **n_rows**:
-- **grid_width** = **canvas_width** / **n_cols**
-- **grid_height** = **canvas_height** / **n_rows**
- Group the close-related standard cells, - Group the close-related standard cells,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment