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