G DELFEE SYNTAX

This appendix describes the Delfee description language.

General

description
partition
description partition

partition
memory_partition
cpu_partition
software_partition

ident_list
ident_list , identifier
identifier

identifier
STRING

file_name
STRING

CPU

cpu_partition
cpu { static_specs_list }
cpu
{ }
cpu
file_name

Memory

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 = identifier

addr_spec
address = NUMBER
addr = NUMBER

chips_spec
chips = low_chip_list

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

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
v_label_spec
v_assert_spec
attribute_spec

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
v_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 ;

v_label_spec
label identifier ;

v_label_equ_spec
label = identifier

v_assert_spec
assert ( bool_expression , STRING ) ;
asse ( bool_expression , STRING ) ;

others
others ;

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:

is translated to:

Multi character variables must be combined with braces:

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.


Copyright © 2002 Altium BV