1 ################################################################################
4 # Copyright 2003 (c) Synopsys.
7 ################################################################################
9 # Title : SDC-parser commands declaration for SDC version 1.4
11 # Project : SDC-parser
13 # Authors : Ibna Faruque, A.Gratchev,A.Sokhatski
14 # Contributors : Specklin Benoit,Matthew Liberty
15 # Updated : Jan 7, 2003
16 ################################################################################
23 {-level_sensitive Flag
}
24 {-edge_triggered Flag
}
26 } {!(param
(-level_sensitive) && param
(-edge_triggered))}
29 {-level_sensitive Flag
}
30 {-edge_triggered Flag
}
32 } {!(param
(-level_sensitive) && param
(-edge_triggered))}
34 declare create_clock
{
35 {-period Float
{$par>=0}}
37 {-waveform List
{type_Float
{length
($length>=2 && ($length % 2)==0)} } }
40 } {param
(-period) && (param
(-name) || param
(port_pin_list
))}
42 declare create_generated_clock
{
45 {-edges List
{type_Float
{length
($length>=2} } }
46 {-divide_by Int
{1 && $par>=0} }
47 {-multiply_by Int
{1 && $par>=0} }
49 {-duty_cycle Float
{$par>=0 && $par <=100} }
54 } {param
(-source) && param
(port_pin_list
) && !(param
(-multiply_by) && param
(-divide_by))}
56 declare current_design
{
59 declare current_instance
{
67 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
68 } {(param
(patterns
) && !param
(-of_objects)) ||
\
69 (param
(-of_objects) && !param
(patterns
))}
70 # && !param(-hierarchical))}
76 declare get_lib_cells
{
78 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
81 declare get_lib_pins
{
83 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
93 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
99 {-hsc Enum
{{/} {@} {^
} {#} {.} {|}}}
106 declare set_case_analysis
{
107 {value Enum
{0 1 rising falling zero one rise fall
}}
108 {port_pin_list List
}
109 } {param
(value
) && param
(port_pin_list
)}
111 declare set_clock_gating_check
{
112 {-setup Float
{$par>=0}}
113 {-hold Float
{$par>=0}}
119 } {(param
(-setup) || param
(-hold) || param
(-high) || param
(-low)) && \
120 !(param
(-high) && param
(-low))}
122 declare set_clock_latency
{
132 } {param
(delay
) && param
(object_list
)}
134 declare set_clock_transition
{
135 {transition Float
{1}}
141 } {param
(transition
) && param
(clock_list
) && \
142 !(param
(-rise) && param
(-fall))}
144 declare set_clock_uncertainty
{
145 {uncertainty Float
{1}}
153 } {param
(uncertainty
) && param
(object_list
) ^
(param
(-from) && param
(-to))}
155 declare set_disable_timing
{
159 } {param
(object_list
) && \
160 !(param
(-to) ^ param
(-from))}
163 {resistance Float
{$par>=0}}
169 } {param
(resistance
) && param
(port_list
)}
171 declare set_driving_cell
{
178 {-multiply_by Float
{$par>=0}}
180 {-no_design_rule Flag
}
181 {-input_transition_rise Float
{$par>=0}}
182 {-input_transition_fall Float
{$par>=0}}
188 } {param
(port_list
) && param
(-lib_cell)}
190 declare set_false_path
{
197 {-through List
{dup
}}
198 } {(param
(-from) || param
(-to) || param
(-through)) && \
199 !(param
(-rise) && param
(-fall)) && !(param
(-setup) && param
(-hold))}
201 declare set_fanout_load
{
202 {value Float
{$par>=0}}
204 } {param
(value
) && param
(port_list
)}
206 declare set_hierarchy_separator
{
207 {hchar Enum
{{/} {@} {^
} {#} {.} {|}}}
210 declare set_input_delay
{
213 {-level_sensitive Flag
}
219 {delay_value Float
{1}}
220 {port_pin_list List
}
221 {-network_latency_included Flag
}
222 {-source_latency_included Flag
}
223 } {param
(delay_value
) && param
(port_pin_list
) && \
224 !((param
(-clock_fall) || param
(-level_sensitive)) && !param
(-clock))}
226 declare set_input_transition
{
231 {transition Float
{$par>=0}}
235 } {param
(transition
) && param
(port_list
)}
240 {-substract_pin_load Flag
}
243 {value Float
{$par>=0}}
245 } {param
(value
) && param
(objects
)}
247 declare set_logic_dc
{
251 declare set_logic_one
{
255 declare set_logic_zero
{
259 declare set_max_area
{
260 {area_value Float
{$par>=0}}
261 } {param
(area_value
)}
263 declare set_max_capacitance
{
264 {capacitance_value Float
{$par>=0}}
266 } {param
(capacitance_value
) && param
(object_list
)}
268 declare set_max_delay
{
269 {delay_value Float
{1}}
274 {-through List
{dup
}}
275 } {param
(delay_value
) && \
276 !(param
(-rise) && param
(-fall))}
278 declare set_max_fanout
{
279 {fanout_value Float
{$par>=0}}
281 } {param
(fanout_value
) && param
(object_list
)}
283 declare set_max_time_borrow
{
284 {delay_value Float
{$par>=0}}
286 } {param
(delay_value
) && param
(object_list
)}
288 declare set_max_transition
{
289 {transition_value Float
{$par>=0}}
291 } {param
(transition_value
) && param
(object_list
)}
293 declare set_min_capacitance
{
294 {capacitance_value Float
{$par>=0}}
296 } {param
(capacitance_value
) && param
(object_list
)}
298 declare set_min_delay
{
299 {delay_value Float
{1}}
304 {-through List
{dup
}}
305 } {param
(delay_value
) && \
306 !(param
(-rise) && param
(-fall))}
308 declare set_multicycle_path
{
309 {path_multiplier Int
{1}}
318 {-through List
{dup
}}
319 } {param
(path_multiplier
)}
321 declare set_operating_conditions
{
322 {-analysis_type Enum
{single bc_wc on_chip_variation
}}
331 declare set_output_delay
{
334 {-level_sensitive Flag
}
340 {delay_value Float
{1}}
341 {port_pin_list List
}
342 {-network_latency_included Flag
}
343 {-source_latency_included Flag
}
345 } {param
(delay_value
) && param
(port_pin_list
) && \
346 !((param
(-clock_fall) || param
(-level_sensitive)) && !param
(-clock))}
348 declare set_port_fanout_number
{
349 {fanout_number Int
{($par>=0) && ($par<=100000)}}
351 } {param
(fanout_number
) && param
(port_list
)}
353 declare set_propagated_clock
{
355 } {param
(object_list
)}
357 declare set_resistance
{
358 {value Float
{$par>=0}}
362 } {param
(value
) && param
(net_list
)}
364 declare set_wire_load_min_block_size
{
365 {size Float
{$par>=0}}
368 declare set_wire_load_mode
{
369 {mode_name Enum
{top enclosed segmented
}}
372 declare set_wire_load_model
{
380 declare set_wire_load_selection_group
{
386 } {param
(group_name
)}
388 declare set_data_check
{
400 {value Float
{$par>=0} }
401 } {(param
(-rise_from) || param
(-from) || param
(-fall_from)) && \
402 ((param
(-to) || param
(-rise_to)) || param
(-fall_to)) }
404 declare set_max_dynamic_power
{
405 {power_value Float
{$par>=0} }
406 {-unit Enum
{GW MW KW W mW uW nW pW fW aW
} }
407 } {param
(power_value
)}
409 declare set_max_leakage_power
{
410 {power_value Float
{$par>=0}}
411 {-unit Enum
{GW MW KW W mW uW nW pW fW aW
}}
412 } {param
(power_value
)}
414 declare set_min_porosity
{
415 {porosity_value Float
{$par>=0 && $par <=90}}
417 } {param
(porosity_value
) && param
(object_list
)}
421 # register_new_type EdgeList {
422 # if {[sdc::check_type List $value]} {
423 # if {[expr {[llength $value] % 2}] || [llength $value]==0} {
427 # set startvalue -0.1
429 # foreach parv $value {
430 # if {[catch {expr {$parv + 1}}]} {
433 # if {$parv<=$startvalue} {
436 # set startvalue $parv