Vengineerの妄想

人生を妄想しています。

Veriloggenをやってみた => ModelSimにも対応したよ



chromebook買いましたの環境は、ubuntu 14.04です。

virtualenvが入っていなかったので、
    % sudo apt-get install python-virtualenv

にてインストールする必要がありました。

シミュレータは、lib.simulator.Simulatorの第二引数で設定すれば変更できるようですが、残念ながら、iverilogのみのようです。

もうちょっと追ってみたところ、
    lib/python3.4/site-packages/veriloggen/lib/simulator.py
のrun関数を他のシミュレータに対応すればいいのですね!

iveriliogに対しては、
    def _run_verilog(self, display=False, outputfile='a.out', include=None, define=None):
が実行されますね。

この中で、includeとdefineのiverilogの引数に追加し、テンポラリファイルにVerilog HDLコードを吐き出し、そのVerilog HDLをiverilogでコンパイルし、outputfileで指定した"a.out"として実行ファイルを生成します。

その後、この実行ファイル(a.out)を実行しているようです。

同じことを、他のシミュレータ用にやれば、vcsやmodelsimでもできそうですね。

追記)(2015.11.08:11:20)
ということで、ModelSim ASEでもシミュレーションできるようにしてみました。

    options = {'sim': "modelsim"} # {'sim': "vsim"}
    sim = lib.simulation.Simulator(test, **options)
のように、第二引数に使用するシミュレータをして、modelsim あるいは vsim を指定できるようにしました。

また、テストベンチのトップ階層で
    m = Module('top')
のように'test'以外にも対応できるように
    options = {'sim': "modelsim", 'top': 'top'}
のように、'top':で指定できるようにしました。

追記)(2015.11.08:11.56)
veriloggenのgithubのコードに反映してもらいました。