presentation progress

This commit is contained in:
Clifford Wolf 2014-01-29 12:15:38 +01:00
parent aceab5fc08
commit cbe77bf844
10 changed files with 174 additions and 2 deletions

1
manual/.gitignore vendored
View File

@ -8,4 +8,5 @@
*.toc *.toc
*.snm *.snm
*.nav *.nav
*.vrb
*.ok *.ok

View File

@ -153,7 +153,7 @@ Things Yosys can do:
\begin{itemize} \begin{itemize}
\item Read and process (most of) modern Verilog-2005 code. \item Read and process (most of) modern Verilog-2005 code.
\item Perform all kinds of operations on netlist (RTL, Logic, Gate). \item Perform all kinds of operations on netlist (RTL, Logic, Gate).
\item Perform logic optimiziations and gate mapping with ABC\footnote{\url{http://www.eecs.berkeley.edu/~alanmi/abc/}}. \item Perform logic optimiziations and gate mapping with ABC\footnote[frame]{\url{http://www.eecs.berkeley.edu/~alanmi/abc/}}.
\end{itemize} \end{itemize}
\bigskip \bigskip
@ -165,7 +165,7 @@ Things Yosys can't do:
\bigskip \bigskip
A typical flow combines Yosys with with a low-level implementation tool, such A typical flow combines Yosys with with a low-level implementation tool, such
as Qflow\footnote{\url{http://opencircuitdesign.com/qflow/}} for ASIC designs. as Qflow\footnote[frame]{\url{http://opencircuitdesign.com/qflow/}} for ASIC designs.
\end{frame} \end{frame}
@ -318,3 +318,59 @@ as Qflow\footnote{\url{http://opencircuitdesign.com/qflow/}} for ASIC designs.
\end{frame} \end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Running the Synthesis Script}
\begin{frame}[fragile]{\subsecname{} -- Verilog Source: \tt counter.v}
\lstinputlisting[xleftmargin=1cm, language=Verilog]{PRESENTATION_Intro/counter.v}
\end{frame}
\begin{frame}[fragile]{\subsecname{} -- Cell Library: \tt mycells.lib}
\begin{columns}
\column[t]{5cm}
\lstinputlisting[basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=liberty, lastline=20]{PRESENTATION_Intro/mycells.lib}
\column[t]{5cm}
\lstinputlisting[basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=liberty, firstline=21]{PRESENTATION_Intro/mycells.lib}
\end{columns}
\end{frame}
\begin{frame}[t, fragile]{\subsecname{} -- Step 1/4}
\begin{verbatim}
read_verilog counter.v
hierarchy -check -top counter
\end{verbatim}
\vfill
\includegraphics[width=\linewidth,trim=0 0cm 0 0cm]{PRESENTATION_Intro/counter_00.pdf}
\end{frame}
\begin{frame}[t, fragile]{\subsecname{} -- Step 2/4}
\begin{verbatim}
proc; opt; memory; opt; fsm; opt
\end{verbatim}
\vfill
\includegraphics[width=\linewidth,trim=0 0cm 0 0cm]{PRESENTATION_Intro/counter_01.pdf}
\end{frame}
\begin{frame}[t, fragile]{\subsecname{} -- Step 3/4}
\begin{verbatim}
techmap; opt
\end{verbatim}
\vfill
\includegraphics[width=\linewidth,trim=0 0cm 0 0cm]{PRESENTATION_Intro/counter_02.pdf}
\end{frame}
\begin{frame}[t, fragile]{\subsecname{} -- Step 4/4}
\begin{verbatim}
dfflibmap -liberty mycells.lib
abc -liberty mycells.lib
clean
\end{verbatim}
\vfill
\includegraphics[width=\linewidth,trim=0 0cm 0 0cm]{PRESENTATION_Intro/counter_03.pdf}
\end{frame}

4
manual/PRESENTATION_Intro/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
counter_00.dot
counter_01.dot
counter_02.dot
counter_03.dot

View File

@ -0,0 +1,10 @@
all: counter_00.pdf counter_01.pdf counter_02.pdf counter_03.pdf
counter_00.pdf: counter.v counter.ys mycells.lib
../../yosys counter.ys
counter_01.pdf: counter_00.pdf
counter_02.pdf: counter_00.pdf
counter_03.pdf: counter_00.pdf

View File

@ -0,0 +1,12 @@
module counter (clk, rst, en, count);
input clk, rst, en;
output reg [1:0] count;
always @(posedge clk)
if (rst)
count <= 2'd0;
else if (en)
count <= count + 2'd1;
endmodule

View File

@ -0,0 +1,26 @@
# read design
read_verilog counter.v
hierarchy -check -top counter
show -format pdf -prefix counter_00
# the high-level stuff
proc; opt; memory; opt; fsm; opt
show -format pdf -prefix counter_01
# mapping to internal cell library
techmap; splitnets -ports; opt
show -format pdf -prefix counter_02
# mapping flip-flops to mycells.lib
dfflibmap -liberty mycells.lib
# mapping logic to mycells.lib
abc -liberty mycells.lib
# cleanup
clean
show -lib mycells.v -format pdf -prefix counter_03

View File

@ -0,0 +1,38 @@
library(demo) {
cell(BUF) {
area: 6;
pin(A) { direction: input; }
pin(Y) { direction: output;
function: "A"; }
}
cell(NOT) {
area: 3;
pin(A) { direction: input; }
pin(Y) { direction: output;
function: "A'"; }
}
cell(NAND) {
area: 4;
pin(A) { direction: input; }
pin(B) { direction: input; }
pin(Y) { direction: output;
function: "(A*B)'"; }
}
cell(NOR) {
area: 4;
pin(A) { direction: input; }
pin(B) { direction: input; }
pin(Y) { direction: output;
function: "(A+B)'"; }
}
cell(DFF) {
area: 18;
ff(IQ, IQN) { clocked_on: C;
next_state: D; }
pin(C) { direction: input;
clock: true; }
pin(D) { direction: input; }
pin(Q) { direction: output;
function: "IQ"; }
}
}

View File

@ -0,0 +1,23 @@
module NOT(A, Y);
input A;
output Y = ~A;
endmodule
module NAND(A, B, Y);
input A, B;
output Y = ~(A & B);
endmodule
module NOR(A, B, Y);
input A, B;
output Y = ~(A | B);
endmodule
module DFF(C, D, Q);
input C, D;
output reg Q;
always @(posedge C)
Q <= D;
endmodule

View File

@ -26,6 +26,7 @@ PDFTEX_OPT="-shell-escape -halt-on-error"
if ! $fast_mode; then if ! $fast_mode; then
md5sum *.aux *.snm *.nav *.toc > autoloop.old md5sum *.aux *.snm *.nav *.toc > autoloop.old
make -C PRESENTATION_Intro
fi fi
set -ex set -ex

View File

@ -23,6 +23,7 @@
\usepackage{multirow} \usepackage{multirow}
\usepackage{booktabs} \usepackage{booktabs}
\usepackage{listings} \usepackage{listings}
\usepackage{setspace}
\usepackage{skull} \usepackage{skull}
\usepackage{tikz} \usepackage{tikz}