2013-07-20 08:19:12 -05:00
|
|
|
\documentclass[oneside,a4paper]{book}
|
|
|
|
|
|
|
|
\usepackage[T1]{fontenc} % required for luximono!
|
|
|
|
\usepackage{lmodern}
|
|
|
|
\usepackage[scaled=0.8]{luximono} % typewriter font with bold face
|
|
|
|
|
|
|
|
% To install the luximono font files:
|
|
|
|
% getnonfreefonts-sys --all or
|
|
|
|
% getnonfreefonts-sys luximono
|
|
|
|
%
|
|
|
|
% when there are trouble you might need to:
|
|
|
|
% - Create /etc/texmf/updmap.d/99local-luximono.cfg
|
|
|
|
% containing the single line: Map ul9.map
|
|
|
|
% - Run update-updmap followed by mktexlsr and updmap-sys
|
|
|
|
%
|
|
|
|
% This commands must be executed as root with a root environment
|
|
|
|
% (i.e. run "sudo su" and then execute the commands in the root
|
|
|
|
% shell, don't just prefix the commands with "sudo").
|
|
|
|
|
2015-08-14 03:56:05 -05:00
|
|
|
% formats the text according the set language
|
2013-07-20 08:19:12 -05:00
|
|
|
\usepackage[english]{babel}
|
|
|
|
\usepackage[table,usenames]{xcolor}
|
|
|
|
% generates indices with the "\index" command
|
|
|
|
\usepackage{makeidx}
|
|
|
|
% enables import of graphics. We use pdflatex here so do the pdf optimisation.
|
|
|
|
%\usepackage[dvips]{graphicx}
|
|
|
|
\usepackage[pdftex]{graphicx}
|
|
|
|
\usepackage{pdfpages}
|
|
|
|
% includes floating objects like tables and figures.
|
|
|
|
\usepackage{float}
|
|
|
|
% for generating subfigures with ohne indented captions
|
|
|
|
\usepackage[hang]{subfigure}
|
|
|
|
% redefines and smartens captions of figures and tables (indentation, smaller and boldface)
|
|
|
|
\usepackage[hang,small,bf,center]{caption}
|
|
|
|
% enables tabstops and the numeration of lines
|
|
|
|
\usepackage{moreverb}
|
|
|
|
% enables user defined header and footer lines (former "fancyheadings")
|
|
|
|
\usepackage{fancyhdr}
|
|
|
|
% Some smart mathematical stuff
|
|
|
|
\usepackage{amsmath}
|
|
|
|
% Package for rotating several objects
|
|
|
|
\usepackage{rotating}
|
|
|
|
\usepackage{natbib}
|
|
|
|
\usepackage{epsf}
|
|
|
|
\usepackage{dsfont}
|
|
|
|
\usepackage[algochapter, boxruled, vlined]{algorithm2e}
|
|
|
|
%Activating and setting of character protruding - if you like
|
|
|
|
%\usepackage[activate,DVIoutput]{pdfcprot}
|
|
|
|
% If you really need special chars...
|
|
|
|
\usepackage[latin1]{inputenc}
|
|
|
|
% Hyperlinks
|
|
|
|
\usepackage[colorlinks,hyperindex,plainpages=false,%
|
|
|
|
pdftitle={Yosys Manual},%
|
|
|
|
pdfauthor={Clifford Wolf},%
|
|
|
|
%pdfkeywords={keyword},%
|
|
|
|
pdfpagelabels,%
|
|
|
|
pagebackref,%
|
|
|
|
bookmarksopen=false%
|
|
|
|
]{hyperref}
|
|
|
|
% For the two different reference lists ...
|
|
|
|
\usepackage{multibib}
|
|
|
|
\usepackage{multirow}
|
|
|
|
\usepackage{booktabs}
|
2014-11-08 03:59:48 -06:00
|
|
|
\usepackage{pdfpages}
|
2013-07-20 08:19:12 -05:00
|
|
|
|
|
|
|
\usepackage{listings}
|
|
|
|
\usepackage{pifont}
|
|
|
|
\usepackage{skull}
|
|
|
|
% \usepackage{draftwatermark}
|
|
|
|
|
|
|
|
\usepackage{tikz}
|
|
|
|
\usetikzlibrary{calc}
|
|
|
|
\usetikzlibrary{arrows}
|
|
|
|
\usetikzlibrary{scopes}
|
|
|
|
\usetikzlibrary{through}
|
|
|
|
\usetikzlibrary{shapes.geometric}
|
|
|
|
|
2020-11-22 14:56:29 -06:00
|
|
|
\usepackage{calc}
|
|
|
|
\usepackage[nounderscore]{syntax}
|
|
|
|
|
2013-07-20 08:19:12 -05:00
|
|
|
\lstset{basicstyle=\ttfamily}
|
|
|
|
|
|
|
|
\def\B#1{{\tt\textbackslash{}#1}}
|
|
|
|
\def\C#1{\lstinline[language=C++]{#1}}
|
|
|
|
\def\V#1{\lstinline[language=Verilog]{#1}}
|
|
|
|
|
|
|
|
\newsavebox{\fixmebox}
|
|
|
|
\newenvironment{fixme}%
|
|
|
|
{\newcommand\colboxcolor{FFBBBB}%
|
|
|
|
\begin{lrbox}{\fixmebox}%
|
|
|
|
\begin{minipage}{\dimexpr\columnwidth-2\fboxsep\relax}}
|
|
|
|
{\end{minipage}\end{lrbox}\textbf{FIXME: }\\%
|
|
|
|
\colorbox[HTML]{\colboxcolor}{\usebox{\fixmebox}}}
|
|
|
|
|
|
|
|
\newcites{weblink}{Internet References}
|
|
|
|
|
|
|
|
\setcounter{secnumdepth}{3}
|
|
|
|
\makeindex
|
|
|
|
|
|
|
|
\setlength{\oddsidemargin}{4mm}
|
|
|
|
\setlength{\evensidemargin}{-6mm}
|
|
|
|
\setlength{\textwidth}{162mm}
|
|
|
|
\setlength{\textheight}{230mm}
|
|
|
|
\setlength{\topmargin}{-5mm}
|
|
|
|
|
|
|
|
\setlength{\parskip}{1.5ex plus 1ex minus 0.5ex}
|
|
|
|
\setlength{\parindent}{0pt}
|
|
|
|
|
2013-07-25 07:00:16 -05:00
|
|
|
\lstdefinelanguage{liberty}{
|
|
|
|
morecomment=[s]{/*}{*/},
|
|
|
|
morekeywords={library,cell,area,pin,direction,function,clocked_on,next_state,clock,ff},
|
|
|
|
morestring=[b]",
|
|
|
|
}
|
|
|
|
|
|
|
|
\lstdefinelanguage{rtlil}{
|
2013-07-25 08:01:02 -05:00
|
|
|
morecomment=[l]{\#},
|
2013-07-25 07:00:16 -05:00
|
|
|
morekeywords={module,attribute,parameter,wire,memory,auto,width,offset,size,input,output,inout,cell,connect,switch,case,assign,sync,low,high,posedge,negedge,edge,always,update,process,end},
|
|
|
|
morestring=[b]",
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-20 08:19:12 -05:00
|
|
|
\begin{document}
|
|
|
|
|
|
|
|
\fancypagestyle{mypagestyle}{%
|
|
|
|
\fancyhf{}%
|
|
|
|
\fancyhead[C]{\leftmark}%
|
|
|
|
\fancyfoot[C]{\thepage}%
|
|
|
|
\renewcommand{\headrulewidth}{0pt}%
|
|
|
|
\renewcommand{\footrulewidth}{0pt}}
|
|
|
|
\pagestyle{mypagestyle}
|
|
|
|
|
|
|
|
\thispagestyle{empty}
|
|
|
|
\null\vfil
|
|
|
|
|
|
|
|
\begin{center}
|
|
|
|
\bf\Huge Yosys Manual
|
|
|
|
|
|
|
|
\bigskip
|
|
|
|
\large Clifford Wolf
|
|
|
|
\end{center}
|
|
|
|
|
|
|
|
\vfil\null
|
|
|
|
\eject
|
|
|
|
|
|
|
|
\chapter*{Abstract}
|
2014-04-11 03:42:59 -05:00
|
|
|
Most of today's digital design is done in HDL code (mostly Verilog or VHDL) and
|
2013-07-20 08:19:12 -05:00
|
|
|
with the help of HDL synthesis tools.
|
|
|
|
|
|
|
|
In special cases such as synthesis for coarse-grain cell libraries or when
|
2014-09-06 01:47:06 -05:00
|
|
|
testing new synthesis algorithms it might be necessary to write a custom HDL
|
2019-12-11 05:09:48 -06:00
|
|
|
synthesis tool or add new features to an existing one. In these cases the
|
2013-07-20 08:19:12 -05:00
|
|
|
availability of a Free and Open Source (FOSS) synthesis tool that can be used
|
|
|
|
as basis for custom tools would be helpful.
|
|
|
|
|
|
|
|
In the absence of such a tool, the Yosys Open SYnthesis Suite (Yosys) was
|
2016-04-03 07:26:56 -05:00
|
|
|
developed. This document covers the design and implementation of this tool.
|
2013-07-20 08:19:12 -05:00
|
|
|
At the moment the main focus of Yosys lies on the high-level aspects of
|
|
|
|
digital synthesis. The pre-existing FOSS logic-synthesis tool ABC is used
|
|
|
|
by Yosys to perform advanced gate-level optimizations.
|
|
|
|
|
|
|
|
An evaluation of Yosys based on real-world designs is included. It is shown
|
|
|
|
that Yosys can be used as-is to synthesize such designs. The results produced
|
2016-04-03 07:26:56 -05:00
|
|
|
by Yosys in this tests where successfully verified using formal verification
|
2014-04-11 03:42:59 -05:00
|
|
|
and are comparable in quality to the results produced by a commercial
|
2013-07-20 08:19:12 -05:00
|
|
|
synthesis tool.
|
|
|
|
|
|
|
|
\bigskip
|
|
|
|
|
|
|
|
This document was originally published as bachelor thesis at the Vienna
|
|
|
|
University of Technology \cite{BACC}.
|
|
|
|
|
|
|
|
\chapter*{Abbreviations}
|
|
|
|
\begin{tabular}{ll}
|
|
|
|
AIG & And-Inverter-Graph \\
|
|
|
|
ASIC & Application-Specific Integrated Circuit \\
|
|
|
|
AST & Abstract Syntax Tree \\
|
2016-04-03 07:26:56 -05:00
|
|
|
BDD & Binary Decision Diagram \\
|
2013-07-20 08:19:12 -05:00
|
|
|
BLIF & Berkeley Logic Interchange Format \\
|
|
|
|
EDA & Electronic Design Automation \\
|
|
|
|
EDIF & Electronic Design Interchange Format \\
|
|
|
|
ER Diagram & Entity-Relationship Diagram \\
|
|
|
|
FOSS & Free and Open-Source Software \\
|
|
|
|
FPGA & Field-Programmable Gate Array \\
|
|
|
|
FSM & Finite-state machine \\
|
|
|
|
HDL & Hardware Description Language \\
|
|
|
|
LPM & Library of Parameterized Modules \\
|
|
|
|
RTLIL & RTL Intermediate Language \\
|
|
|
|
RTL & Register Transfer Level \\
|
|
|
|
SAT & Satisfiability Problem \\
|
|
|
|
% SSA & Static Single Assignment Form \\
|
|
|
|
VHDL & VHSIC Hardware Description Language \\
|
|
|
|
VHSIC & Very-High-Speed Integrated Circuit \\
|
|
|
|
YOSYS & Yosys Open SYnthesis Suite \\
|
|
|
|
\end{tabular}
|
|
|
|
|
|
|
|
\tableofcontents
|
|
|
|
|
|
|
|
\include{CHAPTER_Intro}
|
|
|
|
\include{CHAPTER_Basics}
|
|
|
|
\include{CHAPTER_Approach}
|
|
|
|
\include{CHAPTER_Overview}
|
|
|
|
\include{CHAPTER_CellLib}
|
|
|
|
\include{CHAPTER_Prog}
|
|
|
|
|
|
|
|
\include{CHAPTER_Verilog}
|
|
|
|
\include{CHAPTER_Optimize}
|
|
|
|
\include{CHAPTER_Techmap}
|
2014-11-08 03:59:48 -06:00
|
|
|
% \include{CHAPTER_Eval}
|
2013-07-20 08:19:12 -05:00
|
|
|
|
|
|
|
\appendix
|
|
|
|
|
|
|
|
\include{CHAPTER_Auxlibs}
|
|
|
|
\include{CHAPTER_Auxprogs}
|
|
|
|
|
|
|
|
\chapter{Command Reference Manual}
|
|
|
|
\label{commandref}
|
|
|
|
\input{command-reference-manual}
|
|
|
|
|
2020-11-22 14:56:29 -06:00
|
|
|
\include{CHAPTER_TextRtlil}
|
2013-07-20 08:19:12 -05:00
|
|
|
\include{CHAPTER_Appnotes}
|
2014-11-08 03:59:48 -06:00
|
|
|
% \include{CHAPTER_StateOfTheArt}
|
2013-07-20 08:19:12 -05:00
|
|
|
|
|
|
|
\bibliography{literature}
|
|
|
|
\bibliographystyle{alphadin}
|
|
|
|
|
|
|
|
\bibliographyweblink{weblinks}
|
|
|
|
\bibliographystyleweblink{abbrv}
|
|
|
|
|
|
|
|
\end{document}
|