JPH113367A - デジタルシステムのインプリメント可能な記述を生成する設計環境および方法 - Google Patents

デジタルシステムのインプリメント可能な記述を生成する設計環境および方法

Info

Publication number
JPH113367A
JPH113367A JP10106862A JP10686298A JPH113367A JP H113367 A JPH113367 A JP H113367A JP 10106862 A JP10106862 A JP 10106862A JP 10686298 A JP10686298 A JP 10686298A JP H113367 A JPH113367 A JP H113367A
Authority
JP
Japan
Prior art keywords
description
design
objects
data
simulation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10106862A
Other languages
English (en)
Inventor
Patrick Schaumont
パトリック・シャウモント
Serge Vernalde
セルジュ・ヴェルナルデ
Johan Cox
ヨハン・コックス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
INTERUNIV MICRO ELECTRON CT VZ
Interuniversitair Microelektronica Centrum vzw IMEC
Original Assignee
INTERUNIV MICRO ELECTRON CT VZ
Interuniversitair Microelektronica Centrum vzw IMEC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by INTERUNIV MICRO ELECTRON CT VZ, Interuniversitair Microelektronica Centrum vzw IMEC filed Critical INTERUNIV MICRO ELECTRON CT VZ
Publication of JPH113367A publication Critical patent/JPH113367A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

