| \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"). |
| |
| % formats the text according the set language |
| \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} |
| \usepackage{pdfpages} |
| |
| \usepackage{listings} |
| \usepackage{pifont} |
| \usepackage{skull} |
| % \usepackage{draftwatermark} |
| |
| \usepackage{tikz} |
| \usetikzlibrary{calc} |
| \usetikzlibrary{arrows} |
| \usetikzlibrary{scopes} |
| \usetikzlibrary{through} |
| \usetikzlibrary{shapes.geometric} |
| |
| \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} |
| |
| \lstdefinelanguage{liberty}{ |
| morecomment=[s]{/*}{*/}, |
| morekeywords={library,cell,area,pin,direction,function,clocked_on,next_state,clock,ff}, |
| morestring=[b]", |
| } |
| |
| \lstdefinelanguage{rtlil}{ |
| morecomment=[l]{\#}, |
| 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]", |
| } |
| |
| |
| |
| \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} |
| Most of today's digital design is done in HDL code (mostly Verilog or VHDL) and |
| with the help of HDL synthesis tools. |
| |
| In special cases such as synthesis for coarse-grain cell libraries or when |
| testing new synthesis algorithms it might be necessary to write a custom HDL |
| synthesis tool or add new features to an existing one. It this cases the |
| 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 |
| developed. This document covers the design and implementation of this tool. |
| 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 |
| by Yosys in this tests where successfully verified using formal verification |
| and are comparable in quality to the results produced by a commercial |
| 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 \\ |
| BDD & Binary Decision Diagram \\ |
| 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} |
| % \include{CHAPTER_Eval} |
| |
| \appendix |
| |
| \include{CHAPTER_Auxlibs} |
| \include{CHAPTER_Auxprogs} |
| |
| \chapter{Command Reference Manual} |
| \label{commandref} |
| \input{command-reference-manual} |
| |
| \include{CHAPTER_Appnotes} |
| % \include{CHAPTER_StateOfTheArt} |
| |
| \bibliography{literature} |
| \bibliographystyle{alphadin} |
| |
| \bibliographyweblink{weblinks} |
| \bibliographystyleweblink{abbrv} |
| |
| \end{document} |