ConstHw 0 11 февраля, 2016 Опубликовано 11 февраля, 2016 (изменено) · Жалоба Снова о наболевшем :) Да, я знаю о существовании System Verilog, вопросы относятся только к Verilog. 1) В VHDL есть команда "присвой нулю весь этот регистр" signal s1 : std_logic_vector(DWIDTH-1 downto 0); s<=(others=>'0'); В Verilog пока обнаружены следующие конструкции "присваивать 32 нуля", веря в то, что регистр никогда не станет больше 32 s='d0; Присваивать "массив нулей фиксированной длины" reg [DWIDTH-1:0] s; s={ DWIDTH{1'b0}}; Проблема сохраняется - если объявление массива изменится на [DWIDT+CONST-1:0] то конструкция перестанет работать. Существует ли способ взятия атрибута сигнала, но присвоить его точно? 2) В Verilog есть неприятное свойство modue1_inst( .out_port(bus) ); modue2_inst( .in_port(bus) ); Если сигнал bus нигде ранее не объявлен, то синтезатор по умолчанию считает его шиной шириной 1 бит. Можно ли настроить синтезатор (Vivado и Symplify) на предмет выключения такого умолчания и вываливания таких ситуация как ошибочных? Другая ситуация - можно случайно допустить ошибку написав .clk_cfg(cfg_clk), по умолчанию будет создан однобитовый сигнал cfg_clk, который никуда не подключен При этом сообщение об этом "создании" не передается, передается только варнинг при синтезе WARNING: [Synth 8-3848] Net cfg_clk in module/entity u1 does not have driver. Но таких варнингов может быть куча и они не являются опасными, делать их все критическими нет смысла. Есть смысл ловить ситуацию появления недекларированных сигналов/регистров. Как обойти эту ситуацию? 3) Правильно ли я понимаю что на массивы в Verilog наложены следующие ограничения на массивы, которые в рамках Verilog 2001 не преодолимы - Массивы одинаковой размерности нельзя присваивать один в другой. - Массивы нельзя передавать на вход функций и возвращать из функции 4) Передача объектов типа struct как аргумента в функцию и возвращение структуры так же запрещено? 5) В VHDL существует удобная возможность хранить массивы констант в package. Например type VEC8_ARRAY is array (integer range <>) of std_logic_vector(7 downto 0); constant COEF_ARR:VEC8_ARRAY(3 downto 0)=(x"41",x"42",x"43",x"44"); И потом легко обращаться к этим массивам например при generate. Как правильно хранить константу-массив в Verilog? В vh? Изменено 11 февраля, 2016 пользователем ConstHw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FakeDevice 0 11 февраля, 2016 Опубликовано 11 февраля, 2016 · Жалоба Извините за оффтоп, но, возможно, легче будет перейти на VHDL, нежели пытаться "прилепить горбатого к стене"? Никогда не задумывались? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 11 февраля, 2016 Опубликовано 11 февраля, 2016 · Жалоба ... но, возможно, легче будет перейти на VHDL, нежели пытаться "прилепить горбатого к стене"?... :bb-offtopic: Есть подозрение, что ТС владея VHDL пытается освоить verilog. Соответственно проецирует наработанные решения на новый ЯОА. (я бы наверняка делал так же, желая переписать какой-либо проект с vhdl на verilog) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Существует ли способ взятия атрибута сигнала, но присвоить его точно? Нет. Используйте автоприведение разрядностей. Самый простой вариант присвоить вектору 1'b0. Если сигнал bus нигде ранее не объявлен, то синтезатор по умолчанию считает его шиной шириной 1 бит. Можно ли настроить синтезатор (Vivado и Symplify) на предмет выключения такого умолчания и вываливания таких ситуация как ошибочных? `define default_nettype none На свой страх и риск. Макрос глобальный. Но таких варнингов может быть куча и они не являются опасными, делать их все критическими нет смысла. Есть смысл ловить ситуацию появления недекларированных сигналов/регистров. если вы VHDL щик, у вас в крови должно быть декларация всех сигналов до использования. - Массивы одинаковой размерности нельзя присваивать один в другой. - Массивы нельзя передавать на вход функций и возвращать из функции да 4) Передача объектов типа struct как аргумента в функцию и возвращение структуры так же запрещено? В верилоге структур нет вообще Как правильно хранить константу-массив в Verilog? В vh? только include файлы ЗЫ. Стандарт на верилог 2001 читается за день, он написан нормальным языком, в отличие от VHDL ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ConstHw 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба des00 Я прямо ждал вашего ответа :-) Спасибо! >>Самый простой вариант присвоить вектору 1'b0. [/ Не понял? reg [63:0] sig1; sig1<=1'b0; Присвоит только младший бит, разве нет? Так же как присвоение 'd0 присвоит младшие 32? Так как хранить в include? Сейчас храню колхозно define C0 0 define C1 1 define C2 2 Define аналогичен поведению дефайна в С, когда он подставляет кусок кода определенный дефайном? my_header.vh define C_VALUE ('h1,'h2,'h3); ---------- my_module.v reg [2:0] my_const_reg [3:0] ='C_VALUE FakeDevice За предложение перейти на VHDL большое спасибо, именно ваш совет заставил меня задуматься. Не представляю чтоб я без вас делал. Очень полезный и ценный совет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Присвоит только младший бит, разве нет? Так же как присвоение 'd0 присвоит младшие 32? IEEE Std 1364-2001 -> 4. Expressions -> 4.4 Expression bit lengths -> 4.4.1 Rules for expression bit lengths -> The number of bits of an expression (known as the size of the expression) shall be determined by the operands involved in the expression and the context in which the expression is given. A self-determined expression is one where the bit length of the expression is solely determined by the expression itself for example, an expression representing a delay value. A context-determined expressionis one where the bit length of the expression is determined by the bit length of the expression andby the fact that it is part of another expression. For example, the bit size of the righthand side expression of an assignment depends on itself and the size of the left-hand side. Так как хранить в include?..... Define аналогичен поведению дефайна в С, когда он подставляет кусок кода определенный дефайном? да, именно так. и макросы для параметров - зло, используйте параметры с локальным включением в модуль. FakeDevice За предложение перейти на VHDL большое спасибо, именно ваш совет заставил меня задуматься. Не представляю чтоб я без вас делал. Очень полезный и ценный совет. зря троллите. VHDL дает академичность изложения и для обучения лучше. Для всего остального есть SV Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ConstHw 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Пишу на VHDL 6ой год. Можно еще кстати новичкам задающим вопросы по VHDL рекомендовать бросить это дело и идти писать на яве. Проблема SV что каждый сапр поддерживает свое множество языка и не хочется получить ситуацию, что код написанный для Xilinx вдруг перестанет синтезироваться в Quartus. или ранее написанный проект вдруг надо будет сунуть в ASIC, а там только verilog 95. Есть какой минимальный набор конструкций SV, который надо поддерживать софту чтоб называться "мы поддерживаем SV"? И тогда еще вопрос Язык С не контролирует выход за границы массива. Минус - можно разрушить стек. Плюс - программа работает быстрее. Язык Verilog не контролирует выход за границы массива и обращение reg[7:0] my_reg;l a<=my_reg[8] приведет к присвоению пустоты. Минус - очевидная ошибка прячется за warning и может быть пропущена. А есть вообще какие то плюсы этого? Verilog написанный для Testbench ведь все равно не комилируются в бинарник, как С, а исполняется временным симулятором как набор команд? Или комплируется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба когда-то в стародавние времена J. Cooley (ESNUG, по-моему deepchip-а тогда еще не было) проводил среди энтузиастов конкурс - довести с 0 до нетлиста некий простой узел по тех.заданию (которое оглашалось на месте) - там порядка по 20 верилогистов и вхдл-щиков участвовало, так до чистого результата ни один vhdl-щик и не дошел (из вериложщиков по-моему половина) в этом плюс верилога :) хотя, конечно, можно сказать позадорновски "ну они тууупыые" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба когда-то в стародавние времена J. Cooley (ESNUG, по-моему deepchip-а тогда еще не было) проводил среди энтузиастов конкурс - довести с 0 до нетлиста некий простой узел по тех.заданию (которое оглашалось на месте) - там порядка по 20 верилогистов и вхдл-щиков участвовало, так до чистого результата ни один vhdl-щик и не дошел (из вериложщиков по-моему половина) в этом плюс верилога :) хотя, конечно, можно сказать позадорновски "ну они тууупыые" на мой взгляд, это ничего не доказывает.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба когда-то в стародавние времена J. Cooley (ESNUG, по-моему deepchip-а тогда еще не было) проводил среди энтузиастов конкурс - довести с 0 до нетлиста некий простой узел по тех.заданию (которое оглашалось на месте) - там порядка по 20 верилогистов и вхдл-щиков участвовало, так до чистого результата ни один vhdl-щик и не дошел (из вериложщиков по-моему половина) в этом плюс верилога :) Делать ставку на ЯОА опираясь на "статистику" с выборкой в 20 человек - неразумно. :bb-offtopic: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ConstHw 0 15 февраля, 2016 Опубликовано 15 февраля, 2016 · Жалоба yes я не думаю что на основе такого конкурса можно делать далеко идущие выводы. Оба языка используются в крупных проектах крупными компаниями, оба языка дают возможность писать плохо и хорошо. Коллеги, был бы рад сохранению тематики обсуждения на конкретных вопросах, без абстрактных "ну удобен мне VHDL, душа лежит" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 15 февраля, 2016 Опубликовано 15 февраля, 2016 · Жалоба оба языка дают возможность писать плохо и хорошо.На Верилоге можно написать такой говнокод, который в VHDL в принципе невозможен. Необъявленные сигналы, несовпадающие разрядности и прочая прелесть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Bekrenyov 0 17 февраля, 2016 Опубликовано 17 февраля, 2016 · Жалоба На Верилоге можно написать такой говнокод, который в VHDL в принципе невозможен. Необъявленные сигналы, несовпадающие разрядности и прочая прелесть. Vice versa При переходе с Verilog, Думая что пишу на строго типизированном языке, понаписал такого что только 4-ый компилятор показал где же именно ошибка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ConstHw 0 17 февраля, 2016 Опубликовано 17 февраля, 2016 · Жалоба Sergey_Bekrenyov, а можно пример? Просто в VHDL такие финты как присвоить несовпадающие размерности шин не прокатят, присвоить бит в вектор и наоборот, присвоить real в int Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Bekrenyov 0 17 февраля, 2016 Опубликовано 17 февраля, 2016 · Жалоба Sergey_Bekrenyov, а можно пример? Просто в VHDL такие финты как присвоить несовпадающие размерности шин не прокатят, присвоить бит в вектор и наоборот, присвоить real в int Давно дело было, лет 5 назад, даже SVN не поможет Из последних условие SIGNAL init_ram_rdaddr : std_logic_vector(9 DOWNTO 0); .. IF(init_ram_rdaddr = x"3FF") - не выполнялось никогда переписано на IF(init_ram_rdaddr = "11" & x"FF") Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться