From f1ad5b58e8a749d558758288d03ce75bf6b8ff9c Mon Sep 17 00:00:00 2001 From: Megan Wachs Date: Thu, 18 Mar 2021 16:47:58 -0700 Subject: Reorganize website docs (#1806) Updates to chisel3 documentation for website: * guard code examples with mdoc and fix errors encountered along the way * move some website content here vs splitting the content across two repos * Bring in the interval-types and loading memories content so that it will be visible from the website * remove all references to the wiki (deprecated) * Remove reference to Wiki from the README * fix tabbing and compile of chisel3-vs-chisel2 section * Appendix: faqs now guarded and compile * FAQs: move to resources section--- docs/src/wiki-deprecated/printing.md | 130 ----------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 docs/src/wiki-deprecated/printing.md (limited to 'docs/src/wiki-deprecated/printing.md') diff --git a/docs/src/wiki-deprecated/printing.md b/docs/src/wiki-deprecated/printing.md deleted file mode 100644 index 36dcfaae..00000000 --- a/docs/src/wiki-deprecated/printing.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: docs -title: "Printing" -section: "chisel3" ---- -Chisel provides the `printf` function for debugging purposes. It comes in two flavors: - -* [Scala-style](#scala-style) -* [C-style](#c-style) - -### Scala-style - -Chisel also supports printf in a style similar to [Scala's String Interpolation](http://docs.scala-lang.org/overviews/core/string-interpolation.html). Chisel provides a custom string interpolator `p` which can be used as follows: - -```scala -val myUInt = 33.U -printf(p"myUInt = $myUInt") // myUInt = 33 -``` - -Note that when concatenating `p"..."` strings, you need to start with a `p"..."` string: - -```scala -// Does not interpolate the second string -val myUInt = 33.U -printf("my normal string" + p"myUInt = $myUInt") -``` - -#### Simple formatting - -Other formats are available as follows: - -```scala -// Hexadecimal -printf(p"myUInt = 0x${Hexadecimal(myUInt)}") // myUInt = 0x21 -// Binary -printf(p"myUInt = ${Binary(myUInt)}") // myUInt = 100001 -// Character -printf(p"myUInt = ${Character(myUInt)}") // myUInt = ! -``` - -We recognize that the format specifiers are verbose, so we are working on a more concise syntax. - -#### Aggregate data-types - -Chisel provides default custom "pretty-printing" for Vecs and Bundles. The default printing of a Vec is similar to printing a Seq or List in Scala while printing a Bundle is similar to printing a Scala Map. - -```scala -val myVec = Vec(5.U, 10.U, 13.U) -printf(p"myVec = $myVec") // myVec = Vec(5, 10, 13) - -val myBundle = Wire(new Bundle { - val foo = UInt() - val bar = UInt() -}) -myBundle.foo := 3.U -myBundle.bar := 11.U -printf(p"myBundle = $myBundle") // myBundle = Bundle(a -> 3, b -> 11) -``` - -#### Custom Printing - -Chisel also provides the ability to specify _custom_ printing for user-defined Bundles. - -```scala -class Message extends Bundle { - val valid = Bool() - val addr = UInt(32.W) - val length = UInt(4.W) - val data = UInt(64.W) - override def toPrintable: Printable = { - val char = Mux(valid, 'v'.U, '-'.U) - p"Message:\n" + - p" valid : ${Character(char)}\n" + - p" addr : 0x${Hexadecimal(addr)}\n" + - p" length : $length\n" + - p" data : 0x${Hexadecimal(data)}\n" - } -} - -val myMessage = Wire(new Message) -myMessage.valid := true.B -myMessage.addr := "h1234".U -myMessage.length := 10.U -myMessage.data := "hdeadbeef".U - -printf(p"$myMessage") -``` - -Which prints the following: - -``` -Message: - valid : v - addr : 0x00001234 - length : 10 - data : 0x00000000deadbeef -``` - -Notice the use of `+` between `p` interpolated "strings". The results of `p` interpolation can be concatenated by using the `+` operator. For more information, please see the documentation - -### C-Style - -Chisel provides `printf` in a similar style to its C namesake. It accepts a double-quoted format string and a variable number of arguments which will then be printed on rising clock edges. Chisel supports the following format specifiers: - -| Format Specifier | Meaning | -| :-----: | :-----: | -| `%d` | decimal number | -| `%x` | hexadecimal number | -| `%b` | binary number | -| `%c` | 8-bit ASCII character | -| `%%` | literal percent | - -It also supports a small set of escape characters: - -| Escape Character | Meaning | -| :-----: | :-----: | -| `\n` | newline | -| `\t` | tab | -| `\"` | literal double quote | -| `\'` | literal single quote | -| `\\` | literal backslash | - -Note that single quotes do not require escaping, but are legal to escape. - -Thus printf can be used in a way very similar to how it is used in C: - -```scala -val myUInt = 32.U -printf("myUInt = %d", myUInt) // myUInt = 32 -``` -- cgit v1.2.3