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