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

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

выложил доки из синопсиского VCS (vmm+fssertions)

/upload/DOCs/SystemVerilog/synopsys/

 

вроде бы не встречал такого на сайте

 

в SOLD-е много еще всего, примеры, туториалы, всякие методологии типа RVM, OVA и т.д.

если нет линукса или лень распаковывать весь солд, могу дозалить

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


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

А VCS-то хоть "берет" эти мудрые конструкции, от которых плохеет ментору?

 

то о чем мы говорим (2008.9 mx) берет (но ментор их тоже берет), но VCS не глючит

ну и работает на порядки быстрее (позже попытаюсь пустить нетлист с SDF, и померить с каденсом, ментор то на этом вообще сосет)

 

но у VCS-а есть проблемы с начальной инициализацией и параметрами (это я изложу отдельным топиком)

то есть полного счастья нет :(

 

зато гораздо внятней становится структура сборки (всякий маразм типа mfcu, sfcu отсутствует) и судя по всему все книжки по SV, написаны на основе VCS-а

ну и доки и примеров полно

ну и VMM там есть (вроде как прямее OVM, хотя я не копенгаген, чтоб их сравнивать)

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


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

Получить книгу с автографом Яника не получилось. Вот ответ :

 

таки яник и сотоварищи признали что не правы, правда косвенно.

 

http://synopsysoc.org/insideprotocolverification/?p=40

 

SystemVerilog introduces a new wrinkle. In SystemVerilog there is the additional requirement that functions not consume time. Tasks can, functions can’t. So VCS, for example, now produces a warning when a function implementation includes a task call

 

вот что интересно, открытый VMM может и не подняться на других симуляторах

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


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

SystemVerilog Assertions

 

Author(s): Srikanth Vijayaraghavan

Publisher: Springer

Date : 2005

Pages : 334

Format : PDF

 

/upload/DOCs/SystemVerilog

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


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

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

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

  T pipa;


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

пришло от ментора письмо. говорят, что фича исправлена в 6.5. поверил наслово.

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


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

Нашел вот это:

http://www.pdf-search-engine.com/system-verilog-rtl-pdf.html

Сейчас буду рыться...

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


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

Ищу книгу

Verilog and SystemVerilog Gotchas:101 Common Coding Error and How to Avoid Them

by Stuart Sutherland and Don Mills

Пожалуйста, Не могли бы вы помочь?

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


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

не подскажет ли уважаемая публика, можно ли паковать интерфейсы в пакеты

спб

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


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

не подскажет ли уважаемая публика, можно ли паковать интерфейсы в пакеты

спб

 

если я правильно понял вопрос -

 

нельзя - вроде бы где-то явно написано

так ткнулся в стандарт

 

Types, variables, tasks, functions, sequences, and properties may be

declared within a package. Such declarations may be referenced within modules, macromodules, interfaces,

 

то есть то что инстанциируется в хиерархию в пакадж нельзя

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


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

то есть то что инстанциируется в хиерархию в пакадж нельзя

спб! тоже где-то в стандарте видел фразочку, типа, всё что может быть с hierarchical reference в пакет нельзя - но немного смутил доступ к полям классов, структур, объединений.

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


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

уважаемые, стоит такая задача:

есть массив интерфейсов типа if_t из n элементов -

if_t if_array[n]();

есть набор интерфейсов в количестве n того же типа никак не объединённых -

if_t if_a();

if_t if_b();

...

if_t if_n();

необходимо однозначно связать весь набор из разрозненных интерфейсов с каждым интерфейсом массива.

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

interface if_t();

...

function automatic if_t if_assign(if_t interface_bind);

endinterface

но есть сомнения что это реализуемо;

другой вариант - делать модуль-заглушку, но это не изящно.

что посоветуете?

 

ЗЫ: вообще в последнее время некоторые участники форума стали говорить, что n мало, и лучше k, поэтому если будет k, я не возражаю

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


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

Что значит "связать"? Присвоить элементам одного интерфейса значения другого? Или нужно, чтобы было взаимное переприсваивание?

В первом случае всё просто: на уровне environment-та приассайнить нужный интерфейс из массива к интерфейсу из набора. Остальную часть проекта можно не менять. При желании это же

можно сделать на верхнем уровне-

  function void connect();
...
   create_env.assign_vi_int1_env(sw_tb_top.top_int1);
   сreate_env.assign_vi_int2_env(sw_tb_top.top_int2);
...
 endfunction : connect 

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

следующим: в нужном блоке кода определить присваивание в `ifndef а, а на верхнем уровне либо определять`define а 16, либо нет. Тем самым будет происходить выбор направления присваивания.

 

Надеюсь правильно понял вопрос. :)

Изменено пользователем warrior-2001

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


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

Что значит "связать"? Присвоить элементам одного интерфейса значения другого? Или нужно, чтобы было взаимное переприсваивание?

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

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

typedef struct {bit a;bit b;} struct_t;

struct_t x; struct_t y;

x=y; (эквивалентно x.a=y.a; x.b=y.b;)

таким образом если учесть направление сигналов в интерфейсе, то необходимо писать нечто например такое: x.a=y.a; y.b=x.b; (или наоборот в зависимости от направления сигналов).

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

вариант с прекомпилятором использовать не хочется, хотчется языковыми средствами.

спб

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


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

Ищу документацию на System Verilog.

Нашёл всяческие презантации и "перечни" отличий от Verilog'a (назовём ANSI Verilog :) )

А нормальной доки так и не нашёл.

 

загружать можно от суда:

http://www.systemverilogtestbench.org/books/

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


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

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

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

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

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

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

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

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

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

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