• 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 18148
  • 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
  • kazad
    kazad over 11 years ago

     Hi Tanvir

     Once you create the analysis views (Cadence doc attached), you can use something like this for applying OCV derating:

     

    ________viewDefinition.tcl________

    #create library sets

    create_library_set -name lib_slow -timing {./slow_test.lib}

    create_library_set -name lib_fast -timing {./fast.lib}

     

    #create Constraint Modes

    create_constraint_mode -name mode_mission -sdc_files {./default.sdc}

     

    #create RC Corners

    create_rc_corner -name rc_slow

    create_rc_corner -name rc_fast

     

    #create Delay Corners

    create_delay_corner -name dc_slow \

    -late_library_set lib_slow \

    -early_library_set lib_fast \

    -late_opcond_library slowlib \

    -early_opcond_library fastlib \

    -late_opcond slow \

    -early_opcond fast

     

    create_delay_corner -name dc_fast \

    -late_library_set lib_slow \

    -early_library_set lib_fast \

    -late_opcond_library slowlib \

    -early_opcond_library fastlib \

    -late_opcond slow \

    -early_opcond fast

     

    #create analysis views

    create_analysis_view -name view_slow_mission -constraint_mode mode_mission -delay_corner dc_slow

    create_analysis_view -name view_fast_mission -constraint_mode mode_mission -delay_corner dc_fast

     

    #set current analysis views

    set_analysis_view -setup {view_slow_mission} -hold {view_fast_mission}

     

    # Apply OCV derating (5% for eaxample)

    set_timing_derate -delay_corner  dc_slow -early 0.95

    set_timing_derate -delay_corner  dc_slow -late 1.00

    set_timing_derate -delay_corner  dc_fast -early 1.00

    set_timing_derate -delay_corner  dc_fast -late 0.95 

     

     Thanks

    Khandaker 

    Timing and Mode Setup.v1.pdf
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • tshovon123
    tshovon123 over 11 years ago

    Hi Khandaker,

    set_timing_derate -delay_corner  dc_slow -early 0.95

    But there is a problem . If we execute this command same derating factor is applied for all the views related to this delay corner dc_slow. But I dont expect this.

     I just expect different derating factor for different analysis view. With this command I can not specify different derating factors to setup and hold.

    Thanks for quick reply

    Tanvir 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • 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
  • tshovon123
    tshovon123 over 11 years ago

     Thanks a lot khandakar .. Now it makes sense

    • 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