C ++やpythonと同じように、VHDL用のオープンソースライブラリはありますか?


11

C ++またはpythonの問題に近づいているとき、コードを大幅に持ち上げる多くのライブラリーが存在します。C ++ではGNU GSLBOOST、またはFFTW、PythonではNumPyまたはSciPyについて考えています。多くの点で、これらのリソースが存在するという事実は、これらのそれぞれの言語でのコーディングを価値のあるものにします。

IEEE標準ライブラリーは、データ型(C標準ライブラリーのようなもの)などのごく基本的なものだけをカバーしているようです。

VHDLでは、オープンソースライブラリを使用するのではなく、問題を解決する「IPコア」を購入または検索できるようです。Pythonでは、シリアルデバイスと通信する場合、import serial基本的にはこれで完了です。VHDLでは、シリアルプロトコルを一から作成するのに悩まされるか、そのような作品を作成した人が見つかるまで、さまざまなリポジトリをググググ回らなければなりませんでした。次に、単に何かを含めてそれを呼び出すのではなく、コードの一部をプロジェクトにパッチします。同様に、FFTを実行したい場合、Googleを介してVHDLでFFTの例を見つけることができますが、FFTWのような単純なものはありません。

プロジェクトにインポートできる包括的なオープンソースライブラリはありますか?なぜ誰もが同じものの多くのために独自のコードをロールしているように見えるのですか?


2
opencores.orgを検索しましたか?
MarkU、2015年

3
VHDL検証ライブラリについては、osvvm.orgを参照してください
Jim Lewis

Opencoresでは、さまざまなソースからライブラリを購入することもできます。ほとんどが十分に文書化されていないため、opencoreのほとんどのコアである程度の時間を費やすことになります。
電圧スパイク

回答:


14

私は「The PoC Library」の開発者および保守者です。私たちは、パッケージ(新しいタイプと関数のコレクション)とモジュールで構成されるこのようなライブラリを提供しようとしています。これには、共通のFIFO、演算、クロスクロックコンポーネント、低速I / Oコンポーネント、およびイーサネット/ IP / UDPスタック(次のリリース)が付属しています。

@crgraceで説明したように、モジュールの設計は非常に複雑です。

  • 多くのプラットフォームで動作します
  • ほとんどのベンダーツールチェーンをサポート
  • オーバーヘッドがない/少ない

私たちのライブラリには、ベンダー、デバイス、さらにはデバイスサブファミリーを区別して適切なコードまたは最適化された実装を選択するための内部構成メカニズム(PoC.config)があります。また、ある時点で合成コードとシミュレーションコードを区別します。

たとえばPoC.fifo_cc_got、FIFOを制御するための「共通クロック」(cc)インターフェイスとput / got信号を備えたFIFOです。fifoは、幅、深さ、塗りつぶし状態ビット、および実装タイプで構成可能です。LUTベースのRAMまたはオンチップRAM(ocram)の実装タイプを選択できます。このfifoがアルテラのocramオプションで合成される場合、altsyncramを使用します。ザイリンクスを選択した場合、汎用のBlockRAM記述を使用し、明示的なキャリーチェーンのインスタンス化によってポインター演算を実装します(ザイリンクスXSTは最適なソリューションを見つけられないため、手動で行います)。

「依存クロック」(dc)と独立クロック(ic)インターフェースを持つ他の2つのfifoタイプがあります。したがって、通常のfifoからクロスクロックfifo(PoC.fifo_ic_got)に切り替える必要がある場合は、エンティティ名を変更し、クロックを追加して、2番目のクロックドメインにリセットします。これですべてです。

これは、複数のプラットフォームで動作し、さまざまなツール(Spartan-> Virtex、Cyclone-> Stratix; ISE、Vivado、Quartus)でコンパイルできる共通モジュールを作成することが可能であることを証明しています。

PoC以外にも、他のオープンソースライブラリがあります。


GitHub の "Discover Free and Open Source Silicon"(FOSSi)プロジェクトは、主に、またはその他の重要なハードウェア記述言語()を使用するすべてのGitHubプロジェクトの参照可能なデータベースを提供します。

