DCF syntax rules

The syntax rules for DCF are listed below. Note that these rules cannot be used as a parsing grammar. Terminal symbols are in upper case. Non-terminal symbols, which are enclosed with <>, are in lower case. Symbols enclosed with [] are optional. The symbol | separates alternatives.

<DCF> =

<sec_def_name>

<sec_io_arr>

<sec_min_del>

<sec_max_del>

<sec_clk>

<sec_global_stop>

<sec_def_name> =

SECTION TOP_LEVEL_DEF_NAME <stop>

<variable>.

END <stop>

<sec_io_arr> =

SECTION IO_ARRIVAL_TIMES <stop>

[<io_arr_clauses>]

END <stop>

<io_arr_clauses> = <io_arr_clause> | <io_arr_clause> <io_arr_clauses>

<io_arr_clause> = [<number>:] <number> <timeunit> <io_list>.

<io_list> = <io> | <io> <io_list>

<io> = INPAD | OUTPAD| <variable>

<sec_max_del> =

SECTION MAX_DELAYS <stop>

<delay_clauses>

END <stop>

<sec_min_del> =

SECTION MIN_DELAYS <stop>

<delay_clauses>

END <stop>

<delay_clauses> = <delay_clause> | <delay_clause> <delay_clauses>

<delay_clause> =

DELAY <time>; SOURCE <source_list>; SINK <sink_list>;

[STOP <stop_list>]; [PASS <pass_list>].

<source_list> = {<sources>} [EXCEPT {<sources>}]

<sources> = INPAD | CLOCKED | <name_list>

<name_list> = <variable> | <variable> <name_list>

<sink_list> = {<sinks>}[EXCEPT {<sinks>}]

<sinks> = OUTPAD | GATED | <name_list>

<stop_list> = {<name_list>} [EXCEPT {<sinks>}]

<pass_list> = {<name_list>} [EXCEPT {<sinks>}]

<sec_clk> =

SECTION GLOBAL_CLOCKS <stop>

[<waveform_clauses>]

[<relational_clauses>]

END <stop>

<waveform_clauses> = <waveform_clause> | <waveform_clause> <waveform_clauses>

<waveform_clause> = WAVEFORM <variable> RISE <time>

FALL<time> PERIOD <time> [EXCEPT SOURCE {macrolist}]

[EXCEPT SINK {macrolist}].

<relational_clauses> = <check_clause> | <check_clause> <check_clauses>

<check_clause> =

MULTICYCLE <variable> SOURCE CYCLE<value> [EXCEPT <name_list>]

[; DESTINATION <clkname> CYCLE<value> <clkname> CYCLE<value>

[EXCEPT<name_list>]].

<clkname> = <clockMacro>

<time> = <number> <unit>

<number> = <int>

<stop> =. | /* NULL */

<unit> = NS | MS | PS

<variable> = same as variable in C language.

<int> = same as int in C language.

sec_global_stops> =

Section GLOBAL_STOPS.

{<pinNameList>}.

End.

<sec_pin_loads> =

Section PIN_LOADS.

<pinLoadClauses>

End.

<pinLoadClauses> = <pinLoadClause> | <pinLoadCause>l<pinLoadClauses>]

<pinLoadClause> = <number> <capUnit> [TTL | CMOS] <pinNameList>.

<capUnit> = PF | NF | UF | MF