Specify "-xlrm uniq_prior_final" for VCS

As discussed in issue #845, this tells VCS to wait for signals to
settle in combinatorial blocks before checking uniqueness in
constructs like unique case.

Otherwise things like this can cause spurious warnings:

  always_comb b = ~in;

  always_comb c = in;

  always_comb begin
    unique case (1'b1)
      b: x = 1;
      c: x = 0;
      default: x = 0;  // not that it matters, but this won't happen
    endcase
  end

For example, on a falling edge of the in signal, if the processes are
executed in the order 1, 3, 2 then the unique case block will appear
to see both b and c true at the same time.
This commit is contained in:
Rupert Swarbrick 2020-05-06 15:13:17 +01:00 committed by Philipp Wagner
parent e1ec5b63f8
commit 4f349a094e
3 changed files with 3 additions and 0 deletions

View file

@ -104,6 +104,7 @@ targets:
tools:
vcs:
vcs_options:
- '-xlrm uniq_prior_final'
- '../src/lowrisc_ibex_tb_cs_registers_0/build/bin/reg_dpi.so'
- '-debug_access+all'

View file

@ -24,6 +24,7 @@
-Mdir=<out>/vcs_simv.csrc
-o <out>/vcs_simv
-debug_access+pp
-xlrm uniq_prior_final
-lca -kdb <cmp_opts> <wave_opts> <cov_opts>"
cov_opts: >
-cm line+tgl+assert+fsm+branch

View file

@ -76,6 +76,7 @@ targets:
tools:
vcs:
vcs_options:
- '-xlrm uniq_prior_final'
- '-debug_access+r'
verilator:
mode: cc