blob: 2b28552e5c377981417911248aedd0e1ee481c78 [file] [log] [blame]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++