<?xml version="1.0" encoding="UTF-8"?> 

<sdcs>
	<!-- Note :
		(1) default "result" is -$name $value
		(2) for switch, if the para is selecte, the "result" is -$name
		(3) if the "result" is "ignore", just ignore the $value
		(4) if the "result" is "onlyValue", just use the $value
		(5) the full sdcCmd is $sdcName += $result
		(6) the cond properties :
					[...]    : a parameters condition set
					repeated : a parameter can exist repeatedly
					exclusive: the parameters do not exist simultaneously. A parameter may be in two sets.
					dependent: the FIRST parameter is effective only the others exist
		(7) valType :
			
	-->
	<sdc name="create_clock" textId="sdc_ID01" svgName="">
		<para name="period"   textId="cck_ID01" type="necessary" valType="float" />
		<para name="rising"   textId="cck_ID02" type="optional"  valType="float" result="ignore"/>
		<para name="falling"  textId="cck_ID03" type="optional"  valType="float" result="-waveform {$rising $falling}" />
		<para name="name"     textId="cck_ID04" type="optional"  valType="string" />
		<para name="objects"  textId="cck_ID05" type="optional"  valType="list : port pin udmNet" result="onlyValue"/>
		<para name="add"      textId="cck_ID06" type="optional"  valType="switch" />
		<cond dependent="[rising, falling] [falling, rising]" />
		<!--sdc cmd="$sdcName -period $period -waveform {$rising $falling} -name $name $objects -add $add" /-->
	</sdc>

	<sdc name="create_generated_clock" textId="sdc_ID02">
		<para name="source"        textId="cgc_ID01" type="necessary" valType="pin" result="onlyValue" />
		<para name="objects"       textId="cgc_ID02" type="necessary" valType="list : net port pin" result="onlyValue" />
		<para name="name"          textId="cgc_ID03" type="optional"  valType="string" />
		<para name="divide_by"     textId="cgc_ID04" type="optional"  valType="int" />
		<para name="multiply_by"   textId="cgc_ID05" type="optional"  valType="int" />
		<para name="duty_cycle"    textId="cgc_ID06" type="optional"  valType="float" />
		<para name="edges"         textId="cgc_ID07" type="optional"  valType="list : int" />
		<para name="edge_shift"    textId="cgc_ID08" type="optional"  valType="list : int" />
		<para name="combinational" textId="cgc_ID19" type="optional"  valType="switch" />
		<para name="invert"        textId="cgc_ID10" type="optional"  valType="switch" />
		<para name="add"           textId="cgc_ID11" type="optional"  valType="switch" />
		<para name="master_clock"  textId="cgc_ID12" type="optional"  valType="clk" />
		<cond dependent="[master_clock, add, name] [add, master_clock, name]" exclusive="[divide_by, multiply_by, edges, combinational]" />
	</sdc>

	<sdc name="set_input_delay" textId="sdc_ID03">
		<para name="delay"                    textId="sid_ID01" type="necessary" valType="float" result="onlyValue" />
		<para name="objects"                  textId="sid_ID02" type="necessary" valType="list : port" result="onlyValue" />
		<para name="clock"                    textId="sid_ID03" type="optional"  valType="list : clk" />
		<para name="clock_fall"               textId="sid_ID05" type="optional"  valType="switch" />
		<para name="level_sensitive"          textId="sid_ID06" type="optional"  valType="switch" />
		<para name="rise"                     textId="sid_ID07" type="optional"  valType="switch" />
		<para name="fall"                     textId="sid_ID08" type="optional"  valType="switch" />
		<para name="max"                      textId="sid_ID19" type="optional"  valType="switch" />
		<para name="min"                      textId="sid_ID10" type="optional"  valType="switch" />
		<para name="add_delay"                textId="sid_ID11" type="optional"  valType="switch" />
		<para name="network_latency_included" textId="sid_ID12" type="optional"  valType="switch" />
		<para name="source_latency_included"  textId="sid_ID13" type="optional"  valType="switch" />
		<cond dependent="[clock_fall, clock]" exclusive="[reference_pin, network_latency_included] [reference_pin, source_latency_included] [rise, fall] [max, min]" />
	</sdc>

	<sdc name="set_output_delay" textId="sdc_ID04">
		<para name="delay"                    textId="sod_ID01" type="necessary" valType="float" result="onlyValue" />
		<para name="objects"                  textId="sod_ID02" type="necessary" valType="list : port" result="onlyValue" />
		<para name="clock"                    textId="sod_ID03" type="optional"  valType="list : clk" />
		<para name="clock_fall"               textId="sod_ID05" type="optional"  valType="switch" />
		<para name="level_sensitive"          textId="sod_ID06" type="optional"  valType="switch" />
		<para name="rise"                     textId="sod_ID07" type="optional"  valType="switch" />
		<para name="fall"                     textId="sod_ID08" type="optional"  valType="switch" />
		<para name="max"                      textId="sod_ID19" type="optional"  valType="switch" />
		<para name="min"                      textId="sod_ID10" type="optional"  valType="switch" />
		<para name="add_delay"                textId="sod_ID11" type="optional"  valType="switch" />
		<para name="network_latency_included" textId="sod_ID12" type="optional"  valType="switch" />
		<para name="source_latency_included"  textId="sod_ID13" type="optional"  valType="switch" />
		<para name="group_path"               textId="sod_ID14" type="optional"  valType="string" />
		<cond dependent="[clock_fall, clock]" exclusive="[reference_pin, network_latency_included] [reference_pin, source_latency_included] [rise, fall] [max, min]" />
	</sdc>

	<sdc name="set_clock_latency" textId="sdc_ID05">
		<para name="delay"   textId="scl_ID01" type="necessary" valType="float" result="onlyValue" />
		<para name="objects" textId="scl_ID02" type="necessary" valType="list : port pin" result="onlyValue" />
		<para name="clock"   textId="scl_ID03" type="optional"  valType="list : clk" />
		<para name="early"   textId="scl_ID04" type="optional"  valType="switch" />
		<para name="late"    textId="scl_ID05" type="optional"  valType="switch" />
		<para name="rise"    textId="scl_ID06" type="optional"  valType="switch" />
		<para name="fall"    textId="scl_ID07" type="optional"  valType="switch" />
		<para name="max"     textId="scl_ID08" type="optional"  valType="switch" />
		<para name="min"     textId="scl_ID19" type="optional"  valType="switch" />
		<para name="source"  textId="scl_ID10" type="optional"  valType="switch" />
		<cond exclusive="[early, late] [rise, fall] [max, min]" />
		<!--sdc cmd="$sdcName -clock $clock -max $max -min $min -source $source -rise $rise -fall $fall -early $early -late $late $delay $objects"/-->
	</sdc>

	<sdc name="set_clock_uncertainty" textId="sdc_ID06">
		<para name="uncertainty" textId="scu_ID01" type="necessary" valType="float" result="onlyValue" />
		<para name="objects"     textId="scu_ID02" type="optional"  valType="list : clk" result="onlyValue" />
		<para name="from"        textId="scu_ID03" type="optional"  valType="clk" />
		<para name="rise_from"   textId="scu_ID04" type="optional"  valType="clk" />
		<para name="fall_from"   textId="scu_ID05" type="optional"  valType="clk" />
		<para name="to"          textId="scu_ID06" type="optional"  valType="clk" />
		<para name="rise_to"     textId="scu_ID07" type="optional"  valType="clk" />
		<para name="fall_to"     textId="scu_ID08" type="optional"  valType="clk" />
		<para name="setup"       textId="scu_ID19" type="optional"  valType="switch" />
		<para name="hold"        textId="scu_ID10" type="optional"  valType="switch" />
		<cond exclusive="[objects, from, rise_from, fall_from] [objects, to, rise_to, fall_to] [setup, hold]" />
		<!--sdc cmd="$sdcName -setup $setup -hold $hold $uncertainty $objects -from $from -rise_from $rise_from -fall_from $fall_from -to $to -rise_to $rise_to -fall_to $fall_to"/-->
		<!-- obsolete in GUI : -rise $rise -fall $fall -->
	</sdc>

	<sdc name="set_false_path" textId="sdc_ID07">
		<para name="from"         textId="sfp_ID01" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_from"    textId="sfp_ID02" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_from"    textId="sfp_ID03" type="optional"  valType="list : clk port pin instance" />
		<para name="to"           textId="sfp_ID04" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_to"      textId="sfp_ID05" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_to"      textId="sfp_ID06" type="optional"  valType="list : clk port pin instance" />
		<para name="through"      textId="sfp_ID07" type="optional"  valType="list : port pin instance net" />
		<para name="rise_through" textId="sfp_ID08" type="optional"  valType="list : port pin instance net" />
		<para name="fall_through" textId="sfp_ID19" type="optional"  valType="list : port pin instance net" />
		<para name="reset_path"   textId="sfp_ID10" type="optional"  valType="switch" />
		<para name="rise"         textId="sfp_ID11" type="optional"  valType="switch" />
		<para name="fall"         textId="sfp_ID12" type="optional"  valType="switch" />
		<para name="setup"        textId="sfp_ID13" type="optional"  valType="switch" />
		<para name="hold"         textId="sfp_ID14" type="optional"  valType="switch" />
		<cond repeated="[through] [rise_through] [fall_through]" exclusive="[from, rise_from, fall_from] [to, rise_to, fall_to] [setup, hold] [rise, fall]" />
	</sdc>

	<sdc name="set_max_delay" textId="sdc_ID08">
		<para name="delay"        textId="sxd_ID01" type="necessary" valType="float" result="onlyValue" />		
		<para name="from"         textId="sfp_ID01" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_from"    textId="sfp_ID02" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_from"    textId="sfp_ID03" type="optional"  valType="list : clk port pin instance" />
		<para name="to"           textId="sfp_ID04" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_to"      textId="sfp_ID05" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_to"      textId="sfp_ID06" type="optional"  valType="list : clk port pin instance" />
		<para name="through"      textId="sfp_ID07" type="optional"  valType="list : port pin instance net" />
		<para name="rise_through" textId="sfp_ID08" type="optional"  valType="list : port pin instance net" />
		<para name="fall_through" textId="sfp_ID19" type="optional"  valType="list : port pin instance net" />
		<para name="reset_path"   textId="sfp_ID10" type="optional"  valType="switch" />
		<para name="rise"         textId="sfp_ID11" type="optional"  valType="switch" />
		<para name="fall"         textId="sfp_ID12" type="optional"  valType="switch" />
		<cond repeated="[through] [rise_through] [fall_through]" exclusive="[from, rise_from, fall_from] [to, rise_to, fall_to] [rise, fall]" />
	</sdc>

	<sdc name="set_min_delay" textId="sdc_ID09">
		<para name="delay"        textId="smd_ID01" type="necessary" valType="float" result="onlyValue" />
		<para name="from"         textId="sfp_ID01" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_from"    textId="sfp_ID02" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_from"    textId="sfp_ID03" type="optional"  valType="list : clk port pin instance" />
		<para name="to"           textId="sfp_ID04" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_to"      textId="sfp_ID05" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_to"      textId="sfp_ID06" type="optional"  valType="list : clk port pin instance" />
		<para name="through"      textId="sfp_ID07" type="optional"  valType="list : port pin instance net" />
		<para name="rise_through" textId="sfp_ID08" type="optional"  valType="list : port pin instance net" />
		<para name="fall_through" textId="sfp_ID19" type="optional"  valType="list : port pin instance net" />
		<para name="reset_path"   textId="sfp_ID10" type="optional"  valType="switch" />
		<para name="rise"         textId="sfp_ID11" type="optional"  valType="switch" />
		<para name="fall"         textId="sfp_ID12" type="optional"  valType="switch" />
		<cond repeated="[through] [rise_through] [fall_through]" exclusive="[from, rise_from, fall_from] [to, rise_to, fall_to] [rise, fall]" />
	</sdc>

	<sdc name="set_multicycle_path" textId="sdc_ID10">
		<para name="multiplier"   textId="smp_ID01" type="necessary" valType="int" result="onlyValue" />
		<para name="from"         textId="sfp_ID01" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_from"    textId="sfp_ID02" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_from"    textId="sfp_ID03" type="optional"  valType="list : clk port pin instance" />
		<para name="to"           textId="sfp_ID04" type="optional"  valType="list : clk port pin instance" />
		<para name="rise_to"      textId="sfp_ID05" type="optional"  valType="list : clk port pin instance" />
		<para name="fall_to"      textId="sfp_ID06" type="optional"  valType="list : clk port pin instance" />
		<para name="through"      textId="sfp_ID07" type="optional"  valType="list : port pin instance net" />
		<para name="rise_through" textId="sfp_ID08" type="optional"  valType="list : port pin instance net" />
		<para name="fall_through" textId="sfp_ID19" type="optional"  valType="list : port pin instance net" />
		<para name="reset_path"   textId="sfp_ID10" type="optional"  valType="switch" />
		<para name="rise"         textId="sfp_ID11" type="optional"  valType="switch" />
		<para name="fall"         textId="sfp_ID12" type="optional"  valType="switch" />
		<para name="setup"        textId="sfp_ID13" type="optional"  valType="switch" />
		<para name="hold"         textId="sfp_ID14" type="optional"  valType="switch" />
		<para name="start"        textId="smp_ID05" type="optional"  valType="switch" />
		<para name="end"          textId="smp_ID04" type="optional"  valType="switch" />
		<cond repeated="[through] [rise_through] [fall_through]" exclusive="[from, rise_from, fall_from] [to, rise_to, fall_to] [rise, fall] [setup, hold] [start, end]" />
	</sdc>
</sdcs>