Перейти к содержанию
    

Mentor покрытие кода html report customization

Всем добра!
Столкнулся с такой проблемой: есть dut, например такого вида (dut.sv):
 

module dut (
    input logic clk,
    input logic res,
    input logic data,
    input logic ena,
    output logic q,
    output logic w
    
);

    always_ff @(posedge clk)
        if (res) q <= 1'b0;
        else if (ena) q <= data;
             else q <= q;
             
    enum {DUT_IDLE, DUT_START, DUT_PROC, DUT_END} dut_state;
    always_ff @(posedge clk)
        if (res) dut_state <= DUT_IDLE;
        else case (dut_state)
                DUT_IDLE    : dut_state <= ena ? DUT_START : DUT_IDLE;
                DUT_START   : dut_state <= DUT_PROC;
                DUT_PROC    : dut_state <= DUT_END;
                DUT_END     : dut_state <= DUT_END;
                default     : dut_state <= DUT_IDLE;
            endcase

    assign w = dut_state == DUT_PROC;        
    
endmodule : dut

и есть узурпирующий его test bench вида, например, такого (tb.sv):
 

`timescale 1ns/100ps

module tb;

    logic clk;
    logic res;
    logic data;
    logic ena_tb;
    logic ena;
    logic q;
    logic w;
    
    dut dut(.*);

    initial begin
        clk = 0;
        forever #10ns clk = !clk;
    end;

    initial begin
        res = 0;
        #20ns res = 1;
        #20ns res = 0;
    end

    initial begin
        data = 0;
        forever #30ns data = !data;
    end;    

    initial begin
        ena_tb = 0;
        #70ns ena_tb = 1;
        #80ns ena_tb = 0;
    end
    
    enum {TB_IDLE, TB_START, TB_PROC, TB_END} tb_state;
    
    always_ff @(posedge clk)
        if (res) tb_state <= TB_IDLE;
        else case (tb_state)
                TB_IDLE    : tb_state <= TB_START;
                TB_START   : tb_state <= ena_tb  ? TB_PROC : TB_START;
                TB_PROC    : tb_state <= !ena_tb ? TB_END : TB_PROC;
                TB_END     : tb_state <= TB_END;
                default    : tb_state <= TB_IDLE;
            endcase
            
    assign ena = tb_state == TB_PROC;        
    
endmodule : tb

есть tcl-скрипт (proc_tb.tcl), запускающийся в Mentore (ModesSim или QuestaSim) обрабатывающий упомянутые выше tb и dut вида

# create library
if [file exists work] {
    vdel -all
}

vlib work
vlog -O0 +fcover +acc *.sv

set top_module tb
# set top_module dut
set top_module_opt $top_module
append top_module_opt "_opt"

set coverage_letters_string "sf"

# optimize design
vopt +cover=$coverage_letters_string $top_module -o $top_module_opt
vsim -cvgperinstance -c -coverage work.$top_module_opt

# go
run 200ns

# make coverage report
if {$top_module == "tb"} {
    coverage save $top_module.ucdb -instance /tb/dut
    coverage exclude -src tb.sv
} else {
    coverage save $top_module.ucdb
}    
coverage report -html $top_module.ucdb -code $coverage_letters_string

# config instance window
view instance
source ColumnConfig_instance.tcl 

который, несмотря на наличии в нём строк вида
    coverage save $top_module.ucdb -instance /tb/dut
    coverage exclude -src tb.sv

которые мы выполняем при моделировании с взятием в качестве модуля верхнего уровня test bench-а
рисует на главной странице html отчёта картинку вида

578560761_questadesigncoveragetb.thumb.png.ca86bde2ee7f9cef568de314ec450f67.png

Картинка хорошая, но нам не нужен сам tb ни в дереве, ни в каких других таблицах!
Нужен dut и всё, что ниже!
Т.е. картина, которая нужна, получается при замене (в proc_tb.tcl) строки

set top_module tb на
set top_module dut
что даёт
1990094208_questadesigncoveragedut.thumb.png.a13eb46da84e7ad10f6cc041b889a5cf.png

Т.е. всё дерево слева и всё, относящееся к нему справа, стало, как доктор прописал, но покрытие теперь в нём стало минимальным!
Test bench не сработал?
ЧЯДНТ?
Просьба ткнуть носом )
Как обычно, прикладываю проект.
 

test_coverage_el.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...