Jump to content

    

Recommended Posts

Добра всем!
Поискал в форуме в разных ветках, но сразу не нашёл ответа на такой вопрос: поставлена задача для наших проектов доказать соответствие оных директивам DO-254 и иже с ними. Проекты написаны как на VHDL и Verilog (SV), так и в схематике. Причём ПЛИС Actel и Altera.
Вопрос: откуда нам, первый раз столкнувшимся со словами Code Coverage, начать сей нелёгкий и тернистый путь?
Всё комментарии, а тем паче, ссылки, книги и прочее, приветствуются. Оптимально Mentor (ModelSim и QuestaSim), но и Aldec пойдёт, если он умеет это лучше.

Edited by MaratZuev

Share this post


Link to post
Share on other sites
15 minutes ago, MaratZuev said:

Вопрос: откуда нам, первый раз столкнувшимся со словами Code Coverage, начать сей нелёгкий и тернистый путь?

с руководства по симулятору

Share this post


Link to post
Share on other sites

Был у Ментора такой ресурс Verification Academy, если первый раз столкнулись, рекомендую, чтоб понять что это такое, какие виды покрытия бывают, как понять, чтовсе ok, и т.п.. Особенно если потом потребуется функциональное покрытие и пр. А по поводу симулятора - читайте описание, моделсим умеет такое, ну а схематик, скорее всего, придется переводить на код.

Share this post


Link to post
Share on other sites
1 hour ago, des00 said:

с руководства по симулятору

Нашёл в QuestaSim 10.4e tutorial, но рисунок (Figure 13-1. Code Coverage Windows) на стр. 163
65285338_Figure13-1.CodeCoverageWindows.thumb.png.c6c6f52ccae46a6a5053c9a5574673ee.png
в нём почему-то не соответствует тому, что я вижу на экране:

1809872749_QuestaSim10.4eCodeCoveragewindows.thumb.png.676a6f2b36d016bc421a2a7954874881.png

ЧЯДНТ? О_о

1 hour ago, Viktuar said:

Был у Ментора такой ресурс Verification Academy

Да, знаю, спасибо за напоминание, оставлю ещё (для себя) такую ссылку здесь: http://www.testbench.in/TB_24_ABOUT_CODE_COVERAGE.html

Share this post


Link to post
Share on other sites
2 hours ago, Viktuar said:

ну а схематик, скорее всего, придется переводить на код.

да, мне вот тоже не очень понимается что такое "кодовое" покрытие "схемы" ...

...тем паче в соответствии с DO-254 и иже с ним

 

55 minutes ago, MaratZuev said:

ЧЯДНТ? О_о

начните с методологии: что делать и для чего.. не кидайтесь сразу на амбразуру инструмент

методология вполне вероятно ответит и на вопрос надо ли покрывать сам код тестбенчей (нет).

Share this post


Link to post
Share on other sites
3 hours ago, Doka said:

не кидайтесь сразу на амбразуру инструмент

Там ещё есть такие инструменты как ALINT и иже с ними: я в раздумьях, нужны ли они мне?

Share this post


Link to post
Share on other sites
10 hours ago, MaratZuev said:

Нашёл в QuestaSim 10.4e tutorial, но рисунок (Figure 13-1. Code Coverage Windows) на стр. 163

кхх...\docs\pdfdocs\questa_sim_user.pdf

Questa® SIM User’s Manual Including Support for Questa SV/AFV -> Chapter 19 Code Coverage

Share this post


Link to post
Share on other sites

Покрытия есть в systemverilog как стандартная фича. Прям раздел в стандарте Coverage. Если используется vhdl, то здесь стоит смотреть на osvvm

Edited by KeisN13

Share this post


Link to post
Share on other sites

Думаю я не прав. Покрытие в св и осввм показывает насколько процентов были использованы возможные состояния сигналов, шин, автоматов, переходов в автомате и тд. Не думаю, что это имеет отношение к покрытию кода. 

Share this post


Link to post
Share on other sites
43 minutes ago, KeisN13 said:

Думаю я не прав. Покрытие в св и осввм показывает насколько процентов были использованы возможные состояния сигналов, шин, автоматов, переходов в автомате и тд. Не думаю, что это имеет отношение к покрытию кода. 

