|
|
  |
Документация на System Verilog, Сбор документации на SVerilog. И обсуждение тонких моментов синтаксиса |
|
|
|
Apr 2 2007, 09:01
|

Участник

Группа: Свой
Сообщений: 50
Регистрация: 23-07-05
Из: Россия, Киров
Пользователь №: 7 038

|
Doka: а можно еще залить куда-нибудь упомянутый в самом начале "SystemVerilog For Design: A guide to using SystemVerilog for HW design and Modeling. Stuard Sutherland, Simon Davidmann // Kluwer Academic Publishers"?
--------------------
Магам можно все.
|
|
|
|
|
Apr 2 2007, 12:03
|

Участник

Группа: Свой
Сообщений: 50
Регистрация: 23-07-05
Из: Россия, Киров
Пользователь №: 7 038

|
Спасибо большое, качаемс =)
--------------------
Магам можно все.
|
|
|
|
|
Apr 2 2007, 18:10
|

Electrical Engineer
     
Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778

|
Цитата(CaPpuCcino @ Mar 29 2007, 18:09)  нужно заметить что 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) с учетом этого какую бы посоветовали для _начального_ прочтения?
--------------------
|
|
|
|
|
Apr 2 2007, 19:25
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
Цитата(Doka @ Apr 2 2007, 19:10)  решил-таки потихоньку осваивать 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 а ксайлинковского ксапа не читал - поэтому не занаю с чем сравнивать
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Apr 2 2007, 22:25
|

Участник

Группа: Свой
Сообщений: 50
Регистрация: 23-07-05
Из: Россия, Киров
Пользователь №: 7 038

|
Извиняюсь, запостил сначала сюда, а потом сделал топик http://electronix.ru/forum/index.php?showtopic=29609
Сообщение отредактировал DukeXar - Apr 2 2007, 22:29
--------------------
Магам можно все.
|
|
|
|
|
Apr 27 2007, 19:30
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(dimasen @ Aug 7 2006, 18:02)  Взял я доку на КВАРТУС. Половина функций не поддерживается  Если не больше. А где можно посмотреть что именно поддерживает Квартус? Какая это именно из его док? Кстати, какое-то время с момента открытия темы уже прошло, может кто-нибудь нашел новую/более удачную литературу по Сверилогу? Желательно на русском.
|
|
|
|
|
Apr 27 2007, 20:08
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
Цитата(RHnd @ Apr 27 2007, 20:30)  А где можно посмотреть что именно поддерживает Квартус? Какая это именно из его док?
Кстати, какое-то время с момента открытия темы уже прошло, может кто-нибудь нашел новую/более удачную литературу по Сверилогу? Желательно на русском. товарищ - с момента последнего сообщения в данном топике прошло всего 9 дней - учитесь пользоваться форумом - данный топик многостраничный - дочтайте до конца - а не постите вопросы после первого же сообщения! по сведениям разведки на данный момент Квартус поддерживает СВ достаточно сносно (за подробностями обращайтесь к Доке - он его вроде юзает) на русском литературы пока что нет. подождите месяцок или учите англицкий
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 26 2007, 12:06
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Привет всем! Внимание в книге 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). Читающие эту книгу будте внимательные!!!! Цитата(des00 @ Nov 26 2007, 06:12)  Привет всем! Внимание в книге 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). Читающие эту книгу будте внимательные!!!!
--------------------
|
|
|
|
|
Nov 26 2007, 18:18
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
Цитата(des00 @ Nov 26 2007, 16:06)  ...от яника берегерона обнаружена серьезная баго. Сомневаться в таком авторе грешно, но все же факт :
и естественно не работает в симуляторах типа к....а сим 6.2ф
Т.к. автор ссылается на синопсис то вполне возможно что для конструктора класса они сделали исключение. да ничего не грешно. просто класс спроектирован откровенно неграмотно. а если подобный конструктор проглатывается и синопсисом, то это не фича, а серьёзная брешь в обороне. суть ограничения на вызов таска из функции в следующем: таски и функции в модели верилога различаются принципиально тем, что исполнение таска может быть размазано по модельному времени, а исполнение функции нет (её исполнение происходит атомарно за модельное время 0) то есть поток управления в таске может использовать событийные операторы (типа wait, @) внутри себя, а функция нет. больше они ничем не различаются(кому не хватает одного возвращаемого параметра по имени функции, может использовать void function и указывать направление параметра(input, output, inout)) хотя и единственного различия более чем достаточно, чтобы определить совершенно разную область использования данных типов подпрограмм. таким образом чтобы сохранить целостность модели вызовы тасков из функций запрещены (понятно почему). теперь перейдём к тому почему этого делать нельзя никогда даже в конструкторе класса (к стати и особенно в конструкторе): вообразите зачем кому-нибудь может потребоваться объект, который будет создаваться на протяжении некоторого модельного времени (для красноречия: на протяжении нескольких тактов? я пока не придумал такой пример). и более того к каким последствиям может привести создание объекта модели размазанное по модельному времени (ведь таск может быть и блокирующим)? так что передавайте привет янику, он вроде книжки бесплатно раздаёт тем кто баги обнаруживает. а это действительно баг, а не фича
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 27 2007, 05:27
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(CaPpuCcino @ Nov 26 2007, 13:18)  суть ограничения на вызов таска из функции в следующем: .... различие между таском и функций понятно, но не могу не подкорректировать  вот эти ваши слова Цитата теперь перейдём к тому почему этого делать нельзя никогда даже в конструкторе класса (к стати и особенно в конструкторе): вообразите зачем кому-нибудь может потребоваться объект, который будет создаваться на протяжении некоторого модельного времени (для красноречия: на протяжении нескольких тактов? я пока не придумал такой пример). и более того к каким последствиям может привести создание объекта модели размазанное по модельному времени (ведь таск может быть и блокирующим)? в этом конкретном примере таск запускается как отдельный программный поток (тред) с помошью великолепно реализованной идеологии fork/join_none. Поэтому конструктор в примере будет исполняться атомарно относительно модельного времени. Пример задачи ну например вот такой. Почитав яника я решил попробывать переделать одну из работающих для тестирования моделей через классы (что бы было как у правильных пацанов  ). Модель приемник и передатчик синхронного потока данных. Функционально модель выглядит как интерфейс с clocking секциями. Функциональность реализована через 2 always, в которых постоянно исполняется последовательный код. Модель стартует независимо в момент начала симуляции. Целью было заворачивание функциональности в класс с передачей управления портами через абстрактные интерфейсы с clocking секциями. Функциональность планировалось реализовать через 2 программных потока реализованных через fork/join_none + task с forever. Но вот реализация независимого старта в момент начала симуляции, похоже невозможна. Требуется явная, внешняя относительно класса, инициализация программных потоков. Цитата так что передавайте привет янику, он вроде книжки бесплатно раздаёт тем кто баги обнаруживает. а это действительно баг, а не фича  Жду его ответа на письмо, а вдруг действительно книгу пришлет
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|