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

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

Doka: а можно еще залить куда-нибудь упомянутый в самом начале

"SystemVerilog For Design: A guide to using SystemVerilog for HW design and Modeling. Stuard Sutherland, Simon Davidmann // Kluwer Academic Publishers"?

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


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

Doka: а можно еще залить куда-нибудь ...

магам - можно ;-)

 

 

ссылка (11.59 Mb)

(File code: 4416TNTNHQN2BXH )

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


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

нужно заметить что SVer for Ver немного разочаровала - совсем для бегинеров - стандарт читать намного круче, Янчик Бергерон - для среднего уровня и тоже выше стандарта в раскрытие темы использования СВ не прыгает, хотя и объясняет хорошо что к чему на генеральном уровне - но это можно было прочесть еще в просто WT 2nd edition а вот VerMetManual его же мне показалась очень интересной для размышления над тем как надобно жить мне показалась очень интересной для размышления

 

решил-таки потихоньку осваивать SV для писания тестбенчей.

в связи с этим вопрос: с чего бы начать?

что сейчас доступно из букварей:

1) SVer for Ver

2) VerMetManual

3) стюард, упоминаемый в теме последним

4) Advanced Verification Methodology Cookbook - халявная книжка от ментора с примера лаб для Квесты

 

стандарт оно конечно читать круче, но цель (по кр.мере у меня) - не ознакомиться с "инструментом", а научиться им пользоваться.. И понять на примерах - как эффективно использовать те или иные языковые особенности (преимущества SV перед V).

(как пример-аналогия: XAPP199 "Writing Effective Testbenches" от Xilinx, где лаконично, на двух десятках страниц изложены практические приемы работы на vhdl & verilog)

 

с учетом этого какую бы посоветовали для _начального_ прочтения?

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


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

решил-таки потихоньку осваивать SV для писания тестбенчей.

в связи с этим вопрос: с чего бы начать?

что сейчас доступно из букварей:

1) SVer for Ver

2) VerMetManual

3) стюард, упоминаемый в теме последним

4) Advanced Verification Methodology Cookbook - халявная книжка от ментора с примера лаб для Квесты

 

стандарт оно конечно читать круче, но цель (по кр.мере у меня) - не ознакомиться с "инструментом", а научиться им пользоваться.. И понять на примерах - как эффективно использовать те или иные языковые особенности (преимущества SV перед V).

(как пример-аналогия: XAPP199 "Writing Effective Testbenches" от Xilinx, где лаконично, на двух десятках страниц изложены практические приемы работы на vhdl & verilog)

 

с учетом этого какую бы посоветовали для _начального_ прочтения?

я начинал со стюарда (это если не брать в расчёт кучу всяких свободно доступных пэдээфок) несмотря на то что он вообще-то писал не для верификации - но там есть достаточно интересных намёков которые можно использовать и в тестбенчах (автоматические функции и передача параметров по ссылке, интерфейсы с модпортами и экспортирование функций через интерфейсы + всякие мелочи по типам, динамическим переменным и последняя глава о поведенческом и транзакционному моделированию) потом прочёл Ассершн- бэйзд дизайн (интересна с точки жрения метрики функционального покрытия и самих ассершенов) после этого досканально изучил последний стандарт (вы к стати зря его игнорируете - знаете ведь как верилоговские стандарты пишутся - это скорее книжки чем стандарты - оттуда взял динамижеские массивы и очереди с мэил-боксами, randsequences и constrained randomization) затем SVer for Ver и VerMetManual (но в первой не нашёл уже ничего нового, а вторая достаточно серёзная книжецa - для старта не подойдёт )

all in all я бы посоветовал всё-таки начать со Стюарда(убьёте сразу двух зайцев), а затем SVer for Ver - добьёте Верификацию с Моделированием (можете также подождать ~2 дня будет ещё и Яник - половина уже готова, но SVer_forVer наверное для начала всё-таки предпочтительнее, потому как Яник пишет всякие заумности в чрезмерном колличестве, что поначалу может отвлекать от применения самого SV).

что касается 4-ого пункта от Ментора - то по-моему только зря потратите время - её можно читать как доп. литературу - там уже философия ТЛМ - для начала слишком - только голову мусором забьёте

PS а ксайлинковского ксапа не читал - поэтому не занаю с чем сравнивать

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


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

Извиняюсь, запостил сначала сюда, а потом сделал топик http://electronix.ru/forum/index.php?showtopic=29609

Изменено пользователем DukeXar

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


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

второй пункт из этого топика выполнен:

http://electronix.ru/forum/index.php?showt...mp;#entry227805

(в ссылке найдёте где лежит)

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


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

Взял я доку на КВАРТУС. Половина функций не поддерживается :angry2: Если не больше.

А где можно посмотреть что именно поддерживает Квартус? Какая это именно из его док?

 

Кстати, какое-то время с момента открытия темы уже прошло, может кто-нибудь нашел новую/более удачную литературу по Сверилогу? Желательно на русском.

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


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

А где можно посмотреть что именно поддерживает Квартус? Какая это именно из его док?

 

Кстати, какое-то время с момента открытия темы уже прошло, может кто-нибудь нашел новую/более удачную литературу по Сверилогу? Желательно на русском.

товарищ - с момента последнего сообщения в данном топике прошло всего 9 дней - учитесь пользоваться форумом - данный топик многостраничный - дочтайте до конца - а не постите вопросы после первого же сообщения!

по сведениям разведки на данный момент Квартус поддерживает СВ достаточно сносно (за подробностями обращайтесь к Доке - он его вроде юзает)

на русском литературы пока что нет. подождите месяцок или учите англицкий

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


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

товарищ - с момента последнего сообщения в данном топике прошло всего 9 дней - учитесь пользоваться форумом - данный топик многостраничный - дочтайте до конца - а не постите вопросы после первого же сообщения!

 

