MaratZuev 0 4 февраля, 2020 Опубликовано 4 февраля, 2020 · Жалоба Доброго всем. Столкнулся с таким вопросом: в проекте для 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 показывает мне вот что: Т.е. подцепились непонятно откуда библиотеки 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 в непонятное состояние: Просьба высказаться.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 4 февраля, 2020 Опубликовано 4 февраля, 2020 (изменено) · Жалоба Может подойдет `ifdef MODEL_TECH/ `ifndef MODEL_TECH? Я так для моделсима исключаю модули из проекта и перекладываю всякие сигналы чисто для моделсима Изменено 4 февраля, 2020 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 5 февраля, 2020 Опубликовано 5 февраля, 2020 · Жалоба Да, я знаю такую конструкцию, но спасибо за напоминание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться