[計算機硬件] Chisel 筆記/待更新

Chisel 筆記java

 

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的變量語法:函數式編程

  1. Scala變量是一種使用方便的佔位符,用於引用計算機內存地址,變量建立後會佔用必定的內存空間。
  2. 在 Scala 中,使用關鍵詞 "var" 聲明變量,使用關鍵詞 "val" 聲明常量。如 
    var myVar : String = "Foo" val myVal : String = "Foo"
  3. 變量的類型在變量名以後等號以前聲明。定義變量的類型的語法格式以下:函數

    var VariableName : DataType [= Initial Value]  val VariableName : DataType [= Initial Value]

    變量聲明必定須要初始值,不然會報錯。spa

  回到chisel中,因爲在定義I/O時採用的Bundle裏就已經對一些對象賦予了初始值(as default),因此在後續操做中一定是reassignment。Puzzle solved !設計

補充:orm

Chisel Generic form Compile-time Hardware / Run-time Verilog
= var foo = [...] Yes [indirectly]

(aliasing operation, analogous to wire assignment in Verilog)  對象

wire foo = [...];內存

:= foo := [...]   Yes assign myWire = [...];

 

waiting

相關文章
相關標籤/搜索