Experience sharing solving max trans for high congested and high density cells of one block


Manual ECO for highly congested and high density block
Agenda : To solve max trans violation .

The root cause for the max trans violation on the pins was due to high fanout of the net connected to those pins.The stage was tapeout phase, so cant go back to again PNR with max_fanout constraints , also setup and hold was in control , so the only way to do an ECO.

One way is to increase the drive strength of the driver but the driver is already having higher drive strength of D16 and increasing beyond that was making results bad. And the other way is to break the fanout sink pins by adding buffer. So we will focus on second option.

The Challenge is ,the block is very much congested running at 84 % utilization. So no more place for extra cells to place and again in upper right region of block you will hardly see space for filler and DCAPs, so imagine density of logical standard cells in upper right region.

Below is the snippet of highlighted pic of DCAPS and FILLER in block :



Below is the snippet showing upper right portion of block :





In the above snippet , the density of DCAP and FILLER is very very less in upper right region. The small highlighted portion are filler cells of minimum size present in library.

The Challenge : All high fanout nets are present in this region. Now how to add buffers? Where to place it? If we do it by automatic/default eco of tool , will it be giving good results?

Let me answer this question if we do placement of eco buffer cells by automated eco tool , as I mentioned earlier we are done with setup and hold fixing , now tool will try to place those new eco cells near to connections ,but since there is no place , it will move all the cells in order to place this new eco buffer cells , this can make the timing bad . OR it will place the new eco buffer cells far apart where place is available in the mid region of the block (please refer to snippet above), this will also make timing worse.


APPROACH : one NorD16 gate was having 35 fanouts , and PT(PrimeTime) reported all the timing violation at this sink pins of net driving 35 cells .
1) In the GUI , highlighted all the fanouts , highlighted the cell driving this fanout
2) Good thing is there were spare cells present in databse at 70 by 70 microns.
3) Removed only spare cells present in upper right region of block by seeing the location which is sitting near to driver and its fanout , making note of it. Since we need to add buffers only at those place which is affected by high fanout nets.
4) Based on the spare cell location and driver cell location, selected half(not exact half) of the fanout and this list was given to sink pins . So tool will break the fanout and will add those sink pins which will driven by now buffer and remaining will be driven by that driver cell which was having 35 fanouts earlier.
5) The ICC has below procedure (available in solvnet)
Source eco_add_buffer.tcl (Link https://solvnet.synopsys.com/retrieve/2389864.html?otSearchResultSrc=advSearch&otSearchResultNumber=1&otPageNum=1)
Command used is as below :
eco_add_buffer -sink_pins {rp_ppi_pkt_framer/clsfr_fifo/rp_dp_ram/U8789 rp_ppi_pkt_framer/clsfr_fifo/rp_dp_ram/icc_place553/I rp_ppi_pkt_framer/clsfr_fifo/rp_dp_ram/icc_clock5655/I rp_ppi_pkt_framer/clsfr_fifo/rp_dp_ram/icc_place554/I} -lib_cell BUFFD12BWP12T30P140LVT -prefix hfn_eco_cell_0
6) Now I placed this new eco cells at the coordinate where I have deleted spare cells (not randomly , making note of point no 1 and 3)
7) Making sure that this new eco cells are fitting at spare cells location . At two three places I found that the new eco cell was having higher area compared to spare cell , so I decreased the driving strength of new eco cell so that it can fit in that region. At the same thime I found vice versa too!the spare cells was having more region , in that case no problem , we have fillers to be inserted in next step,it will be fill by tool at those empty places.
8) After placing of new eco cells we are done with manual eco placing , now saving this cell and give this cell name to start filling fillers , route_zrt_eco to route this buffers , doing signoff_drc and signoff_autofix_drc and signoff_metalfill in the default ECO script(comment the place eco cells in script since we have done that manually according to our requirement).




Topic in : Physical Design, ECO, Max trans,STA



SHARE

VLSI ASIC

  • Image
  • Image
  • Image
  • Image
  • Image

0 comments:

Post a Comment