4.1.5 MIPS R3000

これについては、オープンコアで論理合成、遅延シミュレーションを行っているのでそちらをご参照ください。

ここでは、遅延シミュレーションプロジェクトの一般的な注意点について説明します。

遅延シミュレーション
プロジェクト規模が大きくなってくるとコンパイル時間とシミュレーション時間が大きくなります。(Veritakのコード生成とネットリストの最適化が未だ甘いこともありますが、Alteraのプリミィティブライブラリが巨大すぎるのが主な原因です。あまり巨大すぎて、1.10A以前では、全く歯が立ちませんでした。FPGAなので、通常のASICとは違い、1ゲートのロジックを作るのに1ゲートではFPGAになりません、というところは分かるのですが、、)
規模の大きなプロジェクトでは波形のWaveformView上でのSaveはできないと思った方がよろしいと思います。データ量が多すぎて、圧縮をかけていてもすぐDiskが一杯になります。Saveが必要なDataは、Verilog上の構文、$display、$fdisplay、やVCDで選択的に保存することになります。



プロジェクト設定
遅延シミュレーションでは、Debug Mode Normal Save All Sim Dataをオフにしてください。
規模が小さいうちはDefaultでも問題ないですが規模が大きくなる効いてきます。本プロジェクトのように巨大なプロジェクトでは、うっかりSave All Dataをオンのままにしておくと、走りだしたと思ったらすぐに、Disk Max設定(この例では400MB)になって止まります。遅延シミュレーションはそれだけ、大量のデータが発生するということなのです。



コンパイルモード
Altera SDFを指定してください。これも、小さい規模ならDefaultのままでOKですが、規模が大きくなってくると効いてきます。しかし、逆は注意してください。SDFファイルがないのに(遅延シミュレーションでないのに)、SDF モードをチェックするとコンパイラがクラッシュすることがあります。
SDFモードは、FPGAに特有なパラメータ違いのインスタンスが大量に生成されるという性質を
利用して、メモリ消費量を削減している特殊モードになっています。

ノード解析
合成したソースをご覧になれば分かるとおり、よほど簡単なロジックでない限り追えるものではありませんし、RTL上の名前の対応も一意的になっていません。 
VeritakのScope Treeでも合成対象のTOP階層は表示されますが、それ以下のScopeは、表示されない仕様になっています。


Setup、Hold エラー
時刻0付近で発生するSetup Holdは無視してください。シミュレータの過渡状態で発生するものです。
本プロジェクトでも発生していますが、2380ps以降は発生していません。