aboutsummaryrefslogtreecommitdiffstats
path: root/manual/CHAPTER_Techmap.tex
diff options
context:
space:
mode:
Diffstat (limited to 'manual/CHAPTER_Techmap.tex')
-rw-r--r--manual/CHAPTER_Techmap.tex102
1 files changed, 102 insertions, 0 deletions
diff --git a/manual/CHAPTER_Techmap.tex b/manual/CHAPTER_Techmap.tex
new file mode 100644
index 000000000..6a84864e2
--- /dev/null
+++ b/manual/CHAPTER_Techmap.tex
@@ -0,0 +1,102 @@
+
+\chapter{Technology Mapping}
+\label{chapter:techmap}
+
+Previous chapters outlined how HDL code is transformed into an RTL netlist. The
+RTL netlist is still based on abstract coarse-grain cell types like arbitrary
+width adders and even multipliers. This chapter covers how an RTL netlist is
+transformed into a functionally equivialent netlist utililizing the cell types
+available in the target architecture.
+
+Technology mapping is often performed in two phases. In the first phase RTL cells
+are mapped to an internal library of single-bit cells (see Sec.~\ref{sec:celllib_gates}).
+In the second phase this netlist of internal gate types is transformed to a netlist
+of gates from the target technology library.
+
+When the target architecture provides coarse-grain cells (such as block ram
+or ALUs), these must be mapped to directly form the RTL netlist, as information
+on the coarse-grain structure of the design is lost when it is mapped to
+bit-width gate types.
+
+\section{Cell Substitution}
+
+The simplest form of technology mapping is cell substitution, as performed by
+the {\tt techmap} pass. This pass, when provided with a Verilog file that
+implements the RTL cell types using simpler cells, simply replaces the RTL
+cells with the provided implementation.
+
+When no map file is provided, {\tt techmap} uses a built-in map file that
+maps the Yosys RTL cell types to the internal gate library used by Yosys.
+The curious reader may find this map file as {\tt techlibs/stdcells.v} in
+the Yosys source tree.
+
+Additional features have been added to {\tt techmap} to allow for conditional
+mapping of cells (see {\tt help techmap} or Sec.~\ref{cmd:techmap}). This can
+for example be usefull if the target architecture supports hardware multipliers for
+certain bit-widths but not for others.
+
+A usual synthesis flow would first use the {\tt techmap} pass to directly map
+some RTL cells to coarse-grain cells provided by the target architecture (if
+any) and then use techmap with the built-in default file to map the remaining
+RTL cells to gate logic.
+
+\section{Subcircuit Substitution}
+
+Sometimes the target architecture provides cells that are more powerful than
+the RTL cells used by Yosys. For example a cell in the target architecture that can
+calculate the absolute-difference of two numbers does not match any single
+RTL cell type but only combinations of cells.
+
+For these cases Yosys provides the {\tt extract} pass that can match a given set
+of modules against a design and identify the portions of the design that are
+identical (i.e.~isomorphic subcircuits) to any of the given modules. These
+matched subcircuits are then replaced by instances of the given modules.
+
+The {\tt extract} pass also finds basic variations of the given modules,
+such as swapped inputs on commutative cell types.
+
+In addition to this the {\tt extract} pass also has limited support for
+frequent subcircuit mining, i.e.~the process of finding recurring subcircuits
+in the design. This has a few applications, including the design of new
+coarse-grain architectures \cite{intersynthFdlBookChapter}.
+
+The hard algorithmic work done by the {\tt extract} pass (solving the
+isomorphic subcircuit problem and frequent subcircuit mining) is performed
+using the SubCircuit library that can also be used stand-alone without Yosys
+(see Sec.~\ref{sec:SubCircuit}).
+
+\section{Gate-Level Technology Mapping}
+\label{sec:techmap_extern}
+
+On the gate-level the target architecture is usually described by a ``Liberty
+file''. The Liberty file format is an industry standard format that can be
+used to describe the behaviour and other properties of standard library cells
+\citeweblink{LibertyFormat}.
+
+Mapping a design utilizing the Yosys internal gate library (e.g.~as a result
+of mapping it to this representation using the {\tt techmap} pass) is
+performed in two phases.
+
+First the register cells must be mapped to the registers that are available
+on the target architectures. The target architecture might not provide all
+variations of d-type flip-flops with positive and negative clock edge,
+high-active and low-active asynchronous set and/or reset, etc. Therefore the
+process of mapping the registers might add additional inverters to the design
+and thus it is important to map the register cells first.
+
+Mapping of the register cells may be performed by using the {\tt dfflibmap}
+pass. This pass expects a Liberty file as argument (using the {\tt -liberty}
+option) and only uses the register cells from the Liberty file.
+
+Secondly the combinational logic must be mapped to the target architecture.
+This is done using the external program ABC \citeweblink{ABC} via the
+{\tt abc} pass by using the {\tt -liberty} option to the pass. Note that
+in this case only the combinatorial cells are used from the cell library.
+
+Occasionally Liberty files contain trade secrets (such as sensitive timing
+information) that cannot be shared freely. This complicates processes such as
+reporting bugs in the tools involved. When the information in the Liberty file
+used by Yosys and ABC are not part of the sensitive information, the additional
+tool {\tt yosys-filterlib} (see Sec.~\ref{sec:filterlib}) can be used to strip
+the sensitive information from the Liberty file.
+