以下も参照してください。


+1は、あなたが行ったことと他の人が行ったことを示します。良い長いリスト。
ミスターミステール、2016

3

あなたが説明するようなオープンソースライブラリは、VHDLやVerilogにとっては、汎用プログラミング言語の場合ほど有用ではありません。これは、特定の関数をどのように実装するかは、実行しようとしていることに応じて非常に多くなるためです。FPGAに適したコードはおそらくASICにはそれほど良くなく、逆もまた同様です。

また、ハードウェアについて説明しているため、FFTを実行する関数には、ワード幅、クロック、リセット戦略などの詳細が必要であり、手を縛ってデザイン全体を制約します。関数を非常に柔軟にすると、莫大なオーバーヘッドが発生します。

最後に、たとえばCに多数のライブラリを含める場合は、実行可能ファイルのサイズを確認します。そこには膨大な量の膨張があります。これは、ソフトウェア開発(ほとんどの場合)では重要ではありませんが、FPGA、特にASIC開発では重要です。不要なオーバーヘッドを合成するのは意味がありません。

つまり、そのようなライブラリはなく、現在のアプローチは健全です。


代替(IP)コアジェネレーターは、ベンダーロックインおよび結果として生じる膨張のScyllaおよびChabydrisリスクも提供します。FPGAとASICの容量は、膨張をサポートするのに十分な大きさに成長しており、膨張と標準化(AMBA AXI4など)により、問題はコストとテストになりました。市場全体と、すでに業界全体で行われている「不要なオーバーヘッド」とのトレードオフ。ハードウェア設計の代わりにビルディングブロックを使用するシステム設計。後者はVHDLの基本的な設計です。
user8352

3番目のパラグラフは、コンパイラーと合成ツールがどのように機能するかをまったく知らない-ツールは、不要なものと使用されなかった結果を破棄する必要があります。特に動的にリンクされている場合、ライブラリ抽象化のオーバーヘッドである変数とメモリ割り当て。
Chris Stratton、

2

VHDLとVerilogは記述言語であり、ハードウェアブロックを記述します。C ++のシリアルドライバーは、VHDL / VerilogのシリアルIPに変換される場合があります。

opencores.orgは、これまでで最大のオープンソースデータベースです。

(Githubを介した)検索、ダウンロード、コード参照のプロセスを容易にするために、この最新のインターフェースを使用できます。

http://freerangefactory.org/cores.html

たとえば、シリアルを検索する場合は、次のようになります。

http://freerangefactory.org/cores/communication_controller/serial_uart_2/index.html

GitHubのコードに直接ジャンプします。そこで、シリアルモジュールを非常に簡単にインスタンス化し、それに独自の回路を接続して、データの送受信を開始できることがわかります。これは、C ++のシリアルライブラリと同じくらい簡単です。

これがお役に立てば幸いです。


0

(@MarkUが言及したように)この種のことのために私が最初にアクセスするサイトは、opencores.orgです。

たとえば、BSDライセンスの下でリリースされた、VHDLで記述されたパラメーター化されたFFTエンジンがあります。ステータスは「ベータ版」です。


それはOPが求めるものではありません。彼または彼女は、opencores.orgを見ることを知っています。パラメーター化されたFFTエンジンは、Pythonで標準の数学ライブラリをインポートして使用することとはかけ離れています。オーバーヘッドがあるため、ハードウェアには「ミドルウェア」などはありません。
crgrace 2015年

0

検証には、オープンソースVHDL検証方法論(OSVVM)があります。
OSVVMは、機能カバレッジ、制約付きランダム、およびインテリジェントカバレッジランダム化(インテリジェントテストベンチ手法)の実装を簡素化する、包括的な高度なVHDL検証手法です。また、共有トランスクリプトファイル、エラー報告、ログ(条件付き印刷)、メモリモデリングの実装も容易になります。

OSVVMのWebサイトとブログはhttp://osvvm.orgにあります。パッケージは、https//github.com/JimLewis/OSVVMの githubでも入手でき ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.