\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 accourding 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{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 developped. 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 successflly 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 Decicion 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}