DEF Grammar Railroad Diagrams

Contents

DEF Grammar Railroad Diagrams#

The DEF (Design Exchange Format) grammar defines the syntax for the design description files read and written by OpenROAD’s ODB module. The grammar is implemented as a Bison parser in src/odb/src/def/def/def.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 def.y by generate_railroad_diagrams.py and are regenerated automatically via CI whenever def.y changes.

Contents#

File structure#

def_file#

def_file

rule#

rule

version_stmt#

version_stmt

case_sens_stmt#

case_sens_stmt

end_design#

end_design

design_name#

design_name

tech_name#

tech_name

history#

history

bus_bit_chars#

bus_bit_chars

divider_char#

divider_char

array_name#

array_name

floorplan_name#

floorplan_name

Design Attributes#

design_section#

design_section

die_area#

die_area

units#

units

gcellgrid#

gcellgrid

tracks_rule#

tracks_rule

track_start#

track_start

track_opts#

track_opts

track_type#

track_type

track_layer#

track_layer

track_layer_statement#

track_layer_statement

track_mask_statement#

track_mask_statement

row_rule#

row_rule

row_option#

row_option

row_step_option#

row_step_option

row_do_option#

row_do_option

row_prop#

row_prop

row_or_comp#

row_or_comp

Properties#

prop_def_section#

prop_def_section

property_def#

property_def

property_type_and_val#

property_type_and_val

Components#

comps_section#

comps_section

comps_maskShift_section#

comps_maskShift_section

start_comps#

start_comps

end_comps#

end_comps

comp#

comp

comp_start#

comp_start

comp_id_and_name#

comp_id_and_name

comp_name#

comp_name

comp_option#

comp_option

comp_type#

comp_type

comp_source#

comp_source

comp_eeq#

comp_eeq

comp_foreign#

comp_foreign

comp_generate#

comp_generate

comp_halo#

comp_halo

comp_routehalo#

comp_routehalo

comp_region#

comp_region

comp_region_start#

comp_region_start

comp_extension_stmt#

comp_extension_stmt

comp_prop#

comp_prop

comp_property#

comp_property

comp_blockage_rule#

comp_blockage_rule

placement_comp_rule#

placement_comp_rule

placement_status#

placement_status

halo_soft#

halo_soft

Nets#

nets_section#

nets_section

start_nets#

start_nets

end_nets#

end_nets

one_net#

one_net

net_and_connections#

net_and_connections

net_start#

net_start

net_name#

net_name

net_connection#

net_connection

net_option#

net_option

net_type#

net_type

net_prop#

net_prop

netsource_type#

netsource_type

conn_opt#

conn_opt

use_type#

use_type

source_type#

source_type

Net Routing#

paths#

paths

path#

path

new_path#

new_path

path_item#

path_item

path_item_list#

path_item_list

path_pt#

path_pt

opt_taper#

opt_taper

opt_taper_style#

opt_taper_style

opt_shape_style#

opt_shape_style

opt_style#

opt_style

opt_pattern#

opt_pattern

weight#

weight

width#

width

shield_layer#

shield_layer

Net Subnets#

subnet_option#

subnet_option

subnet_type#

subnet_type

subnet_opt_syn#

subnet_opt_syn

opt_common_pins#

opt_common_pins

floating_pins#

floating_pins

ordered_pins#

ordered_pins

one_floating_inst#

one_floating_inst

one_ordered_inst#

one_ordered_inst

opt_pin#

opt_pin

Special Nets#

snets_section#

snets_section

start_snets#

start_snets

end_snets#

end_snets

snet_rule#

snet_rule

snet_option#

snet_option

snet_other_option#

snet_other_option

snet_spacing#

snet_spacing

snet_voltage#

snet_voltage

snet_width#

snet_width

snet_prop#

snet_prop

spaths#

spaths

spath#

spath

snew_path#

snew_path

geom_fill#

geom_fill

geom_slot#

geom_slot

Pins#

pin_rule#

pin_rule

start_pins#

start_pins

end_pins#

end_pins

pin_cap_rule#

pin_cap_rule

pin_cap#

pin_cap

pin#

pin

pin_option#

pin_option

pin_layer_opt#

pin_layer_opt

pin_layer_mask_opt#

pin_layer_mask_opt

pin_layer_spacing_opt#

pin_layer_spacing_opt

pin_via_mask_opt#

pin_via_mask_opt

pin_poly_mask_opt#

pin_poly_mask_opt

pin_poly_spacing_opt#

pin_poly_spacing_opt

pin_oxide#

pin_oxide

Virtual Pins#

vpin_stmt#

vpin_stmt

vpin_begin#

vpin_begin

vpin_layer_opt#

vpin_layer_opt

vpin_options#

vpin_options

vpin_status#

vpin_status

Pin Properties#

pin_props_section#

pin_props_section

begin_pin_props#

begin_pin_props

end_pin_props#

end_pin_props

pin_prop_terminal#

pin_prop_terminal

pin_prop#

pin_prop

pin_prop_name_value#

pin_prop_name_value

Blockages#

blockage_section#

blockage_section

blockage_start#

blockage_start

blockage_end#

