mirror of https://github.com/YosysHQ/yosys.git
Progress in presentation
This commit is contained in:
parent
076182c34e
commit
3e96ce8680
|
@ -94,7 +94,7 @@ tool for interactive design investigation.
|
|||
\subsubsection{Selecting by object property or type}
|
||||
|
||||
\begin{frame}[fragile]{\subsubsecname}
|
||||
Special pattern can be used to select by object property or type. For example:
|
||||
Special patterns can be used to select by object property or type. For example:
|
||||
|
||||
\bigskip
|
||||
\begin{lstlisting}[xleftmargin=0.5cm, basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=ys]
|
||||
|
@ -113,7 +113,7 @@ reference to the {\tt select} command.
|
|||
\subsubsection{Combining selection}
|
||||
|
||||
\begin{frame}[fragile]{\subsubsecname}
|
||||
When more than one selection expression is used in one statement they are
|
||||
When more than one selection expression is used in one statement, then they are
|
||||
pushed on a stack. The final elements on the stack are combined into a union:
|
||||
|
||||
\medskip
|
||||
|
@ -169,7 +169,7 @@ See {\tt help select} for full documentation of this expressions.
|
|||
\subsubsection{Incremental selection}
|
||||
|
||||
\begin{frame}[fragile]{\subsubsecname}
|
||||
Sometime a selection can most easily described by a series of add/delete operations.
|
||||
Sometimes a selection can most easily be described by a series of add/delete operations.
|
||||
The commands {\tt select -add} and {\tt select -del} respectively add or remove objects
|
||||
from the current selection instead of overwriting it.
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ from other tools).
|
|||
|
||||
\begin{itemize}
|
||||
\item
|
||||
The selection mechanism (see slides ``Using Selections''), especially pattern such
|
||||
The selection mechanism (see slides ``Using Selections''), especially patterns such
|
||||
as {\tt \%ci} and {\tt \%co}, can be used to figure out how parts of the design
|
||||
are connected.
|
||||
|
||||
|
@ -53,9 +53,9 @@ read_verilog scrambler.v
|
|||
hierarchy; proc;;
|
||||
|
||||
cd scrambler
|
||||
submod -name xorshift32 xs %c %ci %D \
|
||||
%c %ci:+[D] %D %ci*:-$dff \
|
||||
xs %co %ci %d
|
||||
submod -name xorshift32 \
|
||||
xs %c %ci %D %c %ci:+[D] %D \
|
||||
%ci*:-$dff xs %co %ci %d
|
||||
\end{lstlisting}
|
||||
\end{columns}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
\begin{frame}{\subsecname}
|
||||
\begin{itemize}
|
||||
\item Reading and elaborating the design
|
||||
\item High-level synthesis and optimization
|
||||
\item Higher-level synthesis and optimization
|
||||
\begin{itemize}
|
||||
\item Converting {\tt always}-blocks to logic and registers
|
||||
\item Perform coarse-grain optimizations (resource sharing, const folding, ...)
|
||||
|
@ -21,7 +21,7 @@
|
|||
\end{itemize}
|
||||
\item Convert remaining logic to bit-level logic functions
|
||||
\item Perform optimizations on bit-level logic functions
|
||||
\item Map bit-level logic and register to gates from cell library
|
||||
\item Map bit-level logic gates and registers to cell library
|
||||
\item Write results to output file
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -64,8 +64,8 @@ all needed variations of parametric modules.
|
|||
#
|
||||
hierarchy
|
||||
|
||||
# recommended form. fail if parts of the design hierarchy are missing. remove
|
||||
# everything that is unreachable by the top module. mark the top module.
|
||||
# recommended form. fails if parts of the design hierarchy are missing, removes
|
||||
# everything that is unreachable from the top module, and marks the top module.
|
||||
#
|
||||
hierarchy -check -top top_module
|
||||
\end{lstlisting}
|
||||
|
@ -253,7 +253,7 @@ memory_dff
|
|||
# into one multi-port memory cell.
|
||||
memory_collect
|
||||
|
||||
# this takes the multi-port memory cells and transforms it to address decoder
|
||||
# this takes the multi-port memory cell and transforms it to address decoder
|
||||
# logic and registers. This step is skipped if "memory" is called with -nomap.
|
||||
memory_map
|
||||
\end{lstlisting}
|
||||
|
@ -279,7 +279,7 @@ memory -nomap; techmap -map my_memory_map.v; memory_map
|
|||
\end{frame}
|
||||
|
||||
\begin{frame}[t, fragile]{\subsecname{} -- Example 2/2}
|
||||
\vbox to 0cm{\hfill\includegraphics[width=7.5cm,trim=0cm 0cm 0cm -6cm]{PRESENTATION_ExSyn/memory_02.pdf}\vss}
|
||||
\vbox to 0cm{\hfill\includegraphics[width=7.5cm,trim=0cm 0cm 0cm -5cm]{PRESENTATION_ExSyn/memory_02.pdf}\vss}
|
||||
\vskip-1cm
|
||||
\begin{columns}
|
||||
\column[t]{5cm}
|
||||
|
@ -303,11 +303,11 @@ fsm_detect # unless got option -nodetect
|
|||
fsm_extract
|
||||
|
||||
fsm_opt
|
||||
opt_clean
|
||||
clean
|
||||
fsm_opt
|
||||
|
||||
fsm_expand # if got option -expand
|
||||
opt_clean # if got option -expand
|
||||
clean # if got option -expand
|
||||
fsm_opt # if got option -expand
|
||||
|
||||
fsm_recode # unless got option -norecode
|
||||
|
@ -366,7 +366,7 @@ When {\tt techmap} is used without a map file, it uses a built-in map file
|
|||
to map all RTL cell types to a generic library of built-in logic gates and registers.
|
||||
|
||||
\bigskip
|
||||
\begin{block}{The build-in logic gate types are:}
|
||||
\begin{block}{The built-in logic gate types are:}
|
||||
{\tt \$\_INV\_ \$\_AND\_ \$\_OR\_ \$\_XOR\_ \$\_MUX\_}
|
||||
\end{block}
|
||||
|
||||
|
@ -496,7 +496,7 @@ the next part (Section 3, ``Advanced Synthesis'') of this presentation.}
|
|||
\begin{itemize}
|
||||
\item Yosys provides commands for each phase of the synthesis.
|
||||
\item Each command solves a (more or less) simple problem.
|
||||
\item Complex command are often only front-ends to simple commands.
|
||||
\item Complex commands are often only front-ends to simple commands.
|
||||
\item {\tt proc; opt; memory; opt; fsm; opt; techmap; opt; abc;;}
|
||||
\end{itemize}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
\sectionpage
|
||||
\end{frame}
|
||||
|
||||
\iffalse
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\subsection{Representations of (digital) Circuits}
|
||||
|
@ -51,6 +52,7 @@
|
|||
\end{frame}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\fi
|
||||
|
||||
\subsection{Levels of Abstraction for Digital Circuits}
|
||||
|
||||
|
@ -74,7 +76,7 @@
|
|||
\only<6>{Physical Gate Level}%
|
||||
\only<7>{Switch Level}}
|
||||
\only<1>{
|
||||
Overall view of the circuit: E.g. block-diagrams or instruction-set architecture descriptions
|
||||
Overall view of the circuit. E.g. block-diagrams or instruction-set architecture descriptions.
|
||||
}%
|
||||
\only<2>{
|
||||
Functional implementation of circuit in high-level programming language (C, C++, SystemC, Matlab, Python, etc.).
|
||||
|
@ -94,7 +96,7 @@
|
|||
\only<6>{
|
||||
Netlist of cells that actually are available on the target architecture
|
||||
(such as CMOS gates in an ASCI or LUTs in an FPGA). Optimized for
|
||||
area and/or and/or speed (static timing or number of logic levels).
|
||||
area, power, and/or speed (static timing or number of logic levels).
|
||||
}%
|
||||
\only<7>{
|
||||
Netlist of individual transistors.
|
||||
|
@ -179,8 +181,8 @@ as Qflow\footnote[frame]{\url{http://opencircuitdesign.com/qflow/}} for ASIC des
|
|||
This scripts contain three types of commands:
|
||||
\begin{itemize}
|
||||
\item {\bf Frontends}, that read input files (usually Verilog).
|
||||
\item {\bf Passes}, that perform transformation on the design in memory.
|
||||
\item {\bf Backends}, that write the design in memory to a file (various formats are available, e.g. Verilog, BLIF, EDIF, SPICE, BTOR, etc.).
|
||||
\item {\bf Passes}, that perform transformations on the design in memory.
|
||||
\item {\bf Backends}, that write the design in memory to a file (various formats are available: Verilog, BLIF, EDIF, SPICE, BTOR, \dots).
|
||||
\end{itemize}
|
||||
|
||||
\bigskip
|
||||
|
@ -247,26 +249,23 @@ as Qflow\footnote[frame]{\url{http://opencircuitdesign.com/qflow/}} for ASIC des
|
|||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\subsection{Example Problem}
|
||||
\subsection{Example Project}
|
||||
|
||||
\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}
|
||||
\begin{frame}[t]{\subsecname}
|
||||
The following slides cover an example project. This project contains three files:
|
||||
\begin{itemize}
|
||||
\item A simple ASIC synthesis script
|
||||
\item A digital design written in Verilog
|
||||
\item A simple CMOS cell library
|
||||
\end{itemize}
|
||||
\vfill
|
||||
Direct link to the files: \\ \footnotesize
|
||||
\url{https://github.com/cliffordwolf/yosys/tree/master/manual/PRESENTATION_Intro}
|
||||
\end{frame}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\subsection{Example Synthesis Script}
|
||||
|
||||
\begin{frame}[t]{\subsecname}
|
||||
\begin{frame}[t]{\subsecname{} -- Synthesis Script}
|
||||
|
||||
\setbeamercolor{alerted text}{fg=white,bg=red}
|
||||
|
||||
|
@ -283,9 +282,6 @@ as Qflow\footnote[frame]{\url{http://opencircuitdesign.com/qflow/}} for ASIC des
|
|||
\medskip
|
||||
{\color{YosysGreen}\# mapping to internal cell library}\\
|
||||
\boxalert<9>{techmap}; \boxalert<10>{opt}
|
||||
|
||||
\bigskip
|
||||
\it continued\dots
|
||||
\end{minipage}
|
||||
\begin{minipage}[t]{5cm}
|
||||
\tt\scriptsize
|
||||
|
@ -327,7 +323,7 @@ as Qflow\footnote[frame]{\url{http://opencircuitdesign.com/qflow/}} for ASIC des
|
|||
}%
|
||||
\only<2>{
|
||||
Elaborate the design hierarchy. Should always be the first
|
||||
command after reading the design.
|
||||
command after reading the design. Can re-run AST front-end.
|
||||
}%
|
||||
\only<3>{
|
||||
Convert ``processes'' (the internal representation of behavioral
|
||||
|
@ -373,6 +369,21 @@ as Qflow\footnote[frame]{\url{http://opencircuitdesign.com/qflow/}} for ASIC des
|
|||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\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}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\subsection{Running the Synthesis Script}
|
||||
|
||||
\begin{frame}[t, fragile]{\subsecname{} -- Step 1/4}
|
||||
|
@ -410,8 +421,8 @@ abc -liberty mycells.lib
|
|||
clean
|
||||
\end{verbatim}
|
||||
|
||||
\vfill
|
||||
\includegraphics[width=\linewidth,trim=0 0cm 0 0cm]{PRESENTATION_Intro/counter_03.pdf}
|
||||
\vfill\hfil
|
||||
\includegraphics[width=10cm,trim=0 0cm 0 0cm]{PRESENTATION_Intro/counter_03.pdf}
|
||||
\end{frame}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
@ -422,7 +433,7 @@ clean
|
|||
Command reference:
|
||||
\begin{itemize}
|
||||
\item Use ``{\tt help}'' for a command list and ``{\tt help \it command}'' for details.
|
||||
\item Or run ``{\tt yosys -H}'' and ``{\tt yosys -h \it command}''.
|
||||
\item Or run ``{\tt yosys -H}'' or ``{\tt yosys -h \it command}''.
|
||||
\item Or go to \url{http://www.clifford.at/yosys/documentation.html}.
|
||||
\end{itemize}
|
||||
|
||||
|
@ -560,7 +571,7 @@ endmodule
|
|||
module cam(clk, wr_enable, wr_addr, wr_data, rd_data, rd_addr, rd_match);
|
||||
parameter WIDTH = 8;
|
||||
parameter DEPTH = 16;
|
||||
localparam ADDR_BITS = $clog2(DEPTH);
|
||||
localparam ADDR_BITS = $clog2(DEPTH-1);
|
||||
|
||||
input clk, wr_enable;
|
||||
input [ADDR_BITS-1:0] wr_addr;
|
||||
|
@ -595,7 +606,7 @@ Contiously checking the correctness of Yosys and making sure that new features
|
|||
do not break old ones is a high priority in Yosys.
|
||||
|
||||
\bigskip
|
||||
There are two external test suites build for Yosys: VlogHammer and yosys-bigsim
|
||||
Two external test suites have been built for Yosys: VlogHammer and yosys-bigsim
|
||||
(see next slides)
|
||||
|
||||
\bigskip
|
||||
|
@ -608,8 +619,8 @@ the internal state after each command.
|
|||
|
||||
\begin{frame}[fragile]{\subsecname{} -- VlogHammer}
|
||||
VlogHammer is a Verilog regression test suite developed to test the different
|
||||
subsystems in Yosys by comparing them to each other and the implementations
|
||||
generated by some proprietary tools (Xilinx Vivado, Xilinx XST, Altera Quartus II, ...).
|
||||
subsystems in Yosys by comparing them to each other and to the output created
|
||||
by some other tools (Xilinx Vivado, Xilinx XST, Altera Quartus II, ...).
|
||||
|
||||
\bigskip
|
||||
Yosys Subsystems tested: Verilog frontend, const folding, const eval, technology mapping,
|
||||
|
@ -624,8 +635,8 @@ assign y11 = (~&(-{(-3'sd3),($unsigned($signed($unsigned({p0,b4,b1}))))}));
|
|||
\end{lstlisting}
|
||||
|
||||
\bigskip
|
||||
Some bugs in Yosys where found and fixed thanks to VlogHammer. Over 20 bugs in
|
||||
the proprietary tools used as external reference where found and reported.
|
||||
Some bugs in Yosys where found and fixed thanks to VlogHammer. Over 50 bugs in
|
||||
the other tools used as external reference where found and reported so far.
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{\subsecname{} -- yosys-bigsim}
|
||||
|
@ -634,7 +645,7 @@ benches. yosys-bigsim compares the testbench outpus of simulations of the origin
|
|||
Verilog code and synthesis results.
|
||||
|
||||
\bigskip
|
||||
The following designs are part of yosys-bigsim:
|
||||
The following designs are included in yosys-bigsim (excerpt):
|
||||
\begin{itemize}
|
||||
\item {\tt openmsp430} -- an MSP430 compatible 16 bit CPU
|
||||
\item {\tt aes\_5cycle\_2stage} -- an AES encryption core
|
||||
|
@ -651,6 +662,19 @@ The following designs are part of yosys-bigsim:
|
|||
|
||||
\subsection{Benefits of Open Source HDL Synthesis}
|
||||
|
||||
\begin{frame}{\subsecname}
|
||||
\begin{itemize}
|
||||
\item Cost (also applies to ``free as in free beer'' solutions)
|
||||
\item Availablity and Reproducability
|
||||
\item Framework- and all-in-one-aspects
|
||||
\item Educational Tool
|
||||
\end{itemize}
|
||||
|
||||
\bigskip
|
||||
|
||||
Yosys is open source under the ISC license.
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{\subsecname{} -- 1/3}
|
||||
\begin{itemize}
|
||||
\item Cost (also applies to ``free as in free beer'' solutions): \smallskip\par
|
||||
|
@ -688,14 +712,13 @@ learn a new tool for each of this applications.
|
|||
\begin{frame}{\subsecname{} -- 3/3}
|
||||
\begin{itemize}
|
||||
\item Educational Tool: \smallskip\par
|
||||
Propritaery synthesis tools are at times where secretive about their inner
|
||||
workings. They often are ``black boxes'' where a design goes in and synthesis
|
||||
results come out. Yosys is very open about its internals and it is easy to
|
||||
observe the different steps of synthesis.
|
||||
Propritaery synthesis tools are at times very secretive about their inner
|
||||
workings. They often are ``black boxes''. Yosys is very open about its
|
||||
internals and it is easy to observe the different steps of synthesis.
|
||||
\end{itemize}
|
||||
|
||||
\bigskip
|
||||
\begin{block}{BTW: Yosys is licensed under the ISC license:}
|
||||
\begin{block}{Yosys is licensed under the ISC license:}
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
@ -743,24 +766,24 @@ but also formal verification, reverse engineering, ...}
|
|||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\subsection{What the Yosys project needs from you}
|
||||
\subsection{Yosys needs you}
|
||||
|
||||
\begin{frame}{\subsecname}
|
||||
We need you as an active user:
|
||||
\dots as an active user:
|
||||
\begin{itemize}
|
||||
\item Use Yosys for on your own designs
|
||||
\item Use Yosys for on your own projects
|
||||
\item .. even if you are not using it as final synthesis tool
|
||||
\item Join the discussion on the Subreddit
|
||||
\item Report bugs and send in feature requests
|
||||
\end{itemize}
|
||||
|
||||
\bigskip
|
||||
We need you as a developer:
|
||||
\dots as a developer:
|
||||
\begin{itemize}
|
||||
\item Use Yosys as environment for your research work
|
||||
\item Use Yosys as environment for your (research) work
|
||||
\item .. you might also want to look into ABC for logic-level stuff
|
||||
\item Fork the project on github or create loadable plugins
|
||||
\item We desperately need a VHDL frontend or a VHDL-to-Verilog converter
|
||||
\item We need a VHDL frontend or a good VHDL-to-Verilog converter
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
|
|
@ -2,17 +2,18 @@
|
|||
read_verilog counter.v
|
||||
hierarchy -check -top counter
|
||||
|
||||
show -stretch -format pdf -prefix counter_00
|
||||
show -notitle -stretch -format pdf -prefix counter_00
|
||||
|
||||
# the high-level stuff
|
||||
proc; opt; memory; opt; fsm; opt
|
||||
|
||||
show -stretch -format pdf -prefix counter_01
|
||||
show -notitle -stretch -format pdf -prefix counter_01
|
||||
|
||||
# mapping to internal cell library
|
||||
techmap; splitnets -ports; opt
|
||||
techmap; opt
|
||||
|
||||
show -stretch -format pdf -prefix counter_02
|
||||
splitnets -ports;;
|
||||
show -notitle -stretch -format pdf -prefix counter_02
|
||||
|
||||
# mapping flip-flops to mycells.lib
|
||||
dfflibmap -liberty mycells.lib
|
||||
|
@ -23,4 +24,4 @@ abc -liberty mycells.lib
|
|||
# cleanup
|
||||
clean
|
||||
|
||||
show -stretch -lib mycells.v -format pdf -prefix counter_03
|
||||
show -notitle -stretch -lib mycells.v -format pdf -prefix counter_03
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
\section{Programming Yosys Extensions}
|
||||
\section{Writing Yosys extensions in C++}
|
||||
|
||||
\begin{frame}
|
||||
\sectionpage
|
||||
|
@ -43,8 +43,9 @@
|
|||
\subsection{Simplified RTLIL Entity-Relationship Diagram}
|
||||
|
||||
\begin{frame}{\subsecname}
|
||||
Between passses and frontends/backends the design in stored in Yosys' internal RTLIL (RTL Intermediate Language) format. For
|
||||
writing Yosys extensions it is key to understand this format.
|
||||
Between passses and frontends/backends the design is stored in Yosys' internal
|
||||
RTLIL (RTL Intermediate Language) format. For writing Yosys extensions it is
|
||||
key to understand this format.
|
||||
|
||||
\bigskip
|
||||
\begin{center}
|
||||
|
@ -71,7 +72,8 @@ writing Yosys extensions it is key to understand this format.
|
|||
\subsection{RTLIL without memories and processes}
|
||||
|
||||
\begin{frame}[fragile]{\subsecname}
|
||||
After the command {\tt proc} and {\tt memory} (or {\tt memory -nomap}), we are left with a much simpler version of RTLIL:
|
||||
After the commands {\tt proc} and {\tt memory} (or {\tt memory -nomap}), we are
|
||||
left with a much simpler version of RTLIL:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.6, every node/.style={transform shape}]
|
||||
|
@ -85,7 +87,7 @@ After the command {\tt proc} and {\tt memory} (or {\tt memory -nomap}), we are l
|
|||
\end{center}
|
||||
|
||||
\bigskip
|
||||
Many command simply choose to only work on this simpler version:
|
||||
Many commands simply choose to only work on this simpler version:
|
||||
\begin{lstlisting}[xleftmargin=0.5cm, basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont]
|
||||
if (module->processes.size() != 0 || module->memories.size() != 0)
|
||||
log_error("This command does not operate on modules with processes "
|
||||
|
@ -256,7 +258,7 @@ a {\tt RTLIL::SigChunk}:
|
|||
\begin{lstlisting}[xleftmargin=1cm, basicstyle=\ttfamily\fontsize{8pt}{10pt}\selectfont, language=C++]
|
||||
struct RTLIL::SigChunk {
|
||||
RTLIL::Wire *wire;
|
||||
RTLIL::Const data; // only used if wire == NULL, LSB at index 0
|
||||
RTLIL::Const data; // only used if wire == NULL
|
||||
int width, offset;
|
||||
...
|
||||
};
|
||||
|
@ -276,7 +278,7 @@ manipulate instances of {\tt RTLIL::SigSpec}.
|
|||
\subsubsection{The RTLIL::Cell Structure}
|
||||
|
||||
\begin{frame}[t, fragile]{\subsubsecname (1/2)}
|
||||
The {\tt RTLIL::Cell} strcut represents an instance of a module or library cell.
|
||||
The {\tt RTLIL::Cell} struct represents an instance of a module or library cell.
|
||||
|
||||
\smallskip
|
||||
The ports of the cell
|
||||
|
@ -310,7 +312,7 @@ $_DLATCHSR_NPN_ $_DLATCHSR_NPP_ $_DLATCHSR_PNN_ $_DLATCHSR_PNP_ $_DLATCHSR_PPN_
|
|||
\end{frame}
|
||||
|
||||
\begin{frame}[t, fragile]{\subsubsecname (2/2)}
|
||||
Simulation models (i.e. {\it documentation\/}) for the internal cell library:
|
||||
Simulation models (i.e. {\it documentation\/} :-) for the internal cell library:
|
||||
|
||||
\smallskip
|
||||
\hskip2em {\tt yosys/techlibs/common/simlib.v} and \\
|
||||
|
@ -318,11 +320,11 @@ Simulation models (i.e. {\it documentation\/}) for the internal cell library:
|
|||
|
||||
\bigskip
|
||||
The lower-case cell types (such as {\tt \$and}) are parameterized cells of variable
|
||||
width. This so-called {\it RTL cells\/} are the cells described in {\tt simlib.v}.
|
||||
width. This so-called {\it RTL Cells\/} are the cells described in {\tt simlib.v}.
|
||||
|
||||
\bigskip
|
||||
The upper-case cell types (such as {\tt \$\_AND\_}) single-bit cells that are not
|
||||
parameterized. This so-called {\it internal Logic Gates} are the cells described
|
||||
The upper-case cell types (such as {\tt \$\_AND\_}) are single-bit cells that are not
|
||||
parameterized. This so-called {\it Internal Logic Gates} are the cells described
|
||||
in {\tt simcells.v}.
|
||||
|
||||
\bigskip
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
|
||||
\title{Yosys Open SYnthesis Suite}
|
||||
\author{Clifford Wolf}
|
||||
\institute{http://www.clifford.at/}
|
||||
\institute{http://www.clifford.at/yosys/}
|
||||
|
||||
\usetheme{Madrid}
|
||||
\usecolortheme{seagull}
|
||||
|
@ -133,7 +133,7 @@ Outline of this presentation:
|
|||
\item Yosys by example: synthesis
|
||||
\item Yosys by example: advanced synthesis
|
||||
\item Yosys by example: beyond synthesis
|
||||
\item Programming Yosys extensions
|
||||
\item Writing Yosys extensions in C++
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
|
Loading…
Reference in New Issue