(57)【要約】 (修正有) 【課題】デジタルシステムをデータベクトル記述からV
HDLのようなインプリメント可能なレベルまで設計す
ることを可能とする。また、同一のオブジェクト指向環
境内でこの設計を行う。 【解決手段】少なくとも一つのデジタルシステム部分を
含むシステムの動作記述から該システムに対するインプ
リメント可能な記述を生成する、計算機環境においてコ
ンパイルされる設計装置であって、前記動作記述は前記
計算機環境においてオブジェクト間の関係の第1集合を
伴う第1のオブジェクト集合として表現され、前記イン
プリメント可能な記述は前記計算機環境においてオブジ
ェクト間の関係の第2集合を伴う第2のオブジェクト集
合として表現され、前記第1および第2のオブジェクト
集合は設計環境の一部である設計装置である。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デジタルシステム
のための設計環境であって該システムのインプリメント
可能な記述を生成する設計環境の分野に位置づけられ
る。本発明は、オブジェクトモデリングと抽象的な記述
をシステムのより具体的な記述へと詳細化する機構とに
基づいている。
【0002】
【従来の技術】現在、公衆のアクセスするネットワーク
のためのデジタル通信設備に対する高い関心が存在す
る。具体例は、非対称デジタル加入者ループ(Asymmetry
DigitalSubscriber Loop)(ADSL)の用途のため
の、並びに、上流および下流のハイブリッドファイバー
同軸(up- and downstream Hybrid Fiber-Coax)(HF
C)通信のためのモデムである。これらのモデムは、好
ましくは、デジタル信号処理(DSP)技術を使用して
全デジタル式のハードウェアで実現される。これは、そ
れらが要求するデータ処理の複雑さのためである。これ
に加えて、これらのシステムは、また短い開発サイクル
が要求される。これは、高レベルでスタートし設計の自
動化に対しできるだけ備えた設計方法が要求される。本
発明の分野のより一般化した観点によれば、専用化プロ
セッサや他のデジタルハードウェアが使用されるほとん
どの用途では、新しいシステムに対する要求が生じてい
て、開発期間が短縮化されつつあることは明らかであ
る。
【0003】最もよく使用されるモデリングの記述言語
はVHDL(VHSICハードウェア記述言語)であ
り、これは、1987年以来、IEEEの規格として受
け入れられてきた。VHDLは、一つのハードウェア(a
piece of hardware)の記述を生成するプログラミング
環境である。規格であるVHDLに対する拡張として、
オブジェクト指向プログラミング言語の特徴がVHDL
の中に実現されることがある。これは、OO−VHDL
(コンピュータ、1995年10月、第18〜26頁)
において説明されている。
【0004】多くの商用のシステムは複雑なDSPシス
テムの設計をサポートしている。
【0005】マスワークス社(Mathworks Inc)のMAT
LABは、アルゴリズムレベルでの探索の可能性を提供
する。それは、データベクトルを基本的な意味素性(sem
antic feature)として使用する。しかし、開発されたM
ATLAB記述は、デジタルハードウェアの実装に関係
しないし、MATLABはデジタル回路の合成のサポー
トも行わない。
【0006】アルタグループ(Alta Group)のSPWは、
これらの種類のシステムのシミュレーションのためのツ
ールキットを提供している。SPWは、通常、データフ
ローの意味規則(semantics)をシミュレーションするた
めに使用される。データフローの意味規則は、明示的な
アルゴリズムの反復を定義するが、データベクトルの意
味規則は定義しない。SPWは、システムを開発するた
めに大規模なライブラリとツールキットに依存する。M
ATLABとは異なり、最初の記述はブロックに基づく
記述である。そのシステムで使用される各ブロックは、
二つの異なる形式(シミュレーション可能なバージョン
と合成可能なバージョン)で現れ、それらは結果として
不整合が生じうる。
【0007】シノプシス(Synopsys)のCOSSAPは、
SPWと同じ種類のシステム探索を実行する。
【0008】DCとBCは、システムの合成をサポート
するシノプシスの製品である。これらの製品は、十分な
アルゴリズムの探索機能を提供しない。
【0009】これらのツールの全ては、所望の機能の一
部だけをサポートするのみであるため、現代のシステム
は、通常、これらの環境を混合させたものによって設計
される。例えば、設計者は、MATLABにおいてアル
ゴリズムでの探索を行い、その後、SPWでアーキテク
チャ定義を行い、最後に、そのアーキテクチャ定義をD
Cにおける実装へと写像する。
【0010】
【発明が解決しようとする課題】本発明の主目的は、デ
ジタルシステムをデータベクトル記述からVHDLのよ
うなインプリメント可能なレベルまで設計することを可
能とする設計環境である。更なる目的は、同一のオブジ
ェクト指向環境内でこの設計を行うことである。他の目
的は、開発の任意レベルにおける動作をシミュレーショ
ンするための、上記設計環境に含まれる手段を提供する
ことである。
【0011】
【課題を解決するための手段】本発明の第1の態様は、
少なくとも一つのデジタルシステム部分を含むシステム
の動作記述から該システムに対するインプリメント可能
(実装可能)な記述を生成する、計算機環境においてコ
ンパイルされる設計装置であって、前記動作記述は前記
計算機環境においてオブジェクト間の関係の第1集合を
伴う第1のオブジェクト集合として表現され、前記イン
プリメント可能な記述は前記計算機環境においてオブジ
ェクト間の関係の第2集合を伴う第2のオブジェクト集
合として表現され、前記第1および第2のオブジェクト
集合は設計環境の一部である設計装置に関する。
【0012】動作記述は、システムの所望の動作を形式
的に具体化する記述である。一般に、動作記述は、高レ
ベル記述であって、シミュレーションできるシステムの
抽象版を記述するだけであるため、容易に実装できるも
のではない。インプリメント可能な記述は、動作記述に
比べると、ソフトウェアで実現して現実の動作にほぼ等
しいシミュレーションを提供するか、または、ハードウ
ェアで実現して実用的な半導体回路を提供するだけの詳
細化がなされた、より具体的な記述である。
【0013】設計環境とは、アルゴリズムを生成するこ
とができ、解釈(interpretation)またはコンパイル(com
pilation)によって実行できる環境を意味する。
【0014】オブジェクトとは、「Object Oriented De
sign(オブジェクト指向設計)」(ブーホ(G. Booch)、
ベンジャミン(Benjamin)/キュミングズ出版(Cummings
Publishing)、レッドウッドシティ(Redwood City)、カ
リフォルニア(California)、1991)に説明されてい
るようなオブジェクト指向プログラミング言語によるオ
ブジェクトの全ての特性を示すデータ構造を意味する。
【0015】前記第1および第2のオブジェクト集合
は、好ましくは単一の設計環境の一部である。
【0016】前記設計環境は、好ましくはオブジェクト
指向プログラミング言語(OOPL)を含んでいる。前
記OOPLはC++であってもよい。
【0017】前記設計環境は、好ましくは、新しいオブ
ジェクトを生成することができる開放的環境である。閉
じた環境は、開放的環境で得ることのできる柔軟性を提
供せず、使用者の可能性を制限する。
【0018】好ましくは、前記第1のオブジェクト集合
の入力信号および出力信号の少なくとも一部は、前記第
2のオブジェクト集合の入力信号および出力信号の少な
くとも一部である。前記第1のオブジェクト集合の入力
信号および出力信号の本質的に全ては、前記第2のオブ
ジェクト集合の入力信号および出力信号の本質的に全て
であってもよい。
【0019】前記動作記述の入力信号および出力信号の
少なくとも一部は、好ましくは、前記インプリメント可
能な記述の入力信号および出力信号の少なくとも一部で
ある。前記動作記述の入力信号および出力信号の本質的
に全ては、前記インプリメント可能な記述の入力信号お
よび出力信号の本質的に全てであってもよい。
【0020】前記第1のオブジェクト集合は好ましくは
第1の意味規則を有し、前記第2のオブジェクト集合は
好ましくは第2の意味規則を有している。意味規則と
は、計算のモデルを意味する。前記第1の意味規則は、
好ましくはデータベクトルモデルおよび/またはデータ
フローモデルである。前記第2の意味規則は、好ましく
はシグナルフローグラフ(SFG)のデータ構造であ
る。
【0021】好ましくは、前記第2のオブジェクト集合
のオブジェクトの少なくとも一部の前記インプリメント
可能な記述におけるインパクト(impact)は、前記第1の
オブジェクト集合のオブジェクトの少なくとも一部の前
記動作記述におけるインパクトと本質的に同一である。
【0022】好ましくは、前記第2のオブジェクト集合
のオブジェクトの本質的に全ての前記インプリメント可
能な記述におけるインパクトは、前記第1のオブジェク
ト集合のオブジェクトの本質的に全ての前記動作記述に
おけるインパクトと本質的に同一である。
【0023】インパクト(impact)とは、機能だけでな
く、オブジェクトが外部的な観点からその環境と相互に
作用し合う方法をも意味する。言い換えると、これは、
入力を提供し、出力を集める同一のインタフェースが存
在することである。これは、入力と出力の間のデータ処
理の実際の実装が同一であることを意味しない。この実
装は複数のオブジェクトによって具体的に表現され、そ
れらオブジェクトは完全に異なっていてもよいが、同一
の機能を実行する。OOPLでは、実際の実装を知るこ
とのないオブジェクトの方法の使用は、情報の隠蔽と呼
ばれる。
【0024】この設計装置は、好ましくは、前記システ
ムの動作をシミュレーションする手段を更に備え、該手
段は、前記動作記述、前記インプリメント可能な記述、
またはそれらの間の任意の中間記述の動作をシミュレー
ションする。前記中間記述は、前記動作記述からの一つ
または複数の詳細化ステップの後に得ることができる。
【0025】好ましくは、前記第2のオブジェクト集合
の少なくとも一部は、前記第1のオブジェクト集合に属
するオブジェクトから導出される。これは、OOPLに
おいて提供される継承(inheritance)の機能を使用する
ことにより行うことができる。前記第2のオブジェクト
集合の本質的に全ては、前記第1のオブジェクト集合に
属するオブジェクトから導出することができる。
【0026】前記インプリメント可能な記述は、少なく
とも部分的には、前記動作記述を詳細化することにより
得ることができる。前記インプリメント可能な記述は、
前記動作記述を詳細化することにより本質的に得ること
ができる。好ましくは、前記詳細化はオブジェクトの詳
細化を含んでいる。
【0027】この設計装置は、前記システムをデータベ
クトルに対する演算の集合として記述するベクトル記
述、好ましくはMATLAB記述から前記第1のオブジ
ェクト集合を導出する手段、前記データフロー記述にお
いて静的にまたは要求駆動的にスケジュールされたデー
タフローをシミュレーションする手段、および/また
は、前記データフロー記述および/または一つ以上の前
記SFGデータ構造を用いて前記システムのクロックサ
イクル準拠(clock-cycle true)のシミュレーションを行
う手段を更に備えてもよい。
【0028】好ましい実施形態では、前記インプリメン
ト可能な記述は前記システムのアーキテクチャ記述であ
り、前記システムは、都合のよいことに、前記アーキテ
クチャ記述を前記システムの合成可能記述へと変換する
手段を更に備え、該合成可能記述はハードウェアで直接
にインプリメント可能である。前記合成可能記述は、好
ましくは、ハードウェアのビルディングブロックのネッ
トリストである。前記ハードウェアは、好ましくは、半
導体チップまたは半導体チップを含む電子回路である。
【0029】合成可能記述は、その記述を更に処理する
ことなく合成できる半導体のアーキテクチャの記述であ
る。例えばVHDL記述である。
【0030】前記アーキテクチャ記述を合成可能記述へ
と変換する前記手段は、カセドラル−3(Cathedral-3)
またはシノプシスDC(Synopsis DC)であってもよい。
【0031】本発明の第2の態様は、少なくとも一つの
デジタル部分を含むシステムを設計するための方法であ
って、前記システムの動作記述が前記システムのインプ
リメント可能な記述へと変換される詳細化ステップを有
し、前記動作記述はオブジェクト間の関係の第1集合を
伴う第1のオブジェクト集合として表現され、前記イン
プリメント可能な記述はオブジェクト間の関係の第2集
合を伴う第2のオブジェクト集合として表現される方法
である。
【0032】前記詳細化ステップは、好ましくは、動作
特性を少なくとも一部は構造特性へと変換するステップ
を含んでいる。前記詳細化ステップは、動作特性を完全
に構造特性へと変換するステップを含んでいてもよい。
【0033】前記方法は、前記動作記述、前記インプリ
メント可能な記述、および/または、それらの間の任意
の中間記述の動作がシミュレーションされるシミュレー
ションステップを更に含んでいてもよい。
【0034】前記詳細化ステップは、新たなオブジェク
トを追加するステップと、既存のオブジェクトとの相互
作用を許容するステップと、前記相互作用を許容する前
記既存のオブジェクトに適合させるステップとを含んで
いてもよい。
【0035】好ましくは、前記詳細化ステップは、開放
的環境において実行され、既存オブジェクトの拡張(exp
ansion)を含んでいる。既存オブジェクトの拡張は、新
たなオブジェクトを生成する方法のオブジェクトへの追
加を含んでいてもよい。前記オブジェクトは、その新た
なオブジェクトによって拡張されたと言われている。拡
張可能なオブジェクトの使用は、メタコード生成を使用
することを可能とする。すなわち、拡張可能なオブジェ
クトを生成することは、その新たなオブジェクトの間接
的な生成を暗に意味する。
【0036】前記動作記述および前記インプリメント可
能な記述は、好ましくは単一の設計環境において表現さ
れ、該単一の設計環境は、都合のよいことにオブジェク
ト指向プログラミング言語、好ましくはC++である。
【0037】好ましくは、前記第1のオブジェクト集合
は第1の意味規則を有し、前記第2のオブジェクト集合
は第2の意味規則を有している。前記第1の意味規則
は、好ましくはデータベクトルモデルおよび/またはデ
ータフローモデルである。前記第2の意味規則は、好ま
しくはSFGのデータ構造である。
【0038】前記詳細化ステップは、データベクトルモ
デルである前記動作記述は、少なくとも部分的にはデー
タフローモデルへと変換される第1の詳細化ステップを
好ましくは含んでいる。都合のよいことに、前記データ
フローモデルは、時間の規定されない(untimed)浮動小
数点モデルである。
【0039】前記詳細化ステップは、好ましくは、前記
データフローモデルが少なくとも部分的にSFGモデル
へと変換される第2の詳細化ステップを更に含んでい
る。前記データフローモデルはSFGモデルに完全に変
換されてもよい。
【0040】好ましい実施形態では、前記第1の詳細化
ステップは、入力、出力および中間の信号の入力ベクト
ル長を決定するステップと、入力信号を処理して信号を
出力する演算の並列性の程度を決定するステップと、前
記データフローモデルのアクター、エッジおよびトーク
ンを決定するステップと、前記トークンの語長を決定す
るステップとを含んでいる。並列性の程度を決定する前
記ステップは、好ましくは、全てのデータベクトルに対
して並列性の程度を決定するステップと、前記データベ
クトルモデルの不特定の通信帯域幅を前記データフロー
モデルにおける固定数の通信バスへと簡約するステップ
とを含んでいてもよい。前記データフローモデルのアク
ター、エッジおよびトークンを決定する前記ステップ
は、好ましくは、前記第1のデータベクトルモデルにお
ける一つまたは一群のデータベクトルをアクターとして
定義するステップと、アクター境界を横切るデータ順位
(data precedences)を、キューのように動作するエッジ
として定義するステップと、アクターの間でトークンを
移送するステップとを含み、システムのスケジュールを
作成し、計算機環境上でシミュレーションを実行する。
【0041】前記第2の詳細化ステップは、好ましく
は、前記トークンを浮動小数点から固定小数点へと変換
するステップを含んでいる。
【0042】好ましくは、前記SFGモデルは、時間の
規定された(timed)固定小数点SFGモデルである。
【0043】オブジェクト間の関係の前記第2集合を伴
う前記第2のオブジェクト集合は、好ましくは、少なく
とも部分的に、オブジェクト間の関係の前記第1集合を
伴う前記第1のオブジェクト集合から導出される。
【0044】前記第2のオブジェクト集合に属するオブ
ジェクトは、好ましくは、新たなオブジェクト、前記第
1のオブジェクト集合のオブジェクトと同一、および/
または前記第1のオブジェクト集合のオブジェクトから
継承によって導出されるものであるか、または、それら
の組合せである。
【0045】前記SFGモデルの幾つかをインプリメン
ト可能な記述が得られる有限状態機械記述と組み合わせ
てもよい。
【0046】前記インプリメント可能な記述を合成可能
コードへと変換してもよく、前記合成可能コードは好ま
しくはVHDLコードである。
【0047】本発明の他の態様は、システムをシミュレ
ーションするための方法であって、システムの記述がコ
ンパイル可能なC++コードへと変換される方法であ
る。好ましくは、前記記述はSFGデータ構造であり、
前記コンパイル可能なC++コードはクロックサイクル
準拠のシミュレーションを実行するために使用される。
【0048】幾つかのSFGデータ構造をインプリメン
ト可能な記述が得られる有限状態機械記述と組み合わせ
てもよく、前記インプリメント可能な記述はソフトウェ
アとして前記システムをシミュレーションするのに適し
たコンパイル可能なC++コードである。
【0049】システムの は一つ以上のSFGデータ構
造を使用する。前記クロックサイクル準拠のシミュレー
ションは期待値に基づくシミュレーションであってもよ
く、該期待値に基づくシミュレーションは、全てのトー
クンに対しトークンの年令の注釈を付けるステップと、
全てのキューに対しキューの年令の注釈を付けるステッ
プと、トークンの加齢規則に従い、トークンを移送した
全てのキューの伝達遅延だけ該トークンの年令を増やす
ステップと、キューを駆動するアクターの反復時間だけ
キューの年令を増やすステップと、トークンの年令がキ
ューの年令より小さくないかどうかをシミュレーション
によって調べるステップとを含んでいる。
【0050】本発明の他の態様は、以上において述べら
れた設計装置で設計されたハードウェア回路またはハー
ドウェア回路のソフトウェアシミュレーションである。
【0051】本発明の他の態様は、以上において述べら
れた方法で設計されたハードウェア回路またはハードウ
ェア回路のソフトウェアシミュレーションである。
【0052】
【発明の実施の形態】本発明を更に例により説明する
が、これは特許請求された発明の範囲を制限するもので
はない。
【0053】<例1>:本発明は、一つの同じオブジェ
クト指向プログラミング言語環境の中でデジタルシステ
ムの記述の一連の漸進的な詳細化(refinement)を行うた
めの設計環境として説明することができる。最下位のレ
ベルは、レジスタ転送(RT)レベルにおける動作記述
(behavioral description)と意味的に等価である。この
ようにすれば、設計フローにおける意味的かつ構文的な
複合的変換(combined semantic and syntactic transla
tion)が回避される。
【0054】本発明による設計方法を含む本発明の好ま
しい実施形態は、OCAPIと呼ばれる。それは、オブ
ジェクト指向プログラミング言語での設計環境と設計方
法との双方を含んでいる。OCAPIは、設計者がMA
TLABレベルからレジスタ転送レベルへと先導される
ような方法でアーキテクチャ定義(SPW、COSSA
P)をサポートする現行のシステムとは相違する。
【0055】・動作の詳細化を表現するために、設計者
はC++のようなオブジェクト指向プログラミング言語
における単一のコーディングフレームワーク(coding fr
amework)が提供される。通常の、インタフェースとモジ
ュールの手法(interface-and-module approach)ではな
く、開放的環境(open environment)が使用される。 ・このコーディングフレームワークは、従来の設計手法
で用いられる、設計コンセプトの入れ物(container)で
ある。現在サポートされているいくつかの設計コンセプ
トの例は、シミュレーションキュー(simulation queu
e)、有限状態機械、シグナルフローグラフ、浮動小数点
/固定小数点の混成データタイプ、演算プロフィール(o
peration profiling)および信号範囲統計(signal range
statistics)である。このコンセプトは、オブジェクト
指向プログラミング言語のオブジェクト(本文の残りの
部分においてオブジェクトと呼ぶ)の形式を取ってい
て、このオブジェクトは具体化する(instantiate)こと
ができ、関連づけることができる。 ・このオブジェクトの集合により、漸進的な詳細化設計
の道筋が提供される:より抽象的な設計コンセプトを漸
進的により詳細な設計コンセプトと取り替えることがで
きる。また、設計コンセプトは直交的に結合される:例
えば量子化の効果とクロックサイクル(演算子/演算の
写像(operator/operation mapping))は、個別に検討で
きる二つのアーキテクチャの特徴である。次に、オブジ
ェクト指向の手法であるため、設計の異なる階層を自由
に混合させることができる。例えば、固定小数点レベル
で記述の半分をシミュレーションする一方、他の半分は
なお浮動小数点とすることができる。 ・OCAPIにおける単一のオブジェクト指向プログラ
ミング言語のフレームワークの使用により、速い設計の
繰り返しが可能となる。これは、現代の典型的な混合手
法(hybrid approach)では不可能である。
【0056】SPWおよびCOSSAPのような既存の
データフローに基づくシステムと比較すると、アルゴリ
ズムの繰り返しを自由に選択できることがわかる。DC
またはBCのような既存のハードウェア設計環境と比較
すると、ブロックの接続よりも抽象的な仕様レベルから
開始できることがわかる。
【0057】導入された新規なコンセプトは、スケーラ
ブルな並列性(scaleable parallelism)および期待値に
基づくシミュレーション(expectation based simulatio
n)である。設計者が可能であると考えるものの実現可能
性を調べる環境が設計者に与えられる。開発過程におい
て、設計者は、抽象的なMATLAB演算のシグナルフ
ローグラフ(SFG)版のその設計者のライブラリを作
成する。
【0058】電気通信システム(図1)の設計におい
て、4つの段階を識別することができる。すなわち、リ
ンク設計(link design)、アルゴリズム設計、アーキテ
クチャ設計および回路設計である。これらの段階は、通
信システムの3個の主要構成要素すなわち送信機、チャ
ネルモデルおよび受信機を定義しモデル化するために使
用される。
【0059】・リンク設計(1)は、要求事項の獲得段
階である。伝送帯域幅や、電力、データのスループット
(リンク要求事項(link requirement))のような電気通
信の特性に基づき、システム設計空間が小さなサブシス
テムのシミュレーションを用いて探索される。この設計
空間は、リンク要求事項を満たすために送信機/受信機
の対が利用できる全てのアルゴリズムを含んでいる。同
一機能の送信機および受信機のアルゴリズムのうち、複
雑さが最小のアルゴリズムが好ましい。この探索に加え
て、予期される如何なる伝送機能障害もソフトウェアの
チャネルモデルの中にモデル化されなければならない。
【0060】・アルゴリズム設計(2)段階は、リンク
設計段階で識別されたアルゴリズムを選択し相互に連結
する。この出力は、浮動小数点演算によるデジタルの送
信機部および受信機部のC++でのソフトウェアアルゴ
リズムの記述である。送信機および受信機アルゴリズム
における並列性を表現するために、データフローのデー
タモデルが使用される。また、RFフロントエンドのよ
うなアナログ部によって持ち込まれる伝送欠陥(transmi
ssion imperfection)の注釈がチャネルモデルに付され
る。
【0061】・アーキテクチャ設計(3)は、送信機ま
たは受信機のデータモデルを詳細化する。目標とするア
ークテクチャのスタイルは、高速実行のために最適化さ
れ、分散制御の意味規則(セマンティクス)とパイプラ
イン機構を使用する。その結果得られる記述は、ビット
並列演算子に基づく実行の観点からのアルゴリズムの、
固定小数点でサイクル準拠(cycle true)のC++記述で
ある。アーキテクチャ設計は、この記述の合成可能なV
HDLへの変換で終了する。
【0062】・最後に、回路設計(4)は、テストのハ
ードウェアの導入と設計規則のチェックとを組み合わせ
た技術を含めて、回路レベルに対するビット並列の実装
を詳細化する。
【0063】目標アーキテクチャ
【0064】目標アーキテクチャは、図2に示されてい
て、相互接続された特定用途向けプロセッサのネットワ
ークから構成される。各プロセッサは、ビット並列のデ
ータパスから成る。ハードウェアの共有が行われると、
命令の順序付け(instructionsequencing)を行うために
局所的な制御要素も必要とされる。これらのプロセッサ
は、動作合成ツールまたはRTレベル合成ツールによっ
て得られる。いずれの場合でも、共有ハードウェア量の
少ない回路が目標とされる。このネットワークは、一つ
または複数のクロックによって駆動される。各クロック
信号がクロック領域(clock region)を定義する。一つの
クロック領域の内部では、全てのレジスタクロック(reg
ister clock)の間の位相関係は明白である。クロック分
周回路が各プロセッサ用の適切なクロックを得るために
使用される。
【0065】各プロセッサの間には、データ信号を転送
するためにハードウェアのキューが存在する。それらの
一つのクロック領域における並列性を増大させ、一つの
プロセッサに到着するデータの異なるストリームの間で
の整合性を維持する。
【0066】クロック領域の境界にまたがって同期化イ
ンタフェースが使用される。これらのインタフェース
は、クロック領域の境界におけるデータの存在を検出
し、これらのインタフェースが対象とするクロック領域
に対しクロック信号をゲーティングする。このようにす
れば、クロック領域の間における明白でない可変のデー
タレートがサポートされる。
【0067】クロック分周器とハンドシェイク回路との
組合せ(ensemble)がハードウェアによるスケジューラを
形成し、ビット並列プロセッサで実行される複数のプロ
セスの同期化を行う。
【0068】C++モデリングレベルの概要
【0069】OCAPIで使用される独特のC++モデ
リングの概要が図3に与えられている。このC++のモ
デリングは、設計フローにおける一連の3つのレベル、
すなわちリンクレベル、アルゴリズムレベルおよびアー
キテクチャレベルに及んでいる。最後のレベルである回
路レベルへの遷移は、自動手段によるコード生成によっ
て行われる。通常、この最下位レベルの設計言語として
VHDLが使用される。
【0070】リンクレベルはデータベクトルモデリング
によって利用可能である。並列性スケーリング(paralle
lism scaling)と呼ばれる設計技法(design mechanism)
を用いて、このレベルがアルゴリズムレベルへと詳細化
される。このアルゴリズムレベルは、データフローの意
味規則(セマンティクス)を使用する。データフローレ
ベルにおける二つの詳細化技法(refining mechanisms)
を使用して、このレベルをレジスタ転送レベルへと詳細
化することができる。
【0071】この二つの詳細化技法とは、クロックサイ
クル準拠のモデリングおよび固定小数点モデリングであ
る。クロックサイクル準拠モデリングは、各アルゴリズ
ムにサイクル予算(cycle budget)と演算子を割り当てる
ことにより達成される。この決定において設計者を支援
するために、演算プロフィール(operation profiling)
が予測される。固定小数点モデリングは、そのアルゴリ
ズムにおける変数のダイナミックレンジを、ハードウェ
アの演算子を案出できる範囲に制限する。これによって
設計者を支援するために、この設計により信号の統計が
戻される。
【0072】最後のレベルであるアーキテクチャモデル
は、シグナルフローグラフを使用して動作記述を与え
る。この記述を用いて合成可能なコードが生成される。
その結果得られるコードは、その後、シノプシス(Synop
sys)のDCのようなレジスタ転送レベル設計ツールを使
用してゲートへと写像することができる。
【0073】データベクトルのモデリング
【0074】通信システムの表現の上位レベルはリンク
レベルである。それは次の性質を持っている。
【0075】・それは、関数(function)に対する純粋な
数学的取扱いである。時間は、陽に取り扱われ、不規則
フローの記述(irregular-flow description)となってい
る。 ・それは、手近な問題には関係しない電気通信の全ての
側面の抽象化を用いる。
【0076】この表現レベルにおいて、MATLABが
シミュレーション用に使用される。MATLABは基本
データオブジェクトとしてデータベクトルを使用する。
MATLABにおいて時間関数を表現するために、それ
らは適切なレートで標本化される。時間は、ベクトルの
多くの次元のうちの一つとして存在する。例えば、MA
TLABのベクトルの加算 a=b+c; は、時間上の逐次的な加算(bおよびcのベクトルを時
間的に逐次的なものと考える場合)または並列の加算
(bおよびcがたまたま時間における一点で定義される
場合)の双方を意味しうる。MATLABはこれら二つ
の場合をまったく区別しない。
【0077】この時間−空間の特徴に加えて、MATL
ABは、この設計レベル内で、それを選択の道具(tool-
of-choice)とする他の多くの特性を有している: ・データの不規則なフローをベクトル演算で表現する容
易さ。例えば、演算 max(ベクトル)またはstd(ベクト
ル)。 ・演算の柔軟性。10の要素または1000の要素のベ
クトルに対する最大値の演算が同じように見える。すな
わち、max(ベクトル)である。 ・ツールの相互作用と、データオブジェクト管理の透過
性(transparency)。 ・極めて濃密な機能記述を可能にする演算の拡張ライブ
ラリ。 ・グラフィックスとシミュレーションの速度。
【0078】データベクトルの制限は、システムのデー
タフローグラフの表現に対して詳細化されるべきであ
る。データフローグラフの定義は、そのグラフ(アクタ
の発火規則だけでなくアクタの内容)における全てのア
クタの定義とグラフ配置の定義を必要とする。
【0079】OCAPIの設計フローで効果的にシステ
ムを設計するために、データベクトルレベルとデータフ
ローレベルの間でのスムーズな遷移が必要である。この
タスクを実行するスクリプトは以下の例に見られるよう
に解釈される。
【0080】<例1>:初期データベクトル記述
【0081】例としてダイレクトシーケンススペクトラ
ム拡散(DS/SS)モデム内の疑似雑音(PN)符号
相関器を考える。
【0082】%入力データ in = [1 2 1 3 3 4 1 2]; %拡散符号(spreading code) c = [1 -1 1 -1]; %相関を求める ot = corr (in, c) %相関ピークを見つける [max, maxpos] = max (ot);
【0083】入力データinのベクトルは8個の要素を
含むものとして定義される。これらは、スペクトラム拡
散モデムにおけるチップ復調器から取られた一続きのサ
ンプルである。したがって、inの次元は時間の次元に
対応する。この入力ベクトルinは、原則として長さが
無限である。シミュレーションの目的のために、この入
力ベクトルは、期待される受信データと同一の平均的な
特性(分布)を有するデータ集合(data set)に制限され
る。
【0084】inのサンプルは、長さ4のPN符号ベク
トルcとの相関が求められる。したがって、出力ベクト
ルotは、cを整列させることのできるinの5つの位
置に対応する5個のサンプルを含んでいる。max関数
は、相関データ内における最大の値と位置を検出する。
その後、位置maxposがPN符号を入ってくるデー
タと同期させるのに使用され、したがって、それはアル
ゴリズムの所望の出力値である。
【0085】この符号は、エレガントで簡潔な仕様であ
るが、PN相関器の設計者に対し幾つかの未解決の問題
を提供する: ・そのアルゴリズムは、暗黙の起動効果(startup-effec
t)を有している。第1の相関値(correaltion value)
は、4個の入力サンプルが得られた後に算出できるだけ
である。そのときから、各入力サンプルは更なる相関値
を生じさせる。 ・そのアルゴリズムは、デジタル信号処理の応用で見ら
れる共通のアルゴリズム上の繰り返しを免れている。す
なわち、各ステートメントは1回だけ実行される。 ・実装のために、使用可能なサイクル予算(cycle budge
t)に関して作成されるステートメントは無い。しかし、
これはモデムの達成可能な取得スピード(acquisition s
peed)に対する重要な仕様である。
【0086】これらの問題の全ては、データベクトル記
述の並列性に起因する。
【0087】いま、我々は演算の並列性を更に視覚化す
る方法を提案する。MATLAB演算のそれぞれは容易
に解釈される。MATLABのシミュレーション内部で
は、正しい演算動作を選択するためにオペランドの長さ
がまず決定される。例えば、 [max, maxpos] = max(ot) は、(オペランドotの長さである)長さ5のベクトル
における最大値を決定する。この結果を算出するには少
なくとも4つのスカラーの比較が必要である。例えばo
tの長さがもっと長ければ、更なるスカラー比較が必要
となる。その記述においてこれを示すために、我々は、
入力ベクトルの長さの総称演算(generic operation)の
各特定インスタンスに明示的に注釈を付ける。
【0088】
【0089】この少しの注釈は、我々が演算の複雑さを
より明確に理解するのを助ける。この記述のハードウェ
アでの実装を考えるときに、これを使用する。当然のこ
とであるが、使用者がこれを行うことを強制することを
意図するものではない(MATLABは彼/彼女のため
に既にこれを行っている)。
【0090】この相関器の実装について考えるとき、そ
れぞれが異なる並列度を有する異なる実現、すなわち、
corr()およびmax()の内部の演算の時間/空
間軸への写像を思い浮かべることができる。これは次節
の主題である。
【0091】スケーリングされた記述(Scaled descript
ion)
【0092】再び以下におけるようなPN符号の定義を
考える。
【0093】
【0094】このMATLAB記述は、変数cが4つの
異なる値を有するデータベクトルであることを定義す
る。このベクトルの代入は、4つの並行的なスカラーの
代入に相当する。したがって、このステートメントにお
いて達成可能な最大の並列性は4であると我々は言う。
【0095】実装においてこの並列性を達成するために
は、4つの並行的なスカラーの代入を行うのに使用でき
るハードウェアが存在しなければならない。ハードウェ
アにおける一つのスカラーの代入はデータバスを或る状
態に駆動することに対応するため、最大の並列実装にお
いて4つのバスを必要とする。バスを一つだけにしたい
場合には、これを指示しなければならない。MATLA
B記述内のステートメントのそれぞれに対し、同様のス
トーリを構築できる。並列性の程度の表示は、データベ
クトルからデータフローへの遷移において不可欠のステ
ップである。我々はこれを並列性のスケーリング(the s
caling of parallelism)と呼ぶ。それは、MATLAB
記述における不特定の通信帯域幅を固定数の通信バスに
制限することになる。それはMATLAB記述において
以下のように表示される。
【0096】
【0097】わかるように、各代入は、@iという注釈
(annotation)によって拡張されていて、これは、データ
ベクトルにおける並列性がどのように時間軸に配置され
るかを示している。例えば、inの内部の8つの入力値
は、8@1と記載することにより逐次的に与えられる。
他方、cの4つの値は同時に与えられる。corr演算
につき如何なる実装を用いても、その演算にデータを与
えるためだけに少なくとも8回の繰り返しが必要であ
る、ということがわかる。
【0098】いま、記述がデータフローレベルに近づき
つつあり、このレベルは明示的な繰り返しを使用する。
データフローグラフのレベルに到達するためには、もう
1ステップが必要である。これは次節における主題であ
る。
【0099】データフローグラフの定義
【0100】グラフを得るためには、そのグラフ内のア
クターとエッジを定義しなければならない。注釈が付け
られたMATLAB記述内において、ベクトルの名称の
存在によりデータ順位(data precedences)が既に存在す
る。欠けている唯一のものは、アクター境界の定義であ
る。エッジは、後で、アクター境界を横切るデータ順位
によって自動的に定義される。
【0101】これは、MATLAB記述に対する新たな
注釈によって行うことができる。3つのアクターがDS
/SS相関器において定義される。
【0102】
【0103】更にまた注釈を純粋な概念的なものとして
見るべきである。すなわち、使用者がこのコードを書く
ことは意図されていない。これらの注釈が与えられる
と、スケーリングされたMATLAB記述から曖昧さの
無い方法でデータフローグラフを抽出することができ
る。 ・actor1は、入力が無くinと呼ばれる一つの出力を有
するアクターである。 ・actor2は、一つの入力inと一つの出力otを有する
アクターである。 ・actor3は、一つの入力otと出力maxposおよび
maxとを有するアクターである。
【0104】更に、シミュレーションがキューを使用し
てアクター間で信号を転送する。我々は、in、otお
よびmaxposと呼ばれる3つのキューが必要であ
る。
【0105】このデータフローグラフのシミュレーショ
ンのための情報の欠落部分は、発火規則(すなわち等価
的には各エッジにおける生産と消費の定義)である。単
純なデータフローモデル(naive data flow model)を図
4に示す。actor1(10)は8個の値を生成し、
それらはactor2(11)により相関が求められ、
その最大値がactor3(12)内で選択される。
【0106】しかし、これは、MATLAB記述内にお
ける並列性のスケーリング演算(scaling operation)を
覆い隠すであろう。例えば、並列バス上で逐次的な方法
でinベクトルの8個の値を与えることが選択された。
したがって、マルチレートのSDFモデルは、注釈が付
されたMATLAB記述に対する良い入れ物ではないと
思われている。
【0107】他の手法は、循環静的記述(cyclostatic d
escription)である。この場合は、我々は図5に示すよ
うなグラフを有する。
【0108】生産パターン(productin pattern)を決定
するには、アクター内への演算の待ち時間(latencies)
を調べる必要がある、ということがわかる。これは設計
スクリプトの複雑さを増大させる。全てのアクターの要
求駆動のスケジューリングを行うのがより簡単である。
発火規則は、入力トークンの使用可能性を調べるだけで
よい。
【0109】したがって、図6に示すような所望のデー
タフローのフォーマットがマルチレートSDFレベルと
循環静的SDFとの間に位置づけられる。MATLAB
記述において書き下されたのと同様にして消費と生産に
注釈を付けることが提案されている: ・8@1はactor1の生産である。それは、8個の
サンプルが一度に1個ずつ生成されることを意味する。 ・8@1および5@1は、それぞれactor2の消費
と生産である。 ・5@1および1@1、1@1は、actor3に対す
る消費と生産である。
【0110】データフローシミュレーション
【0111】注釈が付されたMATLAB記述が与えら
れると、各アクターに対して高レベルモデルを記載する
ことにより、キューでこれらを相互接続しシステムのス
ケジュールを作成して、シミュレーションを構成するこ
とができる。OCAPIは、静的スケジューラと要求駆
動スケジューラの双方を提供する。
【0112】これらのシミュレーションの中から幾つか
の統計が集められる: ・各キューにおいて、信号の統計(最小値および最大
値)だけでなくputおよびgetのカウントが観測さ
れる。信号の統計により、通信バスの要求帯域幅がわか
る。 ・スケジューラがアクター当たりの発火数およびアクタ
ー当たりの演算実行数(+、−、*、・・・)をカウン
トする。このプロファイル(profiling)は、各アクター
に対するサイクル予算とハードウェア演算子の割り当て
の決定において設計者を助ける。
【0113】これらの統計はC++の多重定義機構(ove
rloading mechanism)によって収集され、したがって、
設計者は、シミュレーションにC++の適切なオブジェ
クト(スケジュール、キューおよびトークンクラスのタ
イプ)を使用すれば、それら統計を無償で得ることがで
きる。
【0114】次に、われわれは、アクターにおけるクロ
ックサイクル準拠の動作と通信バス上における必要な記
憶装置およびハンドシェイクプロトコル回路とに関心を
持つ。これは、次のステップであるアクター定義の主題
である。
【0115】アクター定義
【0116】このアクター定義は二つの要素に基づいて
いる。すなわち、 ・動作(behavior)のシグナルフローグラフ表現。 ・システムのタイミング検証(time verification)。
【0117】これら二つの問題は、注釈が付されたMA
TLABコードを仕様として使用して独立に解決するこ
とができる。OCAPIにおいて、 ・アクターのRTモデリングは、C++で行われ、演算
子の語長効果(wordlength effects)とクロックサイクル
準拠のタイミングとの双方に関し、高レベル記述と自由
に混合することができる。 ・タイミング検証手法により、通信におけるデッドロッ
ク及び/又は因果律違反(causality violations)につき
設計者に警告することにより、常にシステムの実現可能
性が調べられる。
【0118】シグナルフローグラフの定義
【0119】OCAPI設計フローにおいて、RTレベ
ルでの動作をシミュレーションするためにクラスライブ
ラリが開発された。それは以下のことを可能にする。 ・シグナルフローグラフ(SFG)のデータ構造を作り
上げることにより、任意の実装上の並列性を有するアル
ゴリズムの動作を表現すること。 ・このSFGを具体化されたトークン値で解釈すること
により、クロックサイクル準拠レベルでアクターの動作
をシミュレーションすること。 ・符号(sign)、オーバフローおよび丸めの振る舞い(rou
nding behavior)に関して演算子の語長特性(wordlength
characteristics)を指定すること。(SPWにおける
ような)ビットベクトル表現ではなく量子化特性の明示
的なモデリングにより、効率のよいシミュレーション実
行時間が得られる。 ・このアクターに対しC++コードを生成し、したがっ
て、コンパイルされたコードでクロックサイクル準拠の
シミュレーションを実行すること。 ・このアクターに対しVHDLコードを生成し、シノプ
シスDC(Synopsys DC)で実装(implementation)の合成
を行うこと。 ・このアクターに対しDSFGコードを生成し、カセド
ラル−3(Cathedral-3)で実装の合成を行うこと。カセ
ドラル−3は、シノプシスDCよりも、得られる回路に
おけるクリティカルパスおよび面積の双方に関し良い仕
事を行うことが観測された。まずカセドラル−3を使用
してゲートレベルで回路を合成し、その後にシノプシス
DCを使用して後処理として更なる論理の最適化を行う
ことにより、最良の合成結果が得られる。
【0120】シミュレーション速度に関し重要な観測が
なされた。異なる粒度(granularities)の記述に対し、
次の相対的な実行時間が見いだされた。 ・MATLABシミュレーションに対し1 ・時間を規定しない(untimed)高レベルのC++データ
フロー記述に対し2。 ・時間を規定した(timed)固定小数点のC++記述(コ
ンパイルされたコード)に対し4。 ・手続き的なワードレベルのVHDL記述に対し40。
【0121】したがって、OCAPI内におけるシステ
ムのRTモデリングは、最も高いレベルの記述の大きさ
の半分のオーダ以内で可能であると推定される。しか
し、VHDLモデリングは格段に遅い。現在は、40回
のMATLABという数字は過小見積もりとさえ考えら
れている。将来のクロックサイクルベースのVHDLシ
ミュレータは、量子化に基づくシミュレーションではな
くビットベクトルに基づくシミュレーションをなお使用
するため、この問題の半分を解決できるに過ぎない。
【0122】次に、C++におけるこのモデリング問題
を更に詳細に示す。C++のシグナルフローグラフ表現
は、signalというデータタイプを使用し、登録さ
れた値(registered value)かさもなければ即値となりう
るものである。このデータタイプにより、従来のスカラ
ー演算(+、−、*、シフトおよび論理演算)を用いて
式が形成される。式はシグナルフローグラフ内で分類さ
れる。シグナルフローグラフは、データフローのシミュ
レーションキューによりシステムとのインタフェースが
行われる。いくつかのシグナルフローグラフをSFGシ
ーケンスに分類することができる。SFGシーケンス
は、数サイクルにわたる動作の表現(expression)であ
る。有限状態機械によって仕様が記述され、その有限状
態機械に対し遷移条件を表現できる。SFGモデリング
の概念が図7に描かれている。
【0123】有限状態機械と結合したSFGの組み合わ
せがクロックサイクル準拠のアクターモデルを構成す
る。アクター内において、SFG通信が登録された信号
(registered signals)によって行われる。アクター境界
を越える通信がシミュレーションキューによって行われ
る。
【0124】このようにしてアクターが指定され、その
記述に対し全ての信号の語長に注釈が付されると、合成
への自動化経路が利用可能となる。幾つかの異なるSF
Gを一つのデータパスに割り当てることができる。異な
るsfgの間でのハードウェアの共有が可能となるよう
に合成可能なコードが生成される。有限状態機械(FS
M)の記述がまずSFGフォーマットに変換され同様に
して合成可能なコードが生成される。この方法により利
用可能な暗黙の階層が存在する。すなわち、異なるFS
M−SFGを一つのデータパスに割り当てることによ
り、モードポート(mode port)も持っていて従って(マ
ルチサイクルの)データパスのように見えるプロセッサ
全体のアーキテクチャが得られる。これは、(モデムに
おける取得/トラッキング(acquisition/tracking)アル
ゴリズムの切替のような)マクロ制御問題にとって必要
なものである。
【0125】注釈が付されたMATLABレベルとこの
RTレベルのSFGとの間の距離が大きいように見える
が、アクターのレベルでは妥当なものである。例えば、 を考える。
【0126】ここで、SFGでmax()演算の時間を
記載することが求められる。actor2はotの並列
性に対し5@1というスケーリングを行っている。実際
のC++コードで解決策が与えられる。
【0127】 { FB qin("qin"); //入力キュー FB q1out("qout"); //出力キュー FB q2out("qout"); //出力キュー FB start("start"); //プロセッサの始動ピン(start pin) clock ck; _sig currmax(ck,dfix(0)); //現時点の最大を保持する登録 _sig maxpos(ck,dfix(0)); //最大の位置を保持する登録 _sig currpos(ck,dfix(0)); //現時点の位置 _sig inputvalue; //入力値を保持する _sig maxout; _sig maxposout; _sig one(dfix(1)); //定数 SFG sfg0, sfg1,sfg2 ; //我々は3つのsfgを使用する sfg0.starts() ; //この後のコードはsfg0の対するもの currmax = inputvalue ; maxpos = one ; currpos = one ; //次に、sfg0にモードと入力キューを 与える sfg0 <<"m0"<< ip(inputvalue,qin) ; sfg1.starts() ; //この後のコードはsfg1に対するもの //これは条件付きの割り当てである currmax = (inputvalue>currmax).cassign(inputvalue,currmax); maxpos = (inputvalue > currmax).cassign(currpos, maxpos); currpos = currpos + 1 ; sfg1 <<"m1"<<ip(inputvalue,qin) ; sfg2.starts() ; //最後のSFG maxposout=(inputvalue>currmax).cassign(_sig(dfix(4)),maxpos); maxout=(inputvalue>currmax).cassign(inputvalue, currmax) ; sfg2 <<"m2"<< op(maxout,qout) << op(maxposout,q2out) ; state s0("s0"), s1("s1"), s2("s2"), s3("s3") ; s0 >> !cnd(start) >> s0 ; s0 >> cnd(start) >> sfg0 s1 ; s1 >> allways >> sfg1 >> s2 ; s2 >> allways >> sfg1 >> s3 ; s3 >> allways >> sfg2 >> s0 ; }
【0128】C++コードを解釈する助けとして、等価
な動作を図8に示す。この動作は4サイクルの記述とし
てモデル化される。4状態のコントローラ(16)に加
えて3つのSFG(13、14、15)が必要とされ
る。このコントローラはミーリー型順序回路(Mearly ma
chine)としてモデル化される。
【0129】このC++記述は、また、OCAPIの主
要な寄与の幾つかを示している。すなわち、データフロ
ーの態様(シミュレーションキュー)だけでなくレジス
タ転送レベルの態様(信号、クロック、レジスタ)が自
由に混合されて適切に使用される。C++の演算子であ
る多重定義とクラスを利用することにより、これらの異
なる設計コンセプトが簡潔な構文フォーマットで表現さ
れる。簡潔さは重要な設計上の問題である。
【0130】この仕様を入手すると、全ての情報を有し
てアクターのアーキテクチャの詳細設計を進めることに
なる。しかし、これは、システム設計の解(solution)の
一部に過ぎない。すなわち、システム全体にサイクル準
拠の結果をどのように組み込むかについても我々は関心
を持つ。
【0131】タイミング検証(time verification)
【0132】シミュレーションにおける時間(クロック
サイクル)の導入により、期待値に基づく手法(expecta
tion based approach)が使用される。それは、高レベル
の、さもなければSFG型のアクター記述を使用し、完
全なシステムをクロックサイクル準拠でシミュレーショ
ンすることを可能とする。このシミュレーションは、設
計者が、その「高レベル」記述がSFG記述に合ってい
るかどうかを調べ、次にそのシステムが実現可能かどう
かを調べる際に助けとなる。
【0133】期待値に基づくシミュレーションの概要
は、図10に与えられており、以下に述べるアイデアを
示すのに使用される。
【0134】アクターの実装に制限を加えるために分析
(例えばコンパイル時のスケジュールおよびトークンの
ライフタイムの評価)が行われるときには、これは異な
る手法となる。この従来の手法は、設計者が妥当な記述
を実際に書き下すかどうかについての手がかりを設計者
に与える。
【0135】シミュレーションにおける各トークンは、
それが生成された時刻すなわちトークンの年令による注
釈が付けられる。初期トークンが年令0で生まれ、それ
らトークンがデータフローグラフを進むにしたがって加
齢される。時間の単位はクロックサイクルである。
【0136】更に、シミュレーションにおける各キュー
は、シミュレーションの因果律を調べるのに使用される
キュー年令(例えば「存在(the present)」)を保持す
る。すなわち、キューに入るトークンはこの境界よりも
若くてはいけない。キューはトークン(レジスタ)を遅
延させることができるのみであり、したがって、そのキ
ュー年令よりも年上のトークンによって動作できるだけ
である。
【0137】このような整合性(consistency)違反が検
出されると、警告メッセージが発行され、そのトークン
の年令がそのキューの年令に適合させられる。さもなけ
れば、そのトークンがキューに配置された後に、そのキ
ューの時間境界(time boundary)が更新される。
【0138】このキュー年令は、それを駆動するアクタ
ーによって方向が定められる。各アクターに対し、設計
者は反復時間(iteration time)を明確に述べる。この反
復時間は、詳細なアクター記述に必要であると設計者が
予期するサイクル予算に対応する。各アクターが発火す
るとすぐに、そのアクターによって駆動されるキューが
反復時間だけ加齢される。
【0139】同時に、アクター演算も、それらが処理す
るトークンの年令を増大させる。通常の演算において
は、その結果得られるトークンの年令は、オペランドの
トークン年令の最大値に等しくなる。(SFGレベルの
アクター記述において存在するのみの)登録された信号
(registered signals)については、トークン年令が一つ
だけ増える。演算による加齢に加えて、伝達遅延(trave
l delay)を各キューに付加することによりキュー内部に
おける加齢も可能となる。
【0140】高レベルのアクター記述のように、キュー
には多くの期待値によって注釈が付される。これらの注
釈は、キューの実装が通信バスの集合としてどのように
見えるべきかを反映している。
【0141】通信バスは中間記憶を提供する1個以上の
レジスタを含んでいて、オプションとしてハンドシェイ
クプロトコル回路も含んでいる。そのときキューは、こ
れらの通信バスのうち一つまたは(並列通信について
は)複数のバスに写像される。
【0142】シミュレーションキューに対する期待値は
次の通りである。 ・トークンの並行性(token concurrency)、これは一つ
のキューに同年令のトークンがいくつ存在できるかを表
す。例えば8@2の注釈が付されたMATLABのベク
トルと通信するには、2個の通信バスが必要である。こ
れは、トークンの並行性を2に設定することにより、高
レベルのキューモデルに反映される。 ・トークンの並行性が1である場合、続いている複数ト
ークンを決められた数のクロックサイクルによって分離
することが要求されることがある。伝達遅延と相まっ
て、これは、一つの通信バス上においていくつのレジス
タが必要とされるかを決定する。この期待値はトークン
待ち時間(token latency)と呼ばれる。
【0143】異なる期待値に対する実現例を図9に示
す。
【0144】トークンの並行性が1と異なるとき、その
トークンの待ち時間は1より大きくは成り得ない。もし
トークンの並行性が1であれば、ハードウェアの共有を
利用して、したがってトークンの並行性を低減して、ト
ークンを供給するアクターを設計することができる。
【0145】期待値に基づくシミュレーションの概要が
以下のように表現される。まず、トークン年令およびキ
ュー年令に対する幾つかの暗黙の修正(adaptations)が
ある。 ・アクター記述が、アクターの繰り返し毎に反復時間だ
けキュー年令を増やす。 ・キューが、伝達されたトークンの年令を伝達遅延時間
だけ増やす。 ・SFG記述が、演算によってトークン年令を増やす。
レジスタの後のトークンの年令は1だけ増やされ、他の
全ての演算は、そのオペランドの年令の最大値に等しい
年令のトークンを生成する。
【0146】トークンの年令を変更する演算の集合は、
トークン加齢規則(token aging rules)と呼ばれる。
【0147】次に、多くの検査が実施されてシミュレー
ションの並行性が検証される。 ・トークンの年令は、キューの年令よりも若くは(小さ
くは)成り得ない。 ・一つのキューにおけるトークンの並行性を超過するこ
とはできない。 ・一つのキューにおけるトークンの待ち時間を超過する
ことはできない。
【0148】成功するクロックサイクル準拠のシミュレ
ーションは、これらの検査のいずれにも決して落ちては
ならない。このような成功の場合には、キューにおける
期待値を更に厳重に調べて、そのキューのための通信バ
スを工夫することができる。この説明において、我々は
ハンドシェイクプロトコル回路の使用には言及しなかっ
た。ハンドシェイクプロトコル回路は、アクターの入力
において異なる年令のトークンを同期させるために使用
することができる。
【0149】実装(Implementation)
【0150】OCAPIの現在のライブラリは、基本的
なクラスの集合を基礎とすることにより、C++でシス
テムを記述することを可能とする。 ・トークンクラスを移送(transport)して期待値検査(ex
pectation-checks)の実施を可能とするシミュレーショ
ンキュークラス。 ・ クロックサイクル準拠の仕様、シミュレーションお
よびコード生成を可能とするSFG/FSMクラス。 ・浮動小数点型の表現と固定小数点型の表現の双方のシ
ミュレーションを可能とするトークンクラス。
【0151】C++のシミュレーションキューでMAT
LABのデータベクトルのデータ型をシミュレーション
することができる。共通のMATLAB演算に対して
は、並列性における異なる趣(flavors)を反映させたS
FG記述のライブラリを開発することができる。例え
ば、その記述のC++版 %入力データ in = [1 2 1 3 3 4 1 2]; %拡散符号 c = [1 -1 1 -1]; %相関を求める ot = corr (in, c) %相関ピークを見つける [max, maxpos] = max (ot); は、並列性のスケーリングを行いアクター境界の定義を
した後、次のようになる。 FB in, ot, maxp ; in.delay(1,0) ; //反復時間、伝達遅延 ot.delay(1,0) ; maxp.delay(4,0) ; in.expect(1,1) ; //伝達遅延時間、並行性、待ち時間 ot.expect(1,1) ; maxp.expect(1,4) ; in = vector(1, 2, 1, 3, 3, 4, 1, 2) ; ot = corr(8, 4, in, vector(1, -1, 1, -1)) maxp = maxpos(4, ot) ;
【0152】このC++記述は、考慮中のシステムをク
ロックサイクル準拠のレベルでシミュレーションし且つ
そのシステムおよび個々のアクターに対して合成可能な
コードを生成するために必要な全ての情報を含んでい
る。
【0153】したがって、データフローレベルが透過的
となっている。それは設計者に陽に見えるものではな
く、期待値(プラグマの(pragma's))およびライブラリ
によって暗示されている。
【0154】<例2>OCAPIを使用したときのハー
ドウェア設計を経験するために次にプロセッサ設計の例
が与えられる。
【0155】課された仕事は、2サイクル毎に相関値を
算出する4タップの相関プロセッサ(correlator proces
sor)を設計することである。相関パターンの一つの係数
は、プログラム可能であることが必要であり、かつ、制
御信号がアサートされた後に読み込まれることが必要で
ある。図11におけるリストは、このプロセッサの完全
なFSMDモデルを与える。
【0156】このリストの先頭は、OCAPIにおいて
どのようなタイプ(型)が宣言されるかを示している。
例えば、タイプT_sampleは8ビット幅であっ
て、2進小数点の上位に6ビットを持っている。
【0157】このようなタイプ宣言においては、省略時
解釈により、符号付き(signed)、循環(wrap-around)お
よび切り捨て(truncating)の表現が仮定される。これ
は、例えば以下におけるように容易に変更できる。 //浮動小数点 dfix T_sample ; //符号なし dfix T_sample(8, 6, ns) ; //符号なし、丸め dfix T_sample(8, 6, ns, rd) ;
【0158】タイプ宣言以降に係数の宣言が見える。こ
れらは、レジスタに読み込まれるときに自動的に量子化
されるため、単純なdouble型として指定される。
既存のC/C++の構成体(construct)およびタイプを
新しい構成体およびタイプと混合することが可能であ
る。これら係数に続けて、相関プロセッサのFSMD定
義が示されている。この定義は次のものを必要とする。
すなわち、このプロセッサで処理される命令セットの仕
様、およびこのプロセッサの制御動作の仕様である。こ
れらのそれぞれに対し、OCAPIは専用のオブジェク
トを使用する。
【0159】まず、命令セットを定義する。各命令は信
号に対してデータ処理を実行し、それらの信号は最初に
定義されなければならない。この定義は、単純な信号
(sample_inおよびcorr_out)、レジスタ(a
ccu)、およびレジスタ配列(coef[]およびs
ample[])を含む。
【0160】次に、それらの命令のそれぞれが定義され
る。定義は、SFGのオブジェクトを生成することによ
り開始される。このようなSFG定義の後に来る全ての
信号の式は、それの一部を構成すると考えられる。SF
G定義は、新しいSFGオブジェクトを定義することに
よってのみ終了する。
【0161】第1の命令であるinitialize_
coefsは、係数レジスタcoef[]を初期化す
る。forループは、簡潔な方法でその初期化を表現す
ることを可能とする。したがって、initializ
e_coefs命令は、また次のものに等価である。 coef[0] = W(T_coef, hardwired_coef[0]) ; coef[1] = W(T_coef, hardwired_coef[1]) ; coef[2] = W(T_coef, hardwired_coef[2]) ; coef[3] = W(T_coef, hardwired_coef[3]) ;
【0162】第2の命令は、第1の係数の値をプログラ
ムする。新しい値coef_inは、同一の名前を持つ
FSMDの入力ポートから読まれる。このポートを越え
て、我々は、時間の規定されたFSMD記述の「外側」
にいて、データフローの意味規則を使用し、キューを介
して通信する。
【0163】第3および第4の命令であるcorrel
_1およびcorrel_2は、相関の2つの段階を記
述する。C++の演算子を使用するだけで複雑な式を表
現するのが極めて容易となる。また、中間式の結果の精
度を制限するcast演算が含まれる。これはシミュレ
ーションにとっては重要度が小さいが、ハードウェアの
合成結果に強い影響を有する。
【0164】命令read_sampleは、データ遅
延ラインをシフトさせる。forループに加えて、if
表現がその遅延ラインのための境界値を表現するのに使
用される。これらのような簡単なC++構成体の使用に
より、簡潔でエレガントな方法で、シグナルフローグラ
フの構造体の表現が可能になる。それはパラメトリック
設計において特に有用である。
【0165】最後の命令であるread_contro
lは、第1の相関係数を新たにする必要があるかどうか
を決定する制御値を読み込む。
【0166】全てのSFG定義の下に、相関プロセッサ
の制御動作が記述される。一つの初期状態rstと2つ
の通常状態phase_1およびphase_2を使用
して、3つの状態を有するFSMが定義される。次に、
それら3つの状態の間で4つの遷移が定義される。各遷
移は、開始状態、遷移条件、実行する命令の集合、およ
び目標とする状態を指定する。有限状態機械の使用に慣
れている設計者にとって、これは極めて簡潔で効率のよ
い表記法である。
【0167】遷移条件alwaysは常に真であり、一
方、cnd(load)のような遷移条件は、レジスタ
loadが1個でも保持しているときはいつも真とな
る。
【0168】結果として得られるfsm記述は、最後の
returnステートメントによりOCAPIへと復帰
する。このシミュレータとコード生成器は、次に、意味
的な検査、シミュレーションおよびコード生成を行うた
めにオブジェクト階層を処理する。
【0169】合成可能なVHDLおよびカセドラル−3
(Cathedral-3)への変換は自動化されていて、設計者の
余分な努力を必要としない。データパスおよびコントロ
ーラに対して得られる回路は図12に示されている。O
CAPIによって提供される生成コードの階層も示され
ている。各コントローラとデータパスは、リンクセルを
使用して連結されている。リンクセル自身は、自動生成
されるテストベンチの中へ埋め込むことができ、また
は、全ての構成要素(components)を相互に接続するシス
テムリンクセルの中にも埋め込むことができる。
【0170】<例3>:複雑な高速ASICの設計
【0171】75KゲートDECTトランシーバの設計
を例として用いる。
【0172】この設計は、DECT基地局(20)(図
13)に存在するデジタルの無線リンク(radiolink)の
トランシーバのASICから成る。このチップは、無線
周波数のフロントエンドRF(21)によって受信され
るDECTバースト信号を処理する。これらの信号は、
無線リンク(22)において取り込まれた多重通路ひず
みを取り除くために等化される。次に、それらは、有線
リンク(wire-link)の駆動回路DR(23)に渡され、
この駆動回路は基地局のコントローラBSC(24)と
の通信を確立する。このシステムは、また、制御要素C
TL(25)によって局所的に制御される。
【0173】このシステムにおけるデジタルトランシー
バのASICの設計に伴う仕様は以下の通りである。 ・等化は複雑な信号処理を伴い、MATLABのような
高レベルの設計環境の中で記述され検証される。 ・他方、制御要素CTLおよび有線リンクの駆動回路D
Rに対するインタフェースは、詳細なクロックサイクル
準拠のプロトコルとして記述される。 ・許容される処理の待ち時間は、リアルタイム動作(rea
l time operation)の要求から、極めて小さい。すなわ
ち、たった29個のDECTシンボルの遅延(25.2マイ
クロ秒)が許容されるだけである。他方、等化アルゴリ
ズムの複雑さにより、DECTシンボル当たり152個
までのデータの乗算の実行が必要となる。これは、並列
データ処理の使用を暗示し、厳しい制御問題をもたら
す。 ・仕様の不均質な集合から検証されたゲートレベルのネ
ットリストへと到達するための予定される設計期間は、
18人週間(person-weeks)である。
【0174】この設計過程における最も重要な自由度
は、目標とする設計アーキテクチャであって、これは、
要求事項が満たされるように選ばれなければならない。
際どい設計期間のために、設計過程全体に対する最大の
制御が必要となる。これを達成するために、実装に対す
るプログラミング手法が使用され、この手法ではC++
でシステムがモデル化される。この言語のオブジェクト
指向の特徴は、符号なし構成要素の高レベル記述を詳細
なクロックサイクル準拠(clock-cycle true)かつビット
準拠(bit-true)の記述と混合することを可能とする。
さらに、適切なオブジェクトモデリングが、この詳細な
記述を合成可能なHDLに自動的に変換することを可能
とする。最後に、C++シミュレーションと関係を持ち
つつ検証テストベンチ(verification testbenches)を自
動的に生成することができる。
【0175】この設計努力の結果は、VLIWアーキテ
クチャの75Kゲートのチップであって、22個のデー
タパス、2個と57個の間の命令の各デコードを含み、
7個のRAMセルを含んでいる。このチップは、0.7の
CMOS技術において194のダイエリア(die area)を
有している。
【0176】このC++のプログラミング環境は、既存
の手法よりも速く結果を得ることを可能とする。このよ
うにレジスタ転送設計環境と関連づけられて、C++に
より、より簡潔で従ってより誤りの少ないハードウェア
記述を得ることが可能となる、ということが示される。
高レベルの合成環境はこの問題を解決できるであろう
が、予め目標とするアーキテクチャを固定しなければな
らない。DECTトランシーバの設計の場合において述
べられるように、厳しい初期要求のために目標とするア
ーキテクチャに突然の変更が生じる可能性があり、その
目標のアーキテクチャはシステムの実現においてのみ検
証されうるものである。
【0177】まず、システムマシンモデル(system mach
ine model)が導入される。このモデルは2つのタイプの
記述を含んでいる。すなわち、高レベルの時間を規定し
ないものと詳細な時間を規定したブロックである。この
ようなモデルを使用してシミュレーション機構が構築さ
れる。提案された手法はコードサイズおよびシミュレー
ション速度の点で現在の合成環境よりも優れていること
が示される。これに続いて、HDLコードの生成結果(g
eneration issues)とハードウェア合成の戦略が説明さ
れる。
【0178】システムマシンモデル(System Machine Mo
del)
【0179】データ処理の高並列性のため、DECTト
ランシーバは並行プロセスの集合により最もよく記述さ
れる。各プロセスは、最終のシステムの実現における一
つの構成要素(component)に変換される。
【0180】システムレベルにおいてプロセスは、デー
タフローの意味規則を使用して実行される。すなわち、
一つのプロセスは一つの反復動作として記述され、そこ
では、入力が反復の開始において読み込まれ、出力がそ
の終了において生成される。プロセスの実行は、必要な
入力値が得られるとすぐに開始される。
【0181】各プロセス内において、2つのタイプの記
述が可能である。第1の記述は、高レベル記述であっ
て、手続的なC++の構成体を使用して表現できるもの
である。また、データフローのシミュレーションを可能
とするために発火規則も追加される。
【0182】プロセスの第2の趣(flavour)はレジスタ
転送レベルで記述される。これらのプロセスはシステム
クロックに同期して動作する。このようなプロセスの一
つの反復は、処理の1クロックサイクル分に対応する。
【0183】システムシミュレーションのために2つの
スケジューラが使用可能である。時間を規定しないブロ
ックのみを含むシステムをシミュレーションするために
データフロースケジューラが使用される。このスケジュ
ーラは、プロセスの発火規則を繰り返し検査し、その入
力が得られている実行用プロセスを選択する。
【0184】このシステムが時間の規定されたブロック
をも含んでいるときは、代わりにサイクルスケジューラ
が使用される。このサイクルスケジューラは、マルチサ
イクルの記述の実行を介在させるように管理するが、さ
らに時間の規定されないブロックも組み込むことができ
る。
【0185】図14は、DECTのトランシーバのフロ
ントエンドの処理、および、データフロースケジューリ
ングとサイクルスケジューリングとの違いを示してい
る。先頭に、フロントエンドの処理が見られる。受信信
号は、A/Dによってサンプリングされ、ヘッダ相関器
(header correlator)HCORにおける特有のヘッダパ
ターンとの相関が求められる。結果として得られる相関
は、ヘッダ検出器ブロックHDET内で検出される。高
レベル記述でのシミュレーションは、データフロースケ
ジューラを使用する。データフロースケジューラの例が
この図の中央部に見られる。A/Dの高レベル記述は3
個のトークンを生成し、これらは相互接続通信キューに
投入される。次に、相関器の高レベル記述を3回発火さ
せることができ、これの後に検出器の処理が続く。
【0186】他方、A/Dおよびヘッダ相関器のサイク
ル準拠の記述が得られると、このシステムは、図の底部
に示されているサイクルスケジューラによりシミュレー
ションすることができる。今度は、A/Dブロックと相
関器ブロックの動作がインターリーブされる。HCOR
ブロックについて示されているように、実行には複数サ
イクルを使用することができる。残余の高レベルブロッ
クである検出器は、発火規則を有し、必要に応じて実行
される。グローバルなクロックグリッド(global clock
grid)に関しては、それは組合せ関数(combinatorial fu
nction)として現れている。
【0187】詳細なプロセス記述は、同一の実装レベル
における構成要素のハードウェア動作を反映している。
シミュレーション性能およびコーディング成果(coding
effort)を得るために、幾つかの抽象化が行われる。
【0188】C++の固定小数点ライブラリにより有限
語長効果がシミュレーションされる。これらの効果のシ
ミュレーションはC++では容易であることが示されて
いる。また、ビットベクトル表現ではなく量子化が、シ
ミュレーション速度の意味のある向上を可能にする。
【0189】動作は、データパスと結合した有限状態機
械の形式で、制御/データ処理の混合された記述により
モデル化される。このモデルは、合成の業界(synthesis
community)では一般的なものである。DECTトラン
シーバのASICにおけるような高いスループットの電
気通信回路では、ハードウェア記述が行われる前に所望
の構成要素のアーキテクチャが知られているということ
が最も頻繁に生じる。FSMDモデルは、これらのタイ
プの構成要素に対して都合がよい。
【0190】これら2つの態様である語長モデリングと
サイクル準拠のモデリングは、別個の複数のクラス階層
としてのプログラミング環境において利用可能である。
したがって、固定小数点モデリングを高レベル記述に同
様にうまく適用することができる。
【0191】サイクル準拠モデリングの実例として、D
ECTトランシーバのASICに対する中央VLIWコ
ントローラの記述の一部が図15に示されている。動作
(actions)として、それの下のシグナルフローグラフの
記述(31)が実行される。二つの状態である実行(exe
cute)とホールド(hold)は、DECTシステムの動作状
態とアイドル状態とにそれぞれ対応する。これらの条件
はシグナルフローグラフ内のレジスタに格納される。こ
の場合、条件であるホールド要求(holdrequest)が外部
ピンに関係する。
【0192】実行状態ではデータパスに命令が供給され
る。命令はルックアップテーブルから取り出されてプロ
グラムカウンタによってアドレス指定される。ホールド
要求がアサートされると、現時点の命令は実行を遅延さ
れ、プログラムカウンタPCが内部レジスタに格納され
る。ホールドの間、ノーオペレーション命令(nop)がデ
ータパスに供給されてデータパスの状態が凍結される。
ホールド要求が除去されると直ちに、格納されたプログ
ラムカウンタholdpcがルックアップテーブルをア
ドレス指定し、割り込まれた命令が実行のためにデータ
パスに対して発行される。
【0193】信号とシグナルフローグラフ
【0194】信号は、時間の規定された記述の構成に使
用される情報担体(information carriers)である。信号
はC++のsigオブジェクトを使用してシミュレーシ
ョンされる。これは単純な信号(plain signals)かさも
なければ登録された信号(registered signals)である。
後者の場合、その信号値は、現時点の値と次の値とを持
っていて、これは、信号の参照と代入のそれぞれにおい
てアクセスされる。登録された信号は、信号の更新を制
御するクロックオブジェクトclkに関係する。信号の
両タイプは、浮動小数点値かさもなければシミュレーシ
ョンされた固定小数点値をとりうる。
【0195】演算を使用して、信号が式へと組み立てら
れる。図16に示された多重定義機構を使用することに
より、C++コンパイラのパーザが再使用されてシグナ
ルフローグラフのデータ構造が構築される。
【0196】この例が図17に示されている。この図の
先頭はC++のフラグメント(40)を示している。こ
れを実行すると、その下に示されるデータ構造(41)
が生じる。以下のことがわかる。 ・シグナルフローグラフは、ユーザ定義のノードと演算
ノードから構成される。演算ノードは、そのオペランド
をポインタにより見失わないようにしている。ユーザ定
義の信号はアトミックであって、空白(null)のオペラン
ドポインタを有している。 ・代入演算は、信号を定義する式のツリー(expression
tree)の開始点を見いだすことを可能とする逆ポインタ
を使用する。
【0197】シグナルフローグラフ(SFG)において
sig式(sig expressions)の集合を組み立てることが
できる。さらに、シグナルフローグラフの所望の入力お
よび出力を表示しなければならない。これにより、未接
続入力(dangling input)やデッドコードの検出のような
意味的な検査が可能となり、それらの検出によりユーザ
にコードの不整合性が警告される。
【0198】SFGは明確に定義されたシミュレーショ
ンの意味規則を有し、動作の1クロックサイクル分を表
現する。
【0199】有限状態機械
【0200】全ての命令がSFGオブジェクトとして記
述された後、構成要素の制御動作が記述されなければな
らない。我々はミーリー型のFSMモデルを使用してこ
れを行う。
【0201】また、C++オブジェクトの使用は、極め
て簡潔で効率のよい記述を得ることを可能とする。図1
8は、同一のFSMに対する、図的記述とC++テキス
ト記述とを示している。その対応は明らかである。イベ
ント駆動のHDLにおいて等価なFSMを記述するため
に、通常、HDLシミュレータの意味規則に従わなけれ
ばならず、例えばマルチプロセスのモデリングを使用し
なければならない。他方、C++を使用することによ
り、ソースコードの同一部分(the same piece)内の全て
において、処理されるオブジェクトのタイプに応じて意
味規則を修正することができる。
【0202】アーキテクチャの自由度
【0203】制御/データの混合モデルの重要な性質
は、それが提供するアーキテクチャの自由度である。例
として、DECTトランシーバの最終的なアーキテクチ
ャが図19に示されている。それは、中央(VLIW)
コントローラ(50)、プログラムカウンタコントロー
ラ(51)および22個のデータパスのブロックから構
成される。これらの各々は、上記で示された制御/デー
タの混合処理によりモデル化される。それらは、個々の
ブロックに応じて、命令、条件または信号値として解釈
されるデータ信号を交換する。これらの相互接続された
FSMDマシンにより、更に複雑なマシンが構成され
る。
【0204】次に、このアーキテクチャの自由度がなぜ
必要かに興味が生じる。DECTトランシーバに対して
は、厳しい待ち時間の要求がある。初めに、データフロ
ーの目標アーキテクチャが選択されており(図20)、
これは、このタイプの電気通信の信号処理には一般的な
ものである。このようなアーキテクチャにおいて、個々
の構成要素は、局所的に制御されデータ駆動となってい
る。例えば、ヘッダ検出器プロセッサは、全体の最大値
に到達することが確実となると直ちに、DECTヘッダ
のスタート(相関の最大値)の信号を送る。
【0205】しかし、待ち時間の要求のため、この構成
要素において余分な遅延を許容することはできず、それ
は、有効なDECTヘッダとして第1の使用可能な相関
最大値を信号として送らなければならない。新たな更な
る最大値が到着した場合、ヘッダ検出器ブロックは、そ
のとき、続いている複数ブロックに対して例外を発生さ
せて処理を再開すべきことを示さなければならない。こ
のような例外は全体的な影響を有している。しかし、デ
ータ駆動のアーキテクチャでは、このような大域的な例
外は、実装が極めて困難である。これは、中央制御アー
キテクチャ(a central control architecture)でははる
かに容易であって、このアーキテクチャでは、それは命
令ROMにおけるジャンプの形式をとる。これらの困難
さのため、目標とするアーキテクチャはデータ駆動から
中央制御へと変更された。FSMDマシンのモデルは、
データパス記述の再利用を可能とし、制御記述を手直し
することを必要とするだけである。このアーキテクチャ
の変更は、18週間の設計サイクルの間に行われた。
【0206】サイクルスケジューラ
【0207】時間の規定された記述をシミュレーション
すべきときには必ず、データフロースケジューラの代わ
りにサイクルスケジューラが使用される。サイクルスケ
ジューラは、クロックサイクルを基礎として構成要素間
における同時並行性の幻覚(illusion of concurrency)
を生じさせる。
【0208】サイクルスケジューラの動作は例により最
もよく示される。図21において、3つの構成要素を有
するシステムの1サイクル分のシミュレーションが示さ
れている。最初の2つの構成要素(components)1(6
0)および2(61)は、fsmおよびsfgのオブジ
ェクトを使用して構成される、時間の規定された記述で
ある。他方、構成要素(component)3(62)は、発火
規則と動作を使用して高レベルで記述される。DECT
トランシーバでは、詳細な(時間が規定された)構成要
素および高レベルの(時間の規定されない)構成要素の
このようなループが、例えばデータパスに付加されたR
AMセルにおいて現れる。その場合、RAMセルは高レ
ベルで記述され、一方、データパスはクロックサイクル
準拠のレベルで記述される。
【0209】1クロックサイクル分のシミュレーション
は、3つの段階で行われる。従来のRTシミュレーショ
ンは2つだけを使用する。すなわち、評価段階(evaluat
ionphase)である第1段階とレジスタ更新段階である第
2段階である。
【0210】サイクルスケジューラによって使用される
3つの段階は、トークンの生成段階、評価段階およびレ
ジスタ更新段階である。
【0211】この3段階のシミュレーション機構は、シ
ステムレベルにおいて存在するかもしれない明白なのデ
ッドロック(apparent deadlocks)を回避するのに必要で
ある。実際、この例では、構成要素1、2および3の間
における環状の依存性が存在し、データフロースケジュ
ーラは、その3つの構成要素のうちどれを最初に実行す
べきかを選択することはもはやできない。データフロー
のシミュレーションでは、これは、データ依存性におい
て初期トークンを導入することにより解決される。しか
し、このようにすれば、システムの相互接続のためのバ
ッファの実装を工夫し、システムに余分なコード生成器
を導入することが要求されるであろう。
【0212】サイクルスケジューラは、必要な初期トー
クンをトークン生成段階で生成することにより、これを
回避する。これらの段階の各々は以下のように動作す
る。 [0]クロックサイクルの各開始点で、現在のクロック
サイクルで実行されるべきsfg記述が選択される。各
fsm記述では、遷移が選択され、この遷移に関係する
sfgが実行のためにマークされる。 [1]トークン生成段階。マークされた各sfgに対
し、依存性グラフ(dependency graph)を調べ、登録され
た信号および/または固定信号に依存するだけの出力を
確認する。これらの出力を評価し、得られるトークンを
システムの相互接続に出力する。 [2](a)評価段階(ケースa)。第2段階におい
て、マークされた全てのsfgが発火するまで、マーク
されたsfgと時間の規定されないブロックとを実行の
ためにスケジュールする。出力トークンは、それらが時
間の規定されたsfg記述に対する入力トークンに直接
に依存する場合、または、それらが時間の規定されない
ブロックの出力である場合に、生成される。 [2](b)評価段階(ケースb)。しかし、登録され
た信号または定数に依存するだけの出力は、この評価段
階では生成されない。 [3]レジスタ更新段階(登録更新段階)。マークされ
たfsgにおける登録された全ての信号について、次の
値を現在の値にコピーする。この3段階シミュレーショ
ンの評価段階は一つの反復プロセスである。反復のプリ
セット値(a pre-set amount)が渡され、なお未発火の構
成要素が存在する場合には、そのシステムはデッドロッ
クであると宣告される。このようにして、サイクルスケ
ジューラはそのシステムにおける組合せループ(combina
torial loop)を認識する。
【0213】コード生成およびシミュレーション戦略
【0214】システムの構成要素に対するクロックサイ
クル準拠でビット準拠の記述は、二つの目的にかなうも
のである。第1に、それらの記述は、それらの記述を検
証するためにシミュレーションされなければならない。
次に、それらの記述は、また、等価な合成可能なHDL
記述へと変換されなければならない。
【0215】これらの要求を考慮して、C++記述その
ものをプログラミング環境における二つの方法で扱うこ
とができる。コードがコンパイルされる手法(compiled
codeapproach)の場合には、C++記述は、直接に実行
可能なコードに翻訳される。解釈される手法(interpret
ed approach)の場合には、C++記述は、設計システム
によって前処理され、メモリにデータ構造として格納さ
れる。
【0216】両手法は異なる利点と用途を有している。
シミュレーションには、実行速度が主として重要であ
る。したがって、コンパイルされたコードによるシミュ
レーションが必要となる。他方、HDLコード生成は、
コード生成器で処理可能なデータ構造として使用できる
C++記述を要求する。したがって、コード生成器は、
解釈される手法を要求する。
【0217】我々は、図22に示される戦略を使用する
ことにより、この二つの目標に解決策を与える。システ
ムに対するクロックサイクル準拠およびビット準拠の記
述がコンパイルされて実行される。この記述は、信号や
有限状態機械の記述のようなC++オブジェクトを使用
し、これは自分自身を制御/データフローのデータ構造
に変換する。
【0218】次にこのデータ構造は、すばやく検証する
ためにシミュレータによって解釈することができる。ま
た、同一のデータ構造がコード生成器によって処理され
て二つの異なる記述を生み出す。
【0219】C++記述は、再生されて、特定用途向け
の最適化されたコンパイルコードのシミュレータを生み
出す。このシミュレータは、効率のよいシミュレーショ
ン実行時間のため、設計の広範な検証に使用される。
【0220】ゲートレベルの実装に到達するために合成
可能なHDL記述を生成することもできる。
【0221】これら3つの形式(解釈されるC++オブ
ジェクト、コンパイルされるC++、およびHDL)の
間でのシミュレーション性能の相違は、表1に示されて
いる。DECTヘッダ相関プロセッサについて、および
完全なDECTトランシーバのASICについても、シ
ミュレーション結果が示されている。
【0222】C++モデリングは、(解釈されるオブジ
ェクトの手法について)コードサイズでRT−VHDL
モデリングに比べて5倍勝っている。これは、システム
に対し短い設計サイクルが与えられた場合には重要な利
点である。他方、コンパイルされたコードのC++は、
RT−VHDLに比べて速いシミュレーションおよび小
さいプロセスサイズを提供する。
【0223】参考のために、ネットリストレベルのVH
DLとVerilogのシミュレーションの結果を与え
る。
【0224】
【表1】
【0225】合成戦略
【0226】最後に、我々は、DECTトランシーバに
使用された合成手法を詳細に文書化する。図23に示さ
れるように、クロックサイクル準拠でビット準拠のC+
+記述は、そのプログラミング環境内から等価なHDL
へと変換することができる。
【0227】C++記述と関係を持ちつつ、各構成要素
に対し、コントローラの記述とデータパスの記述とが生
成される。これは、それぞれがコントローラまたはデー
タパスの合成タスクに対して最適化された部分の双方に
対して別個の合成ツールに頼っているために行われる。
【0228】データパスの合成に対しては、我々はカセ
ドラル−3(Cathedral-3)のバックエンドのデータパス
合成ツールに頼っており、これらのツールは、シグナル
フローグラフの集合から開始してビット並列ハードウェ
アの実装を得ることを可能とする。これらのツールは、
ワードレベルでの演算子の共用を可能とし、DECTト
ランシーバにおける最も複雑な57命令のデータパスに
対してさえ15分未満の実行時間となる。
【0229】他方、コントローラの合成は、シノプシス
DC(Synopsys DC)のような論理合成によって行われ
る。FSMの合成のような純粋な論理合成に対しては、
このツールは効率の良い結果を生み出す。データパスと
コントローラの組合せのネットリストもまた、ゲートレ
ベルのネットリストの最適化を実行するシノプシスDC
により後処理で最適化が行われる。合成に対するこの分
割統治の戦略(divide and conquer strategy)は、各ツ
ールの適切な場所での適用を可能とする。
【0230】システムのシミュレーション中において、
システム刺激(system stimuli)も、各構成要素の合成結
果の検証を可能とするテストベンチへと変換される。合
成される全ての構成要素を相互接続してシステムのネッ
トリストの中へ入れた後は、生成されたシステムのテス
トベンチを用いて最終的な実装を検証することもでき
る。
【図面の簡単な説明】
【図1】 全体的な開発方法が描かれた図。
【図2】 目標とするアーキテクチャが描かれた図。
【図3】 C++モデリングレベルが描かれた図。
【図4】 PN相関器のSDFモデルが示された図。
【図5】 PN相関器のCSDFモデルが描かれた図。
【図6】 PN相関器のMATLABデータフローモデ
ルが示された図。
【図7】 SFGモデリングの概念が描かれた図。
【図8】 maxアクターの黙示的な記述が描かれた
図。
【図9】 異なる期待値に対する実現例が示される図。
【図10】 期待値に基づく概要が示された図。
【図11】 相関器プロセッサに対するOCAPIコー
ドが示された図。
【図12】 データパスおよびコントローラに対して得
られる回路が階層的に描かれた図。
【図13】 DECT基地局の構成(setup)を描く図。
【図14】 DECTトランシーバのフロントエンド処
理を示す図。
【図15】 DECTトランシーバのASICに対する
中央VLIWコントローラ記述の一部が示された図。
【図16】 シグナルフローグラフのデータ構造を構成
する多重定義(overloading)の使用が示された図。
【図17】 例としてのC++コードのフラグメントと
それに対応するデータ構造を描かれた図。
【図18】 同一のFSMに対する、図的記述とC++
テキスト記述とが示された図。
【図19】 DECTトランシーバの最終的なアーキテ
クチャが示された図。
【図20】 データフローの目標アーキテクチャが示さ
れた図。
【図21】 3つの構成要素を有するシステムの1サイ
クル分のシミュレーションが示された図。
【図22】 実装とシミュレーションの戦略が描かれた
図。
【図23】 C++からHDLへの変換の流れが示され
た図。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 セルジュ・ヴェルナルデ ベルギー、ベー−3001ヘヴェルレー、セレ ステイネンラーン19/11番 (72)発明者 ヨハン・コックス ベルギー、ベー−3020ヘレント、レイウェ ッヒ153番

Claims (45)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも一つのデジタルシステム部分
    を含むシステムの動作記述から該システムに対するイン
    プリメント可能な記述を生成する、計算機環境において
    コンパイルされる設計装置であって、前記動作記述は前
    記計算機環境においてオブジェクト間の関係の第1集合
    を伴う第1のオブジェクト集合として表現され、前記イ
    ンプリメント可能な記述は前記計算機環境においてオブ
    ジェクト間の関係の第2集合を伴う第2のオブジェクト
    集合として表現され、前記第1および第2のオブジェク
    ト集合は設計環境の一部である設計装置。
  2. 【請求項2】 請求項1に記載の設計装置において、前
    記第1および第2のオブジェクト集合は単一の設計環境
    の一部である設計装置。
  3. 【請求項3】 請求項1または請求項2に記載の設計装
    置において、前記設計環境がオブジェクト指向プログラ
    ミング言語を含む設計装置。
  4. 【請求項4】 請求項3に記載の設計装置において、前
    記オブジェクト指向プログラミング言語がC++である
    設計装置。
  5. 【請求項5】 請求項1ないし4のいずれかに記載の設
    計装置において、前記設計環境は、新たなオブジェクト
    を生成することができる開放的環境である設計装置。
  6. 【請求項6】 請求項1ないし5のいずれかに記載の設
    計装置において、前記第1のオブジェクト集合の入力信
    号および出力信号の少なくとも一部は、前記第2のオブ
    ジェクト集合の入力信号および出力信号の少なくとも一
    部である設計装置。
  7. 【請求項7】 請求項1ないし6のいずれかに記載の設
    計装置において、前記動作記述の入力信号および出力信
    号の少なくとも一部は、前記インプリメント可能な記述
    の入力信号および出力信号の少なくとも一部である設計
    装置。
  8. 【請求項8】 請求項1ないし7のいずれかに記載の設
    計装置において、前記第1のオブジェクト集合は第1の
    意味規則を有し、前記第2のオブジェクト集合は第2の
    意味規則を有している設計装置。
  9. 【請求項9】 請求項8に記載の設計装置において、前
    記第1の意味規則はデータベクトルモデルおよび/また
    はデータフローモデルである設計装置。
  10. 【請求項10】 請求項8に記載の設計装置において、
    前記第2の意味規則はシグナルフローグラフ(SFG)
    のデータ構造である設計装置。
  11. 【請求項11】 請求項1ないし10のいずれかに記載
    の設計装置において、前記第2のオブジェクト集合のオ
    ブジェクトの少なくとも一部の前記インプリメント可能
    な記述におけるインパクトは、前記第1のオブジェクト
    集合のオブジェクトの少なくとも一部の前記動作記述に
    おけるインパクトと本質的に同一である設計装置。
  12. 【請求項12】 請求項1ないし11のいずれかに記載
    の設計装置において、前記システムの動作をシミュレー
    ションする手段を更に備え、該手段は、前記動作記述、
    前記インプリメント可能な記述、またはそれらの間の任
    意の中間記述の動作をシミュレーションする設計装置。
  13. 【請求項13】 請求項1ないし12のいずれかに記載
    の設計装置において、前記第2のオブジェクト集合の少
    なくとも一部は、前記第1のオブジェクト集合に属する
    オブジェクトから導出される設計装置。
  14. 【請求項14】 請求項1ないし13のいずれかに記載
    の設計装置において、前記インプリメント可能な記述
    は、少なくとも部分的には、前記動作記述を詳細化する
    ことにより得られる設計装置。
  15. 【請求項15】 請求項1ないし14のいずれかに記載
    の設計装置において、前記インプリメント可能な記述は
    前記システムのアーキテクチャ記述である設計装置。
  16. 【請求項16】 請求項15に記載の設計装置におい
    て、前記アーキテクチャ記述を前記システムの合成可能
    記述へと変換する手段を更に備え、該合成可能記述はハ
    ードウェアで直接にインプリメント可能である設計装
    置。
  17. 【請求項17】 請求項16に記載の設計装置におい
    て、前記ハードウェアは半導体チップである設計装置。
  18. 【請求項18】 請求項1ないし17のいずれかに記載
    の設計装置において、前記システムをデータベクトルに
    対する演算の集合として記述するベクトル記述から前記
    第1のオブジェクト集合を導出する手段を更に備える設
    計装置。
  19. 【請求項19】 請求項18に記載の設計装置におい
    て、前記ベクトル記述はMATLAB記述である設計装
    置。
  20. 【請求項20】 請求項9に記載の設計装置において、
    前記データフロー記述において静的にまたは要求駆動的
    にスケジュールされたデータフローをシミュレーション
    する手段を更に備える設計装置。
  21. 【請求項21】 請求項1ないし20のいずれかに記載
    の設計装置において、期待値に基づくシミュレーション
    を使用しつつ、前記データフロー記述および/または一
    つ以上の前記SFGデータ構造を用いて前記システムの
    クロックサイクル準拠のシミュレーションを行う手段を
    更に備える設計装置。
  22. 【請求項22】 少なくとも一つのデジタル部分を含む
    システムを設計するための方法であって、前記システム
    の動作記述が前記システムのインプリメント可能な記述
    へと変換される詳細化ステップを有し、前記動作記述は
    オブジェクト間の関係の第1集合を伴う第1のオブジェ
    クト集合として表現され、前記インプリメント可能な記
    述はオブジェクト間の関係の第2集合を伴う第2のオブ
    ジェクト集合として表現される方法。
  23. 【請求項23】 請求項22に記載の方法において、前
    記詳細化ステップは、動作特性を少なくとも一部は構造
    特性へと変換するステップを含む方法。
  24. 【請求項24】 請求項22または23に記載の方法に
    おいて、前記動作記述、前記インプリメント可能な記
    述、および/または、それらの間の任意の中間記述の動
    作がシミュレーションされるシミュレーションステップ
    を更に有する方法。
  25. 【請求項25】 請求項22ないし24のいずれかに記
    載の方法において、前記詳細化ステップは、新たなオブ
    ジェクトを追加するステップと、既存のオブジェクトと
    の相互作用を許容するステップと、前記相互作用を許容
    する前記既存のオブジェクトに適合させるステップとを
    含んでいる方法。
  26. 【請求項26】 請求項22ないし25のいずれかに記
    載の方法において、前記詳細化は、開放的環境において
    実行され、既存オブジェクトの拡張を含んでいる方法。
  27. 【請求項27】 請求項22ないし26のいずれかに記
    載の方法において、前記詳細化ステップは、前記動作記
    述がデータベクトルモデルであって少なくとも部分的に
    データフローモデルへと変換される第1の詳細化ステッ
    プを含んでいる方法。
  28. 【請求項28】 請求項27に記載の方法において、前
    記データフローモデルは、時間の規定されない浮動小数
    点データフローモデルである方法。
  29. 【請求項29】 請求項27または28に記載の方法に
    おいて、前記詳細化ステップは、前記データフローモデ
    ルが少なくとも部分的にSFGモデルへと変換される第
    2の詳細化ステップを更に含んでいる方法。
  30. 【請求項30】 請求項22ないし29のいずれかに記
    載の方法において、前記詳細化ステップは第1の詳細化
    ステップを含み、該第1の詳細化ステップは、 ・入力、出力および中間の信号の入力ベクトル長を決定
    するステップと、 ・入力信号を処理して信号を出力する演算の並列性の程
    度を決定するステップと、 ・前記データフローモデルのアクター、エッジおよびト
    ークンを決定するステップと、 ・前記トークンの語長を決定するステップと を含んでいる方法。
  31. 【請求項31】 請求項30に記載の方法において、並
    列性の程度を決定する前記ステップは、全てのデータベ
    クトルに対して並列性の程度を決定するステップと、前
    記データベクトルモデルの不特定の通信帯域幅を前記デ
    ータフローモデルにおける固定数の通信バスへと簡約す
    るステップとを含んでいる方法。
  32. 【請求項32】 請求項30に記載の方法において、前
    記データフローモデルのアクター、エッジおよびトーク
    ンを決定する前記ステップは、前記第1のデータベクト
    ルモデルにおける一つまたは一群のデータベクトルをア
    クターとして定義するステップと、アクター境界を横切
    るデータ順位をキューのように動作するエッジとして定
    義するステップと、アクターの間でトークンを移送する
    ステップとを含み、システムのスケジュールを作成し、
    計算機環境においてシミュレーションを実行する方法。
  33. 【請求項33】 請求項29に記載の方法において、前
    記第2の詳細化ステップは、前記トークンを浮動小数点
    から固定小数点へと変換するステップを含んでいる方
    法。
  34. 【請求項34】 請求項29に記載の方法において、前
    記SFGモデルは、時間の規定された固定小数点SFG
    モデルである方法。
  35. 【請求項35】 請求項22ないし34のいずれかに記
    載の方法において、オブジェクト間の関係の前記第2集
    合を伴う前記第2のオブジェクト集合は、少なくとも部
    分的に、オブジェクト間の関係の前記第1集合を伴う前
    記第1のオブジェクト集合から導出される方法。
  36. 【請求項36】 請求項22ないし35のいずれかに記
    載の方法において、前記第2のオブジェクト集合に属す
    るオブジェクトは、新たなオブジェクト、前記第1のオ
    ブジェクト集合のオブジェクトと同じもの、および/ま
    たは前記第1のオブジェクト集合のオブジェクトから継
    承によって導出されるものであるか、または、それらの
    組合せである方法。
  37. 【請求項37】 請求項29に記載の方法において、前
    記SFGモデルの幾つかをインプリメント可能な記述が
    得られる有限状態機械記述と組み合わせるステップを更
    に有している方法。
  38. 【請求項38】 請求項37に記載の方法において、前
    記インプリメント可能な記述を合成可能コードへと変換
    するステップを更に有している方法。
  39. 【請求項39】 請求項38に記載の方法において、前
    記合成可能コードはVHDLコードである方法。
  40. 【請求項40】 システムをシミュレーションするため
    の方法であって、システムの記述がコンパイル可能なC
    ++コードへと変換される方法。
  41. 【請求項41】 請求項40に記載の方法において、前
    記記述はSFGデータ構造であり、前記コンパイル可能
    なC++コードはクロックサイクル準拠のシミュレーシ
    ョンを実行するために使用される方法。
  42. 【請求項42】 請求項40に記載の方法において、前
    記記述は、幾つかのSFGデータ構造をインプリメント
    可能な記述が得られる有限状態機械記述と組合せたもの
    を含み、前記インプリメント可能な記述はソフトウェア
    として前記システムをシミュレーションするのに適した
    コンパイル可能なC++コードである方法。
  43. 【請求項43】 請求項40に記載の方法において、前
    記シミュレーションは、一つ以上のSFGデータ構造を
    使用した期待値に基づくシミュレーションである、前記
    システムのクロックサイクル準拠のシミュレーションを
    含み、前記期待値に基づくシミュレーションは、 ・全てのトークンに対しトークンの年令の注釈を付ける
    ステップと、 ・全てのキューに対しキューの年令の注釈を付けるステ
    ップと、 ・トークンの加齢規則に従い、トークンを移送した全て
    のキューの伝達遅延だけ該トークンの年令を増やすステ
    ップと、 ・キューを駆動するアクターの反復時間だけキューの年
    令を増やすステップと、 ・トークンの年令がキューの年令より小さくないかどう
    かをシミュレーションにより調べるステップと を含んでいる方法。
  44. 【請求項44】 請求項1ないし21のいずれかに記載
    の設計装置で設計される、ハードウェア回路またはハー
    ドウェア回路のソフトウェアシミュレーション。
  45. 【請求項45】 請求項22ないし39のいずれかの方
    法で設計される、ハードウェア回路またはハードウェア
    回路のソフトウェアシミュレーション。
JP10106862A 1997-03-14 1998-03-13 デジタルシステムのインプリメント可能な記述を生成する設計環境および方法 Pending JPH113367A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US3907997P 1997-03-14 1997-03-14
US4112197P 1997-03-20 1997-03-20
US60/039079 1997-03-20
US60/041121 1997-03-20

Publications (1)

Publication Number Publication Date
JPH113367A true JPH113367A (ja) 1999-01-06

Family

ID=26715800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10106862A Pending JPH113367A (ja) 1997-03-14 1998-03-13 デジタルシステムのインプリメント可能な記述を生成する設計環境および方法

Country Status (2)

Country Link
EP (1) EP0867820A3 (ja)
JP (1) JPH113367A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4724216A (en) * 1984-09-11 1988-02-09 Nova Biomedical Corporation Method for measuring calcium
US4887489A (en) * 1987-04-09 1989-12-19 Maag Gear-Wheel & Machine, Co. Ltd. Bowl-mill gearing
US7624389B2 (en) 2004-03-25 2009-11-24 Kabushiki Kaisha Toshiba Design evaluation system and design evaluation method
JP2015111139A (ja) * 2008-01-30 2015-06-18 アルカテル−ルーセント ユーエスエー インコーポレーテッド システムオンチップのスキャンパスの部分を分離するための装置及び方法
JP2022522177A (ja) * 2019-02-27 2022-04-14 コミッサリア ア レネルジー アトミーク エ オ ゼネルジ ザルタナテイヴ データフローシステムを検証するための方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6152612A (en) * 1997-06-09 2000-11-28 Synopsys, Inc. System and method for system level and circuit level modeling and design simulation using C++
GB0001585D0 (en) * 2000-01-24 2000-03-15 Radioscape Ltd Method of designing,modelling or fabricating a communications baseband stack
GB0001577D0 (en) * 2000-01-24 2000-03-15 Radioscape Ltd Software for designing modelling or performing digital signal processing
WO2001095161A2 (en) * 2000-06-02 2001-12-13 Virtio Corporation Method and system for virtual prototyping
EP1301875A2 (en) * 2000-07-21 2003-04-16 Telecom Italia Lab S.p.A. Method and system for verifying modules destined for generating circuits
GB2374242B (en) 2001-04-07 2005-03-16 Univ Dundee Integrated circuit and related improvements
US8893080B2 (en) 2012-08-15 2014-11-18 Telefonaktiebolaget L M Ericsson (Publ) Parallelization of dataflow actors with local state
CN114519319B (zh) * 2021-12-30 2024-09-10 中国人民解放军国防科技大学 一种基于高层建模的混合发射队列设计实现方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163016A (en) * 1990-03-06 1992-11-10 At&T Bell Laboratories Analytical development and verification of control-intensive systems
US5493508A (en) * 1994-06-01 1996-02-20 Lsi Logic Corporation Specification and design of complex digital systems

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4724216A (en) * 1984-09-11 1988-02-09 Nova Biomedical Corporation Method for measuring calcium
US4887489A (en) * 1987-04-09 1989-12-19 Maag Gear-Wheel & Machine, Co. Ltd. Bowl-mill gearing
US7624389B2 (en) 2004-03-25 2009-11-24 Kabushiki Kaisha Toshiba Design evaluation system and design evaluation method
JP2015111139A (ja) * 2008-01-30 2015-06-18 アルカテル−ルーセント ユーエスエー インコーポレーテッド システムオンチップのスキャンパスの部分を分離するための装置及び方法
JP2022522177A (ja) * 2019-02-27 2022-04-14 コミッサリア ア レネルジー アトミーク エ オ ゼネルジ ザルタナテイヴ データフローシステムを検証するための方法
US12056507B2 (en) 2019-02-27 2024-08-06 Commissariat A L'energie Atomique Et Aux Energies Alternatives Method for validating a data flow system

Also Published As

Publication number Publication date
EP0867820A2 (en) 1998-09-30
EP0867820A3 (en) 2000-08-16

Similar Documents

Publication Publication Date Title
US6233540B1 (en) Design environment and a method for generating an implementable description of a digital system
US7006960B2 (en) Design apparatus and a method for generating an implementable description of a digital system
De Micheli et al. The Olympus synthesis system
JP3835754B2 (ja) 集積回路の設計方法及びそれによって設計された集積回路
Coussy et al. GAUT: A High-Level Synthesis Tool for DSP Applications: From C Algorithm to RTL Architecture
US20020162097A1 (en) Compiling method, synthesizing system and recording medium
US20050198606A1 (en) Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform
Hartley et al. Behavioral to structural translation in a bit-serial silicon compiler
Kambe et al. A c-based synthesis system, bach, and its application (invited talk)
JPH113367A (ja) デジタルシステムのインプリメント可能な記述を生成する設計環境および方法
Williamson et al. Synthesis of parallel hardware implementations from synchronous dataflow graph specifications
Pu et al. Sphinx: A Hybrid Boolean Processor-FPGA Hardware Emulation System
Jiang et al. UMOC: Unified Modular Ordering Constraints to Unify Cycle-and Register-Transfer-Level Modeling
Mamaghani et al. Optimised synthesis of asynchronous elastic dataflows by leveraging clocked eda
Jantsch et al. Models of computation in the design process
KU SYNTHESIS SYSTEM
Gajski System-level design methodology
Vossen Offloading Haskell functions onto an FPGA
Berry Esterel v7 for the Hardware Designer
Mak Design and performance analysis of data-independent stream processing systems
Mahani Making alive register transfer level and transaction level modeling in Ada
Van Leeuwen Implementation and automatic generation of asynchronous scheduled dataflow graph
Myllynen Latch-based RISC-V core with popcount instruction for CNN acceleration
Lloyd et al. Asynchronous microprocessors: From high level model to FPGA implementation
Lockhart Constructing Vertically Integrated Hardware Design Methodologies Using Embedded Domain-Specific Languages And Just-In-Time Optimization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070918

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080304