Chisel3-Intellij IDEA中使用sbt構建Chisel項目


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. 附錄:代碼如下
(略)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM