LEF Grammar Railroad Diagrams

Contents

LEF Grammar Railroad Diagrams#

The LEF (Library Exchange Format) grammar defines the syntax for the library description files read and written by OpenROAD’s ODB module. The grammar is implemented as a Bison parser in src/odb/src/lef/lef/lef.y.

Railroad diagrams (also called syntax diagrams) give an at-a-glance visual summary of each grammar rule. The SVGs below are generated directly from lef.y by generate_railroad_diagrams.py and are regenerated automatically via CI whenever lef.y changes.

Contents#

File structure#

lef_file#

lef_file

rule#

rule

version#

version

end_library#

end_library

busbitchars#

busbitchars

dividerchar#

dividerchar

case_sensitivity#

case_sensitivity

wireextension#

wireextension

fixedmask#

fixedmask

manufacturing#

manufacturing

useminspacing#

useminspacing

clearancemeasure#

clearancemeasure

clearance_type#

clearance_type

spacing_type#

spacing_type

spacing_value#

spacing_value

maxstack_via#

maxstack_via

create_file_statement#

create_file_statement

extension#

extension

def_statement#

def_statement

msg_statement#

msg_statement

Units#

units_section#

units_section

start_units#

start_units

units_rule#

units_rule

Layers#

layer_rule#

layer_rule

start_layer#

start_layer

end_layer#

end_layer

layer_option#

layer_option

layer_type#

layer_type

layer_direction#

layer_direction

layer_name#

layer_name

layer_prop#

layer_prop

layer_spacing#

layer_spacing

layer_spacing_cut_routing#

layer_spacing_cut_routing

layer_spacing_opt#

layer_spacing_opt

layer_spacingtable_opt#

layer_spacingtable_opt

layer_enclosure_type_opt#

layer_enclosure_type_opt

layer_enclosure_width_opt#

layer_enclosure_width_opt

layer_enclosure_width_except_opt#

layer_enclosure_width_except_opt

layer_preferenclosure_width_opt#

layer_preferenclosure_width_opt

layer_minimumcut_within#

layer_minimumcut_within

layer_minimumcut_from#

layer_minimumcut_from

layer_minimumcut_length#

layer_minimumcut_length

layer_minstep_option#

layer_minstep_option

layer_minstep_type#

layer_minstep_type

layer_minen_width#

layer_minen_width

layer_oxide#

layer_oxide

layer_exceptpgnet#

layer_exceptpgnet

layer_arraySpacing_long#

layer_arraySpacing_long

layer_arraySpacing_width#

layer_arraySpacing_width

layer_arraySpacing_arraycut#

layer_arraySpacing_arraycut

layer_sp_parallel_width#

layer_sp_parallel_width

layer_sp_TwoWidth#

layer_sp_TwoWidth

layer_sp_TwoWidthsPRL#

layer_sp_TwoWidthsPRL

layer_sp_influence_width#

layer_sp_influence_width

layer_antenna_duo#

layer_antenna_duo

layer_antenna_pwl#

layer_antenna_pwl

layer_diffusion_ratio#

layer_diffusion_ratio

layer_diffusion_ratios#

layer_diffusion_ratios

layer_table_type#

layer_table_type

layer_frequency#

layer_frequency

ac_layer_table_opt#

ac_layer_table_opt

dc_layer_table#

dc_layer_table

sp_options#

sp_options

res_point#

res_point

cap_point#

cap_point

current_density_pwl#

current_density_pwl

spacing_cut_layer_opt#

spacing_cut_layer_opt

Vias#

via#

via

via_keyword#

via_keyword

start_via#

start_via

end_via#

end_via

via_option#

via_option

via_other_options#

via_other_options

via_other_option#

via_other_option

via_viarule#

via_viarule

via_viarule_option#

via_viarule_option

via_foreign#

via_foreign

start_foreign#

start_foreign

via_layer_rule#

via_layer_rule

via_layer#

via_layer

via_geometry#

via_geometry

via_placement#

via_placement

via_name#

via_name

via_name_value_pair#

via_name_value_pair

Via Rules#

viarule#

viarule

viarule_generate#

viarule_generate

viarule_keyword#

viarule_keyword

viarule_generate_default#

viarule_generate_default

viarule_layer_list#

viarule_layer_list

viarule_layer#

viarule_layer

viarule_layer_name#

viarule_layer_name

viarule_layer_option#

viarule_layer_option

viarule_prop#

viarule_prop

opt_viarule_props#

opt_viarule_props

Spacing#

spacing_rule#

spacing_rule

start_spacing#

start_spacing

end_spacing#

end_spacing

spacing#

spacing

samenet_keyword#

samenet_keyword

opt_samenetPGonly#

opt_samenetPGonly

opt_adjacentcuts_exceptsame#

opt_adjacentcuts_exceptsame

opt_endofline#

opt_endofline

opt_endofline_twoedges#

opt_endofline_twoedges

opt_range_second#

opt_range_second

opt_def_value#

opt_def_value

opt_def_range#

opt_def_range

opt_def_dvalue#

