4.1. Rappels
La description d'une étoile sous Ptolemy comprend plusieurs parties :- une partie de description générale de l'étoile (nom,copyright, documentation, ...),
- une partie de déclaration des entrées/sorties,
- une partie de déclaration des paramètres,
- plusieurs parties de code décrivant la fonction de l'étoile :
- à l'initialisation du simulateur pour lui indiquer des réservations de mémoire, les ouvertures de fichiers ou des caractéristiques spéciales au niveau des entrées/sorties (par exemple qu'il faut 512 échantillons d'entrée pour n'en calculer qu'un seul en sortie),
- la fonction réalisée à chaque itération.
- la fonction réalisée à la fin de la simulation (libération de la mémoire, ...).
- à l'initialisation du simulateur pour lui indiquer des réservations de mémoire, les ouvertures de fichiers ou des caractéristiques spéciales au niveau des entrées/sorties (par exemple qu'il faut 512 échantillons d'entrée pour n'en calculer qu'un seul en sortie),
Les fichiers de description de bloc possèdent un préfixe correspondant au domaine auxquels ils appartiennent et un suffixe `.pl' ('Ptolemy Language'). Des exemples de noms sont :
- CG56Sub.pl
- SDFCos.pl
Remarque:
Chaque schéma est contenu dans un répertoire. Ce répertoire comprend les sous-répertoires:
/schematic : les fichiers représentant le schéma s'il y en a un (fil part du pixel 320,200 et arrive au pixel 320,400, ... )
/contents : l'interprétation fonctionnelle du schéma précédent (port de sortie de SDFSin relié au port d'entrée de SDFAdd, ...)
/interface ( la représentation physique de l'icone s'il y en a une)
Ceci est valable pour tout schéma, qu'il s'agisse d'une Star, Galaxie ou Univers. Chaque schéma ainsi stocké et qui contient des sous-blocs ne stocke en fait dans sa propre description que les chemis d'accès aux sous-blocs qu'il contient - et non pas une copie de ces blocs. En conséquence losque vous déplacer un répertoire décrivant un bloc, il faudra remettre à jour les chemins d'accès dans tous les autres blocs qui utilisent ce premier bloc. Il est conseillé d'utiliser l'utilitaire 'masters' qui permet de réaffecter les chemins qui ne sont plus valables.
4.2. Description d'une étoile
La fonction de seuillage à réaliser est la suivante :output(n) = max(MIN,min(input(n),MAX)où MIN et MAX sont des paramètres du bloc.
A vous d'implémenter cette fonction. Vous disposez du canevas suivant :
///////////////// DEBUT DU LISTING ////////////////
defstar {
// GENERAL INFORMATION ON THE STAR
// the name of the star
name { }
// the domain SDF, BDF, CGC, ...
domain { }
// a short description of the star function
desc {
}
// this allows the use of SCCS or RCS
// version control systems
version { %W% %G% }
author { }
copyright {
Copyright (c) 1997 - 2000 }
// Just to precise where it lies. It is just an indication
// and you can put whatever you like
location { }
// Used to generate keywords for the automatic
// documentation generation.
// .Id is a nroff command
explanation {
.Id ""
.Id ""
}
//
// END OF GENERAL STAR INFORMATION DEFINITION
// START OF EXTERNAL VIEW DEFINITION
// Definition of an input
input {
// name of the input
name { }
// data type that will come from the input
type { }
// description of the input
desc { }
}
// Definition of an output
output {
name { }
type { }
desc { }
}
// State definition
// A state is internal to a star.
// It may be set before a run.
// Afterthat the star may modify the value.
// It is typically used for star parameters
defstate {
name { }
type { }
// A default value : very very useful
default { }
desc { }
}
// END OF EXTERNAL VIEW DEFINITION
// STAR FUNCTION DEFINITION
// setup : executed once at the beginning of the run
setup {
/* In setup, go and wrapup, I can put classical
C comments */
} // end setup
//
// go, executed on each iteration of the system
go {
} // end go
//
// wrapup : executed once at the end of the run
wrapup {
} // end of wrapup
// END OF STAR FUNCTION DEFINITION
} // end of star
Placez vous dans le sous-répertoire qui accueillera les étoiles que vous écrirez.
Copiez-y le code source $PTOLEMY/test/SDFStart.pl. Il ne vous reste plus qu'à le compléter judicieusement et à le copier dans un fichier nommé : `SDFTemplate.pl'.
>> cd
>> cd mystar
>> mkdir src
>> cd src
>> cp $PTOLEMY/test/src/SDF/SDFStart.pl SDFTemplate.plEnsuite, retourner dans Ptolemy et lancer la création d'une étoile en appelant la fenêtre de dialogue correspondante par:
'*'

Dans le champ 'Star name': taper Template.
Dans le champ 'Star src directory': taper ~/ptolemy/mystar/src
Dans 'Pathname of Palette': taper './init.pal'
Puis valider.
Ptolemy appelle alors le préprocesseur `PTLANG' qui transforme le fichier `.pl' en trois fichiers (`.cc' `.h' et `.t'), puis appelle le compilateur C++ (g++) pour compiler le source (`.cc'). Si le source ne comporte pas d'erreurs, alors le fichier objet SDFTemplate.o est alors obtenu et lié au noyau de simulation.
Une nouvelle icone est aussi générée. Elle est visible dans la palette `init.pal'. Le vérifier.
4.3. Erreurs à la compilation et modifications
Lors d'erreurs à la compilation, il faut rectifier le source et relancer la création de l'étoile par`*'si la brique n'est pas encore créée (Ptolemy relancera alors le préprocesseur Ptlang et il y aura donc création de nouveaux fichiers `.cc', `.h' et `.t').
Si l'étoile existe déjà, elle peut être rechargée après modification en plaçant le curseur sur n'importe quelle icone de cette étoile et en tapant:
'L'(Load). La compilation de l'étoile est relancée et le fichier objet est à nouveau lié au noyau Ptolemy. De toute façcon, si vous lancez la simulation d'un univers contenant une étoile modifiée, cette étoile est automatiquement recompilée.
![]() |
Précédent | Suivant | Plan | 13/03/00 | PTOLAB |

