106
2 Spezifikation und Modellierung
Beispiel 2.29: Abb. 2.66 [173] zeigt eine Komponente G, die Unterkomponenten g1
und g2 enthält.
Abb. 2.66 Strukturelle
Hierarchie in SpecC
Die strukturelle Hierarchie wird in dem folgenden SpecC-Modell beschrieben:
01: interface L { void Write(int x); };
02: interface R { int Read(void); };
03: channel H implements L,R {
04:
int Data; bool Valid;
05:
void Write(int x) { Data=x; Valid=true; }
06:
int Read(void) {
07:
while (!Valid) waitfor (10);
08:
return (Data);
09: }
11: };
11: behavior G1(in int p1, L p2, out int p3) {
12:
void main (void) { /*...*/ p2.Write(p1); } };
13: behavior G2(in int p1, R p2, out int p3) {
14:
void main(void) { /*...*/ p3=p2.Read(); } };
15: behavior G(in int p1, out int p2) {
16:
int h1; H h2; G1 g1(p1, h2, h1); G2 g2(h1, h2, p2);
17:
void main (void) {
18:
par { g1.main(); g2.main(); }
19: }
20: };
Die parallele Ausführung der Teilkomponenten wird durch das Schlüsselwort par
in Zeile 18 ausgedrückt. In Zeile 16 ist zu sehen, dass Teilkomponenten über die
Ganzzahl h1 und durch den Kanal h2 kommunizieren. Das im Kanal H implementierte Schnittstellenprotokoll, das aus Lese- und Schreiboperationen besteht (siehe
Zeilen 05 und 06) kann geändert werden, ohne die Verhalten G1 and G2 zu ändern.
Beispielsweise kann die Kommunikation bitseriell oder parallel sein und die Wahl
ändert nicht die Modelle von G1 und G2. Dieses Merkmal ist für die Wiederverwendung von Hardwarekomponenten und geistigem Eigentum (engl. Intellectual
Property (IP)) unverzichtbar. Das vorgestellte SpecC-Modell enthält keine Zeitinformation. Es ist daher ein Spezifikationsmodell (Modelltyp A in Abb. 2.65).
∇
Der Entwurfsablauf für SpecC wurde bereits in Abb. 1.9 auf Seite 25 gezeigt. Der
Weg in der Abbildung 2.65 ist A, B, D, F [83]. Auf Spezifikationsebene kann SpecC
2 Spezifikation und Modellierung
Beispiel 2.29: Abb. 2.66 [173] zeigt eine Komponente G, die Unterkomponenten g1
und g2 enthält.
Abb. 2.66 Strukturelle
Hierarchie in SpecC
Die strukturelle Hierarchie wird in dem folgenden SpecC-Modell beschrieben:
01: interface L { void Write(int x); };
02: interface R { int Read(void); };
03: channel H implements L,R {
04:
int Data; bool Valid;
05:
void Write(int x) { Data=x; Valid=true; }
06:
int Read(void) {
07:
while (!Valid) waitfor (10);
08:
return (Data);
09: }
11: };
11: behavior G1(in int p1, L p2, out int p3) {
12:
void main (void) { /*...*/ p2.Write(p1); } };
13: behavior G2(in int p1, R p2, out int p3) {
14:
void main(void) { /*...*/ p3=p2.Read(); } };
15: behavior G(in int p1, out int p2) {
16:
int h1; H h2; G1 g1(p1, h2, h1); G2 g2(h1, h2, p2);
17:
void main (void) {
18:
par { g1.main(); g2.main(); }
19: }
20: };
Die parallele Ausführung der Teilkomponenten wird durch das Schlüsselwort par
in Zeile 18 ausgedrückt. In Zeile 16 ist zu sehen, dass Teilkomponenten über die
Ganzzahl h1 und durch den Kanal h2 kommunizieren. Das im Kanal H implementierte Schnittstellenprotokoll, das aus Lese- und Schreiboperationen besteht (siehe
Zeilen 05 und 06) kann geändert werden, ohne die Verhalten G1 and G2 zu ändern.
Beispielsweise kann die Kommunikation bitseriell oder parallel sein und die Wahl
ändert nicht die Modelle von G1 und G2. Dieses Merkmal ist für die Wiederverwendung von Hardwarekomponenten und geistigem Eigentum (engl. Intellectual
Property (IP)) unverzichtbar. Das vorgestellte SpecC-Modell enthält keine Zeitinformation. Es ist daher ein Spezifikationsmodell (Modelltyp A in Abb. 2.65).
∇
Der Entwurfsablauf für SpecC wurde bereits in Abb. 1.9 auf Seite 25 gezeigt. Der
Weg in der Abbildung 2.65 ist A, B, D, F [83]. Auf Spezifikationsebene kann SpecC
