デバイスドライバーとそれが制御するFPGAの間で登録とビットのフィールド定義を共有する方法

StackOverflow https://stackoverflow.com/questions/1585751

質問

VHDLからのビット定義だけでなく、レジスタオフセットに適切な#definesを使用してCヘッダーファイルを生成するのを支援するために利用できる優れた既存のソフトウェアツールはありますか?そのようなツールが存在する場合、VHDLにどのような制限があり、エクスポートすべきものはどのように指定されるべきですか?

これまでのところ、私はこれらのツールを見つけましたが、それらは私が探しているものではありません:

これらのツールに基づいて、適切なワークフローがVHDL(おそらくコメントに追加のタグがある)からCに直接移動しようとするのではなく、CとVHDLの両方を生成することであるかどうかにも興味があります。

役に立ちましたか?

解決

それがあなたを悩ませていたが、あなたが正しい方向にあなたを送っているのはその最後だと思います。そして、私はあなたがあなたのワークフローを少し変えることを検討する必要があるという点でRedglyphに同意します。

コントロールレジスタ情報の「マスタードキュメント」を1つ持っていることを考え、これからすべてを自動的に生成しました - RTL、テストベンチコード、ドライバーソフトウェアヘッダー、ドキュメント?

私は、制御情報が1つのマスタースプレッドシートに保持されているプロジェクトと、これから生成されたすべてのプロジェクトに取り組みました。チップのファミリーでは、スプレッドシートからエクスポートされたCSVファイルからこのものを生成するために、いくつかのPythonスクリプトを書きました。別のプロジェクトでは、スプレッドシートにはマクロが含まれており、必要なRTLファイルなどを生成しました。

社内スクリプトを書くことは、それらを完全に制御し、それらがどのように詳細に機能するかを知っているので、すべて素晴らしいと良いです。ただし、これらのスクリプトをサポートし、新しいことをするためにそれらを更新するのに時間を費やさなければならないことを忘れないでください。そして、これらのスクリプトを書いた人が新しい仕事を得ることを決めた場合、どうなるかを考えてください - 他の誰かがそれらを変更するためにスクリプトに十分に精通しているでしょうか?上記の理由で、サードパーティのツールで購入することを検討しています。

また、ドキュメントであるプロジェクトに取り組んでおり、ヘッダーファイルはRTL -ITからバックポートされました。それは悪夢でした。通常、ドキュメントは設計の後ろに遅れをとっており、多くの場合、フィールドを制御することは「行方不明になります」。私はむしろそのようなプロジェクトに再び関わっていません;)

他のヒント

あなたは見ることができます ドキシゲン, 、VHDL言語をサポートし、中間ファイルを使用することにより、情報を多かれ少なかれ簡単に抽出できる場合があります。副産物は、RTLコードドキュメントになります。

別のオプションは、YACC/LEX定義からCパーサーを構築することです。いくつかのものを見つけることができます ここ. 。そこから、VHDLを解析し、情報を抽出し(レジスタの定義を取得する方法を決定する必要があります)、Cヘッダーファイルを作成できます。おそらく非常に複雑です。

しかし、もし私があなただったら、私は本当に異なって進行し、レジスタオフセットとフィールドを別のファイル(XMLで)で定義し、CヘッダーとVHDLパッケージの両方を生成する小さなスクリプトを書きます。多くの時間と、流れの観点からより堅牢になります。

それはまた、ドキュメントの作成にも役立ちます。

もちろん、シミュレーション/合成前にデータベースを準備するスクリプトでプロセスを自動化できます。

私はマーティに同意します。この種のことをするために社内のスクリプトを作成することは楽しいですが、長期的には問題がある可能性があります。

ドキュメントでレジスタを指定し、Cヘッダー、VHDL、Verilog、OVM、VMM、IP-XACT、HTML、XML、SystemRDL、PDFなどを生成できるドキュメントエディターのプラグインとして実装されたIdesignSpecというツールを作成しました。 。 それから。

TCL APIを使用してカスタム出力を生成できます。 XML、IP-XACT、SystemRDLなど、さまざまな入力形式でも読み取ることができます。

このアプローチの利点は、1つの仕様があり、すべてが自動的に同期し続けることです。

現在サポートされている編集者は、MS Word 2003&2007、OpenOffice、Staroffice、Framemakerです。

詳細を確認できます http://www.agnisys.com

利用可能なソリューションの完全なリストは次のとおりです。

会社名:商用ツール(ソリューション提供)

  1. Agnisys:idesignSpec(Word/Excel/OpenOfficeのプラグイン、およびLinuxとWindowsのコマンドラインインターフェイス)
  2. Atrenta:1Team-Genesis-Registers(デスクトップアプリケーション) - > Synopsysが取得。ツールは利用できません。
  3. Duolog:BitWise(Eclipseベースのアプリケーション) - > ARMによって取得されて、ツールは引き続き利用可能です。
  4. PDTI:Spectareg(Webベースのアプリケーション) - >ツールはもう利用できません。
  5. セミフォア:csrcompiler(コマンドラインインターフェイス)

無料/OpenSourceツール

  1. Veripool:vregs
  2. Paradigmworks:spec2reg

設計グループは、SystemRDLを使用して、プログラム可能なシステムオンチップのレジスタ定義をキャプチャします。さまざまなターゲットのカスタマイズされたスクリプトを備えたDenali Blueprintを使用します - レジスタマップ、PDFドキュメント、検証、Cヘッダーファイルなどを生成します。

RTLソースをまだ生成するために使用していません。

http://www.spiritconsortium.org/releases/systemrdl
http://www.google.com/search?q=systemrdl

答えは少し遅れているかもしれませんが、無料のNetPPライブラリといくつかの変更されたXSLスタイルシートを使用して、1つのXMLソースからドキュメント、VHDL、Cソースを生成します。また、VHDLとCライブラリがデータを交換して「仮想FPGA」というネットワークを作成できるVHDLシミュレーター拡張機能もあります。それはghdlexと呼ばれます、私はそれがどこにあるかを正確に覚えていませんが、あなたはそれをどこかに見つけるでしょう http://section5.ch NetPPダウンロードエリアの下のWebサイト。使用するのは少し難しいですが、まあ、それは無料です。

共有情報の実際のソースは元のデザインですので、簡単に処理できるフォームで元のデザインを入力します。ここにいくつかのアイデアがあります...


  1. yamlを使用します。 (または、ため息、XML、またはデザインの非常にシンプルなDSLさえも)元のデータを定義します。スクリプトを書き込み、VHDLとCとしてダンプします。すべてのスクリプト言語はYAMLをサポートしており、シェルツールでも解析されるように設計されています。単純化されたVHDLまたはCを使用して、単純なテキスト変換を介して対応するCまたはVHDLへのスクリプトを作成することもできます。

  2. すべてのプレプロセッサですべてを行います. 。マクロのセットを書くことができます 電話 レジスタレイアウトを指定します。その後、 #if またはおそらく2つの別々 .h 定義マクロの2つの異なるバージョンを定義するファイル。1つはVHDLに拡張され、もう1つは同じ定義をCに拡張します。

Spectareg レジスタを1つの場所で指定し、異なる環境に複数の出力を作成できます(例:VHDL、C、Verilog)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top