add slides
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 18 Jun 2018 04:00:28 +0000 (05:00 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 18 Jun 2018 04:00:28 +0000 (05:00 +0100)
pinmux/pinmux_chennai_2018.tex
simple_v_extension/simple_v_chennai_2018.tex

index 82d3170aac165766b76439ac1e9925304a1d3352..391d241f279150f1bf90e31add74b8ffb500b8de 100644 (file)
  \end{center}
 }
 
+\frame{\frametitle{Pin Configuration, input and output}
+
+ \begin{itemize}
+   \item Standard Mux design {\bf cannot deal with many-to-one inputs}\\
+            (SiFive IOF source code from Freedom U310 cannot, either)
+            \vspace{4pt}
+   \item I/O pad configuration conflated with Muxer conflated with GPIO
+         conflated with EINT
+                    \vspace{4pt}
+   \item Need to separate all of these out
+                    \vspace{4pt}
+   \item EINTs to be separate FNs (managed by RISC-V PLIC)
+                    \vspace{4pt}
+   \item GPIO In/Out/Direction treated just like any other FN
+                    \vspace{4pt}
+   \item Pad configuration separated and given one-to-one Registers
+ \end{itemize}
+}
 
 \frame{\frametitle{Register-to-pad "control" settings}
  \begin{center}
index 0fc04eb5c6405d912e3ba72921519bc022b9b5d8..14e593c435fe139abec15cf85de504baa461bdee 100644 (file)
@@ -301,15 +301,15 @@ for (int i = 0; i < VL; ++i)
 \frametitle{Register key-value CSR table decoding pseudocode}
 
 \begin{semiverbatim}
-struct vectorised fp\_vec[32], int\_vec[32]; // 64 in future
+struct vectorised fp\_vec[32], int\_vec[32];
 for (i = 0; i < 16; i++) // 16 CSRs?
    tb = int\_vec if CSRvec[i].type == 0 else fp\_vec
    idx = CSRvec[i].regkey // INT/FP src/dst reg in opcode
    tb[idx].elwidth  = CSRvec[i].elwidth
    tb[idx].regidx   = CSRvec[i].regidx  // indirection
+   tb[idx].regidx  += CSRvec[i].bank << 5 // 0 (1=rsvd)
    tb[idx].isvector = CSRvec[i].isvector
    tb[idx].packed   = CSRvec[i].packed  // SIMD or not
-   tb[idx].bank     = CSRvec[i].bank    // 0 (1=rsvd)
    tb[idx].enabled  = true
 \end{semiverbatim}
 
@@ -344,14 +344,14 @@ for (i = 0; i < 16; i++) // 16 CSRs?
 \frametitle{Predication key-value CSR table decoding pseudocode}
 
 \begin{semiverbatim}
-struct pred fp\_pred[32], int\_pred[32]; // 64 in future
+struct pred fp\_pred[32], int\_pred[32];
 for (i = 0; i < 16; i++) // 16 CSRs?
    tb = int\_pred if CSRpred[i].type == 0 else fp\_pred
    idx = CSRpred[i].regkey
    tb[idx].zero     = CSRpred[i].zero    // zeroing
    tb[idx].inv      = CSRpred[i].inv     // inverted
    tb[idx].predidx  = CSRpred[i].predidx // actual reg
-   tb[idx].bank     = CSRpred[i].bank    // 0 for now
+   tb[idx].predidx += CSRvec[i].bank << 5 // 0 (1=rsvd)
    tb[idx].enabled  = true
 \end{semiverbatim}