This appendix describes the Delfee description language.
description
partition
description partition
partition
memory_partition
cpu_partition
software_partition
ident_list
ident_list , identifier
identifier
identifier
STRING
file_name
STRING
cpu_partition
cpu { static_specs_list }
cpu { }
cpu file_name
memory_partition
memory { static_specs_list }
memory { }
memory file_name
static_specs_list
static_specs_list static_specs
static_specs
static_specs
amod_specs
spce_specs
bus_specs
chips_specs
amod_specs
amode ident_list { amod_list }
spce_specs
space ident_list { spce_list }
bus_specs
bus ident_list { bus_list }
chips_specs
chips ident_list chips_list ;
amod_list
amod_list amod_def
amod_def
spce_list
spce_list spce_def
spce_def
bus_list
bus_list bus_def
bus_def
chips_list
chips_list chips_def
chips_def
amod_def
mau_spec
attribute_spec
map_spec
spce_def
mau_spec
map_spec
bus_def
mau_spec
mem_spec
map_spec
chips_def
mau_equ_spec
attribute_equ_spec
size_spec
mau_spec
mau NUMBER ;
mau_equ_spec
mau = NUMBER
attribute_spec
attribute STRING ;
attribute NUMBER ;
attr STRING ;
attr NUMBER ;
attribute_equ_spec
attribute = STRING
attribute = NUMBER
attr = STRING
attr = NUMBER
map_spec
map map_list ;
map_list
map_list map_def
map_def
map_def
src_spec
size_spec
dst_spec
align_spec
page_spec
amode_spec
space_spec
bus_spec
mem_spec
mem mem_list ;
mem_list
mem_list mem_def
mem_def
mem_def
addr_spec
chips_spec
src_spec
src = NUMBER
size_spec
size = NUMBER
dst_spec
dst = NUMBER
align_spec
align = NUMBER
page_spec
page = NUMBER
amode_spec
amode = identifier
space_spec
space = identifier
bus_spec
bus = low_bus_list
addr_spec
address = NUMBER
addr = NUMBER
chips_spec
chips = low_chip_list
low_bus_list
low_bus_list | identifier
identifier
low_chip_list
low_chip_list , low_chip_pair
low_chip_pair
low_chip_pair
low_chip_pair | low_chip
low_chip
low_chip
identifier
software_partition
software { layout_blocks }
software { }
software file_name
layout_blocks
layout_blocks layout_block
layout_block
layout_block
layout
loadmod
loadmod
load_mod software_specs ;
load_mod identifier software_specs ;
software_specs
software_specs software_spec
software_spec
software_spec
start
process
start
start = identifier ;
process
process = pids
pids
NUMBER
pids , NUMBER
layout
layout { space_blocks }
layout { }
layout file_name
space_blocks
space_blocks space_block
space_block
space_block
space identifier { block_blocks
}
block_blocks
block_blocks block_block
block_block
block_block
block identifier { cluster_blocks
}
cluster_blocks
cluster_blocks cluster_block
cluster_block
cluster_block
cluster_spec
p_gap_spec
p_fixed_spec
p_pool_spec
p_skip_spec
p_label_spec
cluster_spec
cluster identifier { amod_blocks
}
cluster ident_list ;
amode_blocks
amode_blocks amode_block
amode_block
amode_block
amode ident_list { section_blocks
}
amode ident_list ;
section_block
p_gap_spec
gap length ;
gap ;
p_fixed_spec
fixed address ;
p_pool_spec
pool length ;
pool ;
p_label_spec
label identifier ;
p_skip_spec
skip ;
attribute
attribute_equ_spec
length
length = NUMBER
leng = NUMBER
address
address = NUMBER
addr = NUMBER
section_blocks
section_blocks section_block
section_block
section_block
section_spec
copy_spec
v_fixed_spec
v_gap_spec
v_reserved_spec
stack_spec
heap_spec
table_spec
others
label_spec
v_assert_spec
attribute_spec
contiguous_block
overlay_block
contiguous_block
contiguous address { virtual_block_entries
}
contiguous { virtual_block_entries
}
overlay_block
overlay address { virtual_block_entries
}
overlay { virtual_block_entries
}
virtual_block_entries
virtual_block_entries virtual_block_entry
virtual_block_entry
virtual_block_entry
section_spec
copy_spec
label_spec
contiguous_block
overlay_block
section_spec
section selection modifiers ;
section selection ;
modifiers
modifiers modifier
modifier
modifier
attribute
address
copy_spec
copy selection attribute ;
copy selection ;
copy ;
selection
selection = STRING
identifier
v_fixed_spec
fixed address ;
v_gap_spec
gap ;
v_reserved_spec
reserved reserved_options ;
reserved ;
reserved_options
reserved_options reserved_option
reserved_option
reserved_option
attribute
address
length
label_equ_spec
stack_spec
stack stack_options ;
stack ;
heap_spec
heap stack_options ;
heap ;
stack_options
stack_options stack_option
stack_option
stack_option
attribute
length
table_spec
table attribute ;
table ;
others
others ;
label_spec
label identifier ;
label_equ_spec
label = identifier
v_assert_spec
assert ( bool_expression , STRING ) ;
asse ( bool_expression , STRING ) ;
bool_expression
termp bool_op termp
termp
term + termp
term - termp
term
term
( term )
identifier
NUMBER
bool_op
<
>
==
!=
A NUMBER is a series of (hex) digits with optional suffixes 'k' 'M' 'G' which stands for 'kilo', 'mega' and 'giga'. Numbers may be given in hex, octal or decimal with the usual prefix. Where applicable numbers may be preceded by a minus sign.
A STRING is a series of characters that is not a number (089 is a STRING because it is not a valid octal number) and consists of alphanumeric characters including '_', '.', '-' and the host dependent directory separators. (For PC '\', '/' and ':')
Any (part of a) token may contain environment variables. If the environment variable A contains the text 'foo' then the sequence:
$A/proto.dsc
is translated to:
foo/proto.dsc
Multi character variables must be combined with braces:
window = $(MODE);
There are three methods to write comments in a delfee script. The first one is the 'C' style comment between '/*' and '*/'. The second form is a '#' in the first column. The second form allows preprocessing by the C-preprocessor. Any #line or #file directive will be ignored by the locator. The third form is the 'C++' style comment; a double slash '//' anywhere on a line introduces comments until the end of line.