mirror of https://github.com/YosysHQ/yosys.git
presentation progress
This commit is contained in:
parent
aceab5fc08
commit
cbe77bf844
|
@ -8,4 +8,5 @@
|
||||||
*.toc
|
*.toc
|
||||||
*.snm
|
*.snm
|
||||||
*.nav
|
*.nav
|
||||||
|
*.vrb
|
||||||
*.ok
|
*.ok
|
||||||
|
|
|
@ -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}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
counter_00.dot
|
||||||
|
counter_01.dot
|
||||||
|
counter_02.dot
|
||||||
|
counter_03.dot
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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"; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}
|
||||||
|
|
Loading…
Reference in New Issue