• 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. Setting Timing Derate

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 92
  • Views 18154
  • 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

Setting Timing Derate

tshovon123
tshovon123 over 11 years ago

 Hi I am shovon

New to encounter. So facing syntax related problem .

How can i apply diffrent derating factors for setup and hold in OCV.

 

 

It will be helpful if anyone elaborate about setting different derating factors according to mode and check type for a particular delay corner. That is I want to set different derating factor for different analysis view. 

 

Thanks

Tanvir Hasnain Shovon 

  • Cancel
Parents
  • kazad
    kazad over 11 years ago

     Hi Tanvir

     In that case, you try the procedure:

     

     # Usage: applyDerate -view <mmmc_analysis_view_name> -early <early_derate_vaule> -late <late_derate_vaule>

    proc applyDerate {args} {

        # Get analysis view name
        if {[regexp {\-view} $args]} {
     set viewName [lindex $args [expr [lsearch $args -view] + 1]]
        }

        # Get early derate
        if {[regexp {\-early} $args]} {
     set earlyDerate [lindex $args [expr [lsearch $args -early] + 1]]
        }

        # Get late derate
        if {[regexp {\-late} $args]} {
     set lateDerate [lindex $args [expr [lsearch $args -late] + 1]]
        }

        # Help
        set helpString "Usage : applyDerate \
                                    \-view <mmmc_analysis_view_name> \
                                    \-early <early_derate_vaule> \
                                    \-late <late_derate_vaule> \
                                    \-help"

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


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


        # Check analysis view if exists
        if {[findAnalysisView $viewName] == ""} {
     Puts "\nERROR: Analysis view $viewName not found!"
     return 0
        }
       
        # Apply timing derate
        set delayCorner [get_analysis_view $viewName -delay_corner]

        set_timing_derate -delay_corner $delayCorner -early $earlyDerate
        set_timing_derate -delay_corner $delayCorner -late $lateDerate
    }

    ################################################################################
    # Procedure to find MMMC analysis view name
    # Usage: findAnalysisView *ideal*
    ################################################################################
    proc findAnalysisView {viewPattern} {

        set viewList {}
       
        foreach view [all_analysis_views ] {
     if [string match $viewPattern $view] {
         lappend viewList $view
     }
        }

        return $viewList
    }

     

    Thanks

    Khandaker 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • kazad
    kazad over 11 years ago

     Hi Tanvir

     In that case, you try the procedure:

     

     # Usage: applyDerate -view <mmmc_analysis_view_name> -early <early_derate_vaule> -late <late_derate_vaule>

    proc applyDerate {args} {

        # Get analysis view name
        if {[regexp {\-view} $args]} {
     set viewName [lindex $args [expr [lsearch $args -view] + 1]]
        }

        # Get early derate
        if {[regexp {\-early} $args]} {
     set earlyDerate [lindex $args [expr [lsearch $args -early] + 1]]
        }

        # Get late derate
        if {[regexp {\-late} $args]} {
     set lateDerate [lindex $args [expr [lsearch $args -late] + 1]]
        }

        # Help
        set helpString "Usage : applyDerate \
                                    \-view <mmmc_analysis_view_name> \
                                    \-early <early_derate_vaule> \
                                    \-late <late_derate_vaule> \
                                    \-help"

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


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


        # Check analysis view if exists
        if {[findAnalysisView $viewName] == ""} {
     Puts "\nERROR: Analysis view $viewName not found!"
     return 0
        }
       
        # Apply timing derate
        set delayCorner [get_analysis_view $viewName -delay_corner]

        set_timing_derate -delay_corner $delayCorner -early $earlyDerate
        set_timing_derate -delay_corner $delayCorner -late $lateDerate
    }

    ################################################################################
    # Procedure to find MMMC analysis view name
    # Usage: findAnalysisView *ideal*
    ################################################################################
    proc findAnalysisView {viewPattern} {

        set viewList {}
       
        foreach view [all_analysis_views ] {
     if [string match $viewPattern $view] {
         lappend viewList $view
     }
        }

        return $viewList
    }

     

    Thanks

    Khandaker 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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