Reply To: All AffirmIf Pass, but OSVVM HTML Report Returns NOCHECKS

Why OSVVM™? Forums OSVVM All AffirmIf Pass, but OSVVM HTML Report Returns NOCHECKS Reply To: All AffirmIf Pass, but OSVVM HTML Report Returns NOCHECKS

#2747
Jim Lewis
Member

If the CoverReport process is removed, then the “Stim” process can end with std.env.stop – which is typically how OSVVM ends the test cases.

-- Stimulus Generator
Stim: process
    variable RandA : RandomPType;
    variable RandB : RandomPType;
    variable allDone : boolean := false;
    variable nCycles : natural := 0;
begin
    SetTestName("tb_osvvm_comparator_VHDL");    
    SetLogEnable(INFO, TRUE);
    SetLogEnable(PASSED, TRUE);

    RandA.InitSeed(RandA'instance_name);
    RandB.InitSeed(RandB'instance_name);

    while not allDone and (NOW < 1 ms) loop
        A <= RandA.Randslv(0, 3,2);
        B <= RandB.Randslv(0, 3,2);
        wait for OP_DELAY;

        allDone := cp_A_B.isCovered;
        nCycles := nCycles + 1;
    end loop;

    wait for 1 ns;
    log("Number of simulation cycles = " & to_string(nCycles));
    AffirmIfEqual(CountCovHoles(cp_A_B), 0, "Coverage holes") ;

    EndOfTestReports(
      ReportAll => TRUE,
      ExternalErrors => (0, 0, 0),
      Stop => FALSE,
      TimeOut => FALSE
    );

    std.env.stop ;
    wait;
end process;

When the stimulus generation gets more complex than this, I will move the OSVVM runner stuff to separate process called “ControlProc”, but that is not necessary in a simple test case like this one.