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

ModelSim и покрытие кода - как правильно исключить модуль

Доброго всем.
Столкнулся с таким вопросом: в проекте для maxII есть ip umf. Т.к. вещь сия представляется чёрным ящиком, покрывать оную на все 100% кажется (по кр. мере на первый взгляд) неразумным, и хочется её убрать из рассмотрения. Как это правильно сделать? Прагмы //coverage off и //coverage on по непонятным мне причинам не работают. Нашёл команду coverage exclude, но вот что имею:
Хидер main.vh

`ifndef _main_vh_ // prevent many inclusions
`define _main_vh_

`define LED_CNT_DIM 24
`define LED_CNT_RNG [`LED_CNT_DIM-1:0]

`define ADDR_FLASH_DIM 9
`define ADDR_FLASH_RNG [`ADDR_FLASH_DIM-1:0]

`define DATA_FLASH_DIM 16
`define DATA_FLASH_RNG [`DATA_FLASH_DIM-1:0]

`endif // `ifndef _main_vh_ 

Главный и единственный модуль main.sv

`include "main.vh"

module main (

    input logic res,
    input logic clk,
    output logic led,
    
    // flash inst
    input logic `ADDR_FLASH_RNG addr_flash,
    input logic nread_flash,
    output logic data_valid_flash,
    output logic `DATA_FLASH_RNG dataout_flash,
    output logic nbusy_flash    
    
);

    logic `LED_CNT_RNG led_counter;

    always_ff @(posedge clk)
        if ( res ) led_counter <= '0;
        else led_counter <= led_counter + 1'b1;
        
    assign led = led_counter[`LED_CNT_DIM - 1];    

    // coverage off
    flash	flash_inst (
        .addr ( addr_flash ),
        .nread ( nread_flash ),
        .data_valid ( data_valid_flash ),
        .dataout ( dataout_flash ),
        .nbusy ( nbusy_flash )
        );
    // coverage on    

endmodule : main

И тестбенч main_tb.sv

`include "main.vh"
`timescale 1ns / 1ps

module main_tb; 

    logic res;
    logic clk;
    logic led;
    
    // flash inst
    logic `ADDR_FLASH_RNG addr_flash;
    logic nread_flash;
    
    wire data_valid_flash;
    wire `DATA_FLASH_RNG dataout_flash;
    wire nbusy_flash;    

    main main(.*);
    
    initial begin
        res = 1'b0;
        #10ns res = 1'b1;
        #25ns res = 1'b0;
    end
    
    initial begin
        clk = 1'b0;
        forever #25ns clk = ~clk;
    end
    
    initial begin
        addr_flash = 0;
        nread_flash = 1'b1;
    end

endmodule : main_tb

Компилю

c:\MentorGraphics\modelsim64_10.6d\win64\modelsim.exe -do coverage.tcl

где сам coverage.tcl выглядит так

variable test_bench main_tb

if {!([vsimAuth] == "ALTERA")} {
    # https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=122907
    # main window at full screen
    wm state . zoomed
}

# clear transript window of ModelSim or QuestaSim
.main clear

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

vlib work
variable FilesCompiled      0
variable ProjectDir         ../../Project/Project
variable TestBenchDir       ../../Project/TestBench
variable QuartusSimLibDir   ../../Project/QuartusSimLibs  
 
# compile all source files
# https://stackoverflow.com/questions/51409347/how-to-copy-or-move-multiple-files-with-same-extension
variable FilesInProjectDir [glob -nocomplain $ProjectDir/*.v $ProjectDir/*.sv]
if {[llength $FilesInProjectDir]} {
    vlog +acc $ProjectDir/*.v $ProjectDir/*.sv
    variable FilesCompiled 1
}

# compile testbench
vlog +acc +incdir+$ProjectDir $TestBenchDir/$test_bench.sv 

if {$FilesCompiled == 1} {

    variable top_module_opt $test_bench
    variable coverage_letters_string "sf"
    
    # optimize design
    append top_module_opt "_opt"
    vopt -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L maxii_ver +cover=$coverage_letters_string $test_bench -o $top_module_opt

    vsim -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L maxii_ver -L work\
         -cvgperinstance -cvgzwnocollect 1 -c -coverage work.$top_module_opt

    source simulation_run.tcl
    simulation_run 1us 
    
    coverage report -html $top_module_opt.ucdb -code $coverage_letters_string
    
    view instance
    source ColumnConfig_instance.tcl 

} else {
    puts "No files to compile found!"
}

После компиляции ModelSim показывает мне вот что:

Clipboard01.thumb.gif.7a149b985a9039145869d9b9088b933c.gif

Т.е. подцепились непонятно откуда библиотеки 220model.v и maxii_atoms.v, причём не из закромов ModelSima, куда я транслировал все библиотеки для maxII и других, используемых мною семейств, а из внутренностей Quartus-a: и ладно бы, но я нигде не могу найти концов, откуда они подцепились?!

Далее, попытка исключить из покрытия файл flash.v путём

    vsim -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L maxii_ver -L work\
         -cvgperinstance -cvgzwnocollect 1 -c -coverage work.$top_module_opt

    coverage exclude -src $ProjectDir/flash.v

    source simulation_run.tcl
    simulation_run 1us 

вполне успешна, а вот повторение того же для упомянутых выше библиотек

    vsim -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L maxii_ver -L work\
         -cvgperinstance -cvgzwnocollect 1 -c -coverage work.$top_module_opt
         
    coverage exclude -src $QuartusSimLibDir/maxii_atoms.v
    coverage exclude -src $QuartusSimLibDir/220model.v 
    coverage exclude -src $ProjectDir/flash.v

    source simulation_run.tcl
    simulation_run 1u

приводят ModelSim в непонятное состояние:

Clipboard03.thumb.gif.c22c9429ed417ef8f5fc8f0ac3ff433d.gif

Просьба высказаться..

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


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

Может подойдет `ifdef MODEL_TECH/ `ifndef MODEL_TECH?

Я так для моделсима исключаю модули из проекта и перекладываю всякие сигналы чисто для моделсима

Изменено пользователем new123

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


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

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

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

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

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

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

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

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

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

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