summaryrefslogtreecommitdiff
path: root/docs/src/explanations/functional-abstraction.md
diff options
context:
space:
mode:
authorMegan Wachs2021-03-18 16:47:58 -0700
committerGitHub2021-03-18 16:47:58 -0700
commitf1ad5b58e8a749d558758288d03ce75bf6b8ff9c (patch)
tree2150d6f41a55f81c9f4cf3b037b715cb75ea617f /docs/src/explanations/functional-abstraction.md
parent2a56c6540e914611ac12647e157aec4c5c595758 (diff)
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
Diffstat (limited to 'docs/src/explanations/functional-abstraction.md')
-rw-r--r--docs/src/explanations/functional-abstraction.md34
1 files changed, 34 insertions, 0 deletions
diff --git a/docs/src/explanations/functional-abstraction.md b/docs/src/explanations/functional-abstraction.md
new file mode 100644
index 00000000..4e3900b6
--- /dev/null
+++ b/docs/src/explanations/functional-abstraction.md
@@ -0,0 +1,34 @@
+---
+layout: docs
+title: "Functional Abstraction"
+section: "chisel3"
+---
+
+# Functional Abstraction
+
+We can define functions to factor out a repeated piece of logic that
+we later reuse multiple times in a design. For example, we can wrap
+up our earlier example of a simple combinational logic block as
+follows:
+
+```scala mdoc:invisible
+import chisel3._
+```
+
+```scala mdoc:silent
+def clb(a: UInt, b: UInt, c: UInt, d: UInt): UInt =
+ (a & b) | (~c & d)
+```
+
+where ```clb``` is the function which takes ```a```, ```b```,
+```c```, ```d``` as arguments and returns a wire to the output of a
+boolean circuit. The ```def``` keyword is part of Scala and
+introduces a function definition, with each argument followed by a colon then its type,
+and the function return type given after the colon following the
+argument list. The equals (```=})```sign separates the function argument list from the function
+definition.
+
+We can then use the block in another circuit as follows:
+```scala mdoc:silent
+val out = clb(a,b,c,d)
+```