scorp 0 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба и ссылка уже умерла, спасибо заранее! по просьбе трудящихся освежаю ссылку: IEEE Standard for SystemVerilog - Unified Hardware Design , Specification? and Verification Language 2009 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 20 апреля, 2011 Опубликовано 20 апреля, 2011 · Жалоба диар олл, подскажите пожалуйста по приведению типов. есть следующая комбинация типов: 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г., имеет на это приведение несколько иной взгляд чем я. те модели что работали норм, на предыдущих версиях больше правильно не работают. вот я и думаю, это из-за нарушения стандарта или из-за неопределенности в нём. спб Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба подскажите пожалуйста по приведению типов... В стандарте не смотрел, но по моим представлениям должно получиться: byte0-bit7,... byte0-bit0, byte1-bit7, ... byte1-bit0, ... ... byte3-bit0 Mожно посмотреть в книжке "SystemVerilog for Design". Только вряд ли это называется "приведение типов". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба В стандарте не смотрел, но по моим представлениям должно получиться: вот и по моим тоже, а по представлению ментор графикс в последних версиях квестасима, видимо нет (начиная с версии 6.5е). у них в последних версиях вообще какая-то беда(10.0а я даже копать боюсь - там очевидно косяк в планировщике событий), но об этом в отдельной ветке, когда напишу им очередное послание. в книжке этого я не видел - там пример с размерностью [3:0] [7:0] (однако, книжка всё-таки не стандарт - на неё не сошлёшься при апелляции ). ЗЫ: да это наверное не приведение типа, но как точно назвать я не знаю, поэтому не могу сообразить в каком разделе стандарта смотреть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба в каком разделе стандарта смотреть В главе 7. Агрегатные типы данных. Там и картинки есть. Только вникать сложнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба В главе 7. Агрегатные типы данных. Там и картинки есть. Только вникать сложнее. ага сразу туда и полез, но как-то не заметил где определено правило паковки многомерных массивов с противоположными типами убегания индекса. если знаете где, ткните, плз, конкретно в страницу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба В стандарте не смотрел (внимательно). По логике, так, как вы написали - естественный порядок нумерации. Биты нумеруются от старшего к младшему, элементы массива - от младшего к старшему. Может, картинка из книжки поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба Может, картинка из книжки поможет. спасибо. эту картинку знаю, но ситуация там описанная отличается однообразным убеганием индексов в пакованных размерностях. нужно именно формальное описание из стандарта (как должно быть по логике вещей я знаю) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба Попробуйте без typedef, просто byte и int. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 21 апреля, 2011 Опубликовано 21 апреля, 2011 · Жалоба Попробуйте без typedef, просто byte и int. на это я пойтить не могу! в реальном проекте иерархия типов намного сложнее (до 5-6 уровней). если б было бы так просто как в примере, я конечно особо не горевал бы. пока, где нашёл заменил на явное присваивание через циклы. но проект огромный и расставлять костыли везде ток из-за ср....х румын оутсорсеров я не стану. сижу на старой версии Квесты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 31 мая, 2011 Опубликовано 31 мая, 2011 · Жалоба Близкое к последнему, что здесь обсуждалось. Обнаружил разногласия между 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ysmat 0 22 февраля, 2012 Опубликовано 22 февраля, 2012 · Жалоба почему не работает знаковое умножение module mult2(IN,OUT); input signed [11:0] IN; output signed [23:0] OUT; assign OUT = IN * 12'd1000; endmodule в резултате получаеться неправильный выход знаковый бит теряеться постоянно положительный результат Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Poluektovich 0 22 февраля, 2012 Опубликовано 22 февраля, 2012 · Жалоба так будет работать assign OUT = IN * 12'sd1000; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ysmat 0 22 февраля, 2012 Опубликовано 22 февраля, 2012 · Жалоба да действительно заработало правда места много занимает думаю вот попробовать этот алгоритм будет ли экономия http://electronix.ru/forum/index.php?act=a...st&id=65881 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
myq 0 17 мая, 2012 Опубликовано 17 мая, 2012 · Жалоба на это я пойтить не могу! в реальном проекте иерархия типов намного сложнее (до 5-6 уровней). если б было бы так просто как в примере, я конечно особо не горевал бы. пока, где нашёл заменил на явное присваивание через циклы. но проект огромный и расставлять костыли везде ток из-за ср....х румын оутсорсеров я не стану. сижу на старой версии Квесты. А вдруг синтезатор (Квартус, или ещё что) думает об этом не так, как старая Квеста... Я в таких спорных-не-моей-вине ситуациях стараюсь писать так, чтоб понятно всем было. Иначе мало ли что. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться