2016-11-30 83 views

回答

1

從Sodor README(https://github.com/ucb-bar/riscv-sodor):

我如何生成的Verilog自己?

您可以通過修改emulator/common/Makefile.include中的Makefile來生成Verilog代碼。在CHISEL_ARGS變量中,將「--backend c」更改爲「--backend v」。這會將核心的Top.v verilog文件及其臨時內存(對應於名爲「Top」的鑿子模塊)轉儲到CHISEL_ARGS中「--targetDir」指定的位置。

一旦你有了Top.v模塊,你將不得不編寫你自己的testharness和glue代碼來與Top.v交談。這裏的主要困難是您需要通過HTIF鏈接(「主機 - 目標接口」)將riscv-fesvr鏈接到Sodor內核。這允許fesvr將二進制文件加載到Sodor內核的暫存器內存中,使內核脫離重置,並在運行時處理任何系統調用,錯誤條件或測試成功/結束條件時與內核通信。

這基本上涉及將模擬器/ */emulator.cpp移植到Verilog。我建議編寫一個與現有C++代碼(emulator/common/htif_emulator.cc等)接口的Verilog測試程序。 emulator/common/htif_main.cc顯示了一個使用Synopsys的DirectC在Verilog測試工具和現有C++代碼之間進行連接的示例存根。