https://mp.weixin.qq.com/s/gssjiiPW6zUzKwCFZdNduw
1. 使用Intellij IDEA創建Scala項目
Chisel項目,就是構建Scala項目。Intellij IDEA支持使用Maven等多種方式構建Scala項目:
這里選擇Maven和IDEA,都可以很方便的構建項目。尤其是使用IDEA構建項目,不需要額外的下載,直接編寫Scala代碼,即可完成編譯運行。
很遺憾的是,Chisel3的庫對sbt有依賴(比如依賴sbt生成的BuildInfo信息),無法使用其他構建方式。
創建一個使用sbt構建的Scala項目的步驟如下:
需要注意的是Chisel3的庫在Scala 2.12+版本上會出問題,所以這里我們選擇2.11的最后一個版本2.11.12.
點擊Finish之后,項目創建即完成,等待Intellij IDEA同步完成即可。(可能下載需要的庫,需要耐心等待)
2. sbt shell窗口
點擊下方的sbt shell按鈕,即可打開sbt窗口。通過這個窗口可以下sbt命令。
初次打開窗口,如同執行sbt命令,加載系統以及當前項目的設置,下載需要的庫之后,進入等待狀態。等待用戶執行構建命令。
可以通過左側的命令按鈕重啟和關閉sbt shell。
執行tasks,顯示可以執行的命令:
這里簡單介紹,其他可以自行搜索。
3. 添加chisel3庫依賴
打開build.sbt,添加如下行:
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.1.2"
如下:
之后,Intellij IDEA右下角會提示,是否引入修改:
引入修改的意思是檢查修改,應用修改后的配置。這次修改就是要下載需要的庫,即chisel3-3.1.2.jar
可以選擇Import Changes單次引入修改,也可以選擇Enable Auto-Import以后每次修改build.sbt都自動引入修改。選擇之后會自動下載所依賴的庫。
PS. 猜想:也可以不理會這兩個選項,直接在sbt shell中,執行update命令,或者重啟sbt shell,都可以引入修改並下載所需要的庫。但親試不可行,不明就里,這里不再深究。
4. 添加FullAdder.scala
從chisel-tutorial中拷貝FullAdder.scala到src/main/scala目錄下,
打開Structure窗口可以看到類結構:Class FullAdder,有5個Variable成員。
5. 測試Intellij IDEA直接構建
可以直接在FullAdder中添加一個Main object定義main函數,
點擊三角符號執行:
預期是能成功。但是我這邊執行出錯,
暫時不予理會。
6. 使用sbt shell構建
compile:
run:
成功了。
看來Intellij IDEA對sbt的整合,還有一些小問題。好在提供了sbt shell供使用。
此時再次使用三角執行符號直接執行,又能成功:
可能是因為sbt shell做了一個packaging的動作。
7. 使用Chisel3 Driver
Chisel3 Driver類提供了很多功能供使用,如轉換成firrtl, verilog等。
看下execute函數的簽名:
其中args是String數組,執行時的參數。dut的類型為函數:() => RawModule,即沒有參數,返回RawModule的函數。
這里我們直接把參數執行main函數時提供的參數,傳遞給execute函數。這樣可以直接改變執行時的參數。
通過sbt shell執行run --help
其中-X即--compiler參數默認為verilog,即生成Verilog代碼。如果選擇sverilog,則生成SystemVerilog代碼。
各項參數可以自行閱讀。
執行 --target-dir generated --compiler verilog:
可以看到,已經生成了Verilog代碼:
8. 附錄:代碼如下
(略)