コンピューティング分野において、Rosettaシステムレベル仕様言語は、複雑で異種混合のシステムのための設計言語です。具体的な言語設計目標は以下のとおりです。
ロゼッタはさまざまな時期に 標準化を進めていました。
ロゼッタの取り組みは、1996年に半導体産業評議会(SIC)のシステムレベル設計言語委員会の会議から生まれました。この会議の目的は、VHDLやVerilogといった既存言語の欠点を克服する次世代設計言語の要件を定義することでした。具体的な懸念事項としては、制約の表現が不可能であること、形式的なセマンティクスが欠如していること、異機種システムの表現が不可能であること、そして解析においてコンピュータシミュレーションへの依存度が高いことなどが挙げられました。これらの要件に対応するため、3つの主要なアプローチが追求されました。
最初のアプローチは最終的にSystemVerilogとVHDLの拡張につながり、2番目のアプローチはSystemCにつながり、これらはすべて半導体業界の電気電子技術者協会(IEEE)標準となりました。Rosettaの当初の応用分野は、システムオンチップ(SoC)半導体システムでした。[ 1 ]
Rosettaは3番目のアプローチから生まれたもので、開発は半導体産業協議会と空軍研究所の後援の下で始まりました。もともとカンザス大学のペリー・アレクサンダーらによって開発され、単にシステムレベル設計言語として知られていました。[ 2 ] 標準化は2000年までにVHDL Internationalに移管され、仕様の異機種間の性質を反映するためにロゼッタ(ロゼッタストーンにちなんで)に改名されました。最終的に、VHDL InternationalとOpen Verilog Initiativeは合併して、電子設計自動化(EDA)標準のための業界主導のコンソーシアムであるAccelleraが設立されました。Rosettaの標準草案は、2003年11月にAccelleraから発行されました。[ 3 ]標準化はIEEE設計自動化標準委員会(DASC) に移管され、 2007年3月からIEEEプロジェクトP1699の下、ロゼッタワーキンググループによって開発が進められました。 [ 4 ] [ 5 ] 言語リファレンスマニュアルの草稿は2008年4月にオーストラリアのピーター・アシェンデン氏を編集者として公開されました。[ 6 ] プロジェクトは2013年6月に撤回されました。[ 7 ]
Rosetta は、さまざまな仕様要素の定義をサポートする 3 つのサブ言語で構成されています。式言語は、仕様で用語や値として使用される基本的な関数と式を定義します。式言語は、 Haskellの精神を受け継いだ、非厳密で純粋に関数的な型付き言語です。関数は参照透過的でカプセル化された式であり、副作用を持つことはできません。すべての Rosetta 式の型は静的に決定されます。型システムは、各型が少なくとも最低値または未定義の値を含むリフト セットに基づいています。任意のセットを使用して型を定義でき、セットを返す任意の関数を使用して型フォーマーを定義できます。型定義には一般的な Rosetta 式を含めることができるため、型システムは依存的です。
ファセット言語は、システムを定義するための個々の仕様と仕様構成を定義します。ファセットとコンポーネントは、1つのエンジニアリングの観点からシステムモデルを定義します。各ファセットは、モデルの語彙とセマンティクスを提供するドメインを拡張することによって記述されます。ファセットは、項目を宣言し、それらの項目のプロパティを定義することによって定義されます。したがって、Rosettaは宣言型言語であり、構成要素が値に評価されることは保証されませんが、一部のファセットは評価可能です。ドメインによって提供される設計抽象化を使用して、ファセットはシステムの要件、動作、制約、または機能を記述します。ファセットは異種であり、定義済みまたはユーザー定義のドメインのいずれかを使用して定義できます。Rosettaのセマンティクスは、各ファセットを、その計算モデルを定義するコゲーマ(coalgebra)で表します。Rosettaはリフレクティブであるため、ファセットを構成および変換して複雑なシステムを定義することができます。一般的な仕様定義手法は、システムのさまざまな側面に対応するファセットを記述し、積和演算を使用してそれらの側面を合成し、完全なシステムを定義することです。
ドメイン言語は、仕様ドメイン(仕様タイプとも呼ばれる)を定義します。ドメインのコレクションは、空またはヌルドメインを最上位要素、不整合または最下位ドメインを最下位要素として、準同型性によって順序付けられた完全な格子を形成します。主なドメインタイプは3つあります。セマンティクス単位ドメインは、仕様の基本単位を定義します。例えば、状態ベースドメインは、値やプロパティを制約することなく、状態と次の状態の概念を定義します。計算モデルドメインは、セマンティクス単位ドメインを拡張して、有限状態、連続時間、離散時間、周波数などの一般的な計算モデルを定義します。エンジニアリングドメインは、計算モデルドメインを拡張して、特定のエンジニアリングドメイン向けの仕様機能を提供します。
初期の頃から、Rosetta は油圧および機械システム、ネットワーク システム、セキュリティと信頼性、ソフトウェア定義無線などの設計領域を含むように拡大してきました。
Rosettaは、非正格な純粋関数型言語Haskell、Larchファミリーの仕様記述言語、そしてプロトタイプ検証システム(PVS)から大きな影響を受けています。Rosettaに関する書籍は2006年11月に出版されました。[ 8 ]