[計算機硬體] Chisel 筆記/待更新
阿新 • • 發佈:2018-11-02
Chisel 筆記
Chisel本身具有面向物件的特性,基於Scala:一門多正規化的程式語言,一種類似java的程式語言,設計初衷是實現可伸縮的語言、並整合面向物件程式設計和函數語言程式設計的各種特性。簡言之,在Chisel的實現中,所有單元(電路、模組、埠等等)都是物件。
Note:關於 operand = 和 operand :=
- = 告訴chisel給物件分配一個值。
- := 表示的是Reassignment。比如某個物件被 operand = 分配了值,那麼在後續的“電路綜合/連線”過程中必須使用 :=
這可能很讓人困惑,因為綜合電路過程中,節點只有可能被連線一次,為什麼還有reassignment呢?(本人就百思不得其解)其實原因在於,在Verilog中,通常都是先宣告變數是wire型 or reg型 or others,在後續語句中才會通過assign xxx = xxx或者 xxx = xxx或 xxx <= xxx來賦值。那麼再看看Scala的變數語法:
- Scala變數是一種使用方便的佔位符,用於引用計算機記憶體地址,變數建立後會佔用一定的記憶體空間。
- 在 Scala 中,使用關鍵詞 "var" 宣告變數,使用關鍵詞 "val"
var myVar : String = "Foo" 和 val myVal : String = "Foo"
-
變數的型別在變數名之後等號之前宣告。定義變數的型別的語法格式如下:
var VariableName : DataType [= Initial Value] 或 val VariableName : DataType [= Initial Value]
變數宣告一定需要初始值,否則會報錯。
回到chisel中,由於在定義I/O時採用的Bundle裡就已經對一些物件賦予了初始值(as default),所以在後續操作中必定是reassignment。
補充:
Chisel | Generic form | Compile-time | Hardware / Run-time | Verilog |
= | var foo = [...] | Yes | [indirectly] | (aliasing operation, analogous to wire assignment in Verilog)
|
:= | foo := [...] | Yes | assign myWire = [...]; |
的的的的