HomepageMIPS-R3000例によってOpencoresから頂いてきます。筆者が追加修正したものをここに置いておきます。REV1.0.1で行っています。・Cコンパイル作者が添付しているGCCを使いました。以下は筆者環境でのバッチファイルです。Cygwin環境下でコンパイルしました。これが、最終的なcode.txt(メモリイメージ)を出力してくれます。今回は、トランスレートされたVerilog上で修正を行いますのでVHDLソース修正はありません。・トランスレート(VHDL->Verilogに変換します。)translated.vが生成されます。・Verilogソース追加修正Cソースプログラムが収まりきらないのでRAM領域の宣言を変更します。例によってデバッガを埋め込みます。32bitx32bit乗算器ソースに明らかなバグがあったので、安直な修正を施しました。ソースのデバッグには、既出のデバッガの他、CPUシミュレータが有効です。今回は、PCSPIMを使いました。その他、CLOCK周期変更等を行いました。LoadVerilogします。Test時間は、1021580-138640=約880μsとなり最速です。New)その後、更新されているようなので、再度ダウンロード・トランスレートを行い、前回のバグがフィックスされていることを確認しました。RTLシミュレーションでは、通っても論理合成するとなるとまた、手修正が必要になります。CYCLONE用に記述を手修正しました。正味1日の作業でした。RTLシミュレーションがVeritak上で通ってしまえば、後は、そのシミュレーションをリファレンスにしてQuartasが色々言ってくる文句に対処していけばいいのです。筆者は、RTLソースの中身を殆ど理解していませんが、変更の度に、RTLシミュレーションをかけて一致することを確認していけばいいので機械的な作業でOKでした。1万行近いソースを手作業で、変換していたら、Editだけで、2週間、デバッグ2週間というところでしょう。その意味で、トランスレータ+Veritakは、意外によいツールかもしれません。(??)Qaurtasの合成ツールについてVerilog2001の構文は、文句を言わないのですが、合成自体は、殆ど1995しか対応できていないようです。ifは、構文エラーにならないが、FalseでもすべてTrueで評価されてしまう模様.従い、Falseのgenerateは、コメントアウトの処理が必要。コンパイルエラーが止められなかったので、Wizardで作り直しした。=>無視されず、たまたま無視されても問題ない所だったので記述はそのままトランスレータによる修正箇所モジュールパラメータ渡しのところの順序があっていない。=>修正Initialによる初期化=>弊害のあるところのみ削除修正。プログラムオブジェクトコード)を設定するツールが作者よりbintohex.cとして提供されていますが、うまく動かなかったので、convert.c上に4つの8ビットRAMの初期値をインテルHEXファイル(code0.hex,code1.hex、code2.hex、code3.hex)で出力するツールを作成しました。これでCYCLONEのRAMを初期化します。合成結果は以下の通りです。記述を最適化したら、50MHzは超えると思います。改善の余地があります。ポストレイアウト遅延ゲートシミュレーションログ筆者の低Spec.マシンでは、(Athron1.2GHz、1GBメモリDIMM)シミュレーションに仮想メモリを使いながら、8時間30分もかかってしまいました。夜仕事を終える前に仕掛けておくとちょうどいい感じです。Alteraのメモリを多く積んだゲートシミュレーションではとにかくメモリを食います。(今回は、32KBです。これでRTLと合成結果の一致を検証することができました。1242961-168600で当然のことながら、Clock数としては同じになります。パッケージ筆者が作成した、ソースとツールをここにおいておきます。NOTICEは必ずお読みになり同意した上でお願いします。code1.hex,code2.hex,code3.hexを吐くように筆者が改造したもの・Cコンパイル作者が添付しているGCCを使いました。以下は筆者環境でのバッチファイルです。convert_tak1.cをCygwin環境下でコンパイルしました。F:\vhdl\mlite\old_work\mlite\vhdl\*.*パッケージのダウンロード。