spacer spacer spacer spacer spacer
head01 head02
head03
head04 head05 head06 spacer spacerContact Us
menu00
趣意書
ten_b
ニュース
ten_c
イベント
ten_c
技術ドキュメント
ten_c
研究プログラム資料
ten_c
業界各社のコメント集
ten_c
事例WG活動
ten_c
言語WG活動
ten_c
会員登録
ten_c
会員リスト
ten_c
会則
ten_c
賛同メンバー
ten_c
お断り
ten_c
ten_c
ten_c
spacer
一覧に戻る

ニュース
spacer
spacer


STOC (SpecC Technology Open Consortium)第4回総会議案の承認終了のお知らせ。


本年度より開始しました、電子総会によって、会員の皆様からご承認をいただきましたのでご報告申し上げます。

承認事項は

1. 役員選定の承認
2. 2001年度会計報告
3. 2002年度活動予定
4. 2002年度予算案
5. SpecC v2.0仕様の承認

であり、全項目にわたり反対意見無く、承認されました。皆様からのご承認に感謝申し上げます。


注:
1. 新規役員は下記のとおりです:

2002年度の役員構成
 
会長:
田丸 喜一郎 (東芝)
副会長:
国峯 幸雄  (ガイオ・テクノロジー)
 
門田 浩    (日本電気)
監事:
山本 節雄  (インターデザイン・テクノロジー)
事例WG主査:
松本 吉弘   (武蔵工業大学)
事例WG副主査:
五十嵐 真悟 (東芝)
言語仕様WG主査:
藤田 昌宏  (東京大学)
言語仕様WG副主査:
伊藤 雅樹  (日立)
 
Daniel Gajski (University of California Irvine)
事務局:
千星 健一 (ソリトンシステムズ)


2. SpecC 2.0 での改良点のサマリー:

[1] par のセマンテックス
SpecC v1.0 では並列動作のセマンテックスに曖昧な点があり、SpecC v2.0 では次のように明確化した。
par で指定した複数の動作(ビヘイビア)は同時に開始し、同時に終了する。動作の中の文(ステートメント)は順に実行されるが、必ずしも連続してではない。
par で指定した動作B1とB2において、B1に文st1、st2がこの順で記述されており、B2に文st3があるとき、文st1は文st2より先に実行されるが、st3の実行とst1、st2の実行の前後関係は決定していない。
シミュレーション時間としては、文の実行時間は極めて短時間として扱われ、0 時間として扱われる。
並列な動作のインスタンス間ではアトミック化(非分割化)は補償されず、文は例えばメモリアクセス中であっても、その実行順はプリエンプティーブ(一定時間間隔で切り替えられる)である。

[2] 相互排他
par のセマンティクスがプリエンプション実施、アトミック化を保証しないため、相互排他なアクセスの制御には特別な仕様が必要となる。
SpecC 1.0 では相互排他アクセスのための明確なプリミティーブが無かった。チャネルインスタンスでは一度に一つのメソッドのみが走れる。
チャネルインスタンス内の他のメソッドは、先行するメソッドが終了してから走れるか、あるいはwait やwaitfor文を実行する。
これと異なるチャネルインスタンス 内のメソッドは、独立して走れる。チヤネルメソッドが他のチャネルメソッドを呼ぶような階層的なチャネルの場合、これがwait 文を実行すると、現在実行中のスレッドの全てのチャネルに対する相互排他(mutex)が出される。
SpecC ではwaitとwaitforはチャネルに拘束されないから、全てのスレッドは自身で相互排他(mutex)を持つことになる。

[3] 同期のセマンテックス
SpecC 2.0 では、 SCRC (SpecC 参照コンパイラ) version 1.x の同期セマンテックスは明確となった。
しかしながら、今のところ言語仕様としての同期セマンテックスはまだ定義されていない。

[4] 例外処理
SpecC 1.0 では割り込みはwaitとwaitfor文の後でのみ発生可能であったが、SpecC 2.0 では割り込みとトラップは非決定的に任意の箇所で起こり得るようになった。

[5] 固定小数データ型
SpecC は固定小数データ型を扱えるようになった。
詳細仕様は将来のSpecC バージョンで定められる。

[6] イベントのwait 文でのAND条件
SpecC 2.0 では wait (e1 && e2); のような表現が許される。
この文のセマンテックスは二つのイベント e1 と e2 を待つもので、到着の順序は 問わない。
この文は次のコードの省略形である;
behavior B_wait(in event e)
{
void main(void) { wait e; }
};
behavior B_andwait(in event e1, in event e2)
{
B_wait b1(e1);
B_wait b2(e2);
void main(void)
{
// Do something before wait (e1 && e2);
par {
b1.main();
b2.main();
}
// Do something after both e1 and e2 arrive
}
};

