summaryrefslogtreecommitdiff
path: root/manual/CHAPTER_Intro.tex
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-07-20 15:19:12 +0200
committerClifford Wolf <clifford@clifford.at>2013-07-20 15:19:12 +0200
commit61ed6b32d1f5fbfda9c6effdaa678092f8156bfa (patch)
tree3a53692cbd93a09eabeb67eff5e9e4ace5cf1a3e /manual/CHAPTER_Intro.tex
parent3650fd7fbe45a00792770d9ecb9397bc27ea0845 (diff)
Added Yosys Manual
Diffstat (limited to 'manual/CHAPTER_Intro.tex')
-rw-r--r--manual/CHAPTER_Intro.tex98
1 files changed, 98 insertions, 0 deletions
diff --git a/manual/CHAPTER_Intro.tex b/manual/CHAPTER_Intro.tex
new file mode 100644
index 00000000..675d2402
--- /dev/null
+++ b/manual/CHAPTER_Intro.tex
@@ -0,0 +1,98 @@
+
+\chapter{Introduction}
+\label{chapter:intro}
+
+This document presents the Free and Open Source (FOSS) Verilog HDL synthesis tool ``Yosys''.
+Its design and implementation as well as its performance on real-world designs
+is discussed in this document.
+
+\section{History of Yosys}
+
+A Hardware Description Language (HDL) is a computer language used to describe
+circuits. A HDL synthesis tool is a computer program that takes a formal
+description of a circuit written in an HDL as input and generates a netlist
+that implements the given circuit as output.
+
+Currently the most widely used and supported HDLs for digital circuits are
+Verilog \cite{Verilog2005}\cite{VerilogSynth} and
+VHDL\footnote{VHDL is an acronym for ``VHSIC hardware description language''
+and VHSIC is an acronym for ``Very-High-Speed Integrated
+Circuits''.} \cite{VHDL}\cite{VHDLSynth}.
+Both HDLs are used for test and verification purposes as well as logic
+synthesis, resulting in a set of synthesizable and a set of non-synthesizable
+language features. In this document we only look at the synthesizable subset
+of the language features.
+
+In recent work on heterogeneous coarse-grain reconfigurable
+logic \cite{intersynth} the need for a custom application-specific HDL synthesis
+tool emerged. It was soon realised that a synthesis tool that understood Verilog
+or VHDL would be preferred over a synthesis tool for a custom HDL. Given an
+existing Verilog or VHDL front end, the work for writing the necessary
+additional features and integrating them in an existing tool can be estimated to be
+about the same as writing a new tool with support for a minimalistic custom HDL.
+
+The proposed custom HDL synthesis tool should be licensed under a Free
+and Open Source Software (FOSS) licence. So an existing FOSS Verilog or VHDL
+synthesis tool would have been needed as basis to build upon. The main advantages
+of choosing Verilog or VHDL is the ability to synthesize existing HDL code and
+to mitigate the requirement for circuit-designers to learn a new language. In order to take full advantage of any existing FOSS Verilog or VHDL tool,
+such a tool would have to provide a feature-complete implementation of the
+synthesizable HDL subset.
+
+Basic RTL synthesis is a well understood field \cite{LogicSynthesis}. Lexing,
+parsing and processing of computer languages \cite{Dragonbook} is a thoroughly
+researched field. All the information required to write such tools has been openly
+available for a long time, and it is therefore likely that a FOSS HDL synthesis tool
+with a feature-complete Verilog or VHDL front end must exist which can be used as a basis for a custom RTL synthesis tool.
+
+Due to the authors preference for Verilog over VHDL it has been decided early
+on to go for Verilog instead of VHDL\footnote{A quick investigation into FOSS
+VHDL tools yielded similar grim results for FOSS VHDL synthesis tools.}.
+So the existing FOSS Verilog synthesis tools were evaluated (see
+App.~\ref{chapter:sota}). The results of this evaluation are utterly
+devastating. Therefore a completely new Verilog synthesis tool was implemented
+and is recommended as basis for custom synthesis tools. This is the tool that
+is discussed in this document.
+
+\section{Structure of this Document}
+
+The structure of this document is a follows:
+
+Chapter~\ref{chapter:intro} is this introduction.
+
+Chapter~\ref{chapter:basics} covers a short introduction to the world of HDL
+synthesis. Basic principles and the terminology is outlined in this chapter.
+
+Chapter~\ref{chapter:approach} gives the quickest possible outline to how the
+problem of implementing a HDL synthesis tool is approached in the case of
+Yosys.
+
+Chapter~\ref{chapter:overview} contains a more detailed overview of the
+implementation of Yosys. This chapter covers the data structures used in
+Yosys to represent a design in detail and is therefore recommended reading
+for everyone who is interested in understanding the Yosys internals.
+
+Chapter~\ref{chapter:celllib} covers the internal cell library used by Yosys.
+This is especially important knowledge for anyone who wants to understand the
+intermediate netlists used internally by Yosys.
+
+Chapter~ \ref{chapter:prog} gives a tour to the internal APIs of Yosys. This
+is recommended reading for everyone who actually wants to read or write
+Yosys source code. The chapter concludes with an example loadable module
+for Yosys.
+
+Chapters~\ref{chapter:verilog}, \ref{chapter:opt}, and \ref{chapter:techmap}
+cover three improtant pieces of the synthesis pileline: The Verilog frontend,
+the optimization passes and the technology mapping to the target architecture,
+respectively.
+
+Chapter~\ref{chapter:eval} covers the evaluation of the performance
+(correctness and quality) of Yosys on real-world input data.
+The chapter concludes the main part of this document with conclusions and
+outlook to future work.
+
+Various appendices, including a command reference manual
+(App.~\ref{commandref}) and an evaluation of pre-existing FOSS Verilog
+synthesis tools (App.~\ref{chapter:sota}) complete this document.
+
+