Commit f2c08c0f authored by Fabrizio Ferrandi's avatar Fabrizio Ferrandi

Added panda 0.9.2

parent e182a0c8

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

autoreconf_log
config.h.in
core
missing
release
temp
*cmp
*o
*out
*raw
*swp
depcomp
compile
ylwrap
*.in
ar-lib
config.guess
config.sub
install-sh
ltmain.sh
aclocal.m4
This diff is collapsed.
PandA Team
Fabrizio Ferrandi, Associate Professor, Politecnico di Milano, DEI, ferrandi@elet.polimi.it
Christian Pilato, Post-doc Research Assistant, Politecnico di Milano, DEI, pilato@elet.polimi.it
Marco Lattuada, Post-doc Research Assistant, Politecnico di Milano, DEI, lattuada@elet.polimi.it
Vito Giovanni Castellana, PhD Student, Politecnico di Milano, DEI, vcastellana@elet.polimi.it
Silvia Lovergine, PhD Student, Politecnico di Milano, DEI, lovergine@elet.polimi.it
Past contributors:
Matteo Barbati
Luca Fossati
Giacomo Galbiati
Katia Turati
Other committers:
Ivan Beretta
Alessandra Bonetto
Enrico Bontempi
Stefano Bosisio
Dato Bottinelli
Luca Brambilla
Marco Brambilla
Marco Branca
Luca Briggi
Christian Brignani
Francesco Bruschi
Lorenzo Camerini
Gianluca Campo
Fabio Cancare\'
Renzo Cancho
Gianluca Cantera
Maria Nunzia Carucci
Andrea Casati
William Castiglioni
Fabrizio Castro
Valerio Catalano
Andrea Cazzaniga
Marco Ceriani
Stefano Coniglio
Vincenzo Consales
Andrea Conti
Simone Corbetta
Andrea Corti
Fulvio Cristiani
Davide Crivelli
Andrea Cuoccio
Matteo Dabeni
Nicola Dalessandro
Livio Dalloro
Murrai Davide
Luca De Marco
Luca Destito
Daniele Donghi
Karthik Duraisami
Gianluca Durelli
Edoardo Esposito
Nicholas Faustini
Matteo Ferroni
Matteo Fioroni
Paolo Franzini
Simone Froio
Paolo Fulgoni
Carmine Galeone
Matteo Galli
Matteo Gallo
Gerardo Gallucci
Marco Garatti
Luca Gattinoni
Tedis Gega
Federico Ghigini
Matteo Ghilotti
Matteo Giani
Pamela Gotti
Alberto Grassi
Paolo Roberto Grassi
Francesco Maria Guffanti
Francesco Italiano
Daniele Loiacono
Nicola Luzzara
Marco Maggioni
Francesca Malcotti
Stefano Manni
Giacomo Mantenuto
Samuele Marconi
Andrea Mariana
Davide Mariani
Alessandro Marin
Mino Martucci
Giuseppe Massari
Daniele Mastrandrea
Alessandro Mele
Alessandro Melina
Diego Mereghetti
Luca Merlo
Leonardo Mino\'
Marco Minutoli
Diego Molteni
Stefano Morandi
Nicola Mottola
Marco Muffatti
Mattia Munari
Davide Murrai
Diego Nichetti
Niccolò Olivieri
Claudia Olzeri
Stefano Orlandi
Fabrizio Palazzo
Roberto Palazzo
Alessandro Panella
Emanuele Parrinello
Andrea Pastino
Davide Pavoni
Alfredo Pelle
Raffaele Petta
Vanessa Petti
Stefano Polvara
Matteo Pusceddu
Vincenzo Rana
Massimo Ratti
Federico Recanati
Matteo Renesto
Luigi Rinaldi
Valentina Riva
Luca Rocchini
Anna Maria Rosati
Angelo Rosiello
Marco Rosini
Paolo Sala
Daniele Salvetti
Marco Santambrogio
Matteo Sassi
Riccardo Sioli
Filippo Sironi
Luca Sisler
Marco Spelta
Carlo Straccialini
Alfonso Tarantini
Michele Tartara
Federico Terraneo
Marco Triverio
Antonino Tumeo
Luca Vaccaro
Alain Vailati
Stefano Viazzi
Francesca Vignola
Alberto Volpatto
Davide Zoni
Mattia Zordan
This diff is collapsed.
=========== PANDA 0.9.2 ===========
mer 12 feb 2014, 13.22.48, CET PandA release 0.9.2
Third public release of PandA framework.
New features introduced:
- added an initial support to GCC 4.9.0,
- stable support to GCC versions: v4.5, v4.6, v4.7 (default) and v4.8,
- added an experimental support to Verilator simulator,
- new dataflow dependency analysis for LOADs and STOREs; we now use GCC alias analysis to see if a LOAD and STORE pair or a STORE and STORE pair may conflict,
- added a frontend step that optimizes PHI nodes,
- added a frontend step that performs conditionally if conversions,
- added a frontend step that performs simple code motions,
- added a frontend step that converts if chains in a single multi-if control construct,
- added a frontend step that simplifies short circuits based control constructs,
- added a proxy-based approach to the LOADs/STOREs of statically resolved pointers,
- improved EBR inference for Lattice based devices,
- now, memory models are different for Lattice, Altera, Virtex5 and Virtex6-7 based devices,
- updated FloPoCo to a more recent version,
- now, register allocation maps storage values on registers without write enable when possible,
- added support to CentOS/Scientific Linux distributions,
- added support to ArchLinux distribution,
- added support to Ubuntu 13.10 distribution,
- now, testbenches accept a user defined error for float based computations; the error is specified in ULPs units; a Unit in the Last Place is the spacing between floating-point numbers,
- improved architectural timing model,
- added a very simple symbolic estimator of number of cycles taken by a function, it mainly covers function without loops and without unbounded operations,
- general refactoring of automatic HLS testbench generation,
- added support to libm function lceil and lceilf,
- added skip-pipe-parameter option to bambu; it is is used to select a faster pipelined unit (xilinx devices have the default equal to 1 while lattice and altera devices have the default equal to 0),
- improved memory allocation when byte-enabled write memories are not needed,
- added support to variable lenght arrays,
- added support to memalign builtin,
- added EXT_PIPELINED_BRAM memory allocation policy, bambu with this option assumes that a block ram memory is allocated outside the core (LOAD with II=1 and latency=2 and STORE with latency=1),
- added 2D matrix multiplication examples for integers and single precision floating point numbers,
- added some synthesis scripts checking bambu quality of results w.r.t. 72 single precision libm functions (e.g., sqrtf, sinf, expf, tanhf, etc.),
- added spider tool to automatically generate latex tables from bambu synthesis results,
- moved all the dot generated files into directory HLS_output/dot/. Such files (scheduling, FSM, CFG, DFG, etc) are now generated when --print-dot option is passed,
- VIVADO is now the default backend flow for Zynq based devices.
Problems fixed:
- fixed all the Bison related compilation problems,
- fixed some problems with testbench generation of 2D arrays,
- fixed configuration scripts for manually installed Boost libraries; now, we need at least Boost 1.48.0,
- fixed some problems with C pretty-printing of the internal IR,
- fixed some ISE/Vivado synthesis problems when System Verilog based model are used,
- fixed some problems with --soft-float based synthesis,
- fixed RTL-backend configuration scripts looking for tools (e.g., ISE, Vivado, Quartus and Diamond) already installed,
- fixed some problems with real-to-int and int-to-real conversions, added some explicit tests to the panda regressions.
Main contributions to this release come from Fabrizio Ferrandi, Marco Minutoli, Marco Lattuada from Politecnico di Milano (Italy).
Many thanks to Razvan Nane, Berke Durak and Staf Verhaegen for their feedbacks and suggestions.
=========== PANDA 0.9.1 ===========
mar 17 set 2013, 12.33.30, CET PandA release 0.9.1
Second public release of PandA framework.
New features introduced:
- complete support of CHSTone benchmarks synthesis and verification (http://www.ertl.jp/chstone/),
- better support of multi-ported memories,
- local memory exploitation,
- read-only-memory exploitation,
- support of multi-bus for parallel memory accesses,
- support of unaligned memory accesses,
- better support of pipelined resources,
- improved module binding algorithms (e.g., slack-based module binding),
- support of resource constraints through user xml file,
- support of libc primitives: memcpy, memcmp, memset and memmove,
- better support of printf primitive for RTL debugging purposes,
- support of dynamic memory allocation,
- synthesis of libm builtin primitives such as sin, cos, acosh, etc,
- better integration with FloPoCo library (http://flopoco.gforge.inria.fr/),
- soft-float based HW synthesis,
- support of Vivado Xilinx backend,
- support of Diamond Lattice backend,
- support of XSIM Xilinx simulator,
- synthesis and testbench generation of WISHBONE B4 Compliant Accelerators (see http://cdn.opencores.org/downloads/wbspec_b4.pdf for details on the WISHBONE specification),
- synthesis of AXI4LITE Compliant Accelerators (experimental),
- inclusion of GCC regression tests to test HLS synthesis (tested HLS synthesis and RTL simulation),
- inclusion of libm regression tests to test HLS synthesis of libm (tested HLS synthesis and RTL simulation),
- support of multiple versions of GCC compiler: v4.5, v4.6 and v4.7.
- support of GCC vectorizing capability (experimental).
Main contributions to this release come from Fabrizio Ferrandi, Christian Pilato, Marco Minutoli, Marco Lattuada, Vito Giovanni Castellana and Silvia Lovergine from Politecnico di Milano (Italy).
Many thanks to Jorge Lacoste for his feedbacks and suggestions.
=========== PANDA 0.9.0 ===========
Wed Mar 14 06:50:32 CET 2012 PandA release 0.9.0
The first public release of the PandA framework mainly covers the high-level synthesis of C based descriptions.
Main contributions to this release come from Fabrizio Ferrandi, Christian Pilato and Marco Lattuada from Politecnico di Milano (Italy).
This diff is collapsed.
#this file is Makefile.am
SUBDIRS =
DIST_SUBDIRS =
if BUILD_EXT
SUBDIRS += ext
DIST_SUBDIRS += ext
endif
SUBDIRS += panda_regressions examples src etc documentation style
DIST_SUBDIRS += panda_regressions examples src etc documentation style
########################### DOC SECTION ###########################
PRJ_DOC = root.doc
DOX_TAGFILES = documentation src
EXTRA_DIST = $(PRJ_DOC) Makefile.init
#Replace acinclude.m4
ACLOCAL_AMFLAGS = -I etc/macros
#do not touch the following line
include $(top_srcdir)/panda.am
dist-hook:
$(top_srcdir)/etc/scripts/clean_configure.py $(top_srcdir)/configure.ac | grep -v "#no_release_tag" > $(distdir)/configure.ac
rm $(distdir)/missing
rm $(distdir)/configure
for file in \
$(distdir)/src/parser/polixml/xmlLexer.cpp $(distdir)/src/parser/polixml/xmlParser.hpp $(distdir)/src/parser/polixml/xmlParser.h $(distdir)/src/parser/polixml/xmlParser.cpp \
$(distdir)/src/parser/rtlgcc/rtlLexer.cpp $(distdir)/src/parser/rtlgcc/rtlParser.hpp $(distdir)/src/parser/rtlgcc/rtlParser.h $(distdir)/src/parser/rtlgcc/rtlParser.cpp \
$(distdir)/src/parser/treegcc/treeLexer.cpp $(distdir)/src/parser/treegcc/treeParser.hpp $(distdir)/src/parser/treegcc/treeParser.h $(distdir)/src/parser/treegcc/treeParser.cpp; \
do\
if test -f $$file; then\
rm $$file;\
fi \
done
cp $(top_srcdir)/etc/macros/mentor.m4.public $(distdir)/etc/macros/mentor.m4
cp $(top_srcdir)/etc/macros/panda_ext_args.m4.public $(distdir)/etc/macros/panda_ext_args.m4
default: all
all:
@if test -e src/logic_synthesis/Makefile.am; then \
cd src/logic_synthesis/2lev; make -f Makefile.init; cd ../../../; \
if test ! -d src/logic_synthesis/2lev/m4; then \
mkdir src/logic_synthesis/2lev/m4; \
fi \
fi
@if ! autoreconf -m -iv --warning=none > autoreconf_log 2>&1; then \
if `grep -q"required directory" autoreconf_log`; then \
grep -h "required directory" autoreconf_log | awk -F'directory' {'print $$2'} | awk {'print $$1'} | sort | uniq | while read -r line; do mkdir -v $$line; done; \
if ! autoreconf -m -iv --warning=none; then \
exit 1;\
fi\
else \
exit 1;\
fi \
fi
@cd ext; \
if ! autoreconf -m -iv --warning=none > autoreconf_log 2>&1; then \
if `grep -q"required directory" autoreconf_log`; then \
grep -h "required directory" autoreconf_log | awk -F'directory' {'print $$2'} | awk {'print $$1'} | sort | uniq | while read -r line; do mkdir -v $$line; done; \
if ! autoreconf -m -iv --warning=none; then \
exit 1;\
fi\
else \
exit 1;\
fi \
fi; \
cd ..
@cd etc; \
if ! autoreconf -m -iv --warning=none > autoreconf_log 2>&1; then \
if `grep -q"required directory" autoreconf_log`; then \
grep -h "required directory" autoreconf_log | awk -F'directory' {'print $$2'} | awk {'print $$1'} | sort | uniq | while read -r line; do mkdir -v $$line; done; \
if ! autoreconf -m -iv --warning=none; then \
exit 1;\
fi\
else \
exit 1;\
fi \
fi; \
cd ..
clean:
rm -rf config.* configure.scan depcomp install-sh ltmain.sh missing mkinstalldirs autom4te.cache auxdir autoscan.log aclocal.m4 configure ylwrap
cleanIN:
for a in `find . -iname Makefile.in `; do rm -f "$$a"; done
cleanOrig:
for a in `find . -iname "*.orig" `; do rm -f "$$a"; done
cleanAll: clean cleanIN cleanOrig
for a in `find . -iname "*~" `; do rm -f "$$a"; done
checkCompile :
make -f etc/scripts/Makeall all CHECKS_FILE=./check_compilation
CONFIGURE_OPTIONS=--enable-flopoco --enable-xilinx --enable-modelsim --enable-icarus --enable-verilator --enable-altera --enable-opt --enable-altera-64bit --enable-lattice --enable-release --with-mentor-license=2003@lml-1a.polimi.it:2003@lml-1b.polimi.it:2003@lml-1c.polimi.it
dist :
make -f etc/scripts/Makeall dist CONFIGURE_OPTIONS="$(CONFIGURE_OPTIONS)"
dist-spider :
make -f etc/scripts/Makeall dist-spider
documentation: all
doxygen etc/Doxyfile_all
mar 17 set 2013, 12.33.30, CEST PandA release 0.9.1
Second public release of PandA framework.
New features introduced:
- complete support of CHSTone benchmarks synthesis and verification (http://www.ertl.jp/chstone/),
- better support of multi-ported memories,
- local memory exploitation,
- read-only-memory exploitation,
- support of multi-bus for parallel memory accesses,
- support of unaligned memory accesses,
- better support of pipelined resources,
- improved module binding algorithms (e.g., slack-based module binding),
- support of resource constraints through user xml file,
- support of libc primitives: memcpy, memcmp, memset and memmove,
- better support of printf primitive for RTL debugging purposes,
- support of dynamic memory allocation,
- synthesis of libm builtin primitives such as sin, cos, acosh, etc,
- better integration with FloPoCo library (http://flopoco.gforge.inria.fr/),
- soft-float based HW synthesis,
- support of Vivado Xilinx backend,
- support of Diamond Lattice backend,
- support of XSIM Xilinx simulator,
- synthesis and testbench generation of WISHBONE B4 Compliant Accelerators (see http://cdn.opencores.org/downloads/wbspec_b4.pdf for details on the WISHBONE specification),
- synthesis of AXI4LITE Compliant Accelerators (experimental),
- inclusion of GCC regression tests to test HLS synthesis (tested HLS synthesis and RTL simulation),
- inclusion of libm regression tests to test HLS synthesis of libm (tested HLS synthesis and RTL simulation),
- support of multiple versions of GCC compiler: v4.5, v4.6 and v4.7.
- support of GCC vectorizing capability (experimental).
Main contributions to this release come from Fabrizio Ferrandi, Christian Pilato, Marco Minutoli, Marco Lattuada, Vito Giovanni Castellana and Silvia Lovergine from Politecnico di Milano (Italy).
Many thanks to Jorge Lacoste for his feedbacks and suggestions.
The primary objective of the PandA project is to develop a usable framework
that will enable the research of new ideas in the HW-SW Co-Design field.
The PandA framework includes methodologies supporting the research on high-level
synthesis of hardware accelerators, on parallelism extraction for embedded systems,
on hardware/software partitioning and mapping, on metrics for performance estimation
of embedded software applications and on dynamic reconfigurable devices.
PandA is free software, free in the sense that it respects the user’s freedom,
released under the GNU General Public License version 3 and being
developed at Politecnico di Milano (Italy).
The source files currently distributed mainly cover the high-level synthesis
of C based descriptions and are available for download through this
page http://panda.dei.polimi.it/?page_id=81.
For further information send an e-mail to panda-info@elet.polimi.it
This source diff could not be displayed because it is too large. You can view the blob instead.
#this file is documentation/Makefile.am
SUBDIRS = img
DIST_SUBDIRS = img
PRJ_DOC = \
panda.doc \
authors.doc \
license.doc \
install.doc \
panda_sdk.doc \
svn.doc \
makefiles.doc \
programming.doc \
documentation.doc \
tutorials.doc \
graphs.doc
DOX_TAGFILES = src src/utility
EXTRA_DIST = $(PRJ_DOC)
#do not touch the following line
include $(top_srcdir)/panda.am
/*
*
* _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
* _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
* _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
* _/ _/ _/ _/ _/ _/ _/ _/ _/
* _/ _/ _/ _/ _/ _/_/_/ _/ _/
*
* ***********************************************
* PandA Project
* URL: http://panda.dei.polimi.it
* Politecnico di Milano - DEIB
* System Architectures Group
* ***********************************************
* Copyright (c) 2004-2013 Politecnico di Milano
*
* This file is part of the PandA framework.
*
* The PandA framework is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*!
\page panda_authors PandA Team
\include AUTHORS
*/
/*
*
* _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
* _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
* _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
* _/ _/ _/ _/ _/ _/ _/ _/ _/
* _/ _/ _/ _/ _/ _/_/_/ _/ _/
*
* ***********************************************
* PandA Project
* URL: http://panda.dei.polimi.it
* Politecnico di Milano - DEIB
* System Architectures Group
* ***********************************************
* Copyright (c) 2004-2013 Politecnico di Milano
*
* This file is part of the PandA framework.
*
* The PandA framework is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*!
\page documentation_how_to How To Create Good Documentation
Documentation is a very important part (probably the most important) in an open-source project managed by more than one person: it is the only mean the other developers can used to know something about your work.
It is important to write a clear documentation about what your classes, structures and methods do, but it is also useful to write some tutorials and generic guidelines about how to use the functionalities you implemented.
The documentation of the PandA project is based on Doxygen, an open source documentation creator; you can find lots of details on it on the internet.
In particular a good tutorial is present at the following link: http://www.stack.nl/~dimitri/doxygen/manual.html
\section doc_code_how_to Documenting your Code
Both the external documentation of classes and methods and their internal one are important: the former one is mainly used by the user of your code (people who need to call the routines you implemented), while the latter one is important to developers who need to modify your code.
Let's start with the external documentation. It is created by using special code comments and it is used to clearly specify the purpose of the classes, methods and attributes in your code.
Though Doxygen acceps many different documentation styles, in the PandA project we decided to use only two:
-# Documentation of classes and methods must be indicated using Javadoc style
\verbatim
/**
* ....your documentation.....
*/
\endverbatim
-# Documentation of class attributes is indicated in a C# style:
\verbatim
///......your documentation....
\endverbatim
All these tags must be put before the element they refer to (i.e. before the declaration of the attribute, class, method they refer to).
All the documentation you write should be clear and meaningful:
- \b Classes should contain documentation explaining what they represent (object oriented programming says that every class should be the abstract representation of a real world object) and what are their functionalities (for example look at the already documented classes in the PandA project).
- \b Attributes should contain documentation listing what that attribute represents and, briefly, how that attribute is used in the code.
- \b Methods are, probably, the most important part in a project (they contain the functionalities of the code), so their documentation must be very carefully written: the role of each parameter must be carefully described, paying also attention to describing special situation which may happen when special values are used (for example: "if parameter \c a is equal to 0 an exception is thrown"....).
The method's return value must be also described. Moreover you should write a general explanation of the functionality implemented, possibily breafly describing the adopted algorithm.
Regarding the documentation inside the code there isn't much to say: you can write it using the normal C comment style
\verbatim
//......comment.......
\endverbatim
where you specify in it what your code does. This documentation may be useful to you to better organinze your ideas when you write the code, but it may also help other people undesrtanding \b how you implemented a functionality (\b what the functionality is should be indicated using the external method documentation as explained above).
\section ext_docs_how_to Writing External Documentation Pages
In addition to the code documentation it may be useful to have standalone documentation pages (such as this one).
They are usually placed one per folder and they contain the explanation of the overall functionality implemented by the files in the folder (usually this page contains also some examples on how to use the classes in the folder).
There is not much to say about this part, except that it may be very important and useful expecially for the pepole who know nothing about your work.
Actually there is a detail which you may find important when writing these pages: conditional documentation creation. This feature is used because PandA is a modular project, you may avoid compiling the whole of it: in case a subproject is not compiled, conditional compilation can be used to eliminate the documentation regarding that subproject. In order to use conditional compilation, simply enclose the documentation inside \c if clauses:
\verbatim
\if BAMBU
.....documentation about the BAMBU project.....
\endif
\endverbatim
\section doc_compilation_how_to Compiling the Documentation
In order to compile the documentation, simply run
\verbatim
$ make documentation
\endverbatim
inside the folder where you configured PandA (i.e. the folder in which you were when the \c configure command was executed).
*/
/*
*
* _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
* _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
* _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
* _/ _/ _/ _/ _/ _/ _/ _/ _/
* _/ _/ _/ _/ _/ _/_/_/ _/ _/
*
* ***********************************************
* PandA Project
* URL: http://panda.dei.polimi.it
* Politecnico di Milano - DEIB
* System Architectures Group
* ***********************************************
* Copyright (c) 2004-2013 Politecnico di Milano
*
* This file is part of the PandA framework.
*
* The PandA framework is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*!
\page graphs_how_to How to Use the boost::graph Library
The PandA project makes an extensive use of graphs; in particular it builds them using the boost::graph library (http://www.boost.org/libs/graph/doc/). In this page we plan to give you a short introduction on how it is possible to use a graph and on how it is possible to create a new type of graph.
*/
EXTRA_DIST=CDG_partition.png panda_flow.png ToC_CallPandAActivityDiagram.jpg \
ToC_DataFlowSequenceDiagram.jpg gcc_schema.png SDG_partition.png \
ToC_CreateRawActivityDiagram.jpg ToC_UMLUseCaseDiagram.jpg bambu_methodology.png hls_flow.png
.PHONY documentation: documentation-recursive
.PHONY documentation-tag:documentation-tag-recursive
documentation:
documentation-tag:
/*
*
* _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
* _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
* _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
* _/ _/ _/ _/ _/ _/ _/ _/ _/
* _/ _/ _/ _/ _/ _/_/_/ _/ _/
*
* ***********************************************
* PandA Project
* URL: http://panda.dei.polimi.it
* Politecnico di Milano - DEIB
* System Architectures Group
* ***********************************************
* Copyright (c) 2004-2013 Politecnico di Milano
*
* This file is part of the PandA framework.
*
* The PandA framework is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*!
\page panda_install PandA Installation
\section bambu_install Installation Instructions
In order to install the PandA framework, you need to perform the following steps:
1) Give write permission to your user on /opt:
\verbatim
$chown -R <linux-username> /opt
\endverbatim
2) Install required packages (for a Ubuntu systems, see \ref ubuntu_packages)
3) Prepare the configuration script:
\verbatim
$make -f Makefile.init
\endverbatim
4) Create the directory for the building:
\verbatim
$mkdir obj
$cd obj
\endverbatim
5) Configure PandA:
\verbatim
$../configure [--enable-<ext-library>...] --prefix=/opt/panda
\endverbatim
Currently accepted parameters are:
\verbatim
--enable-flopoco: add floating point support by exploiting FloPoCo Library
http://flopoco.gforge.inria.fr/
--enable-xilinx: enable Xilinx RTL synthesis and simulation tools execution
within the framework
--enable-altera: enable Altera RTL synthesis tool execution within the framework
--enable-altera-64bit: configure to use the 64bit version of the Altera tools
--enable-lattice: enable Lattice RTL synthesis tool execution within the framework
--enable-modelsim: enable Modelsim based simulation directly within the framework
--with-mentor-license=<license-file/license-server>
--enable-icarus: enable Icarus based simulation
http://iverilog.icarus.com/
--enable-debug: add debugging symbols to the binaries
--enable-opt: Compile the framework with GCC optimizations enabled
--enable-release: Remove further tests not useful in a production environment
\endverbatim
Note that the scripts for synthesis and simulation are generated even if the
corresponding tools are not configured as described above. In this case, the
synthesis/simulation has to be performed using the standard shell command line.
Since FloPoCo generates VHDL based description, co-simulation requires a mixed-language simulator. Modelsim from Mentor and XSIM/ISIM from Xilinx have such support.
The suggested configuration is
../configure --prefix=/opt/panda --enable-flopoco --enable-icarus --enable-xilinx --enable-modelsim --enable-altera --enable-opt --enable-altera-64bit --enable-lattice --enable-release --with-mentor-license=<license-string>
A subset of such tools is obviously acceptable.
7) Compile the tool:
\verbatim
$make
\endverbatim
8) Install the tool:
\verbatim
$make install
\endverbatim
At the end, if the installation has been successful, you can run the tool:
\verbatim
$/opt/panda/bin/bambu
\endverbatim
which prints its help message.
Additional documentation about the configuration, the execution of the test
examples and the creation of the basic documentation of the framework can be
found at: http://panda.dei.polimi.it/?page_id=88
\section testcases Testcases
In the directory examples, you can find several different testcases, with the
bash scripts for their execution.
These scripts automatically creates subdirectories containing all the results
of the execution. You can start from them to build your own hardware
accelerators with bambu.
\section install_documentation Documentation
After configuring the framework in the directory for the building, you can
create a preliminary documentation of the framework by executing the following
command:
\verbatim
$cd obj
$make documentation
\endverbatim
Then, you can start browsing the documentation from the file
obj/doc/PANDA_html/index.html
\section ubuntu_packages Ubuntu packages
The following packages have to be installed under Ubuntu to compile PandA
Ubuntu 13.04 64bit and Ubuntu 13.04 32bit:
- autoconf
- libtool
- g++
- gcc-4.6
- g++-4.6
- gcc-4.7-plugin-dev
- gcc-4.6-plugin-dev
- gcc-4.7-multilib
- gcc-4.6-multilib
- libboost-all-dev
- libmpfr-dev
- libxml2-dev
- liblzma-dev
- libmpfi-dev
- zlib1g-dev
- bison
- doxygen
- flex
- graphviz
- iverilog
In a single line:
\verbatim
sudo apt-get install autoconf libtool g++ gcc-4.6 g++-4.6 gcc-4.7-plugin-dev gcc-4.6-plugin-dev gcc-4.7-multilib gcc-4.6-multilib libboost-all-dev libmpfr-dev libxml2-dev liblzma-dev libmpfi-dev zlib1g-dev bison doxygen flex graphviz iverilog
\endverbatim
Ubuntu 12.04 LTS 64bit and Ubuntu 12.04 LTS 32bit:
- autoconf
- libtool
- g++
- gcc-4.5
- g++-4.5
- gcc-4.6-plugin-dev
- gcc-4.5-plugin-dev
- gcc-4.6-multilib
- gcc-4.5-multilib
- libboost-all-dev
- libmpfr-dev
- libxml2-dev
- liblzma-dev
- libmpfi-dev
- bison
- doxygen
- flex
- graphviz
- iverilog
In a single line:
\verbatim
sudo apt-get install autoconf libtool g++ gcc-4.5 g++-4.5 gcc-4.6-plugin-dev gcc-4.5-plugin-dev gcc-4.6-multilib gcc-4.5-multilib libboost-all-dev libmpfr-dev libxml2-dev liblzma-dev libmpfi-dev bison doxygen flex graphviz iverilog
\endverbatim
\section xilinx_notes Notes on Ubuntu 13.04 64bit and XILINX ISE 14.6
The vendor version of stdlibc++ does not have the correct versions of GLIBC for Ubuntu 13.04.
This is probably due to the fact that the tool is loading a mixture of system libraries and vendor libraries.
The solution is to replace the xilinx version of stdlibc++ with the system version:
In case ISE is installed in /opt/Xilinx/14.6/ the solution is:
\verbatim
$cd /opt/Xilinx/14.6/ISE_DS/ISE//lib/lin64/
$sudo mv libstdc++.so.6 libstdc++.so.6.orig
$sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
\endverbatim
\section lattice_notes Notes on Ubuntu 13.04 64bit and Lattice Diamond 2.2
Lattice Diamond is currently distributed in rpm form for Linux distributions. To convert an rpm archive file in a .deb you can use the following instructions:
\verbatim
$sudo apt-get install alien
$sudo alien diamond_2_2-base_x64-101-x86_64-linux.rpm
\endverbatim
once the package has been converted you can install with:
\verbatim
$sudo dpkg -i diamond-2-2-base-x64_2.2-102_amd64.deb
\endverbatim
\section altera_notes Notes on Ubuntu 13.04 64bit and Altera Quartus II
64bit version of Quartus II tools could be enabled by adding the --enable-altera-64bit beside the standard --enable-altera option.
\section modelsim_notes Notes on Modelsim
PandA/bambu supports both Modelsim full version than Student/Free version by adding --enable-modelsim option to the PandA configure.
In case the Free/Student version of Modelsim is used, PandA/bambu should be configured by further adding the --disable-mentor-optimizer option. The Student/Free version does not have the optimization feature.
\section backend_notes Notes on backend installation directories
PandA/bambu automatically looks for the RTL synthesis/simulation backend once they are enabled. By default it looks into specific directories of the file system.
For Altera it checks this set of directories /opt/altera/*/quartus
For Lattice it checks this set of directories /usr/local/diamond/*
For Mentor it checks this set of directories /opt/mentor/*
For Xilinx ISE it checks these sets of directories /opt/Xilinx/* and /opt/Xilinx/*/ISE*
For Xilinx VIVADO it checks this set of directories /opt/Xilinx/Vivado/*
Anyway, it is possible to specifies different position of the file-system where the configuration script looks into.
This is the list of the option that may be useful for this purpose:
--with-altera-dir=DIR where the root of ALTERA tools are installed
--with-lattice-dir=DIR where the root of LATTICE tools are installed
--with-mentor-dir=DIR where the root of MENTOR tools are installed
--with-xilinx-root-dir=DIR where the root of XILINX tools are installed
*/
/*
*
* _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
* _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
* _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
* _/ _/ _/ _/ _/ _/ _/ _/ _/
* _/ _/ _/ _/ _/ _/_/_/ _/ _/
*
* ***********************************************
* PandA Project
* URL: http://panda.dei.polimi.it
* Politecnico di Milano - DEIB
* System Architectures Group
* ***********************************************
* Copyright (c) 2004-2013 Politecnico di Milano
*
* This file is part of the PandA framework.
*
* The PandA framework is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*!
\page panda_license PandA License
\verbatim
PandA Project
URL: http://panda.dei.polimi.it
Micro Architecture Laboratory
Politecnico di Milano - DEIB
System Architectures Group
**********************************************
Copyright (c) 2004-2013 Politecnico di Milano
\endverbatim
\include COPYING
*/
This diff is collapsed.
This diff is collapsed.
/*
*
* _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
* _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
* _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
* _/ _/ _/ _/ _/ _/ _/ _/ _/
* _/ _/ _/ _/ _/ _/_/_/ _/ _/
*
* ***********************************************
* PandA Project
* URL: http://panda.dei.polimi.it
* Politecnico di Milano - DEIB
* System Architectures Group
* ***********************************************
* Copyright (c) 2004-2013 Politecnico di Milano
*
* This file is part of the PandA framework.
*
* The PandA framework is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*!
\page panda_sdk Development Tools
This document provides information on:
- \ref graphviz_tag
- \ref doxygen_tag
\section graphviz_tag GraphViz
The GraphViz package consists of a variety of software for drawing attributed graphs.
The package was designed to rely on the "program-as-filter" model of
software, in which distinct graph operations or transformations are embodied as programs.
Graph drawing and manipulation are achieved by using the output of one filter as the input
of another, with each filter recognizing a common graph format [GAN00].
Despite the simplicity and utility of this approach, some applications need or desire to
use the software as a library with bindings in a non-scripting language, rather than as
primitives composed by a scripting language. The GraphViz software provides a variety of
ways to achieve this, running a spectrum from very simple but somewhat inflexible
to fairly complex but offering a good deal of application control [ERG03].
\subsection graphviz_dot GraphViz tools and DOT language
One of the tools provided by GraphViz tool set is \c dot.
The \c dot tool draws directed graphs as hierarchies. It runs as a command line program.
Its features include well-tuned layout algorithms for placing nodes and edge splines,
edge labels, "record" shapes with "ports" for drawing data structures; cluster layouts;
and an underlying file language for stream-oriented graph tools.
\c dot reads attributed graph text files and writes drawings, either as graph files or in a
graphics format such as GIF, PNG, SVG or PostScript (which can be converted to PDF).
\c dot accepts input in the \c DOT language. An example of graph description based on \c DOT
language is the following:
\verbatim
digraph G {
main -> parse -> execute;
main -> init;
main -> cleanup;
execute -> make_string;
execute ->printf;
init -> make_string;
main -> printf;
execute -> compare;
}
\endverbatim
A node is created when its name first appears in the file. An edge is created when nodes
are joined by the edge operator ->.
In the following line is described an edge between node main and node init.
\verbatim
main -> init;
\endverbatim
It is quite simple to create the postscript file from the above text file. In fact, it is
only required to run the following command provided the name of file is small_graph.dot:
\verbatim
dot -Tps small_graph.dot -o small_graph.ps
\endverbatim
The graph produced is:
\dot
digraph G {
main -> parse -> execute;
main -> init;
main -> cleanup;
execute -> make_string;
execute ->printf;
init -> make_string;
main -> printf;
execute -> compare;
}
\enddot
The command line option \c -Tps selects PostScript (EPSF) output. \c small_graph.ps may be
printed, displayed by a PostScript viewer, or embedded in another document.
Another useful tool based on \c dot is \c dotty which is a graph editor for the X Window System.
\subsection graphviz_documentation Documentation
Documentation about GraphViz and the DOT language can be found at http://www.research.att.com/sw/tools/graphviz/refs.html .
\subsection graphviz_download Download
It is possible to download the last version of the GraphViz tool both for Windows and Linux
from the official website: http://www.graphviz.org/pub/graphviz/CURRENT/.
\subsection graphviz_bibliography Bibliography
- [ERG03] Emden R. Gansner, Drawing graphs with GraphViz, 15 Aprile 2003.
- [GNA00] E.R. Gansner and S.C. North. An open graph visualization system and its applications to software engineering. Software - Practice and Experience, 30:1203-1233, 2000.
\section doxygen_tag Doxygen
\c Doxygen is a documentation system for C++, C, Java, Objective-C, IDL (Corba and Microsoft
flavors) and to some extent PHP, C# and D.
It can help you in three ways:
- It can generate an on-line documentation browser (in HTML) and/or an off-line reference
manual (in LateX) from a set of documented source files. There is also support for
generating output in RTF (MS-Word), PostScript, hyperlinked PDF, compressed HTML, and
Unix man pages. The documentation is extracted directly from the sources, which makes it
much easier to keep the documentation consistent with the source code.
- You can configure \c doxygen to extract the code structure from undocumented source files.
This is very useful to quickly find your way in large source distributions. You can also
visualize the relations between the various elements by means of include dependency graphs,
inheritance diagrams, and collaboration diagrams, which are all generated automatically.
- You can even `abuse' \c doxygen for creating normal documentation.
Doxygen is developed under Linux, but is set-up to be highly portable. As a result, it runs on most other Unix flavors as well. Furthermore, executables for Windows 9x/NT and Mac OS X are available.
\subsection doxygen_download Download
Each Linux distribution provides Doxygen as developing tool, therefore before download it please check the web site check
your distribution. The official WEB site is http://www.doxygen.org/.
\subsection doxygen_documentation Documentation
Official documentation can be found at http://www.doxygen.org/manual.html .
\subsection doxygen_panda_doc Documenting code in PandA
To know how to write a good documentation into PandA project, please see \ref documentation_how_to.
*/
This diff is collapsed.
This diff is collapsed.
/*
*
* _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
* _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
* _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
* _/ _/ _/ _/ _/ _/ _/ _/ _/
* _/ _/ _/ _/ _/ _/_/_/ _/ _/
*
* ***********************************************
* PandA Project
* URL: http://panda.dei.polimi.it
* Politecnico di Milano - DEIB
* System Architectures Group
* ***********************************************
* Copyright (c) 2004-2013 Politecnico di Milano
*
* This file is part of the PandA framework.
*
* The PandA framework is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*!
\page tutorials_page Tutorials
This page contains some tutorials which may help during the utilization of the PandA project. In particular, these tutorials are directed towards the developers and they should provide them some guidelines to help them producing better code.
- \ref svn
- \ref documentation_how_to contains hints on how to create good and useful documentation files
- \ref makefiles_how_to is a short tutorial showing how to write good makefiles for PandA
- \ref programming_style list the conventions and the guidelines which you should follow to produce good code
- \ref graphs_how_to contains a brief explanation with examples on how it is possible to use the boost::graph library
*/
PandA Team
Fabrizio Ferrandi, Associate Professor, Politecnico di Milano, DEI, ferrandi@elet.polimi.it
Christian Pilato, Post-doc Research Assistant, Politecnico di Milano, DEI, pilato@elet.polimi.it
Marco Lattuada, Post-doc Research Assistant, Politecnico di Milano, DEI, lattuada@elet.polimi.it
Vito Giovanni Castellana, PhD Student, Politecnico di Milano, DEI, vcastellana@elet.polimi.it
Silvia Lovergine, PhD Student, Politecnico di Milano, DEI, lovergine@elet.polimi.it
Past contributors:
Matteo Barbati
Luca Fossati
Giacomo Galbiati
Katia Turati
Other committers:
Ivan Beretta
Alessandra Bonetto
Enrico Bontempi
Stefano Bosisio
Dato Bottinelli
Luca Brambilla
Marco Brambilla
Marco Branca
Luca Briggi
Christian Brignani
Francesco Bruschi
Lorenzo Camerini
Gianluca Campo
Fabio Cancare\'
Renzo Cancho
Gianluca Cantera
Maria Nunzia Carucci
Andrea Casati
William Castiglioni
Fabrizio Castro
Valerio Catalano
Andrea Cazzaniga
Marco Ceriani
Stefano Coniglio
Vincenzo Consales
Andrea Conti
Simone Corbetta
Andrea Corti
Fulvio Cristiani
Davide Crivelli
Andrea Cuoccio
Matteo Dabeni
Nicola Dalessandro
Livio Dalloro
Murrai Davide
Luca De Marco
Luca Destito
Daniele Donghi
Karthik Duraisami
Gianluca Durelli
Edoardo Esposito
Nicholas Faustini
Matteo Ferroni
Matteo Fioroni
Paolo Franzini
Simone Froio
Paolo Fulgoni
Carmine Galeone
Matteo Galli
Matteo Gallo
Gerardo Gallucci
Marco Garatti
Luca Gattinoni
Tedis Gega
Federico Ghigini
Matteo Ghilotti
Matteo Giani
Pamela Gotti
Alberto Grassi
Paolo Roberto Grassi
Francesco Maria Guffanti
Francesco Italiano
Daniele Loiacono
Nicola Luzzara
Marco Maggioni
Francesca Malcotti
Stefano Manni
Giacomo Mantenuto
Samuele Marconi
Andrea Mariana
Davide Mariani
Alessandro Marin
Mino Martucci
Giuseppe Massari
Daniele Mastrandrea
Alessandro Mele
Alessandro Melina
Diego Mereghetti
Luca Merlo
Leonardo Mino\'
Marco Minutoli
Diego Molteni
Stefano Morandi
Nicola Mottola
Marco Muffatti
Mattia Munari
Davide Murrai
Diego Nichetti
Niccolò Olivieri
Claudia Olzeri
Stefano Orlandi
Fabrizio Palazzo
Roberto Palazzo
Alessandro Panella
Emanuele Parrinello
Andrea Pastino
Davide Pavoni
Alfredo Pelle
Raffaele Petta
Vanessa Petti
Stefano Polvara
Matteo Pusceddu
Vincenzo Rana
Massimo Ratti
Federico Recanati
Matteo Renesto
Luigi Rinaldi
Valentina Riva
Luca Rocchini
Anna Maria Rosati
Angelo Rosiello
Marco Rosini
Paolo Sala
Daniele Salvetti
Marco Santambrogio
Matteo Sassi
Riccardo Sioli
Filippo Sironi
Luca Sisler
Marco Spelta
Carlo Straccialini
Alfonso Tarantini
Michele Tartara
Federico Terraneo
Marco Triverio
Antonino Tumeo
Luca Vaccaro
Alain Vailati
Stefano Viazzi
Francesca Vignola
Alberto Volpatto
Davide Zoni
Mattia Zordan
This diff is collapsed.
=========== PANDA 0.9.1 ===========
mar 17 set 2013, 12.33.30, CEST PandA release 0.9.1
Second public release of PandA framework.
New features introduced:
- complete support of CHSTone benchmarks synthesis and verification (http://www.ertl.jp/chstone/),
- better support of multi-ported memories,
- local memory exploitation,
- read-only-memory exploitation,
- support of multi-bus for parallel memory accesses,
- support of unaligned memory accesses,
- better support of pipelined resources,
- improved module binding algorithms (e.g., slack-based module binding),
- support of libc primitives: memcpy, memcmp, memset and memmove,
- better support of printf primitive for RTL debugging purposes,
- support of dynamic memory allocation,
- synthesis of libm builtin primitives such as sin, cos, acosh, etc,
- better integration with FloPoCo library (http://flopoco.gforge.inria.fr/),
- soft-float based HW synthesis,
- support of Vivado Xilinx backend,
- support of Diamond Lattice backend,
- support of XSIM Xilinx simulator,
- synthesis and testbench generation of WISHBONE B4 Compliant Accelerators (see http://cdn.opencores.org/downloads/wbspec_b4.pdf for details on the WISHBONE specification),
- synthesis of AXI4LITE Compliant Accelerators (experimental),
- inclusion of GCC regression tests to test HLS synthesis (tested HLS synthesis and RTL simulation),
- inclusion of libm regression tests to test HLS synthesis of libm (tested HLS synthesis and RTL simulation),
- support of multiple versions of GCC compiler: v4.5, v4.6 and v4.7.
- support of GCC vectorizing capability (experimental).
Main contributions to this release come from Fabrizio Ferrandi, Christian Pilato, Marco Minutoli, Marco Lattuada, Vito Giovanni Castellana and Silvia Lovergine from Politecnico di Milano (Italy).
Many thanks to Jorge Lacoste for his feedbacks and suggestions.
=========== PANDA 0.9.0 ===========
Wed Mar 14 06:50:32 CET 2012 PandA release 0.9.0
The first public release of the PandA framework mainly covers the high-level synthesis of C based descriptions.
Main contributions to this release come from Fabrizio Ferrandi, Christian Pilato and Marco Lattuada from Politecnico di Milano (Italy).
This diff is collapsed.
Installation Instructions
*************************
In order to install the PandA framework, you need to perform the following steps:
1) Give write permission to your user on /opt:
$chown -R <linux-username> /opt
2) Install required packages (for a Ubuntu systems, see below)
3) Prepare the configuration script:
$make -f Makefile.init
4) Create the directory for the building:
$mkdir obj
$cd obj
5) Configure PandA:
$../configure [--enable-<ext-library>...] --prefix=/opt/panda
Currently accepted parameters are:
--enable-flopoco: add floating point support by exploiting FloPoCo Library
http://flopoco.gforge.inria.fr/
--enable-xilinx: enable Xilinx RTL synthesis and simulation tools execution
within the framework
--enable-altera: enable Altera RTL synthesis tool execution within the framework
--enable-altera-64bit: configure to use the 64bit version of the Altera tools
--enable-lattice: enable Lattice RTL synthesis tool execution within the framework
--enable-modelsim: enable Modelsim based simulation directly within the framework
--with-mentor-license=<license-file/license-server>
--enable-icarus: enable Icarus based simulation
http://iverilog.icarus.com/
--enable-debug: add debugging symbols to the binaries
--enable-opt: Compile the framework with GCC optimizations enabled
--enable-release: Remove further tests not useful in a production environment
Note that the scripts for synthesis and simulation are generated even if the
corresponding tools are not configured as described above. In this case, the
synthesis/simulation has to be performed using the standard shell command line.
Since FloPoCo generates VHDL based description, co-simulation requires a mixed-language simulator. Modelsim from Mentor and XSIM/ISIM from Xilinx have such support.
The suggested configuration is
../configure --prefix=/opt/panda --enable-flopoco --enable-icarus --enable-xilinx --enable-modelsim --enable-altera --enable-opt --enable-altera-64bit --enable-lattice --enable-release --with-mentor-license=<license-string>
A subset of such tools is obviously acceptable.
7) Compile the tool:
$make
8) Install the tool:
$make install
At the end, if the installation has been successful, you can run the tool:
$/opt/panda/bin/bambu
which prints its help message.
Additional documentation about the configuration, the execution of the test
examples and the creation of the basic documentation of the framework can be
found at: http://panda.dei.polimi.it/?page_id=88
Testcases
*********
In the directory examples, you can find several different testcases, with the
bash scripts for their execution.
These scripts automatically creates subdirectories containing all the results
of the execution. You can start from them to build your own hardware
accelerators with bambu.
Documentation
*************
After configuring the framework in the directory for the building, you can
create a preliminary documentation of the framework by executing the following
command:
$cd obj
$make documentation
Then, you can start browsing the documentation from the file
obj/doc/PANDA_html/index.html
Ubuntu packages
***************
The following packages have to be installed under Ubuntu to compile PandA
Ubuntu 13.04 64bit and Ubuntu 13.04 32bit:
- autoconf
- libtool
- g++
- gcc-4.6
- g++-4.6
- gcc-4.7-plugin-dev
- gcc-4.6-plugin-dev
- gcc-4.7-multilib
- gcc-4.6-multilib
- libboost-all-dev
- libmpfr-dev
- libxml2-dev
- liblzma-dev
- libmpfi-dev
- zlib1g-dev
- bison
- doxygen
- flex
- graphviz
- iverilog
In a single line:
sudo apt-get install autoconf libtool g++ gcc-4.6 g++-4.6 gcc-4.7-plugin-dev gcc-4.6-plugin-dev gcc-4.7-multilib gcc-4.6-multilib libboost-all-dev libmpfr-dev libxml2-dev liblzma-dev libmpfi-dev zlib1g-dev bison doxygen flex graphviz iverilog
Ubuntu 12.04 LTS 64bit and Ubuntu 12.04 LTS 32bit:
- autoconf
- libtool
- g++
- gcc-4.5
- g++-4.5
- gcc-4.6-plugin-dev
- gcc-4.5-plugin-dev
- gcc-4.6-multilib
- gcc-4.5-multilib
- libboost-all-dev
- libmpfr-dev
- libxml2-dev
- liblzma-dev
- libmpfi-dev
- bison
- doxygen
- flex
- graphviz
- iverilog
In a single line:
sudo apt-get install autoconf libtool g++ gcc-4.5 g++-4.5 gcc-4.6-plugin-dev gcc-4.5-plugin-dev gcc-4.6-multilib gcc-4.5-multilib libboost-all-dev libmpfr-dev libxml2-dev liblzma-dev libmpfi-dev bison doxygen flex graphviz iverilog
Notes on Ubuntu 13.04 64bit and XILINX ISE 14.6
*************
The vendor version of stdlibc++ does not have the correct versions of GLIBC for Ubuntu 13.04.
This is probably due to the fact that the tool is loading a mixture of system libraries and vendor libraries.
The solution is to replace the xilinx version of stdlibc++ with the system version:
In case ISE is installed in /opt/Xilinx/14.6/ the solution is:
$cd /opt/Xilinx/14.6/ISE_DS/ISE//lib/lin64/
$sudo mv libstdc++.so.6 libstdc++.so.6.orig
$sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Notes on Ubuntu 13.04 64bit and Lattice Diamond 2.2
*************
Lattice Diamond is currently distributed in rpm form for Linux distributions. To convert an rpm archive file in a .deb you can use the following instructions:
$sudo apt-get install alien
$sudo alien diamond_2_2-base_x64-101-x86_64-linux.rpm
once the package has been converted you can install with:
$sudo dpkg -i diamond-2-2-base-x64_2.2-102_amd64.deb
Notes on Ubuntu 13.04 64bit and Altera Quartus II
*************
64bit version of Quartus II tools could be enabled by adding the --enable-altera-64bit beside the standard --enable-altera option.
Notes on Modelsim
*************
PandA/bambu supports both Modelsim full version than Student/Free version by adding --enable-modelsim option to the PandA configure.
In case the Free/Student version of Modelsim is used, PandA/bambu should be configured by further adding the --disable-mentor-optimizer option. The Student/Free version does not have the optimization feature.
Notes on backend installation directories
*************
PandA/bambu automatically looks for the RTL synthesis/simulation backend once they are enabled. By default it looks into specific directories of the file system.
For Altera it checks this set of directories /opt/altera/*/quartus
For Lattice it checks this set of directories /usr/local/diamond/*
For Mentor it checks this set of directories /opt/mentor/*
For Xilinx ISE it checks these sets of directories /opt/Xilinx/* and /opt/Xilinx/*/ISE*
For Xilinx VIVADO it checks this set of directories /opt/Xilinx/Vivado/*
Anyway, it is possible to specifies different position of the file-system where the configuration script looks into.
This is the list of the option that may be useful for this purpose:
--with-altera-dir=DIR where the root of ALTERA tools are installed
--with-lattice-dir=DIR where the root of LATTICE tools are installed
--with-mentor-dir=DIR where the root of MENTOR tools are installed
--with-xilinx-root-dir=DIR where the root of XILINX tools are installed
SUBDIRS = devices macros scripts
DIST_SUBDIRS = devices macros scripts
if BUILD_GCC_PLUGIN
SUBDIRS += gcc_plugin
DIST_SUBDIRS += gcc_plugin
endif
if BUILD_LIBBAMBU
SUBDIRS += lib libbambu
DIST_SUBDIRS += lib libbambu
endif
if BUILD_LATEX_TABLE_FORMAT
SUBDIRS += latex_table_format
DIST_SUBDIRS += latex_table_format
endif
EXTRA_DIST = Doxyfile
#Replace acinclude.m4
ACLOCAL_AMFLAGS = -I ../etc/macros
.PHONY documentation: documentation-recursive
.PHONY documentation-tag:documentation-tag-recursive
documentation:
documentation-tag:
dist-hook:
$(top_srcdir)/scripts/clean_configure.py $(top_srcdir)/configure.ac | grep -v "#no_release_tag" > $(distdir)/configure.ac
mar 17 set 2013, 12.33.30, CEST PandA release 0.9.1
Second public release of PandA framework.
New features introduced:
- complete support of CHSTone benchmarks synthesis and verification (http://www.ertl.jp/chstone/),
- better support of multi-ported memories,
- local memory exploitation,
- read-only-memory exploitation,
- support of multi-bus for parallel memory accesses,
- support of unaligned memory accesses,
- better support of pipelined resources,
- improved module binding algorithms (e.g., slack-based module binding),
- support of resource constraints through user xml file,
- support of libc primitives: memcpy, memcmp, memset and memmove,
- better support of printf primitive for RTL debugging purposes,
- support of dynamic memory allocation,
- synthesis of libm builtin primitives such as sin, cos, acosh, etc,
- better integration with FloPoCo library (http://flopoco.gforge.inria.fr/),
- soft-float based HW synthesis,
- support of Vivado Xilinx backend,
- support of Diamond Lattice backend,
- support of XSIM Xilinx simulator,
- synthesis and testbench generation of WISHBONE B4 Compliant Accelerators (see http://cdn.opencores.org/downloads/wbspec_b4.pdf for details on the WISHBONE specification),
- synthesis of AXI4LITE Compliant Accelerators (experimental),
- inclusion of GCC regression tests to test HLS synthesis (tested HLS synthesis and RTL simulation),
- inclusion of libm regression tests to test HLS synthesis of libm (tested HLS synthesis and RTL simulation),
- support of multiple versions of GCC compiler: v4.5, v4.6 and v4.7.
- support of GCC vectorizing capability (experimental).
Main contributions to this release come from Fabrizio Ferrandi, Christian Pilato, Marco Minutoli, Marco Lattuada, Vito Giovanni Castellana and Silvia Lovergine from Politecnico di Milano (Italy).
Many thanks to Jorge Lacoste for his feedbacks and suggestions.
The primary objective of the PandA project is to develop a usable framework
that will enable the research of new ideas in the HW-SW Co-Design field.
The PandA framework includes methodologies supporting the research on high-level
synthesis of hardware accelerators, on parallelism extraction for embedded systems,
on hardware/software partitioning and mapping, on metrics for performance estimation
of embedded software applications and on dynamic reconfigurable devices.
PandA is free software, free in the sense that it respects the user’s freedom,
released under the GNU General Public License version 3 and being
developed at Politecnico di Milano (Italy).
The source files currently distributed mainly cover the high-level synthesis
of C based descriptions and are available for download through this
page http://panda.dei.polimi.it/?page_id=81.
For further information send an e-mail to panda-info@elet.polimi.it
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#this is file ASIC/Makefile.am
DOX_TAGFILES =
EXTRA_DIST = Nangate_device.xml Nangate.xml characterize.sh Nangate_device-seed.xml
#do not touch the following line
include $(top_srcdir)/panda.am
<?xml version="1.0"?>
<synthesis>
<flow name="Synthesis">
<step id="dc_shell" config="Synthesis"/>
</flow>
<flow name="Characterization">
<step id="dc_shell" config="Synthesis"/>
</flow>
<dc_shell config="Synthesis">
<set name="search_path" value="${__dc_search_path__}" condition="${__dc_search_path__}"/>
<set name="link_library" value="${__dc_link_library__}"/>
<set name="target_library" value="${__dc_target_library__}"/>
<!-- Analyze and elaborate design modules -->
<if condition="${__dc_top__}">
<then>
<cmd name="analyze">
<param name="-f" value="${__dc_top_filetype__}"/>
<param value="${__dc_HDL_file__}"/>
</cmd>
<cmd name="elaborate" value="${__dc_top__}"/>
<cmd name="set_design_top" value="${__dc_top__}"/>
<cmd name="current_design" value="${__dc_top__}"/>
</then>
<else>
<cmd name="read_${__dc_top_filetype__}" value="${__dc_HDL_file__}"/>
</else>
</if>
<!-- Link the current netlist with the corresponding initial library -->
<cmd name="link"/>
<!-- <cmd name="uniquify"/> -->
<cmd name="check_design"/>
<!-- Set design constraints -->
<cmd name="read_sdc" value="${__dc_constraint_file__}" condition="${__dc_constraint_file__}"/>
<if condition="${__dc_max_area__}">
<then>
<cmd name="set_max_area" value="${__dc_max_area__}"/>
</then>
<else>
<cmd name="set_max_area" value="0"/>
</else>
</if>
<cmd name="set_zero_interconnect_delay_mode" value="true" condition="${__dc_zero_interconnect_delay__}"/>
<cmd name="set_dont_use" value="${__dc_dont_use__}" condition="${__dc_dont_use__}"/>
<cmd name="set_max_delay" value="${__dc_max_delay__}" condition="${__dc_max_delay__}">
<param name="-to" value='[get_ports "*" -filter {@port_direction == out}]'/>
</cmd>
<!-- Compile the current design -->
<set name="startTime" value="[clock clicks -milliseconds]"/>
<set name="result" value="[compile]" condition="${__dc_compile_effort_medium__}"/>
<set name="result" value="[compile -area_effort high -map_effort high]" condition="${__dc_compile_effort_high__}"/>
<set name="result" value="[compile_ultra -no_autoungroup -area_high_effort_script]" condition="${__dc_compile_effort_ultra__}"/>
<set name="stop_time" value="[clock clicks -milliseconds]"/>
<set name="Time" value="[expr ($stopTime - $startTime)*1000]"/>
<cmd name="echo" value='"$Time microseconds per iteration"'/>
<cmd name="echo" value='"RESULT SYNTHESIS: $result"'/>
<!-- Save the compiled design -->
<cmd name="define_name_rules" value="MYRULES">
<param name="-check_bus_indexing"/>
<param name="-allowed" value="{a-z 0-9 _ []}"/>
<param name="-remove_internal_net_bus"/>
<param name="-flatten_multi_dimension_busses"/>
<param name="-add_dummy_nets"/><!-- NOTE: the old "-add_dummy_nets_in_verilog_out LABEL_%d" is deprecated -->
</cmd>
<cmd name="change_names">
<param name="-rule" value="MYRULES"/>
<param name="-hierarchy"/>
</cmd>
<cmd name="write_file">
<param name="-format" value="verilog"/>
<param name="-output" value="${__dc_target__}"/>
<param name="-hierarchy"/>
</cmd>
<cmd name="write_sdc" value="${__dc_output_dir__}/post_constraints.sdc"/>
<!-- Write reports -->
<sh name="rm">
<param name="-f" value="${__dc_output_dir__}/area_report.log"/>
</sh>
<cmd name="report_area" output="${__dc_output_dir__}/area_report.log"/>
<sh name="rm">
<param name="-f" value="${__dc_output_dir__}/cell_report.log"/>
</sh>
<cmd name="report_cell" output="${__dc_output_dir__}/cell_report.log">
<param name="-nosplit"/>
</cmd>
<sh name="rm">
<param name="-f" value="${__dc_output_dir__}/time_report.log"/>
</sh>
<cmd name="report_timing" output="${__dc_output_dir__}/time_report.log">
<param name="-nworst" value="10"/>
<param name="-sig" value="3"/>
</cmd>
<if condition="${__dc_report_power__}">
<then>
<sh name="rm">
<param name="-f" value="${__dc_output_dir__}/power_report.log"/>
</sh>
<cmd name="report_power" output="${__dc_output_dir__}/power_report.log"/>
</then>
<else/>
</if>
<cmd name="exit"/>
</dc_shell>
</synthesis>
This diff is collapsed.
This diff is collapsed.
#! /bin/bash
for devices in Nangate_device; do
mkdir -p "$devices-DIR"
cd "$devices-DIR"
/opt/panda/bin/eucalyptus --target-device-type=ASIC --estimate-library="../$devices.xml" --target-scriptfile=../Nangate.xml --target-datafile="../$devices-seed.xml" -v2 >& "$devices.log" &
cd ..
done
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment