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

Документация на System Verilog

очень недурственный учебный ресурс (тьюториалы) по SystemVerilog - http://testbench.in/

помимо прочего рассматриваются такие вопросы как:

классы СВ, рандомизация в СВ, утверждения (SVA), DPI, управление с помощью событий (events)

приводятся примеры верификации проекта как на чистом SV, так и построенных по методологии VMM, AVM

 

Я тут слепил PDFник с этой ссылки, пока tutor потом остальные слеплю, выложу. Так наверное

лучше будет.

SV_tutor.pdf

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


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

Я тут слепил PDFник с этой ссылки, пока tutor потом остальные слеплю, выложу. Так наверное

лучше будет.

Достойное дело. Только вот отступы (indent'ы) в коде не присутствуют, что весьма снижает читабельность примеров.

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


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

Вот еще слепил, более наглядный тутор, только в плане корректности не проверял, да и концовка

я у них что-то не понял. Гипперссылки отсутствуют.

SV_TUTOR.pdf

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


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

Не находил ли кто стандарт IEEE-P1800-2008 - говорят в начале 2008 объединили предыдущий 1800-2005 и верилоговский 1364 в один документ. Любопытно было бы его почитать.

 

Digitally yours,

cms

 

Подскажите пожалуйста где можно скачать IEEE 1800-2007.

 

 

Digitally yours,

cms

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


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

говорят в начале 2008 объединили предыдущий 1800-2005 и верилоговский 1364 в один документ.

новости по стандарту обсуждаются здесь: http://electronix.ru/forum/index.php?showtopic=49689

2008 ещё не опубликован, скорее всего только весной след. года

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


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

Подскажите пожалуйста где можно скачать IEEE 1800-2007.

вопросы приобретения материалов не подлежащих свободному распространению в данной ветке не обсуждаются

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


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

столкнулся с занятной баго фичей.

 

Итак господа что по вашему должно быть выведено в консоль в данном коде

 

module tb #(type T = logic [0:0]);

  T pipa;


  initial begin : main
    $display("size high ", $high(T));
    $display("size high ", $high(pipa));

    $display("size low ", $low(T));
    $display("size low ", $low(pipa));

    $display("size type ", $size(T));
    $display("size var  ", $size(pipa));

    $display("len type", $bits(T));
    $display("len var ", $bits(pipa));

    for (int i = 0; i < $size(T); i++) begin
      $display("hello %0d", i);
    end
    $stop;
  end

endmodule

 

Занятные результаты получаются у меня в квесте 6.4а

 

# size high x

# size high x

# size low x

# size low x

# size type x

# size var x

# len type 1

# len var 1

 

А у вас ?

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


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

столкнулся с занятной баго фичей.

Занятные результаты получаются у меня в квесте 6.4а

:bb-offtopic:

ЗЫ: это баг квесты, а не нюанс СВ

ЗЗЫ: в службу поддержки написал. ЗЗЗЫ: при этом баг проявляется только при передачи типа через список параметров модуля, если напрямую объявить пипу как logic[0:0], то всё ок

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


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

Занятные результаты получаются у меня в квесте 6.4а

ок, Ментор ошибку признал. Временное решение проблемы в использовании ключа -vopt.

ЗЫ:желательно проблемы ментора обсуждать в разделе по средствам разработки, чтоб не мешать приятное с полезным ;) .

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


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

Должна ли в SV работать такая конструкция:

 

 

module a;

 

parameter param_a = 128;

 

endmodule

 

 

module b;

 

parameter param_b = a.param_a;

 

initial $display("param_a = %d", a.param_a);

 

endmodule

 

Т.е. можно ли использовать при определении параметра в модуле параметр из другого модуля и как?

 

Удивительно, но VCS параметр из внешнего модуля видит по иерархическому (?) пути без инстанса, $display его отображает правильно.

Правда при назначении параметра VCS уже сообщает что a.param_a неконстантное выражение и не компилит его.

 

QuestaSim сразу говорит что не находит в иерархии.

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


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

Должна ли в SV работать такая конструкция

тут на мой взгляд не всё так однозначно. то, что написано, синтаксически правильно (НО). т.е. во втором модуле параметр через иерархическую ссылку должен быть виден (здесь в СВ аналогия с пакетом, да и вообще с любым пространством имён). другое дело как компилятор относится к этому пространству: включает ли он его при компиляции как подиерархию $root или как совершенно отдельное пространство имён (в случае с пакетом здесь было бы всё точно - пакет компилировался бы в единую подиерархию "рут")... и тут всплывает то самое "НО": какое практическое значение имеют 2 модумя никак не связанные в проекте (да и вообще никак синтаксически не связанные)? какой смысл им делить единое пространство имён?

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


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

какое практическое значение имеют 2 модумя никак не связанные в проекте (да и вообще никак синтаксически не связанные)? какой смысл им делить единое пространство имён?

 

Модули связанные: инстанциированные параллельно в топе или вложены друг в друга. Например модуль b инстанциирует а в зависимости от значения param_a.

 

P.S. Synopsys ответил, что эта фича еще не заимплеменчена, и что они отправили мой вопрос VCS R&D рассмотреть на предмет включения её в будущих релизах.

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


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

Например модуль b инстанциирует а в зависимости от значения param_a.

но это не соответствует тому, что вы написали (?). здесь же нет условного инстанцирования - если б был, компилёр должен видеть соседнее(связанное) пространство имён! ЗЫ: а если, как вы говорите, они инстанциированы в топе параллельно, то связи между ними я не вижу. там есть условный генерэйт?

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


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

но это не соответствует тому, что вы написали (?). здесь же нет условного инстанцирования - если б был, компилёр должен видеть соседнее(связанное) пространство имён! ЗЫ: а если, как вы говорите, они инстанциированы в топе параллельно, то связи между ними я не вижу. там есть условный генерэйт?

 

Вот как раз иерархия интсансов в данном случае значения не имеет. Рассматриваем compilation unit Согласно п.19.3 IEEE 1800-2005(E)

 

tools shall provide use models that allow both of the following cases:

a) All files on a given compilation command line make a single compilation unit (in which case the

declarations within those files are accessible anywhere else within the constructs defined within

those files).

B) Each file is a separate compilation unit (in which case the declarations in each compilation-unit

scope are accessible only within its corresponding file).

 

Т.е. если два модуля описаны в одном файле, то они находятся в одном пространстве имен $unit, независимо как они с друг другом соотносятся или инстанциируются где бы то ни было. Или вообще не инстанциируются.

 

VCS в соответствии с этим правилом позволяет видеть соседние модули, и даже позволяет спускаться во внутренности этих модулей. Правда при этом где-то теряет признак константности.

 

Схожая бага была в квесте 6.3, когда $clog2 от константы почему-то воспринимался как переменная и не давал использовать результат в определении векторов. В 6.4 это пофиксили и теперь наконец можно писать

 

logic [$clog2(1024)-1:0] a;

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


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

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

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

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

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

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

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

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

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

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