++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
- g++-7
- 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
- Compiler: gcc with C14 support
- 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



- GOOGLE GPERFTOOLS

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


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

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:
cd Testcases
./regression.tcl

will run all tests.
See script help in the comments:
#  regression.tcl tests=<testname>                  (Tests matching regular expression)
#                 test=<testname>                   (Just that test)
#                 debug=<none, valgrind, ddd>
#                 build=<debug, release, notcmalloc>
#                 commit="commit text"

Do not use git commit directly, let the regression script do the commit iff all regressions pass.
To store your git credentials on disk so the script can do the push:
git config credential.helper store
git push


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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

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 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
