Skip to content

Commit ddbf390

Browse files
committed
[nix] add coverage flow
1 parent 413b8c0 commit ddbf390

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

templates/chisel/nix/gcd/scripts/vcs-wrapper.sh

+11-7
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,41 @@ if ((${VERBOSE:-0})); then
66
set -x
77
fi
88

9+
_LIB=@lib@
910
_DATE_BIN=@dateBin@
1011
_VCS_SIM_BIN=@vcsSimBin@
1112
_VCS_SIM_DAIDIR=@vcsSimDaidir@
1213
_VCS_FHS_ENV=@vcsFhsEnv@
14+
_VCS_COV_DIR=@vcsCovDir@
1315

1416
_NOW=$("$_DATE_BIN" "+%Y-%m-%d-%H-%M-%S")
1517
_GCD_SIM_RESULT_DIR=${GCD_SIM_RESULT_DIR:-"gcd-sim-result"}
1618
_CURRENT="$_GCD_SIM_RESULT_DIR"/all/"$_NOW"
19+
_CM_ARG=""
1720
mkdir -p "$_CURRENT"
1821
ln -sfn "all/$_NOW" "$_GCD_SIM_RESULT_DIR/result"
1922

2023
cp "$_VCS_SIM_BIN" "$_CURRENT/"
2124
cp -r "$_VCS_SIM_DAIDIR" "$_CURRENT/"
2225

23-
chmod -R +w "$_CURRENT"
26+
if [ -n "$_VCS_COV_DIR" ]; then
27+
cp -vr "$_LIB/$_VCS_COV_DIR" "$_CURRENT/"
28+
_CM_ARG="-cm assert -cm_dir $_CURRENT/$_VCS_COV_DIR"
29+
fi
2430

25-
pushd "$_CURRENT" >/dev/null
31+
chmod -R +w "$_CURRENT"
2632

2733
_emu_name=$(basename "$_VCS_SIM_BIN")
2834
_daidir=$(basename "$_VCS_SIM_DAIDIR")
2935

30-
export LD_LIBRARY_PATH="$PWD/$_daidir:$LD_LIBRARY_PATH"
36+
export LD_LIBRARY_PATH="$_CURRENT/$_daidir:$LD_LIBRARY_PATH"
3137

32-
"$_VCS_FHS_ENV" -c "./$_emu_name $_EXTRA_ARGS" &> >(tee vcs-emu-journal.log)
38+
"$_VCS_FHS_ENV" -c "$_CURRENT/$_emu_name $_CM_ARG $_EXTRA_ARGS" &> >(tee $_CURRENT/vcs-emu-journal.log)
3339

3440
if ((${DATA_ONLY:-0})); then
35-
rm -f "./$_emu_name"
41+
rm -f "$_CURRENT/$_emu_name"
3642
fi
3743

3844
set -e _emu_name _daidir
3945

40-
popd >/dev/null
41-
4246
echo "VCS emulator finished, result saved in $_GCD_SIM_RESULT_DIR/result"

templates/chisel/nix/gcd/vcs.nix

+16-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
let
1414
binName = "gcd-vcs-simulator";
15+
coverageName = "coverage.vdb";
16+
enableCover = true;
1517
in
1618
stdenv.mkDerivation (finalAttr: {
1719
name = "vcs";
@@ -41,10 +43,15 @@ stdenv.mkDerivation (finalAttr: {
4143
${
4244
lib.optionalString dpi-lib.enable-trace ''
4345
-debug_access+pp+dmptf+thread \
44-
-kdb=common_elab,hgldd_all''
46+
-kdb=common_elab,hgldd_all \
47+
-assert enable_diag ''
48+
} \
49+
${
50+
lib.optionalString enableCover ''
51+
-cm line+cond+fsm+tgl+branch+assert \
52+
-cm_dir ${coverageName} ''
4553
} \
4654
-file filelist.f \
47-
-assert enable_diag \
4855
${dpi-lib}/lib/${dpi-lib.libOutName} \
4956
-o ${binName}
5057
@@ -79,11 +86,18 @@ stdenv.mkDerivation (finalAttr: {
7986
cp ${binName} $out/lib
8087
cp -r ${binName}.daidir $out/lib
8188
89+
${
90+
lib.optionalString enableCover ''
91+
cp -r ${coverageName} $out/lib''
92+
} \
93+
8294
substitute ${./scripts/vcs-wrapper.sh} $out/bin/${binName} \
95+
--subst-var-by lib "$out/lib" \
8396
--subst-var-by shell "${bash}/bin/bash" \
8497
--subst-var-by dateBin "$(command -v date)" \
8598
--subst-var-by vcsSimBin "$out/lib/${binName}" \
8699
--subst-var-by vcsSimDaidir "$out/lib/${binName}.daidir" \
100+
--subst-var-by vcsCovDir "${lib.optionalString enableCover "${coverageName}"}" \
87101
--subst-var-by vcsFhsEnv "${vcs-fhs-env}/bin/vcs-fhs-env"
88102
chmod +x $out/bin/${binName}
89103

0 commit comments

Comments
 (0)