Упс. :(:(:( Очень-очень виноват. Оправдываться бессмысленно, но меня тянули за руку в "магазин за кофточкой". Еще раз упс. :)

Дочитал все страницы, пдф-ки качаются. :) Начну, пожалуй, со Стюарта, а там посмотрим. Но это все потом, сейчас хотяб просто верилог освоить.

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


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

Writing Testbenches Using System Verilog:

http://electronix.ru/forum/index.php?showt...ng+testbenches#

 

Хороший tutorial по SystemVerilog:

 

начало: http://www.doulos.com/knowhow/sysverilog/tutorial/datatypes/

assertions: http://www.doulos.com/knowhow/sysverilog/t...ial/assertions/

Изменено пользователем Escorial

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


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

Привет всем!

 

Внимание в книге Writing Testbenches using SystemVerilog от яника берегерона обнаружена серьезная баго. Сомневаться в таком авторе грешно, но все же факт :

 

страница документа 250 пример Sample 5-66. Autonomous RS-232 response monitor

 

class rs232;
  local bit [8:0] fifo[$];
  ...
  function new(...);
    ...
    fork
      this.receive_thread(); // ВЫЗВАТЬ таск из функции нельзя (!!!)
    join_none
  endfunction: new

  local task receive_thread();
    forever begin
      automatic bit [8:0] resp;
      this.receive(resp[7:0], resp[8]);
      this.fifo.push_back(resp);
    end
  endtask: receive_thread
  ...
endclass: rs232

 

это противоречит стандарту верилог 2001 (систем верилог в этой части наследует верилог 2001)

 

10.1 Distinctions between tasks and functions .... A function cannot enable a task; a task can enable other tasks and functions.....

 

и естественно не работает в симуляторах типа к....а сим 6.2ф

 

Т.к. автор ссылается на синопсис то вполне возможно что для конструктора класса они сделали исключение. а вот в других симуляторах похоже труба, остается делать модели с автоматическим стартом через Ж. (а нужно то всего лишь завернуть модель описанную в интерфейсе через always в класс с виртуальным интерфейсом + forever).

 

Читающие эту книгу будте внимательные!!!!

 

 

 

Привет всем!

 

Внимание в книге Writing Testbenches using SystemVerilog от яника берегерона обнаружена серьезная баго. Сомневаться в таком авторе грешно, но все же факт :

 

страница документа 250 пример Sample 5-66. Autonomous RS-232 response monitor

 

class rs232;
  local bit [8:0] fifo[$];
  ...
  function new(...);
    ...
    fork
      this.receive_thread(); // ВЫЗВАТЬ таск из функции нельзя (!!!)
    join_none
  endfunction: new

  local task receive_thread();
    forever begin
      automatic bit [8:0] resp;
      this.receive(resp[7:0], resp[8]);
      this.fifo.push_back(resp);
    end
  endtask: receive_thread
  ...
endclass: rs232

 

это противоречит стандарту верилог 2001 (систем верилог в этой части наследует верилог 2001)

 

10.1 Distinctions between tasks and functions .... A function cannot enable a task; a task can enable other tasks and functions.....

 

и естественно не работает в симуляторах типа к....а сим 6.2ф

 

Т.к. автор ссылается на синопсис то вполне возможно что для конструктора класса они сделали исключение. а вот в других симуляторах похоже труба, остается делать модели с автоматическим стартом через Ж. (а нужно то мне было всего лишь завернуть модель описанную в интерфейсе через always в класс с виртуальным интерфейсом + forever).

 

Читающие эту книгу будте внимательные!!!!

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


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

...от яника берегерона обнаружена серьезная баго. Сомневаться в таком авторе грешно, но все же факт :

 

и естественно не работает в симуляторах типа к....а сим 6.2ф

 

Т.к. автор ссылается на синопсис то вполне возможно что для конструктора класса они сделали исключение.

да ничего не грешно. просто класс спроектирован откровенно неграмотно. а если подобный конструктор проглатывается и синопсисом, то это не фича, а серьёзная брешь в обороне.

суть ограничения на вызов таска из функции в следующем:

таски и функции в модели верилога различаются принципиально тем, что исполнение таска может быть размазано по модельному времени, а исполнение функции нет (её исполнение происходит атомарно за модельное время 0) то есть поток управления в таске может использовать событийные операторы (типа wait, @) внутри себя, а функция нет. больше они ничем не различаются(кому не хватает одного возвращаемого параметра по имени функции, может использовать void function и указывать направление параметра(input, output, inout)) хотя и единственного различия более чем достаточно, чтобы определить совершенно разную область использования данных типов подпрограмм.

таким образом чтобы сохранить целостность модели вызовы тасков из функций запрещены (понятно почему).

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

так что передавайте привет янику, он вроде книжки бесплатно раздаёт тем кто баги обнаруживает. а это действительно баг, а не фича ;)

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


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

суть ограничения на вызов таска из функции в следующем:

....

различие между таском и функций понятно, но не могу не подкорректировать :) вот эти ваши слова

 

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

 

в этом конкретном примере таск запускается как отдельный программный поток (тред) с помошью великолепно реализованной идеологии fork/join_none. Поэтому конструктор в примере будет исполняться атомарно относительно модельного времени.

 

Пример задачи ну например вот такой.

Почитав яника я решил попробывать переделать одну из работающих для тестирования моделей через классы (что бы было как у правильных пацанов :) ).

 

Модель приемник и передатчик синхронного потока данных. Функционально модель выглядит как интерфейс с clocking секциями. Функциональность реализована через 2 always, в которых постоянно исполняется последовательный код. Модель стартует независимо в момент начала симуляции.

 

Целью было заворачивание функциональности в класс с передачей управления портами через абстрактные интерфейсы с clocking секциями. Функциональность планировалось реализовать через 2 программных потока реализованных через fork/join_none + task с forever. Но вот реализация независимого старта в момент начала симуляции, похоже невозможна. Требуется явная, внешняя относительно класса, инициализация программных потоков.

 

так что передавайте привет янику, он вроде книжки бесплатно раздаёт тем кто баги обнаруживает. а это действительно баг, а не фича ;)

 

Жду его ответа на письмо, а вдруг действительно книгу пришлет :)

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


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

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

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

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

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

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

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

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

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

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