[Weekly Review] 2020/03/23-29
2020/03/23-29
This week, I finished the implementation and test of CSCSwitcher, also, reread the Fuzzer.scala, and mimic it to add TileLink into my project. And I have finished the framework of the top lazy module.
Next week, I plan to finish the test and correct the implementation of Cluster Group, meanwhile finishing the middle-term report. And I will try to finish the test of Memory control module and correct the implementation logic of it.
Scala && Chisel Syntax
Intersection, Union and Complement
Sample Data
scala> val low = 1 to 5 toSet
low: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)
scala> val medium = (3 to 7).toSet
medium: scala.collection.immutable.Set[Int] = Set(5, 6, 7, 3, 4)
Intersection
scala> val i = low.intersect(medium)
i: scala.collection.immutable.Set[Int] = Set(5, 3, 4)
Union
scala> val uniq = low.union(medium)
uniq: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 7, 3, 4)
Complement
scala> val diff = low.diff(medium)
diff: scala.collection.immutable.Set[Int] = Set(1, 2)
scala> val diff = medium.diff(low)
diff: scala.collection.immutable.Set[Int] = Set(6, 7)
ScalaDoc Tags
Scaladoc comments go before the items they pertain to in a special comment block that starts with a /** and ends with a */.
Some common tags
| Tag | Description | Number allowed |
|---|---|---|
@author |
The author of the class. | Multiple tags are allowed. |
@constructor |
Documentation you want to provide for the constructor. | One (does not currently work on auxiliary constructors) |
@example |
Provide an example of how to use a method or constructor. | Multiple |
@note |
Document pre- and post-conditions, and other requirements. | Multiple |
@param |
Document a method or constructor parameter. | One per parameter |
@return |
Document the return value of a method. | One |
@see |
Describe other sources of related information. | Multiple |
@since |
Used to indicate that a member has been available since a certain version release. | One |
@todo |
Document “to do” items for a method or class. | Multiple |
@throws |
Document an exception type that can be thrown by a method or constructor. | Multiple |
@version |
The version of a class. | One |
Character formatting tags
| Format | Tag example |
|---|---|
| Bold | '''foo''' |
| Italic | ''foo'' |
| Monospace (fixed-width) | \foo`` |
| Subscript | ,,foo,, |
| Superscript | ^foo^ |
| Underline | __foo__ |
Link:
| Link Type | Tag example |
|---|---|
| Link to a Scala type | [[scala.collection.immutable.List]] |
| Link to an external web page | [[http://alvinalexander.com My website]] |
Paragraph formatting tags
| Format | Tag example |
|---|---|
| Headings | =heading1= ==heading2== ===heading3=== |
| New paragraph | A blank line starts a new paragraph |
| Source code block | // all on one line {{{ if (foo) bar else baz }}} // multiple lines {{{ val p = Person("Al", 42) p.name p.age }}} |
Print Log Info with Color
println(Console.RED + s"[Error] there is no difference between reqList and respList" + Console.RESET)
RED_B means the background color. Remember to reset the console every time you use it.
It has the following colors:
- BLACK
- BLUE
- CYAN
- GREEN
- MAGENTA
- RED
- WHITE
- YELLOW
And can also use UNDERLINED, BOLD to give the log info some styles.
See AIP document for more details.
The width of UInt in RegInit
In my design, I forgot to assign the width of UInt in RegInit, so in the example:
private val vectorNumCounter = RegInit(0.U)
It only has one bit, so it can only count for zero and one.
private val vectorNumCounter = RegInit(0.U(lgVectorNum.W))