/* Copyright (c) 2014, Intel Corporation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ Contents: -------- This repository includes: bin/ certify_as_golden: Accepts most recent regression results as "golden". diff_golden: Shows difference between most recent regression results and "golden" regression results. m4_config.m4: Used by M4-wrapped run. make_all: Build SVGen. make_regress_all: make_all and run regressions. post_m4: Used by M4-wrapped run. pre_m4: Used by M4-wrapped run. regress_clean: Delete results of regression run. run: Runs a regression test. run_m4: Runs M4 wrapper on a .tlv file. svgen: SVGen. This is a thin wrapper around the SVGen Java application that supports the use of M4. test_svgen: The executable for each regression test. It runs M4 if needed and SVGen. test_vcs: Some regression tests can run in simulation and could be modified to use this instead of test_svgen to run SVGen (+M4 if needed) and VCS simulation. tlv_repo_context.pm: Library file for other executables. CMakeList: Build collateral used by cmake. Docs/: Documentation, mostly diagrams of SVGen data structures. Some docs are likely a bit obsolete. examples/: A directory containing regression tests (.tlv examples). (Tests are lame, since Intel-proprietary code was stripped.) m4/: Library files of M4 content for M4-extended .tlv files. README.txt/: This file. regression/: Collateral defining regression tests. src/: SVGen source files (including some 3rd party open source code). verilog/: Verilog include content used by generated SV. Requirements: ------------ For build and run: /usr/bin/cmake /usr/bin/perl /usr/bin/java /usr/bin/m4 (for those .tlv files that use it) For development: /usr/bin/meld Build: ----- In {local-clone-dir} > make_all (which does): - /usr/bin/cmake . (version 2.8.7) - make - make install Test: ---- In {local-clone-dir} > ctest -R <test-name> Log written to ./Testing/Temporary/LastTest.log Tests are defined in ./regression/CMakeLists.txt Tests run ./bin/test_svgen <test-name> which picks up where ./bin/make_all leaves off. It runs SVGen on the .tlv code to produce .sv. Some generated .sv can be run in simulation. ./bin/test_vcs was created to run test_svgen and then simulate. This obviously would require a simulator, so it is not used by default. test_svgen writes output to "regress/gen/<test-name>". Regression: ---------- In {local-clone-dir} > /usr/bin/ctest -j10 (10-way parallel) (Output written to "run/gen".) > ./bin/diff_golden > git commit -m "message" > git pull > ./bin/certify_as_golden (if okay) > git commit -m "golden certification" > git push Issues: ------ - Build process has dependency issues. Must remove /build to force rebuild. - Verilog content is assumed that is not included. Specifically, there is no definition for `GATER(...) macro (which has proprietary heritage). - Support for state signals and $ANY is disabled since support for TL-X 2a is not complete. - Regressions tests are extemely weak (with the loss of proprietary tests).