• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Digital Implementation
  3. How to dump out blockages into a file

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 92
  • Views 16945
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to dump out blockages into a file

Anuragjn
Anuragjn over 13 years ago

Hi all,

I want to dump out placement blockage (hard,soft,partial) into file is there any utility in encounter gui to do so,as we can do to dump out the marco place,By using save "place" utility in gui

and vice versa to dump routing blockages.

 So can any one guide me if there's any utility in GUI and even command based woul be good .

 

Regards,

Anurag

  • Cancel
  • Kari
    Kari over 13 years ago

    You can write them out in a DEF file:

    defOutBySection -noComps -noNets -pBlockages -rBlockages myBlockages.def

    pBlockages is the placement blockages (all kinds) and rBlockages is the routing blockages. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Anuragjn
    Anuragjn over 13 years ago

    HI Kari,

    Thanks for the Command

    But Partial Blockages are not being dumped ,I tried even loading the DEF file but the partial blockage are no where seen

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kazad
    kazad over 13 years ago

    This is a tcl command-based solution for dumping out the placement (including soft, partial & hard) /routing blockages from Encounter session:

    ################################################################################
    # Procedure to save blockages into tcl command
    # Usage: saveBlockages -type <placement | routing | all> -outFile <output_tcl_file>
    ################################################################################
    proc saveBlockages {args} {

        global env

        # Get blockage type
        if {[regexp {\-type} $args]} {
     set blockageType [lindex $args [expr [lsearch $args -type] + 1]]
        }

        # Get output file
        if {[regexp {\-outFile} $args]} {
     set outfile [lindex $args [expr [lsearch $args -outFile] + 1]]
        }


        # Help
        set helpString "Usage : saveBlockages \
                                    \-type <placement | routing | all> \
                                    \-outFile <file_name> \
                                    \-help"


        if {[regexp {\-help} $args] || $args == ""} {
            puts $helpString
            return 0
        }


        # Main code
        ############################################################ 

        set f [open $outfile w]


        # Placement blockages
        if {$blockageType == "placement" || $blockageType == "all"} {

     foreach pblkgType [dbGet -u top.fPlan.pBlkgs.type] {

         foreach obsPtr [dbGet -p top.fPlan.pBlkgs.type $pblkgType] {
      set obsName [dbGet $obsPtr.name]
      set box [exl [dbGet $obsPtr.boxes]]
      
      switch -- $pblkgType {

          "hard" {
       puts $f "createObstruct -box $box -name $obsName"
          }
          "partial" {
       set density [dbGet $obsPtr.density]
       puts $f "createDensityArea -name $obsName $box $density"
          }
          "soft" {
       set density [dbGet $obsPtr.density]
       puts $f "createDensityArea -name $obsName $box $density"
          }
      }
         }
     }

        }

        # Routing blockages
        if {$blockageType == "routing" || $blockageType == "all"} {
     
     foreach rBlkPtr [dbGet top.fPlan.rBlkgs] {
         set name [dbGet ${rBlkPtr}.name]
         set attr [dbGet ${rBlkPtr}.attr]
         set layer [dbGet ${rBlkPtr}.layer.name]
         foreach box [exl [dbGet ${rBlkPtr}.boxes]] {
      puts $f "createRouteBlk -box ${box} -layer ${layer} -name ${name}"
      
         }
     }
        }
       
        close $f
    }

    ################################################################################
    # Procedure to split the list
    ################################################################################
    proc exl {singleList} {
            set mylist {}
            foreach item $singleList {
                    set mylist [concat $mylist $item]
            }
            return $mylist
    }

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information