DO файлы, используемые в предыдущих уроках содержат только команды ModelSim. Однако DO файлы – это на самом деле Tcl скрипты. Это означает, что вы можете использовать различные варианты конструкций Tcl, такие как: процедуры, условные операторы, математические и триггерные функции, регулярные выражения и т.д.
        В этом уроке вы создадите простой Tcl скрипт, который тестирует определённые значения сигнала и добавляет закладки, увеличивающие окно Wave при достижении этого значения сигнала. Закладки позволяют вам сохранить нужный размер увеличения и перемещать позицию в окне Wave. Tcl скрипт также создаёт кнопки в окне Main, вызывающие закладки.
        1. Создание скрипта.
        a. В текстовом редакторе откройте новый файл и введите следующие строки:
       
        proc add_wave_zoom {stime num} {
        echo "Bookmarking wave $num"
        bookmark add wave "bk$num" "[expr $stime - 50] [expr $stime + 100]" 0
        add button "$num" [list bookmark goto wave bk$num]
        }
        Эти команды делают следующее:
        • Создают новую процедуру, называемую "add_wave_zoom" , которая имеет два аргумента stime и num.
        • Создают закладки с определённым увеличением: от текущего времени симуляции вычесть 50, а прибавить 100.
        • Добавляют кнопки в окно Main, вызывающие закладки.
        b. Теперь добавьте следующие строки внизу скрипта:
       
        add wave -r /*
        when {clk'event and clk="1"} {
        echo "Count is [exa count]"
        if {[examine count]== "00100111"} {
        add_wave_zoom $now 1
        } elseif {[examine count]== "01000111"} {
        add_wave_zoom $now 2
        }
        }
        Эти команды делают следующее:
        • Добавляют сигналы в окно Wave.
        • Используют оператор when для идентификации момента, когда clk переходит в 1.
        • Исследуют значение count по этому переходу и добавляют закладку, если это заданное значение.
        c. Сохраните скрипт под именем "add_bkmrk.do" в директории, в которой вы делали урок "Основы симуляции".
        2. Загрузка элемента проекта test_counter.
        a. Запустите ModelSim.
        b. Выберите File > Change Directory и смените на директорию, в которую вы сохранили DO файл в п. 1.
        c. Введите следующую команду в QuestaSim> запрос команды:
        vsim testcounter_opt
        3. Выполните DO файл и запустите проект.
        a. Введите do add_bkmrk.do в VSIM> запрос команды.
        b. Введите run 1500 ns в VSIM> запрос команды.
        Симуляция запустится, а DO файл создаст две закладки. Он также создаст две кнопки (помечены "1" и "2") на панели инструментов в окне Main, которые позволяют вам открыть закладки (рис. 15-3).
        c. Кликните на кнопки и проследите за увеличением в окне Wave и перемещением на значение count, заданное в DO файле.
        d. Если окно Wave пристыкованно к окну Main, сделайте его активным (кликните в любом месте в окне Wave), затем выберите Wave > Bookmarks > bk1. Если окно отстыкованно, выберите View > Bookmarks > bk1 в окне Wave. Проследите за увеличением в окне Wave и перемещением на значение count 00100111. Повторите то же самое с закладкой bk2.