1 ################################################################################
3 # Copyright 2007 (c) Synopsys, Inc.
5 ################################################################################
7 # Title : SDC-parser commands declaration for SDC version 1.7
9 # Update By : Ibna Faruque
10 # Updated On : March, 2007
12 ################################################################################
18 {-level_sensitive Flag
}
19 {-edge_triggered Flag
}
21 } {!(param
(-level_sensitive) && param
(-edge_triggered))}
24 {-level_sensitive Flag
}
25 {-edge_triggered Flag
}
27 } {!(param
(-level_sensitive) && param
(-edge_triggered))}
30 declare all_registers
{
38 {-slave_clock_pins Flag
}
41 {-level_sensitive Flag
}
42 {-edge_triggered Flag
}
46 declare create_clock
{
47 {-period Float
{$par>=0} }
49 {-waveform List
{type_Float
{length
($length>=2 && ($length % 2)==0)} } }
52 } {param
(-period) && (param
(-name) || param
(port_pin_list
))}
54 declare create_generated_clock
{
57 {-edges List
{type_Float
{length
($length>=2} } }
58 {-divide_by Int
{1 && $par>=0} }
59 {-multiply_by Int
{1 && $par>=0} }
61 {-duty_cycle Float
{$par>=0 && $par <=100} }
66 } {param
(-source) && param
(port_pin_list
) && !(param
(-multiply_by) && param
(-divide_by))}
68 declare current_design
{
71 declare current_instance
{
79 {-weight Float
{$par>=0.0 && $par <=100.0} }
86 {-through List
{dup
} }
87 {-rise_through List
{dup
} }
88 {-fall_through List
{dup
} }
89 } {((param
(-name) && !param
(-default)) ||
\
90 (param
(-default) && !param
(-name)) ||
!param
(-name) && \
91 (param
(-from) ^ param
(-rise_from) ^ param
(-fall_from)))}
100 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
102 } {(param
(patterns
) && !param
(-of_objects)) ||
\
103 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
104 # && !param(-hierarchical))}
106 # get_cell synonym for get_cells
110 {-hierarchical Flag
}
113 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
114 } {(param
(patterns
) && !param
(-of_objects)) ||
\
115 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
131 declare get_lib_cells
{
135 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
138 declare get_lib_cell
{
142 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
146 declare get_lib_pins
{
150 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
153 declare get_lib_pin
{
157 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
170 {-hierarchical Flag
}
173 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
174 } {(param
(patterns
) && !param
(-of_objects)) ||
\
175 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
181 {-hierarchical Flag
}
184 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
185 } {(param
(patterns
) && !param
(-of_objects)) ||
\
186 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
192 {-hierarchical Flag
}
195 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
200 {-hierarchical Flag
}
203 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
207 {-hierarchical Flag
}
211 # } {param(patterns)}
214 {-hierarchical Flag
}
218 # } {param(patterns)}
222 {-capacitance String
}
223 {-resistance String
}
230 # set_unit synonym for set_units
232 {-capacitance String
}
233 {-resistance String
}
240 declare set_case_analysis
{
241 {value Enum
{0 1 rising falling zero one rise fall
}}
242 {port_pin_list List
}
243 } {param
(value
) && param
(port_pin_list
)}
245 declare set_clock_gating_check
{
246 {-setup Float
{$par>=0}}
247 {-hold Float
{$par>=0}}
253 } {(param
(-setup) || param
(-hold) || param
(-high) || param
(-low)) && \
254 !(param
(-high) && param
(-low))}
257 declare set_clock_groups
{
259 {-physically_exclusive Flag
}
260 {-logically_exclusive Flag
}
261 {-asynchronous Flag
}
264 } {(param
(-physically_exclusive) ^ param
(-logically_exclusive) ^ param
(-asynchronous)) }
266 # set_clock_group synonym for set_clock_groups
267 declare set_clock_group
{
269 {-physically_exclusive Flag
}
270 {-logically_exclusive Flag
}
271 {-asynchronous Flag
}
274 } {(param
(-physically_exclusive) ^ param
(-logically_exclusive) ^ param
(-asynchronous)) }
277 declare set_clock_sense
{
281 {-stop_propagation Flag
}
282 {-pulse Enum
{rise_triggered_high_pulse rise_triggered_low_pulse
\
283 fall_triggered_high_pulse fall_triggered_low_pulse
} }
285 } {(param
(-positive) ^ param
(-negative) ^ param
(-stop_propagation) ^ param
(-pulse)) }
287 declare set_clock_latency
{
298 } {param
(delay
) && param
(object_list
)}
301 declare set_ideal_latency
{
308 } {param
(value
) && param
(object_list
)}
311 declare set_ideal_network
{
313 {-no_propagate Flag
}
314 } {param
(object_list
)}
317 declare set_ideal_transition
{
324 } {param
(value
) && param
(object_list
)}
327 declare set_clock_transition
{
328 {transition Float
{1}}
334 } {param
(transition
) && param
(clock_list
) && \
335 !(param
(-rise) && param
(-fall))}
337 declare set_clock_uncertainty
{
338 {uncertainty Float
{1}}
350 } {param
(uncertainty
) && param
(object_list
) ^
\
351 (((param
(-from) ^ param
(-rise_from) ^ param
(-fall_from))) \
352 && (param
(-to) ^ param
(-rise_to) ^ param
(-fall_to)))}
354 declare set_disable_timing
{
358 } {param
(object_list
) && \
359 !(param
(-to) ^ param
(-from))}
362 {resistance Float
{$par>=0}}
368 } {param
(resistance
) && param
(port_list
)}
370 declare set_driving_cell
{
377 {-multiply_by Float
{$par>=0}}
379 {-no_design_rule Flag
}
380 {-input_transition_rise Float
{$par>=0}}
381 {-input_transition_fall Float
{$par>=0}}
387 } {param
(port_list
) && param
(-lib_cell)}
389 declare set_false_path
{
400 {-through List
{dup
}}
401 {-fall_throough List
{dup
} }
402 {-rise_throough List
{dup
} }
403 } {(param
(-from) || param
(-to) || param
(-through)) && \
404 !(param
(-rise) && param
(-fall)) && !(param
(-setup) && param
(-hold))}
406 declare set_fanout_load
{
407 {value Float
{$par>=0}}
409 } {param
(value
) && param
(port_list
)}
411 declare set_hierarchy_separator
{
412 {hchar Enum
{{/} {@} {^
} {#} {.} {|}}}
415 declare set_input_delay
{
418 {-level_sensitive Flag
}
424 {delay_value Float
{1}}
425 {port_pin_list List
}
426 {-network_latency_included Flag
}
427 {-source_latency_included Flag
}
428 } {param
(delay_value
) && param
(port_pin_list
) && \
429 !((param
(-clock_fall) || param
(-level_sensitive)) && !param
(-clock))}
431 declare set_input_transition
{
436 {transition Float
{$par>=0}}
440 } {param
(transition
) && param
(port_list
)}
445 {-substract_pin_load Flag
}
448 {value Float
{$par>=0}}
450 } {param
(value
) && param
(objects
)}
452 declare set_logic_dc
{
456 declare set_logic_one
{
460 declare set_logic_zero
{
464 declare set_max_area
{
465 {area_value Float
{$par>=0}}
466 } {param
(area_value
)}
468 declare set_max_capacitance
{
469 {capacitance_value Float
{$par>=0}}
471 } {param
(capacitance_value
) && param
(object_list
)}
473 declare set_max_delay
{
474 {delay_value Float
{1}}
483 {-through List
{dup
}}
484 {-fall_through List
{dup
} }
485 {-rise_through List
{dup
} }
486 } {param
(delay_value
) && \
487 !(param
(-rise) && param
(-fall))}
489 declare set_max_fanout
{
490 {fanout_value Float
{$par>=0}}
492 } {param
(fanout_value
) && param
(object_list
)}
494 declare set_max_time_borrow
{
495 {delay_value Float
{$par>=0}}
497 } {param
(delay_value
) && param
(object_list
)}
499 declare set_max_transition
{
500 {transition_value Float
{$par>=0}}
505 } {param
(transition_value
) && param
(object_list
)}
507 declare set_min_capacitance
{
508 {capacitance_value Float
{$par>=0}}
510 } {param
(capacitance_value
) && param
(object_list
)}
512 declare set_min_delay
{
513 {delay_value Float
{1}}
522 {-through List
{dup
}}
523 {-fall_through List
{dup
} }
524 {-rise_through List
{dup
} }
526 } {param
(delay_value
) && \
527 !(param
(-rise) && param
(-fall))}
529 declare set_multicycle_path
{
530 {path_multiplier Int
{1}}
543 {-rise_through List
{dup
} }
544 {-fall_through List
{dup
} }
545 {-through List
{dup
}}
546 } {param
(path_multiplier
)}
548 declare set_operating_conditions
{
549 {-analysis_type Enum
{single bc_wc on_chip_variation
}}
559 declare set_output_delay
{
562 {-level_sensitive Flag
}
568 {delay_value Float
{1}}
569 {port_pin_list List
}
570 {-network_latency_included Flag
}
571 {-source_latency_included Flag
}
573 } {param
(delay_value
) && param
(port_pin_list
) && \
574 !((param
(-clock_fall) || param
(-level_sensitive)) && !param
(-clock))}
576 declare set_port_fanout_number
{
577 {fanout_number Int
{($par>=0) && ($par<=100000)}}
579 } {param
(fanout_number
) && param
(port_list
)}
581 declare set_propagated_clock
{
583 } {param
(object_list
)}
585 declare set_resistance
{
586 {value Float
{$par>=0}}
590 } {param
(value
) && param
(net_list
)}
592 declare set_wire_load_min_block_size
{
593 {size Float
{$par>=0}}
596 declare set_wire_load_mode
{
597 {mode_name Enum
{top enclosed segmented
}}
600 declare set_wire_load_model
{
608 declare set_wire_load_selection_group
{
614 } {param
(group_name
)}
616 declare set_data_check
{
628 {value Float
{$par>=0} }
629 } {(param
(-rise_from) || param
(-from) || param
(-fall_from)) && \
630 ((param
(-to) || param
(-rise_to)) || param
(-fall_to)) }
632 declare set_timing_derate
{
633 {derate_value Float
{$par>=0.1 } }
635 # {derate_value Float {$par>=0.1 && $par<=2.0}}
645 } {param
(derate_value
) && (param
(-early) && !param
(-late)) ||
(param
(-late) && !param
(-early))}
649 declare set_max_dynamic_power
{
650 {power_value Float
{$par>=0} }
651 {-unit Enum
{GW MW KW W mW uW nW pW fW aW
} }
652 } {param
(power_value
)}
654 declare set_max_leakage_power
{
655 {power_value Float
{$par>=0}}
656 {-unit Enum
{GW MW KW W mW uW nW pW fW aW
}}
657 } {param
(power_value
)}
659 declare create_voltage_area
{
662 {-guard_band_x List
}
663 {-guard_band_y List
}
664 {cell_list List
{1} }
665 } {param
(-name) && {param
(cell_list
)}}
667 declare set_level_shifter_strategy
{
668 {-rule Enum
{all low_to_high high_to_low
}}
671 declare set_level_shifter_threshold
{
672 {-voltage Float
{1} }
673 {-percent Float
{1} }
678 declare set_min_porosity
{
679 {porosity_value Float
{$par>=0 && $par <=90}}
681 } {param
(porosity_value
) && param
(object_list
)}
685 # register_new_type EdgeList {
686 # if {[sdc::check_type List $value]} {
687 # if {[expr {[llength $value] % 2}] || [llength $value]==0} {
691 # set startvalue -0.1
693 # foreach parv $value {
694 # if {[catch {expr {$parv + 1}}]} {
697 # if {$parv<=$startvalue} {
700 # set startvalue $parv