support / src_en /man.geco_gatearrayautomapping.txt
gofeco's picture
Upload 39 files
a69d692 verified
raw
history blame
3.37 kB
<h3>2.4.2 Gate Array Automatic Mapping</h3>
<p>When generating a patch, GOF synthesizes it using only gate array functional cell types. These functional cells are then mapped to the most optimal nearby gate array spare cells with the minimum wire connection costs.</p>
<div><img class='img-fluid' src='./tp_image/gofdoc/metal_gate_array.png' width='800'/></div>
<p><b>Figure 21: Gate Array Spare Cells Mapping to Functional Cells</b></p>
<p>Once the mapping and swapping process is complete, some gate array spare cells may have portions of their tiles being used by several functional cells, as shown in Figure 21. To properly save the ECO results, the type of these gate array spare cells should be changed. For instance, gate array A should have its type changed from GFILL8 to GFILL4. Any completely used up gate array spare cells, such as gate array B with type GFILL4 and all four tiles being used, should be deleted.</p>
<p>The mapped gate array functional cells need to be moved to the locations of their corresponding gate array spare cells, with the horizontal location X adjusted based on the starting tile location. For example, the GINVD1 instance should be moved to (Xg+TW, Yg), and the GBUFFD1 instance should be moved to (Xg+TW*6, Yg), as shown in Figure 20.</p>
<p>GOF writes out an ECO verilog file and backend tools ECO scripts. In the verilog file, the location of the newly added gate array functional cells is written in comments. GOF supports both Synopsys ICC script and Cadence Encounter script, both of which have cell location placement support.</p>
<p>For example, when saving the result in an ICC TCL script, the cells in Figure 20 would have the following commands:</p>
<div class='gofscript'>
size_cell GFILLER_7256 GFILL1 <span style='color:#b34c0a'># The original GFILL8 resized</span></br>
create_cell eco_3821_ubuf GBUFD1</br>
create_cell eco_3821_uan4 GAN4D1</br>
create_cell eco_3821_und2 GND2D1</br>
create_cell eco_3821_uinv GINVD1</br>
set_cell_location -ignore_fixed -coordinates <span style='color:#63ac0a'>"255.02 413.28"</span> eco_3821_ubuf <span style='color:#b34c0a'># Xg+WT*6, Yg</span></br>
set_cell_location -ignore_fixed -coordinates <span style='color:#63ac0a'>"254.42 413.28"</span> eco_3821_uan4 <span style='color:#b34c0a'># Xg+WT*3, Yg</span></br>
set_cell_location -ignore_fixed -coordinates <span style='color:#63ac0a'>"254.22 413.28"</span> eco_3821_und2 <span style='color:#b34c0a'># Xg+WT*2, Yg</span></br>
set_cell_location -ignore_fixed -coordinates <span style='color:#63ac0a'>"254.02 413.28"</span> eco_3821_uinv <span style='color:#b34c0a'># Xg+WT*1, Yg</span></br>
</div>
<p>Encounter script format:</p>
<div class='gofscript'>
ecoChangeCell -inst GFILLER_7256 -cell GFILL1 <span style='color:#b34c0a'># The original GFILL8 resized</span></br>
addInst -loc 255.02 413.28 -inst eco_3821_ubuf -cell GBUFD1 <span style='color:#b34c0a'># Xg+WT*6, Yg</span></br>
addInst -loc 254.42 413.28 -inst eco_3821_uan4 -cell GAN4D1 <span style='color:#b34c0a'># Xg+WT*3, Yg</span></br>
addInst -loc 254.22 413.28 -inst eco_3821_und2 -cell GND2D1 <span style='color:#b34c0a'># Xg+WT*2, Yg</span></br>
addInst -loc 254.02 413.28 -inst eco_3821_uinv -cell GINVD1 <span style='color:#b34c0a'># Xg+WT*1, Yg</span></br>
</div>
<p>Note:Tile size assumed to be 0.20 X 0.22; GFILL8 location (Xg, Yg)=(253.82, 413.28)</p>