[7] par/pipe/try 文の簡易表現
SpecC 2.0 では、
par { S1.main(); S2.main(); S3.main(); } を
par { S1; S2; S3; } または par ( S1; S2; S3 ); と省略できる。
同様に pipe 文や try/trap/interrupt 文にもこの簡易表現が適用できる。

[8] FSM 文中の任意の文
SpecC 2.0 では下記のように fsm 文に関数呼び出しを持った任意のC 言語文を含めることが出来る;
fsm{
s1:
goto s2; // state transition (allowed in SpecC1.0)
s2: {
if( local_i == 0 ) goto s1; // conditional state transition
goto s3; // default state transition (allowed in SpecC1.0)
}
s3: {
local_i = 1; // allow any C language statements (New)
...
goto s1;
}
};

[9] 永続的注釈の拡張
SpecC 1.0 では、 note 構文は一つの定数型による注釈値 (または定数式でコンパイル時に評価される)に限定されていた。
SpecC 2.0 では、シンタックスが拡張され、値のリスト、値のリストのリストが許されて、変数の初期化に適用される次のような文法が用いられる;
annotation = constant_expression
| '{' annotation_list '}'
annotation_list = annotation
| annotation_list ',' annotation

[10] SpecC のRTLモデル(1)
SpecC に RTL モデルを記述するため、FSMD(Finite State Machine with Data)と関連する構文を追加する。
詳細な言語拡張は、下記に示されている:
“RTL Semantics according to Accellera Standard
(revision 10/29/01).”
本言語拡張は、Accelleraで標準化されたRTL semanticsを表現できる。

[11] SpecC のRTLモデル(2)
FSMDに関連する構文
Accellera RTL semanticsはFSMDのモデルで定義され、そのobjectはvariableで表現される。
SpecC1.0で表現可能なobjectもあるが、SpecC2.0で新たに表現が導入された objectもある。
 Accelleraのobject:
 SpecCにおける表現:
 uninterpreted variable
 通常の変数
 port
 port
 storage (register)
 buffered 変数 (*)
 FSMD内のwire、bus
 通常の変数
 FSMD間のwire、bus
 signal 変数 (*)
 clock
 event
 reset
 event または bool
 
 (*) SpecC 2.0 で追加
本言語拡張は、Accelleraで標準化されたRTL semanticsを表現できる。

[12] SpecC のRTLモデル(3)
buffered 変数signal 変数
FSMD 間の通信を行う信号線を表現
event としても使用可能
 syntax
 semantics
 signal int x;
 event x_e; buffered[x_e] int x_v;
 x = 55;
 x_v = 55; notify x_e;
 y = x + 2;
 y = x_v + 2;
 wait x;
 wait x_e;
 notify x;
 notify x_e;
 wait (x == 5);
 while(x_v != 5) {wait x_e;}
storage(register)を表現
(例)
buffered[CLK] int R1, R2;  // event CLKでupdate
buffered[CLK1,CLK2] int R3; // event CLK1とCLK2でupdate
R1 = R2; // R1とR2のswap
R2 = R1;
wait CLK;

[13] SpecC のRTLモデル(4)
signal 変数
FSMD 間の通信を行う信号線を表現
event としても使用可能
 syntax
 semantics
 signal int x;
 event x_e; buffered[x_e] int x_v;
 x = 55;
 x_v = 55; notify x_e;
 y = x + 2;
 y = x_v + 2;
 wait x;
 wait x_e;
 notify x;
 notify x_e;
 wait (x == 5);
 while(x_v != 5) {wait x_e;}:

[14] SpecC のRTLモデル(5)
構文要素fsmd
SpecC1.0では、状態ベースの動作を記述するfsmを提供
SpecC2.0で、Accellera標準のFSMD記述向けにfsmdを導入
(例)
fsmd(CLK) {
    unsigned bit [31:0]    Data;                  // unmapped variable
    unsigned bit [31:0]    Ocount;
                  { Outport = 0;   Done = 0; }    // 初期値の設定
    if (RST)      { State = S0; }                 // reset時の動作の記述
    S0 :          { Done = 0;                     // 各状態での動作の記述
                    if (Start != 0) goto S1;      // 状態遷移
                    else  goto S0; }
    S1 :          { Data = Inport;
                     goto S2; }
    S2 :  …
}



go_top


spacer