++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SURELOG project
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Executable: surelog
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DEV ENV Required:

- Linux (Ubuntu or Centos)

1) Unlimit all limits, in your .cshrc or .bashrc put "ulimit -s"
  that will enable gcc to compile the very large Antlr generated C++ files

2) The following tools need to be installed on your machine:
- Java jdk (For Antlr generation)
  sudo apt-get install default-jdk
- Compiler: gcc with C11 support
  g++-7
    sudo add-apt-repository ppa:jonathonf/gcc-7.2
    sudo apt-get update
    sudo apt-get install gcc-7 g++-7
- Python3.6
- uuid
- uuid-dev
- cmake
- tclsh
- maven
- git
- swig
- pkg-config
- Java "ant" build system (For G4 directory)
- IDE: >= netbeans8.2
- ddd for Core dump debug
- valgrind --tool=memcheck to check for memory corruptions
- tcmalloc

3) Surelog Source code
git clone https://github.com/alainmarcel/Surelog.git

4) Run 3rd party build script (Builds antlr4.7.2, python3.6, flatbuffer, ccache)
cd Surelog/SVIncCompil
./build3rdparty.sh

5) Build Surelog
./buildall.sh

6) Run a test
dist/Release/GNU-Linux/surelog -help
dist/Release/GNU-Linux/surelog -writepp -parse ../TESTCASES/UnitTest/top.v

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Modus operanti:

Edit the grammar file in the G4 directory, test the grammar locally with the java targets: ant compile_java; ant javac; ant test_pp_tokens
then generate for the C++ target and copy the cpp files in SVIncCompil/parser: ant compile_cpp; ant copy_cpp

Import the project SVIncCompil in NetBeans, develop using the imported antlr generated code.

Voila! 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TESTS and REGRESSIONS

Create tests in Netbeans under the Testcase directory,
 Copy an exisitng launcher in the Project Manager Launcher menu, adapt to the test

The following regression script will run all tests:
cd Testcases
./regression.tcl

Regression options:
 regression.tcl help   
 regression.tcl tests=<testname>                  (Tests matching regular expression)
                test=<testname>                   (Just that test)
                debug=<none, valgrind, ddd>
                build=<debug, advanced, release, notcmalloc, undertow>
                commit=\"commit text\"
                mt=<nbThreads>"
                large                             (large tests too)
                show_diff                         (Shows text diff)
 regression.tcl update (Updates the diffs)  


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RELEASES

./release.tcl Releases the following:

./release.tcl
Created  dist/surelog_release_notcmalloc.tar.gz
Created  dist/surelog_release_tcmalloc.tar.gz
Created  dist/surelog_debug_notcmalloc.tar.gz
Created  dist/surelog_debug_tcmalloc.tar.gz

Run this script at least once to create symbolic links for the Python Listener

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PROFILING

1)

env CPUPROFILE=./prof env LD_PRELOAD="/usr/lib/libprofiler.so"  ../../dist/Debug/GNU-Linux/surelog <test>

google-pprof --callgrind  ../../dist/Debug/GNU-Linux/surelog prof >> call

kcachegrind call 

2) GOOGLE GPERFTOOLS

sudo apt-get install google-perftools graphviz
sudo apt-get install libgoogle-perftools-dev
sudo apt-get install gperftools

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
COMPLETE BUILD

./buildall.sh
            builds precompiled packages, all execs, make the releases and run the regression


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Useful links:
IEEE Std 1800-2012
https://google.github.io/flatbuffers/flatbuffers_guide_use_cpp.html
https://www.csee.umbc.edu/portal/help/VHDL/verilog/command_line_plus_options.html
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
