人気ブログランキング | 話題のタグを見る

雑多な趣味の記録帳

tom01h.exblog.jp

V-scale

V-scale を落としてきてみた。RISC-V のマイコン級インプリの Z-scale を Verilog で書いたものです。Z-scale は見てないし、自動生成なのか、手で最適化したのかも知りません。とにかく、実行してみた。VCS と Verilator の実行環境が入っている。もちろん VCS なんて持っていないので Verilator で試してみると、大量の .vcd ファイルが出た。別の PC に gtkwave が入っているので見ることはできるけど、これ、波形確認しか手はないのかな?最近は ModelSim の波形 Viewer に慣れているので ModelSim でも流れるようにしてみたんだけど、イベントループでも起きてるの?
# ** Error (suppressible): (vsim-3601) Iteration limit 5000 reached at time 255 ps.
入力は .hex ファイルしかない。tests から作ったようにも見えるけど、アドレスが結構違う。どこで問題が起きているのかさっぱりわからん。
仕方ないので、Verilator の波形と比べてみると、マシンモードからユーザモードに移る手前で落ちているように見えます。これ、まじめに追うかどうか、悩みどころだなぁ。

[追記
csrw mepc で mepc をセット
csrr で何かをリード (待ち合わせかなにかと思う)
eret でユーザモードに移行しつつ mepc にジャンプ (eret は古いらしい 今は mret であるべき)

の命令列の scrr で止まっているみたい。
なので、この命令を無害な命令に書き換えてみたら最後の方まで進んだ。
でも、最後にマシンモードに戻ってから tohost 番地への書き込みあたりでやっぱりイベントループの模様。]
[追記2 とりあえず illegal_csr_access をぶった切ってみたら最後まで行きました。]

by tom01h | 2016-11-03 17:06