forked from github/verilator
7ab2bdb6bb
As Verilator continuously allocates and releases small objects (e.g.: AstNode, V3GraphVertex, V3GraphEdge), it spends a significant amount of time in malloc/free and friends. This patch adds the --enable-tcmalloc configure option to link Verilator against the high performance malloc implementation library libtcmalloc. The default is to use libtcmalloc if available on the system. Note that there are no source code change, we are simply replacing the standard library memory allocation functions. Measured major compilation speed improvement of 27% when running Verilator with -O3 on a large design.
180 lines
4.2 KiB
YAML
180 lines
4.2 KiB
YAML
# DESCRIPTION: Travis-CI config
|
|
#
|
|
# Copyright 2003-2019 by Todd Strader. Verilator is free software; you can
|
|
# redistribute it and/or modify it under the terms of either the GNU Lesser
|
|
# General Public License Version 3 or the Perl Artistic License Version 2.0.
|
|
|
|
version: ~> 1.0
|
|
|
|
os: linux
|
|
language: cpp
|
|
cache: ccache
|
|
|
|
env:
|
|
global:
|
|
- VERILATOR_CACHE=$HOME/verilator_cache
|
|
- VERILATOR_ROOT=$PWD
|
|
- VERILATOR_NUM_JOBS=$(echo `nproc` + 1 | bc)
|
|
- VERILATOR_CONFIG_FLAGS="--enable-maintainer-mode --enable-longtests"
|
|
- VERILATOR_AUTHOR_SITE=1
|
|
- OBJCACHE=ccache
|
|
|
|
cache:
|
|
directories:
|
|
- $VERILATOR_CACHE
|
|
|
|
before_install:
|
|
# Perl modules needed for testing
|
|
- yes yes | sudo cpan -fi Unix::Processors Parallel::Forker Bit::Vector
|
|
- sudo apt-get install gdb gtkwave
|
|
- sudo apt-get install libgoogle-perftools-dev
|
|
before_script:
|
|
- bash -x ci/build_vcddiff.sh
|
|
- bash -x ci/build_verilator.sh
|
|
after_script:
|
|
- ccache -s
|
|
|
|
stages:
|
|
- "Build Verilator"
|
|
- test
|
|
|
|
jobs:
|
|
include:
|
|
- if: type != cron
|
|
stage: "Build Verilator"
|
|
name: Build Verilator
|
|
compiler: gcc
|
|
script: echo "Done building Verilator"
|
|
# Non-cron build will just run on whatever linux flavor we get
|
|
- if: type != cron
|
|
stage: test
|
|
name: Dist test
|
|
compiler: gcc
|
|
script: ci/test.sh dist
|
|
- if: type != cron
|
|
stage: test
|
|
name: Vlt test
|
|
compiler: gcc
|
|
script: ci/test.sh vlt
|
|
- if: type != cron
|
|
stage: test
|
|
name: Vltmt test
|
|
compiler: gcc
|
|
script: ci/test.sh vltmt
|
|
# Cron builds try different OS/compiler combinations
|
|
- if: type = cron
|
|
stage: "Build Verilator"
|
|
name: Build xenial gcc Verilator
|
|
os: linux
|
|
dist: xenial
|
|
compiler: gcc
|
|
script: echo "Done building Verilator"
|
|
- if: type = cron
|
|
stage: test
|
|
name: Xenial gcc dist test
|
|
os: linux
|
|
dist: xenial
|
|
compiler: gcc
|
|
script: ci/test.sh dist
|
|
- if: type = cron
|
|
stage: test
|
|
name: Xenial gcc vlt test
|
|
os: linux
|
|
dist: xenial
|
|
compiler: gcc
|
|
script: ci/test.sh vlt
|
|
- if: type = cron
|
|
stage: test
|
|
name: Xenial gcc vltmt test
|
|
os: linux
|
|
dist: xenial
|
|
compiler: gcc
|
|
script: ci/test.sh vltmt
|
|
- if: type = cron
|
|
stage: "Build Verilator"
|
|
name: Build xenial clang Verilator
|
|
os: linux
|
|
dist: xenial
|
|
compiler: clang
|
|
script: echo "Done building Verilator"
|
|
- if: type = cron
|
|
stage: test
|
|
name: Xenial clang dist test
|
|
os: linux
|
|
dist: xenial
|
|
compiler: clang
|
|
script: ci/test.sh dist
|
|
- if: type = cron
|
|
stage: test
|
|
name: Xenial clang vlt test
|
|
os: linux
|
|
dist: xenial
|
|
compiler: clang
|
|
script: ci/test.sh vlt
|
|
- if: type = cron
|
|
stage: test
|
|
name: Xenial clang vltmt test
|
|
os: linux
|
|
dist: xenial
|
|
compiler: clang
|
|
script: ci/test.sh vltmt
|
|
# - if: type = cron
|
|
# stage: "Build Verilator"
|
|
# name: Build OSX gcc Verilator
|
|
# os: osx
|
|
# compiler: gcc
|
|
# script: echo "Done building Verilator"
|
|
# - if: type = cron
|
|
# stage: test
|
|
# name: OSX gcc dist test
|
|
# os: osx
|
|
# compiler: gcc
|
|
# script: ci/test.sh dist
|
|
# - if: type = cron
|
|
# stage: test
|
|
# name: OSX gcc vlt test
|
|
# os: osx
|
|
# compiler: gcc
|
|
# script: ci/test.sh vlt
|
|
# - if: type = cron
|
|
# stage: test
|
|
# name: OSX gcc vltmt test
|
|
# os: osx
|
|
# compiler: gcc
|
|
# script: ci/test.sh vltmt
|
|
- if: type = cron
|
|
stage: "Build Verilator"
|
|
name: Build trusty gcc Verilator
|
|
os: linux
|
|
dist: trusty
|
|
compiler: gcc
|
|
script: echo "Done building Verilator"
|
|
- if: type = cron
|
|
stage: test
|
|
name: Trusty gcc dist test
|
|
os: linux
|
|
dist: trusty
|
|
compiler: gcc
|
|
script: ci/test.sh dist
|
|
- if: type = cron
|
|
stage: test
|
|
name: Trusty gcc vlt test
|
|
os: linux
|
|
dist: trusty
|
|
compiler: gcc
|
|
script: ci/test.sh vlt
|
|
- if: type = cron
|
|
stage: test
|
|
os: linux
|
|
dist: trusty
|
|
name: Trusty gcc vltmt test
|
|
compiler: gcc
|
|
script: ci/test.sh vltmt
|
|
|
|
notifications:
|
|
email:
|
|
if: repo = verilator/verilator
|
|
recipients:
|
|
- wsnyder@wsnyder.org
|
|
- todd.strader@gmail.com
|