blockage_end

blockage_def#

blockage_def

blockage_rule#

blockage_rule

layer_blockage_rule#

layer_blockage_rule

mask_blockage_rule#

mask_blockage_rule

comp_blockage_rule#

comp_blockage_rule

rectPoly_blockage#

rectPoly_blockage

rect_statement#

rect_statement

rect_pts#

rect_pts

Regions#

regions_section#

regions_section

regions_start#

regions_start

regions_stmt#

regions_stmt

region_option#

region_option

region_type#

region_type

region_prop#

region_prop

Groups#

groups_section#

groups_section

groups_start#

groups_start

groups_end#

groups_end

start_group#

start_group

group_rule#

group_rule

group_member#

group_member

group_option#

group_option

group_region#

group_region

group_soft_option#

group_soft_option

group_prop#

group_prop

Via Definitions#

via_section#

via_section

start_def_cap#

start_def_cap

end_def_cap#

end_def_cap

via#

via

via_declaration#

via_declaration

via_end#

via_end

layer_stmt#

layer_stmt

layer_viarule_opts#

layer_viarule_opts

Non-default Rules#

nondefaultrule_section#

nondefaultrule_section

nondefault_start#

nondefault_start

nondefault_end#

nondefault_end

nondefault_def#

nondefault_def

nondefault_option#

nondefault_option

nondefault_layer_option#

nondefault_layer_option

nondefault_prop#

nondefault_prop

nondefault_prop_opt#

nondefault_prop_opt

Fills#

fill_section#

fill_section

fill_start#

fill_start

fill_end#

fill_end

fill_rule#

fill_rule

fill_def#

fill_def

fill_layer_opc#

fill_layer_opc

fill_mask#

fill_mask

fill_viaMask#

fill_viaMask

fill_via_opc#

fill_via_opc

fill_via_pt#

fill_via_pt

Slots#

slot_section#

slot_section

slot_start#

slot_start

slot_end#

slot_end

slot_rule#

slot_rule

slot_def#

slot_def

Styles#

styles_section#

styles_section

styles_start#

styles_start

styles_end#

styles_end

styles_rule#

styles_rule

IO Timing#

iotiming_section#

iotiming_section

start_iotiming#

start_iotiming

iotiming_end#

iotiming_end

iotiming_rule#

iotiming_rule

iotiming_member#

iotiming_member

iotiming_frompin#

iotiming_frompin

iotiming_parallel#

iotiming_parallel

iotiming_drivecell_opt#

iotiming_drivecell_opt

Scan Chains#

scanchains_section#

scanchains_section

scanchain_start#

scanchain_start

scanchain_end#

scanchain_end

scan_rule#

scan_rule

scan_member#

scan_member

td_macro_option#

td_macro_option

Timing Disables#

timingdisables_section#

timingdisables_section

timingdisables_start#

timingdisables_start

timingdisables_end#

timingdisables_end

timingdisables_rule#

timingdisables_rule

turnoff#

turnoff

turnoff_hold#

turnoff_hold

turnoff_setup#

turnoff_setup

wiredlogic_rule#

wiredlogic_rule

Partitions#

partitions_section#

partitions_section

partitions_start#

partitions_start

partitions_end#

partitions_end

start_partition#

start_partition

partition_rule#

partition_rule

partition_member#

partition_member

partition_maxbits#

partition_maxbits

min_or_max_member#

min_or_max_member

minmaxpins#

minmaxpins

Constraints#

constraint_section#

constraint_section

constraints_start#

constraints_start

constraints_end#

constraints_end

constraint_rules#

constraint_rules

constraint_rule#

constraint_rule

constraint_type#

constraint_type

constrain_what#

constrain_what

operand#

operand

operand_rule#

operand_rule

delay_spec#

delay_spec

risefall#

risefall

risefallminmax1#

risefallminmax1

risefallminmax2#

risefallminmax2

Assertions#

assertions_section#

assertions_section

assertions_start#

assertions_start

assertions_end#

assertions_end

Floorplan Constraints#

floorplan_contraints_section#

floorplan_contraints_section

fp_start#

fp_start

fp_stmt#

fp_stmt

canplace#

canplace

cannotoccupy#

cannotoccupy

Extension#

extension_section#

extension_section

extension_stmt#

extension_stmt

Primitives#

pt#

pt

firstPt#

firstPt

nextPt#

nextPt

otherPts#

otherPts

orient#

orient

orient_pt#

orient_pt

virtual_pt#

virtual_pt

virtual_statement#

virtual_statement

opt_plus#

opt_plus

opt_semi#

opt_semi

opt_paren#

opt_paren

opt_num_val#

opt_num_val

opt_range#

opt_range

opt_snet_range#

opt_snet_range

h_or_v#

h_or_v

same_mask#

same_mask

mask#

mask

maskLayer#

maskLayer

maskShift#

maskShift

opt_mask_opc#

opt_mask_opc

opt_mask_opc_l#

opt_mask_opc_l

pattern_type#

pattern_type

shape_type#

shape_type

Regenerating the diagrams#

After editing def.y, re-run:

python3 src/odb/doc/generate_railroad_diagrams.py def

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