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

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

и ссылка уже умерла, спасибо заранее!

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

IEEE Standard for SystemVerilog - Unified Hardware Design , Specification? and Verification Language 2009

 

 

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


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

диар олл,

 

подскажите пожалуйста по приведению типов.

есть следующая комбинация типов:

 

typedef bit [7:0] byte_type_vt;

typedef bit [31:0] memory_word_vt;

 

typedef union packed {

byte_type_vt [0:3] byte_view;//ахтунг - реверсивный порядок

memory_word_vt memory_word_view;

}mem_word_ut;

 

mem_word_ut bit_vec_32;

memory_word_vt a;

 

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

 

a=bit_vec_32.memory_word_view;

 

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

ЗЫ: фишка в том, что как я тут недавно обнаружил, Квеста, начиная с версий позже начала 2010г., имеет на это приведение несколько иной взгляд чем я. те модели что работали норм, на предыдущих версиях больше правильно не работают. вот я и думаю, это из-за нарушения стандарта или из-за неопределенности в нём.

 

спб

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


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

подскажите пожалуйста по приведению типов...

В стандарте не смотрел, но по моим представлениям должно получиться:

byte0-bit7,... byte0-bit0, byte1-bit7, ... byte1-bit0, ... ... byte3-bit0

Mожно посмотреть в книжке "SystemVerilog for Design".

Только вряд ли это называется "приведение типов".

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


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

В стандарте не смотрел, но по моим представлениям должно получиться:

вот и по моим тоже, а по представлению ментор графикс в последних версиях квестасима, видимо нет (начиная с версии 6.5е). у них в последних версиях вообще какая-то беда(10.0а я даже копать боюсь - там очевидно косяк в планировщике событий), но об этом в отдельной ветке, когда напишу им очередное послание.

в книжке этого я не видел - там пример с размерностью [3:0] [7:0] (однако, книжка всё-таки не стандарт - на неё не сошлёшься при апелляции ).

ЗЫ: да это наверное не приведение типа, но как точно назвать я не знаю, поэтому не могу сообразить в каком разделе стандарта смотреть

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


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

в каком разделе стандарта смотреть

В главе 7. Агрегатные типы данных. Там и картинки есть. Только вникать сложнее.

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


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

В главе 7. Агрегатные типы данных. Там и картинки есть. Только вникать сложнее.

ага сразу туда и полез, но как-то не заметил где определено правило паковки многомерных массивов с противоположными типами убегания индекса. если знаете где, ткните, плз, конкретно в страницу

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


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

В стандарте не смотрел (внимательно). По логике, так, как вы написали - естественный порядок нумерации. Биты нумеруются от старшего к младшему, элементы массива - от младшего к старшему.

 

Может, картинка из книжки поможет.

post-10362-1303392956_thumb.jpg

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


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

Может, картинка из книжки поможет.

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

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


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

Попробуйте без typedef, просто byte и int.

на это я пойтить не могу! в реальном проекте иерархия типов намного сложнее (до 5-6 уровней). если б было бы так просто как в примере, я конечно особо не горевал бы.

пока, где нашёл заменил на явное присваивание через циклы. но проект огромный и расставлять костыли везде ток из-за ср....х румын оутсорсеров я не стану. сижу на старой версии Квесты.

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


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

Близкое к последнему, что здесь обсуждалось.

Обнаружил разногласия между C и SV.

В языке C битовые поля начинаются с младшего (правого) бита слова, и идут к старшим. Например,

struct status_type {
unsigned delta_cts: 1; // bit 0
unsigned delta_dsr: 1;
unsigned tr_edge:   1;
unsigned delta_rec: 1;
unsigned cts:       1;
unsigned dsr:       1;
unsigned ring:      1;
unsigned rec_line:  1; // bit 7
} status;

В языке SV биты в упакованных структурах идут слева направо (от старшего к младшему).

struct packed {
logic        valid; // bit 40
logic [ 7:0] tag; // bit 39..32
logic [31:0] data; // bit 31..0
} data_word;

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


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

почему не работает знаковое умножение

module mult2(IN,OUT);

input signed [11:0]  IN;
output signed [23:0]  OUT;
assign OUT = IN * 12'd1000;

endmodule

 

в резултате получаеться неправильный выход

знаковый бит теряеться

постоянно положительный результат

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


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

да действительно заработало

правда места много занимает

 

думаю вот попробовать этот алгоритм

будет ли экономия

http://electronix.ru/forum/index.php?act=a...st&id=65881

post-43553-1329923613_thumb.jpg

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


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

на это я пойтить не могу! в реальном проекте иерархия типов намного сложнее (до 5-6 уровней). если б было бы так просто как в примере, я конечно особо не горевал бы.

пока, где нашёл заменил на явное присваивание через циклы. но проект огромный и расставлять костыли везде ток из-за ср....х румын оутсорсеров я не стану. сижу на старой версии Квесты.

 

А вдруг синтезатор (Квартус, или ещё что) думает об этом не так, как старая Квеста... Я в таких спорных-не-моей-вине ситуациях стараюсь писать так, чтоб понятно всем было. Иначе мало ли что.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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