1 ################################################################################
3 # Copyright 2005 (c) Synopsys, Inc.
5 ################################################################################
7 # Title : SDC-parser commands declaration for SDC version 1.5
10 # Updated : April 5, 2005
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))}
29 declare create_clock
{
30 {-period Float
{$par>=0}}
32 {-waveform List
{type_Float
{length
($length>=2 && ($length % 2)==0)} } }
35 } {param
(-period) && (param
(-name) || param
(port_pin_list
))}
37 declare create_generated_clock
{
40 {-edges List
{type_Float
{length
($length>=2} } }
41 {-divide_by Int
{1 && $par>=0} }
42 {-multiply_by Int
{1 && $par>=0} }
44 {-duty_cycle Float
{$par>=0 && $par <=100} }
49 } {param
(-source) && param
(port_pin_list
) && !(param
(-multiply_by) && param
(-divide_by))}
51 declare current_design
{
54 declare current_instance
{
64 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
66 } {(param
(patterns
) && !param
(-of_objects)) ||
\
67 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
68 # && !param(-hierarchical))}
70 # get_cell synonym for get_cells
77 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
79 } {(param
(patterns
) && !param
(-of_objects)) ||
\
80 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
97 declare get_lib_cells
{
101 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
104 declare get_lib_cell
{
108 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
112 declare get_lib_pins
{
116 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
119 declare get_lib_pin
{
123 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
137 {-hierarchical Flag
}
140 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
141 } {(param
(patterns
) && !param
(-of_objects)) ||
\
142 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
148 {-hierarchical Flag
}
151 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
152 } {(param
(patterns
) && !param
(-of_objects)) ||
\
153 (param
(-of_objects) && !param
(patterns
)) ||
!param
(patterns
)}
159 {-hierarchical Flag
}
162 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
167 {-hierarchical Flag
}
170 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
174 {-hierarchical Flag
}
178 # } {param(patterns)}
181 {-hierarchical Flag
}
185 # } {param(patterns)}
188 declare set_case_analysis
{
189 {value Enum
{0 1 rising falling zero one rise fall
}}
190 {port_pin_list List
}
191 } {param
(value
) && param
(port_pin_list
)}
193 declare set_clock_gating_check
{
194 {-setup Float
{$par>=0}}
195 {-hold Float
{$par>=0}}
201 } {(param
(-setup) || param
(-hold) || param
(-high) || param
(-low)) && \
202 !(param
(-high) && param
(-low))}
204 declare set_clock_latency
{
215 } {param
(delay
) && param
(object_list
)}
217 declare set_clock_transition
{
218 {transition Float
{1}}
224 } {param
(transition
) && param
(clock_list
) && \
225 !(param
(-rise) && param
(-fall))}
227 declare set_clock_uncertainty
{
228 {uncertainty Float
{1}}
240 } {param
(uncertainty
) && param
(object_list
) ^
\
241 (((param
(-from) ^ param
(-rise_from) ^ param
(-fall_from))) \
242 && (param
(-to) ^ param
(-rise_to) ^ param
(-fall_to)))}
244 declare set_disable_timing
{
248 } {param
(object_list
) && \
249 !(param
(-to) ^ param
(-from))}
252 {resistance Float
{$par>=0}}
258 } {param
(resistance
) && param
(port_list
)}
260 declare set_driving_cell
{
267 {-multiply_by Float
{$par>=0}}
269 {-no_design_rule Flag
}
270 {-input_transition_rise Float
{$par>=0}}
271 {-input_transition_fall Float
{$par>=0}}
277 } {param
(port_list
) && param
(-lib_cell)}
279 declare set_false_path
{
286 {-through List
{dup
}}
287 } {(param
(-from) || param
(-to) || param
(-through)) && \
288 !(param
(-rise) && param
(-fall)) && !(param
(-setup) && param
(-hold))}
290 declare set_fanout_load
{
291 {value Float
{$par>=0}}
293 } {param
(value
) && param
(port_list
)}
295 declare set_hierarchy_separator
{
296 {hchar Enum
{{/} {@} {^
} {#} {.} {|}}}
299 declare set_input_delay
{
302 {-level_sensitive Flag
}
308 {delay_value Float
{1}}
309 {port_pin_list List
}
310 {-network_latency_included Flag
}
311 {-source_latency_included Flag
}
312 } {param
(delay_value
) && param
(port_pin_list
) && \
313 !((param
(-clock_fall) || param
(-level_sensitive)) && !param
(-clock))}
315 declare set_input_transition
{
320 {transition Float
{$par>=0}}
324 } {param
(transition
) && param
(port_list
)}
329 {-substract_pin_load Flag
}
332 {value Float
{$par>=0}}
334 } {param
(value
) && param
(objects
)}
336 declare set_logic_dc
{
340 declare set_logic_one
{
344 declare set_logic_zero
{
348 declare set_max_area
{
349 {area_value Float
{$par>=0}}
350 } {param
(area_value
)}
352 declare set_max_capacitance
{
353 {capacitance_value Float
{$par>=0}}
355 } {param
(capacitance_value
) && param
(object_list
)}
357 declare set_max_delay
{
358 {delay_value Float
{1}}
363 {-through List
{dup
}}
364 } {param
(delay_value
) && \
365 !(param
(-rise) && param
(-fall))}
367 declare set_max_fanout
{
368 {fanout_value Float
{$par>=0}}
370 } {param
(fanout_value
) && param
(object_list
)}
372 declare set_max_time_borrow
{
373 {delay_value Float
{$par>=0}}
375 } {param
(delay_value
) && param
(object_list
)}
377 declare set_max_transition
{
378 {transition_value Float
{$par>=0}}
383 } {param
(transition_value
) && param
(object_list
)}
385 declare set_min_capacitance
{
386 {capacitance_value Float
{$par>=0}}
388 } {param
(capacitance_value
) && param
(object_list
)}
390 declare set_min_delay
{
391 {delay_value Float
{1}}
396 {-through List
{dup
}}
397 } {param
(delay_value
) && \
398 !(param
(-rise) && param
(-fall))}
400 declare set_multicycle_path
{
401 {path_multiplier Int
{1}}
410 {-through List
{dup
}}
411 } {param
(path_multiplier
)}
413 declare set_operating_conditions
{
414 {-analysis_type Enum
{single bc_wc on_chip_variation
}}
424 declare set_output_delay
{
427 {-level_sensitive Flag
}
433 {delay_value Float
{1}}
434 {port_pin_list List
}
435 {-network_latency_included Flag
}
436 {-source_latency_included Flag
}
438 } {param
(delay_value
) && param
(port_pin_list
) && \
439 !((param
(-clock_fall) || param
(-level_sensitive)) && !param
(-clock))}
441 declare set_port_fanout_number
{
442 {fanout_number Int
{($par>=0) && ($par<=100000)}}
444 } {param
(fanout_number
) && param
(port_list
)}
446 declare set_propagated_clock
{
448 } {param
(object_list
)}
450 declare set_resistance
{
451 {value Float
{$par>=0}}
455 } {param
(value
) && param
(net_list
)}
457 declare set_wire_load_min_block_size
{
458 {size Float
{$par>=0}}
461 declare set_wire_load_mode
{
462 {mode_name Enum
{top enclosed segmented
}}
465 declare set_wire_load_model
{
473 declare set_wire_load_selection_group
{
479 } {param
(group_name
)}
481 declare set_data_check
{
493 {value Float
{$par>=0} }
494 } {(param
(-rise_from) || param
(-from) || param
(-fall_from)) && \
495 ((param
(-to) || param
(-rise_to)) || param
(-fall_to)) }
497 declare set_timing_derate
{
498 {derate_value Float
{$par>=0.1 } }
500 # {derate_value Float {$par>=0.1 && $par<=2.0}}
510 } {param
(derate_value
) && (param
(-early) && !param
(-late)) ||
(param
(-late) && !param
(-early))}
514 declare set_max_dynamic_power
{
515 {power_value Float
{$par>=0} }
516 {-unit Enum
{GW MW KW W mW uW nW pW fW aW
} }
517 } {param
(power_value
)}
519 declare set_max_leakage_power
{
520 {power_value Float
{$par>=0}}
521 {-unit Enum
{GW MW KW W mW uW nW pW fW aW
}}
522 } {param
(power_value
)}
524 declare set_min_porosity
{
525 {porosity_value Float
{$par>=0 && $par <=90}}
527 } {param
(porosity_value
) && param
(object_list
)}
531 # register_new_type EdgeList {
532 # if {[sdc::check_type List $value]} {
533 # if {[expr {[llength $value] % 2}] || [llength $value]==0} {
537 # set startvalue -0.1
539 # foreach parv $value {
540 # if {[catch {expr {$parv + 1}}]} {
543 # if {$parv<=$startvalue} {
546 # set startvalue $parv