opt_def_dvalue

Sites#

site#

site

start_site#

start_site

end_site#

end_site

site_option#

site_option

site_class#

site_class

site_symmetry#

site_symmetry

site_symmetry_statement#

site_symmetry_statement

site_word#

site_word

site_rowpattern#

site_rowpattern

site_rowpattern_statement#

site_rowpattern_statement

sitePattern#

sitePattern

core_type#

core_type

pad_type#

pad_type

endcap_type#

endcap_type

Macros#

macro#

macro

start_macro#

start_macro

end_macro#

end_macro

macro_option#

macro_option

macro_class#

macro_class

macro_source#

macro_source

macro_symmetry#

macro_symmetry

macro_symmetry_statement#

macro_symmetry_statement

macro_size#

macro_size

macro_origin#

macro_origin

macro_foreign#

macro_foreign

macro_eeq#

macro_eeq

macro_leq#

macro_leq

macro_generator#

macro_generator

macro_generate#

macro_generate

macro_clocktype#

macro_clocktype

macro_power#

macro_power

macro_fixedMask#

macro_fixedMask

macro_density#

macro_density

density_layer#

density_layer

density_layer_rect#

density_layer_rect

Macro Pins#

macro_pin#

macro_pin

start_macro_pin#

start_macro_pin

end_macro_pin#

end_macro_pin

macro_pin_option#

macro_pin_option

macro_pin_use#

macro_pin_use

macro_scan_use#

macro_scan_use

macro_port_class_option#

macro_port_class_option

macro_site#

macro_site

macro_site_word#

macro_site_word

start_macro_port#

start_macro_port

macro_obs#

macro_obs

start_macro_obs#

start_macro_obs

pin_shape#

pin_shape

pin_layer_oxide#

pin_layer_oxide

pin_name_value_pair#

pin_name_value_pair

geometries#

geometries

geometry#

geometry

maskColor#

maskColor

Non-default Rules#

nondefault_rule#

nondefault_rule

end_nd_rule#

end_nd_rule

nd_hardspacing#

nd_hardspacing

nd_rule#

nd_rule

nd_layer#

nd_layer

nd_layer_stmt#

nd_layer_stmt

nd_prop#

nd_prop

usevia#

usevia

useviarule#

useviarule

mincuts#

mincuts

Properties#

prop_def_section#

prop_def_section

prop_define#

prop_define

prop_stmt#

prop_stmt

relop#

relop

IRDrop#

irdrop#

irdrop

start_irdrop#

start_irdrop

end_irdrop#

end_irdrop

ir_table#

ir_table

ir_tablename#

ir_tablename

ir_table_value#

ir_table_value

Noise & Correction Tables#

noisetable#

noisetable

end_noisetable#

end_noisetable

noise_table_entry#

noise_table_entry

correctiontable#

correctiontable

end_correctiontable#

end_correctiontable

correction_table_item#

correction_table_item

corr_victim#

corr_victim

victim#

victim

universalnoisemargin#

universalnoisemargin

edgeratethreshold1#

edgeratethreshold1

edgeratescalefactor#

edgeratescalefactor

edgeratethreshold2#

edgeratethreshold2

Timing#

timing#

timing

start_timing#

start_timing

end_timing#

end_timing

timing_option#

timing_option

slew_spec#

slew_spec

delay_or_transition#

delay_or_transition

risefall#

risefall

unateness#

unateness

electrical_direction#

electrical_direction

one_pin_trigger#

one_pin_trigger

two_pin_trigger#

two_pin_trigger

from_pin_trigger#

from_pin_trigger

to_pin_trigger#

to_pin_trigger

table_entry#

table_entry

output_list#

output_list

output_resistance_entry#

output_resistance_entry

one_cap#

one_cap

then#

then

else#

else

b_expr#

b_expr

s_expr#

s_expr

expression#

expression

dtrm#

dtrm

Arrays (Floorplan)#

array#

array

start_array#

start_array

end_array#

end_array

array_rule#

array_rule

gcellPattern#

gcellPattern

trackPattern#

trackPattern

sitePattern#

sitePattern

stepPattern#

stepPattern

floorplan_start#

floorplan_start

floorplan_element#

floorplan_element

Antenna Rules#

input_antenna#

input_antenna

output_antenna#

output_antenna

inout_antenna#

inout_antenna

antenna_input#

antenna_input

antenna_inout#

antenna_inout

antenna_output#

antenna_output

Dielectric & Minfeature#

dielectric#

dielectric

minfeature#

minfeature

Primitives#

pt#

pt

firstPt#

firstPt

nextPt#

nextPt

otherPts#

otherPts

orientation#

orientation

int_number#

int_number

int_number_list#

int_number_list

number_list#

number_list

opt_layer_name#

opt_layer_name

req_layer_name#

req_layer_name

Regenerating the diagrams#

After editing lef.y, re-run:

python3 src/odb/doc/generate_railroad_diagrams.py lef

Java 11 or later must be on PATH. The WAR tools are vendored in src/odb/doc/tools/ and are not downloaded at runtime.