sed -i "s/ECO_REMOVE_FILL_CELLS_AT_START.*$/ECO_REMOVE_FILL_CELLS_AT_START \"false\"/" fscripts/eco_pass.N.DESC.tcl
sed -i "s/POSTROUTE_FINISHING_ADD_FILLER.*$/POSTROUTE_FINISHING_ADD_FILLER \"false\"/" fscripts/invs_config.tcl
We just released a new command that will move your 800_postroute_finishing directory to a 700 eco dir. You can then use this new directory as the eco dir.
When you rerun 800, it "should" do almost nothing since your design is filled and any any patch metal is already inserted.
qinvs_eco --use_postroute_finishing
As far as the ECO goes, this should just be a standard deletion of the gate array cell and placement of the new gate array logical cell. Any gaps need a smaller gate array cell inserted.
Is this a real ECO for you or are you just interested in the process? If this is real, please keep DA in the loop with any learning or problems.
avoid fill_dod step in aa
XOR :
module add calibre/2024.3_41.25
/project/mercury/tools/act/bin/cal_lvl -p 8 -m 30 <Base tapeout cubby path oasis> <block_name> <Matal tapeout oasis> <block_name>
RTO:
We used bcalibre for the split Artwork Release on hammer. Here is the run.rto script I used. The resulting xor.sum
is what I provided to the tapeout team in Allentown.
tech=tsmc3ffe_M1_1Mxa_1Mxb_1Mxc_1Mxd_1Mya_1Myb_6My_2Myy_2Myx_2Mr_1UTRDL
newOas=/project/hammer/giant/giant-2023.10.0.FN0/user/tomob/hammer_FN.0_fp12.27Jan2024/impl/chip_top/aa.4_24.db/outputs/data/chip_top.oas
refOas=/project/hammer/giant/giant-2023.10.0.FN0/user/tomob/hammer_FN.0_fp12.27Jan2024/impl/chip_top/aa.4_23.db/outputs/data/chip_top.oas
block=chip_top
/projects/bcm/bin/bcalibre \
--tech=$tech \
--64 \
--lsf \
--cpu=192 \
--que=priority \
--R="rusage[mem=3840000]" \
--R="span[ptile=48]" \
--barq="-K" \
--beta \
--cmp \
--cal="OUT_LAYOUT_SOURCE=cal_ascii" \
--cal="OUT_LAYOUT_FORMAT=ASCII" \
--cal="OUT_SUMMARY_REPORT=xor.sum" \
--oas=$newOas \
--cell=$block \
--ref=$refOas \
--cell2=$block \
--rto="CM0,M1,M2,M4,M16,M17,M18,M19,VIA1,VIA2,VIA3,VIA4,VIA16,VIA17,VIA18"
https://sites.google.com/broadcom.com/ce-vplus/backend/physical-verification/xorrto
NOTE : Please enter the layers found in xor only for RTO input
############
1) Move your filled database to a 700 eco database. This keeps the fill cells as-is and lets you do the swap.
Usage: qinvs_eco
-h (print help message)
-s <eco_script> (eco script to run)
[--verbose_level <ERROR|INFO|WARN|DEBUG>] (set verbosity)
[-n | --dry_run] (do not actually launch qinvs but show what it would launch)
[--use_postroute_finishing] (setup the 800 directory as a 700 eco dir then exit)
[qinvs options] (set all other options for qinvs other than -s script)
This will add a file to help 800 rerun:
if [file exists $SRC_DATA_DIR/POSTROUTE_FINISHING_DONE] {
Puts "INFO: Using previous postroute_finishing database, skipping addFiller and passive fill"
set POSTROUTE_FINISHING_ADD_FILLER "false"
set POSTROUTE_FINISHING_ADD_PASSIVE_FILL "false"
}
2) GA cells can be filled with any logical GA cell. This needs to align to the cell size and VT. Any leftover area in the GA cell needs to be refilled by another smaller GA cell of the same VT and type (CAP to CAP, FILLER to FILLER).
3) Connect your ECO and route the nets. Try your best to limit the layers that are rerouted and limit the nets that are touched.
4) Rerun 800 post_route_finishing to add any M0 finishing to the new cells. Fill cells should not get inserted since this is a filled design.
5) In AA, you can reuse the DM or DOD fill that was used previously. You may need to refill specific layers depending on which layers are rerouted. I'm not sure if we have an automated way to toss the fill on a specific layer.
For the copy_gold_fill
edit aa/fscripts/aa_config.tcl and uncomment/fill out:
# set CAL_GOLDEN_FILL(DM) "<PATH TO GOLDEN DM oasis>"
# set CAL_GOLDEN_FILL(DOD) "<PATH TO GOLDEN DOD oasis>"
raven -E aa -c fill=copy_gold_fill <BLOCKNAME>