aboutsummaryrefslogtreecommitdiffstats
path: root/manual/CHAPTER_Overview.tex
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2019-06-19 05:22:40 +0000
committerwhitequark <whitequark@whitequark.org>2019-06-19 05:22:40 +0000
commitaddf01d45dd795b4fe711012facbe43dd7c2eae7 (patch)
treeffb26ba622ba97a52865bdb47002663a23d88df2 /manual/CHAPTER_Overview.tex
parentdf6576edc83817b692d2096e806bd822f3fda430 (diff)
downloadyosys-addf01d45dd795b4fe711012facbe43dd7c2eae7.tar.gz
yosys-addf01d45dd795b4fe711012facbe43dd7c2eae7.tar.bz2
yosys-addf01d45dd795b4fe711012facbe43dd7c2eae7.zip
Explain exact semantics of switch and case rules in the manual.
Diffstat (limited to 'manual/CHAPTER_Overview.tex')
-rw-r--r--manual/CHAPTER_Overview.tex12
1 files changed, 12 insertions, 0 deletions
diff --git a/manual/CHAPTER_Overview.tex b/manual/CHAPTER_Overview.tex
index 2feb0f1cb..1a25c477f 100644
--- a/manual/CHAPTER_Overview.tex
+++ b/manual/CHAPTER_Overview.tex
@@ -350,6 +350,18 @@ and this bit is a one (the second ``1'').} for {\tt \textbackslash{}reset == 1}
sets {\tt \$0\textbackslash{}q[0:0]} to the value of {\tt \textbackslash{}d} if {\tt
\textbackslash{}enable} is active (lines $6 \dots 11$).
+A case can specify zero or more compare values that will determine whether it matches. Each of the compare values
+must be the exact same width as the control signal. When more than one compare value is specified, the case matches
+if any of them matches the control signal; when zero compare values are specified, the case always matches (i.e.
+it is the default case).
+
+A switch prioritizes cases from first to last: multiple cases can match, but only the first matched case becomes
+active. This normally synthesizes to a priority encoder. The {\tt parallel\_case} attribute allows passes to assume
+that no more than one case will match, and {\tt full\_case} attribute allows passes to assume that exactly one
+case will match; if these invariants are ever dynamically violated, the behavior is undefined. These attributes
+are useful when an invariant invisible to the synthesizer causes the control signal to never take certain
+bit patterns.
+
The lines $13 \dots 16$ then cause {\tt \textbackslash{}q} to be updated whenever there is
a positive clock edge on {\tt \textbackslash{}clock} or {\tt \textbackslash{}reset}.