帰らざるMOS回路(47) Digilent CMOD S7、HW+SWプロジェクトその2

Joseph Halfmoon

前回、MicroBlazeコアを搭載したHW設計の「バリデーション」までやってノーエラーでした。その余勢をかって今回はSWなどと目論んでいましたがいけません。SW側に「輸出」する最後の段になってエラー発覚。チュートリアル通りにやっているつもりなのに何がいけないの?FPGA素人の忘却力の年寄は大慌てなんであります。

※かえらざるMOS回路 投稿順 INDEX

※Digilent CMOD S7のマニュアルは以下のページにあります。

Cmod S7 Reference Manual

なお、CMOD S7搭載のFPGAは「多分、お求めやすい」XC7S25-1CSGA225Cです。

※実習には AMD社(Xilinx) Vivado 2023.2 を使用させていただいております。

参照しているチュートリアル

Digilent社の以下のチュートリアル文書を参照して実習しております。この文書は当方が使用しているCMOD S7ボードを含む各種のボードの「AND」とったところの解説です。各種ボードにより異なる「コマケーところ」があるので、そういうところは使用者が「よく考えて」補ってやらねばなりませぬ。今回トラブったところも、結局、前回ちょっと「怪しい」設定をしてしまっていた部分でした。

Using the Simulator Getting Started with Vivado and Vitis for Baremetal Software Projects

HDLラッパからイクスポート

IPを使ったブロック・デザインのバリデーション完了後、SW設計に移行する前にやらねばならないステップは以下です。

    1. HDLラッパ(HDLのソース)を生成
    2. プロジェクトの合成、インプリ、そしてビットストリーム生成
    3. プロジェクトのイクスポート(VivadoからVitis用)

チュートリアルに書かれている通りに実習しているのだから、「一撃で通り過ぎる」つもりでいたですが、お約束通りにトラブリました。途中までは順調だったのよ~。

    • Create an HDL Wrapper

このステップは、ブロック(IPの箱)で描かれた設計の上にHDLのソースコードを被せるプロセスのようです。みるとブロックの下にもHDLソースが出来ていたので、ブロックの上下にHDLソースを生成し、実際に論理合成できるようにするための準備作業みたいです。今回はVerilog使っているので、.v拡張子のファイルが生成されます。createHDLwrapper

オプション聞かれましたが、チュートリアルでは「auto-update 推奨」だったのでそちらを選択。お楽が一番。

ラッパジェネレーション後のプロジェクト階層の様子が以下に。オレンジアイコンのところがブロックデザイン部分で、その上下に緑のグリグリのVerilogソースが生成されてます。wrapperGenerated

一応、ソース内部を眺めてみると、ブロックデザイン部分をモジュールとして呼び出すようになってます。また入出力バッファなども結合してますが、なんかやたら多いんでないかい?

    • SynthesisとImplementation

何度か既にやっているSynthesisとImplementationを実施。特に問題なくSuccessfullyでできました。なお、チュートリアルにはこのプロセスに5分から60分くらいかかるかも知れないと書かれていたですが、当方では約2分ほどで完了。いい感じ。

    • Generate Bitstream

さて上記の「成功」を受けてビットストリームに落とそうとして挫折。こんな感じです。BitstreamGenerationFailed

上記のようにLogを見ろと言われているので見にいきます。Errorspng

Bitgenが走らんかったというのは、直接のエラー原因ですが、それはビットストリームが出来てないからです。要は上の2つが原因であろうと。しかしダラダラ書かれているエラーメッセージ読んでもFPGA素人にはサッパリっす。でもま、IOポートの問題であり、そして胸に手を当てて考えると前回その部分に「怪しい」処置を施しておった覚えがあるのであります。それに先ほどのラッパソースに使ってもいないIOポート多数が列挙されていたのも気になるし。。。

前回気になっていた入力ボタンの「手動設定部分」を確かめてみました。GPIOW

GPIO2ではなく、GPIOというIPで1ビットを選択したつもりなのですが、プロパティを確かめると32になってました。これはイケないということで変更。W1

また、前回、制約ファイルを手で修正した部分も気になっていたので、以下のように変更。xDcModified

上記を変更し、セーブした後、ブロックデザインのバリデーション、論理合成、インプリメンテーションとやりなおし、ビットストリーム生成、どうよ。BitstreamGenerationSuccessfullyCompleted

ビットストリーム、successfully completedと。これで「輸出」のステップに進めますな。

ラッパのVerilogソースを見てみると、最初やたら数が並んでいたIOセルらしきものが綺麗サッパリ消滅し、入力ボタン用の1個だけになってました。やっぱ、怪しいソースは通らんぞなもし。

なお、今回生成のデザイン、MicroBlazeコアを含むのですが、使用はLUT 1649個、BRAM8個だそうです。CMOD S7搭載のXC7S25-1CSGA225Cは、

    • LUT 23360個
    • BRAM 18Kb x 90個 + 36kb x 10個

ということみたいなので、まだまだ余裕?知らんけど。

    • Export

ビットストリームが出来てしまえば、Exportのプロセスは簡単でした。一応ステップを踏むと。ExportStep0

チュートリアルでは最初に選択あるのですが、当方使用のVivado 2023.2では、最初のウインドウでは選択なしだと。ExportStep1

今回は include bitstream を選択。

ファイルのパスを指定。ExportStep2

最後にFinishボタンを押せば、xsaなる拡張子のファイルが出来上がります。サイズ的には104kバイト。ExportStep3

ようやく、VivadoからVitisへ行けるみたい。

帰らざるMOS回路(46) Digilent CMOD S7、HW+SWプロジェクトその1 へ戻る

帰らざるMOS回路(48) Digilent CMOD S7、HW+SWプロジェクトその3 へ進む