|
|
  |
Документация на System Verilog, Сбор документации на SVerilog. И обсуждение тонких моментов синтаксиса |
|
|
|
Aug 28 2006, 15:56
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Прикладываю статейку от менторовцев, в которой рассказано, чем удобен SV именно для синтеза. А также кратенькое описание отличия SV от verilog.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
Aug 30 2006, 14:05
|
Частый гость
 
Группа: Свой
Сообщений: 86
Регистрация: 3-05-06
Пользователь №: 16 717

|
Цитата(dimasen @ Aug 9 2006, 13:58)  Цитата(Doka @ Aug 9 2006, 12:05)  можете объяснить преимущества использования SV перед обычным верилогом именно для синтезируемых описаний?
есть несколько моментов которые мне понравились, но это может выглядеть очень ущербным. Повторюсь, я ж только в квартусе с ним работал  вот например: описание входных-выходных портов в модуле: module ss_smii_rx ( input aclr, input rxclk, input sync, input rxd,..........) т.е. теперь надо это писать только однажды. потом, введение структур, енумерации. Только я не понял нафига мне структуры если я с ними не могу производить никаких действий т.е. например: struct { logic PARITY; logic[3:0] ADDR; logic[3:0] DEST; } pkt_t; logic [8:0] m; assign m = pkt_t; (так не прокатит) assign m = {pkt_t.PARITY, pkt_t.ADDR, pkt_t.DEST}; (можно только так) надеюсь это всего лишь ущерб квартуса Дело в том, что в этом случае (assign m = pkt_t;) вы пытаетесь присвоить структуру типа unpacked (она такая по умолчанию) переменной типа packed. Составляющие unpacked структур в памяти симулятора могут располагаться как угодно (размер струкиуры не известен), тогда как составляющие packed структуры располагаются друг за другом (известен размер структуры). Соответственно, чтоб работало нормально, нужно написать так: struct packed{ logic PARITY; logic[3:0] ADDR; logic[3:0] DEST; } pkt_t; logic [8:0] m; assign m = pkt_t; Кстати говоря размер m равен 9, а размер pkt_t 8.....
Сообщение отредактировал PAB - Aug 30 2006, 14:06
|
|
|
|
|
Sep 6 2006, 10:58
|

Участник

Группа: Свой
Сообщений: 59
Регистрация: 12-07-04
Из: Санкт-Петербург
Пользователь №: 313

|
Цитата(PAB @ Aug 30 2006, 18:05)  Дело в том, что в этом случае (assign m = pkt_t;) вы пытаетесь присвоить структуру типа unpacked (она такая по умолчанию) переменной типа packed. Составляющие unpacked структур в памяти симулятора могут располагаться как угодно (размер струкиуры не известен), тогда как составляющие packed структуры располагаются друг за другом (известен размер структуры). Соответственно, чтоб работало нормально, нужно написать так: struct packed{ logic PARITY; logic[3:0] ADDR; logic[3:0] DEST; } pkt_t;
logic [8:0] m; assign m = pkt_t;
Кстати говоря размер m равен 9, а размер pkt_t 8..... Спасибо. Всё правильно. Правда, я это тоже недавно сам понял.
|
|
|
|
|
Mar 22 2007, 14:31
|
Частый гость
 
Группа: Свой
Сообщений: 86
Регистрация: 3-05-06
Пользователь №: 16 717

|
Цитата(Кнкн @ Aug 22 2006, 12:06)  Вот встретилось, может кому-нибудь нужно ... Verification Methodology Manual for SystemVerilog by Janick Bergeron Eduard Cerny Alan Hunter Andrew Nightingale http://rapidshare.de/files/26050684/vmmsv.zip.htmlА нельзя ли ещё разок на рапиде выложить эту книгу, а то ссылка уже не работает
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|