Jump to content

    

VCS - отрисовка диаграммы, начиная, например, с 10мс

Есть тест, где самое интересное начинается после 10мс. Как лучше пропустить неинтересующую часть диаграммы, чтобы ускорить симуляцию?
Если это делается только с помощью VPD (VCD), то поделитесь примером, пожалуйста.
В идеале, хотелось бы просто поставить маркер и сказать VCS'у - рисуй вот отсюда.

Пока единственное решение, которое придумал:
- запустить симуляцию без вытаскивания сигналов на диаграмму и домоделить до 10мс

- после 10мс вытащить интересующие сигналы и продолжить моделирование

Share this post


Link to post
Share on other sites
24 минуты назад, lexus.mephi сказал:

Есть тест, где самое интересное начинается после 10мс. Как лучше пропустить неинтересующую часть диаграммы, чтобы ускорить симуляцию?

Как вариант - найти то место, которое требует 10мс. Зафорсить сигнал, который тормозит.

Или скопировать в рабочую папку файл, который тормозит и в нем убрать задержку... 

Например, при использовании памяти в ISE,  в файле при релизе должно быть ROC_WIDTH = 100000:

module glbl ();

    parameter ROC_WIDTH = 10;  //должно быть ROC_WIDTH = 100000, но я вручную ставлю так. это позволяет сократить время симуляции
    parameter TOC_WIDTH = 0;

    wire GSR;
    wire GTS;
    wire PRLD; 

 

А после симуляции пользуюсь исходным файлом..

Share this post


Link to post
Share on other sites
3 minutes ago, iosifk said:

Как вариант - найти то место, которое требует 10мс. Зафорсить сигнал, который тормозит.

Или скопировать в рабочую папку файл, который тормозит и в нем убрать задержку... 

Немного не понял про файл, который тормозит. Всякие DDR3 я уже заменил на легковесные модельки. Отключил UVM-ные мониторы, которые мне в этом тесте не нужны. В общем, ряд мер по ускорению симуляции уже предпринял.
10мс я собираю некоторые данные, которые поступают в обработку после 10мс. Т.е. пропусить эти 10 мс и получить интересующую картинку не получится (или получится, но с дикими костылями, которые уведут меня от исходной проверяемой системы).

Share this post


Link to post
Share on other sites
15 минут назад, lexus.mephi сказал:

10мс я собираю некоторые данные, которые поступают в обработку после 10мс. Т.е. пропусить эти 10 мс и получить интересующую картинку не получится (или получится, но с дикими костылями, которые уведут меня от исходной проверяемой системы).

Если эти "некоторые данные" уже проверены и не сильно меняются, то запишите их в файл. Уберите часть симуляции для "я собираю некоторые данные" и просто зачитывайте их при симуляции из файла... И так до тех пор, пока не понадобится все вместе...

Share this post


Link to post
Share on other sites

Приветствую!

1 hour ago, lexus.mephi said:

Пока единственное решение, которое придумал:
- запустить симуляцию без вытаскивания сигналов на диаграмму и домоделить до 10мс

IMHO этот вариант наиболее ускоряет сим  - так как вообще не тратит время на запись сигналов, особенно при большом их количестве.

Как вариант посмотрите на системные таски $dumpvars $vcdpluson $vcdplusoff которыми можно из кода  теста контролировать запись в VCD/VPD файл.

Удачи! Rob.

Share this post


Link to post
Share on other sites
24 minutes ago, RobFPGA said:

Приветствую!

IMHO этот вариант наиболее ускоряет сим  - так как вообще не тратит время на запись сигналов, особенно при большом их количестве.

Как вариант посмотрите на системные таски $dumpvars $vcdpluson $vcdplusoff которыми можно из кода  теста контролировать запись в VCD/VPD файл.

Значит на этом пока и остановимся. Вариант с $dumpvars $vcdpluson $vcdplusoff получается напряжным - в системе много кода. Все это фильтровать - что писать, что не писать. Может потом для регрессионных тестов такую работку проведем.

Спасибо, коллеги!

Share this post


Link to post
Share on other sites

К сожалению, сейчас нет доступа к документации Synopsys, но можно настроить так, чтобы симулятор начал собирать базу данных с определённого времени, с помощью tcl-скрипта, автоматически запускаемого при старте. Если правильно помню, в примерах от Synopsys, этот скрипт по умолчанию run.do, или simulation.do.

Share this post


Link to post
Share on other sites

Так или  иначе все равно придётся использовать $dumpvars или подобное, в зависимости от того чем читать будете.

Это стандартная практика, начало и конец чтения по events из кода или напрямую можно указать время.

Edited by lexx

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this