А зачем смотреть OSVVM? Я глядел-глядел, толку ноль. Если есть проектировщик на SV, можно сделать покрытие 100% даже кода на VHDL, там полно фич и инструкций, которые залезут в недри. И не придётся разбираться в непонятном инструменте, которой к тому же не везде поддерживается (в связи с описанием конструкций на VHDL-2008

Share this post


Link to post
Share on other sites
42 minutes ago, Nick_K said:

в связи с описанием конструкций на VHDL-2008

Я пишу на SV, зачем мне что-то знать про VHDL?

5 hours ago, des00 said:

кхх...\docs\pdfdocs\questa_sim_user.pdf

Questa® SIM User’s Manual Including Support for Questa SV/AFV -> Chapter 19 Code Coverage

Спасибо. Установил версию 10.7с: буду смотреть.

Share this post


Link to post
Share on other sites

В матлабе есть какие-то пакеты для проверки на соответствие авиастандартам DO. Там проверяется с формированием сертификата соответствия, вроде , hdl код. Посмотрите в этом направлении. 

https://matlab.ru/promo/standards

Share this post


Link to post
Share on other sites
On 8/6/2019 at 9:50 PM, Skryppy said:

В матлабе есть какие-то пакеты для проверки на соответствие авиастандартам DO.

Посмотрел (наверное поверхностно) и не увидел ничего для себя интересного. Есть инструменты Mentor-а и Aldec-а - вот их и хочу использовать.
Есть такой вопрос: взял примитивный проект, который прилагаю к этому комментарию, по результатам обработки которого ModelSim (QuestaSim) в своём GUI показывает 100% покрытие statemеnts, и тоже самое я вижу в текстовом отчёте (test_tb_opt.txt).

Но в html отчёте покрытия вообще никакого нет!

Вкратце (кто не полезет в проект) так:
design under test - test.sv
 

module test (
    input logic clk, 
    input logic data,
    input logic ena,
    output logic q
);

    always_ff @(posedge clk)
        q <= ena ? data : q;
        
endmodule : test

Test bench - test_tb.sv

module test_tb;

    logic clk; 
    logic data;
    logic ena;
    logic q;

    initial begin
        clk = 0;
        forever #10 clk = ~clk;
    end
    
    initial begin
        data = 0;
        ena = 0;
    end
    
    test test(.*);
        
endmodule : test_tb

tcl скрипт для обработки проекта в ModelSime (QuestaSime) - coverage_test.tcl

proc coverage_proc {main_coverage_file_name coverage_letters_string current_module} {

    # http://read.pudn.com/downloads190/doc/comm/895124/ofdm_cp_insertion_v71/ofdm_cp_insertion/scripts/ofdm_kernel_msim.tcl__.htm

    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 re QuestaSim
    .main clear

    onbreak {resume}

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

    vlib work
    set FilesCompiled 0
     
    # compile all source files
    # https://stackoverflow.com/questions/51409347/how-to-copy-or-move-multiple-files-with-same-extension
    set verilog_files [glob -nocomplain *.v]
    if {[llength $verilog_files]} {
        vlog -O0 +fcover +acc *.v
        set FilesCompiled 1
        puts "Verilog file(s) are compiled!"
    }
    
    set system_verilog_files [glob -nocomplain *.sv]
    if {[llength $system_verilog_files]} {
        vlog -O0 +fcover +acc *.sv
        set FilesCompiled 1
        puts "SystemVerilog file(s) are compiled!"
    }

    if {$FilesCompiled == 1} {

        set main_coverage_file_name_opt $main_coverage_file_name
        append main_coverage_file_name_opt "_opt"
        # puts $main_coverage_file_name
        # puts $main_coverage_file_name_opt

        # optimize design
        vopt +cover=$coverage_letters_string $main_coverage_file_name -o $main_coverage_file_name_opt
        # ModelSim® SE Command Reference Manual, v10.5 page 855
        # Commands 
        # vopt
        # 
        # +cover=<spec>
        # <spec> — one or more of the following characters:
        # b — Collect branch statistics.
        # c — Collect condition statistics. Collects only FEC statistics, 
        #     unless -coverudp is specified.
        # e — Collect expression statistics, Collects only FEC statistics, 
        #     unless -coverudp is specified.
        # s — Collect statement statistics.
        # t — Collect toggle statistics. Overridden if ‘x’ is specified elsewhere
        # x — Collect extended toggle statistics (Refer to “Toggle Coverage” for details). 
        #     This takes precedence, if ‘t’ is specified elsewhere.
        # f — Collect Finite State Machine statistics

        # https://stackoverflow.com/questions/49789252/how-to-generate-a-detail-report-of-functional-coverage-in-questasim
        # load simulator with optimized design

        vsim -cvgperinstance -c -coverage work.$main_coverage_file_name_opt
        coverage save $main_coverage_file_name_opt.ucdb 
        
        run 1ms

        # vsim -cvgperinstance -viewcov $main_coverage_file_name_opt.ucdb
        coverage report -file $main_coverage_file_name_opt.txt -detail -code $coverage_letters_string -noannotate -cvg
        # vcover report -html $main_coverage_file_name_opt.ucdb -details -code $coverage_letters_string -cvg
        vsim -cvgperinstance -c -coverage work.$main_coverage_file_name_opt -do "run 1ms; vcover report -html $main_coverage_file_name_opt.ucdb -details -code $coverage_letters_string -cvg"

    } else {
        puts "No file(s) to compile found!"
    }

}
coverage_proc test_tb s test

командный файл для запуска всего этого хозяйства на исполнение - coverage_test.bat

c:\Mentor_Graphics\QuestaSimx64_10.7c\win64\questasim.exe -do coverage_test.tcl

Файл отчёта - test_tb_opt.txt

Coverage Report by file with details

=================================================================================
=== File: test.sv
=================================================================================
Statement Coverage:
    Enabled Coverage            Active      Hits    Misses % Covered
    ----------------            ------      ----    ------ ---------
    Stmts                            2         2         0    100.00

================================Statement Details================================

Statement Coverage for file test.sv --

    8               1                          1     
    9               1                          1     

=================================================================================
=== File: test_tb.sv
=================================================================================
Statement Coverage:
    Enabled Coverage            Active      Hits    Misses % Covered
    ----------------            ------      ----    ------ ---------
    Stmts                            6         6         0    100.00

================================Statement Details================================

Statement Coverage for file test_tb.sv --

    9               1                          1     
    10              1                          1     
    10              2                     100001     
    10              3                     100000     
    14              1                          1     
    15              1                          1     


Total Coverage By File (code coverage only, filtered view): 100.00%

Окно Questa:

Questa.png.381f91f8031163f2c7a7e6a597dcb66b.png

И, наконец, html отчёт Quest-ы - пустой?! Почему? ЧЯДНТ?!

123035058_Questa1.png.7be7c56a6611daf534fdfc9bab9958d2.png

test_coverage.rar

Share this post


Link to post
Share on other sites

Вопрос снят:
в файле coverage_test.tcl в строке
vsim -cvgperinstance -c -coverage work.$main_coverage_file_name_opt -do "run 1ms; vcover report -html $main_coverage_file_name_opt.ucdb -details -code $coverage_letters_string -cvg"
вместо vcover д.б.б. coverage

1047141232_Questa2.png.2a931f40ee91c6d0bf62f7f0df011c11.png

Share this post


Link to post
Share on other sites
В 05.08.2019 в 16:04, MaratZuev сказал:

... поставлена задача для наших проектов доказать соответствие оных директивам DO-254 и иже с ними. ...

Доброго времени суток!

Не с той стороны подходите к проблеме!  Сперва вам необходимо прочитать собственно сам стандарт DO-254. Потом связаться с официальными поставщиками САПР. Тех, что используете в своём маршруте проектирования. У поставщиков запросите поддержку для DO-254 и много чего интересного узнаете! И тогда станет понятно, какой маршрут вы ДОЛЖНЫ выбрать, какие способы анализа покрытия и автоматического документирования вы должны использовать, и прочее прочее прочее. И стоит эта красота на порядок дороже, чем без этой красоты. :)

Как-то так.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this