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

А кто какими симуляторами пользуется? И как ведет разработку? тестирование?

А то что-то квартус штука не торопливая особенно на атоме.

Я стараюсь большую задачу разбивать на малые "понятные" модули, и эти малые "понятные" модули симулирую в ModelSim.

Если модуль симулируется, то и в железе он будет, скорее всего, работать.

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

Провожу только RTL-симуляцию. Честно говоря, я не понимаю зачем нужно временное моделирование, если проект укладывается в заданные временные ограничения - значит всё должно работать...

 

А вот скажите, кто какие средства проектирования автоматов использует?

Квартусовский настолько убогий, что луче бы его совсем не было.

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


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

А какой там такой мегаинструмент нужен? Если в схеме с ПЛИС есть интерфейс к PC, то весь тест можно оформить через него просто софтом на PC.

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

 

А кто какими симуляторами пользуется?

Если Xilinx, то нравится их встроенный симулятор iSim, которого часто вполне хватает. У Altera стыковка с Modelsim.

 

И как ведет разработку? тестирование?

Стараюсь-то вести разработку так, как доктор прописал (начинать с проектирования и заканчивать качественным тестированием), но не всегда мои хотения сочетаются со внезапностью тех, кто инициирует разработку. :)

Моделирую в основном работу модулей, целиком проект не так часто нужно тестировать и не всегда возможно.

 

А то что-то квартус штука не торопливая особенно на атоме.

Это зверство! )))

 

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

В общем-то так и есть.

Если достаточно интегральной оценки с помощью попадания во временные ограничения, то можно остановиться на RTL-симуляции,

Нужно более детально и наглядно - смотрим результаты временного моделирования.

 

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

Не использую такие.

Просто пишу руками код, который порождает КА после синтеза.

Для себя наработал удобные решения и делаю читабельные структуры конечных автоматов со многими уровнями вложенности.

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


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

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

 

Ну это естественно бывает необходимо, куда без этого то, если устройство требует такие входные сигналы, которые само себе сгенерировать не может... Но ведь опять же, их по любому делать, и можно сделать как раз к тому времени, когда и дело подойдет к отладке тех блоков ПЛИС, которые без такого устройства не отладить. Я их упоминал, как некие тест-девайсы, они могут и управляться от PC, что, кстати, очень нечасто, чаще они просто какая-то не особо сложная "навеска" к входам-выходам устройства. А можно и некий генератор тест-сигналов внутри ПЛИС себе сделать, если место есть и это как-то сэкономит стоимость/сложность тестовой обвески.

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


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

У меня процесс

 

Архитектура, продумываю что с чем и как, гуляя, лежа на диване, рисуя в тетрадочке.

 

Потом разбитие на блоки, каждый блок пишу и симулю-тестирую.

 

потом сбор общего проекта, тесты в железе. Весь проект никогда не симулирую.

Инструменты все что дали изначально ISE, ISim. Я некоторое время даже для тестов не тестбенчи делал, а в tcl скрипте просто сигналы входные задавал через определенные временные интервалы и все.

 

Никаких доп фигней не использую, просто описываю автоматы текстом. Я чет как-то даже не гонюсь за средствами разработки. У меня напарник все себе наставил, и даже редактор ISE сменил на кастомный, я как то прям вот как из коробки есть, так и работаю... Мне хватает.

 

К прибору в купе у нас механика идет, и функционал проверяется уже после сборки. Просто проверяют что все функции выполняет. Ребята что драйверы писали, сделали тестовую программу, которая все дергает по очереди, так что стендов тоже нет.

 

 

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


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

Лучше всего учить тот язык на котором разговаривал Ленон! :biggrin:

а если серьёзно тот что требует работодатель :biggrin:

и тут знание обоих vhdl и verilog никак не помешает

для себя решил что

- vhdl для ядра того что разрабатывается. Потому что

1)vhdl не даст сделать дурацких и очень глупых ошибок

2)Обычно (у меня) то что написано на vhdl работает в железе без лишнего дебага(хотя да - пишется может и дольше, но оно как то более продумано чтоли)

 

- verilog(точнее systemverilog) Для тестбенча. Потому что

1) очень быстро пишется(и правится) без лишних сущностей

2) не нужно заморачиваться с длинной\шириной и прочее с этим связанное

3) легко цеплается simulink, DPI, systemC( понятия не имею как оно обстоит в тестбенче на vhdl и даже пробовать не стану :-D)

4) работа с файлами привычна и почти так же как и в С(оно там с человеческим лицом :biggrin: )

 

косяки

1)при использовании vhdl не заметил каких либо глупостей в симплифай, ква и ise

был страный косяк в questasim 10.1 b (откатился на 10.1a - всё ок)

2)при использовании systemverilog(!)

ise не поддерживает, переключаемся на вивадо

ква - ок(хотя и были очень давно 5 лет назад например - for(int i...) такое выбрасывалось нафиг)

симплифай - ок

таже questasim 10.1b как то странно обрабатывала сдвиг

например - a<={a,b}

questasim 10.1a - при таком вот описании:

always@(posedge clk or posedge reset)
if(reset)
{a,b,c,d,e}<='0;
else
....

если a,b,c просто bit и d,e bit[x:0] то по какой то причине после сброса в d выставляет не нули а что то невнятное

с верилог(2001) там всё ок, не заметил косяков.

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


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

{a,b,c,d,e}<='0;

 

А что это за синтаксис такой, '0 ? Стандарт определяет только три вида чисел:

 

Integer numbers can be used as operands in expressions. An integer number can be expressed as
An unsized, unbased integer (e.g., 12)
An unsized, based integer (e.g., ’d12, ’sd12)
A sized, based integer (e.g., 16’d12, 16’sd12)

 

и по стандарту после ' обязательно надо указать base:

The second form specifies a size constant, which shall be composed of up to three tokens—an optional size constant, a single quote followed by a base format character, and the digits representing the value of the number

.....

The second token, a base_format, shall consist of a case-insensitive letter specifying the base for the number, optionally preceded by the single character s (or S) to indicate a signed quantity, preceded by the single quote character (’).

 

Так что, эту странную конструкцию вообще обматерить должны были....

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


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

А что это за синтаксис такой, '0 ? Стандарт определяет только три вида чисел:

 

Integer numbers can be used as operands in expressions. An integer number can be expressed as
An unsized, unbased integer (e.g., 12)
An unsized, based integer (e.g., ’d12, ’sd12)
A sized, based integer (e.g., 16’d12, 16’sd12)

 

и по стандарту после ' обязательно надо указать base:

The second form specifies a size constant, which shall be composed of up to three tokens—an optional size constant, a single quote followed by a base format character, and the digits representing the value of the number

.....

The second token, a base_format, shall consist of a case-insensitive letter specifying the base for the number, optionally preceded by the single character s (or S) to indicate a signed quantity, preceded by the single quote character (’).

Так что, эту странную конструкцию вообще обматерить должны были....

 

это врядли

SystemVerilog enhances assignments of a literal value in two ways.

First, a simpler syntax is added, that allows specifying the fill value

without having to specify a radix of binary, octal or hexadecimal.

Secondly, the fill value can also be a logic 1. The syntax is to specify

the value with which to fill each bit, preceded by an apostrophe

( ' ), which is sometimes referred to as a ”tick”. Thus:

• '0 fills all bits on the left-hand side with 0

• '1 fills all bits on the left-hand side with 1

• 'z or 'Z fills all bits on the left-hand side with z

 

косяк проявлялся только в квесте

симплифай, ква да и вивадо такое понимают

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


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

косяк проявлялся только в квесте

 

Сорри, не понял, что речь про SystemVerilog. Для него да, это косяк.

 

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


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

А за какой больше платят? При условии наличии опыта...

 

Схематик исключаем ;)

 

Берем объявления о трудоустройстве! Самый не востребованный AHDL. Архаичный и привычный VHDL- Так себе... Самый востребованный по инофирмам SV. Верификация котируется очень высоко!

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


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

От меня пять копеек.

Имхо, соображения против VHDL насчёт "много букв" - это вряд ли. Основное время всё равно уходит на обдумывание, а не писанину. А макросы в текстовом редакторе вроде Notepad++ сведут разницу в скорости письма на VHDL и Verilog практически к нулю.

Код на VHDL, говорят, получается более надёжный. Для меня это решающее соображение. А ещё на VHDL нельзя написать вот такое

counter +<= 1'b1; // мечта!

, и это отдельное большое достоинство. Ибо второе важнейшее качество кода - читаемость и понимаемость ночью, при выключающихся мозгах.

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


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

Код на VHDL, говорят, получается более надёжный.

 

Вот это один из самых мифических мифов, корни которого растут из языка Ада :)

 

Надежность системы определяется никак не тем, на каком языке она описана, а ее схемой, на сколько правильно она продумана и построена в части глитчей, гонок, метастабильностей, междоменных переходов, соблюдения временнЫх ограничений, и т.п. электрических нюансов, и ни verilog, ни VHDL, ни SV, да ни один из языков вообще, ни в чем не способствует повышению надежности в этой части.

 

Да, VHDL со своей типизацией и строгостью позволяет за счет большей писанины избежать многих нелепых детских ошибок, но к надежности это ровным счетом никакого отношения не имеет.

 

PS

Ночью с выключенными мозгами нужна лаконичность для читаемости, чтобы не искать суть "a/b" среди полукилобайта окружающей муры.

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


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

А ещё на VHDL нельзя написать вот такое

counter +<= 1'b1; // мечта!

, и это отдельное большое достоинство. Ибо второе важнейшее качество кода - читаемость и понимаемость ночью, при выключающихся мозгах.

Ну не знаю... На С/С++ ведь ни кто не жалуется в этом плане.

 

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


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

, и это отдельное большое достоинство. Ибо второе важнейшее качество кода - читаемость и понимаемость ночью, при выключающихся мозгах.

Ну не знаю... На С/С++ ведь ни кто не жалуется в этом плане.

на С нет, не жалуются

чего не скажешь про С++ :biggrin:

 

вот пример, хотя наверное не ахти какой.

Попробуйте порыть какой нить опенсорс написаной с кучей темплейтов?

я пробовал на досуге, досуг не получился :biggrin:

ну и сравните это мучение с pure C.

да и в том же С можно (он ж позволяет вольности) написать некое чудо с редко воспроизводимым багом (casting не сделан например)

тоесть глаз замылен и варнинги не читаются, ну и программа падает редко - "все счастливы".

Но ведь никто не отменял линт когда мозг отключен или глаз замылен.

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

Не сделаный(забытый) кастинг и есть глупая/детская ошибка.

так вот подобие линта есть уже в самом синтаксисе вхдл. возможности (ну или так "возможности" :biggrin: ) синтаксиса вхдл конечно не спасают

от функциональных "заложенных" просчётов.

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

и тут я согласен - придётся тратить время(в самом начале примерно 2-3 дня) на всякую фигню типа "как этот integer перевести в std_logic_vector" и наоборот.

вот тут и наступает некий переломный момент.

ну или не наступает :biggrin: , потому что работадателю ваши хотелки до фонаря.

"Вам платят за написание на вхдл/верилог/java, потому что это внутренний стандарт компании!"

или так

"Вам платят за результат, потому что это куда важнее!"

 

попробуйте последний случай на себе :biggrin: тут Вы будете один на один с проблемой. айгаранти! :biggrin:

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

Но вы всё же попробуйте! Опыт гарантирован :biggrin:

 

Короче к чему я всё это.

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

вот SV популярен и востребован потому что сейчас очень много времени уделяется верификации. Это стратегия.

 

А вот если кому-то важна надёжность дело ни в вхдл, ни в верилоге.

дело в человеках и их мозгах, их опыте, в том как налажен процесс верификации продукта. Это типа психология. :cranky:

 

сколько человеков столько и мнений, каждому свой баг.

з.ы. знакомые упомянали что им было проще проходить собеседование об/про java и они категорически отказывались от с++ на собеседовании

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


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

Код на VHDL, говорят, получается более надёжный.

Надежность системы определяется никак не тем, на каком языке она описана, а ее схемой,

Я же про код, а не про надёжность системы :) На VHDL труднее делать дурацкие ошибки. Вроде как никто с этим не спорит. Потому экономится время на их поиске и устранении.

А вообще, имхо, здесь многое зависит от характера человека. Кто-то любит сделать побыстрее, но кое-где на авось, а кто-то - обстоятельно, разложивши всё по полочкам. И те, и другие бывают и хорошими работниками, и хреновыми :D

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

А преобразовать число в std_logic_vector и обратно - вообще запросто. Можно даже не лазить по чужим библиотекам, быстрее самому написать под свои задачи. Вот, например:

-- Преобразование десятичного числа в std_logic_vector
function NaturalToSLV (NaturalValue: natural; Size: natural) return std_logic_vector is
   variable TempNatural: natural;  --в теле функции не дадут ничего сделать с формальным параметром NaturalValue
   variable result : std_logic_vector(Size - 1 downto 0);
begin
   TempNatural := NaturalValue;
   for i in 0 to Size - 1 loop
       if TempNatural rem 2 = 1 then result(i) := '1'; else result(i) := '0'; end if;
       TempNatural := TempNatural / 2;
   end loop;
   return result;
end NaturalToSLV;

-- Преобразование std_logic_vector в десятичное число 
function SLVtoNatural (SLV: std_logic_vector) return natural is
   variable result : natural;
begin
   result := 0;
   for i in 0 to SLV'length - 1 loop
       if SLV(i) = '1' then result := result + 2**i; end if;
   end loop;
   return result;
end SLVtoNatural;

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


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

на С нет, не жалуются

чего не скажешь про С++ :biggrin:

[...]

з.ы. знакомые упомянали что им было проще проходить собеседование об/про java и они категорически отказывались от с++ на собеседовании

Истины ради, а не холивара для. Все, кто ругает С++, просто готовить его не умеют. :) Это проверено и доказано практикой многократно.

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


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

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

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

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

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

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

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

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

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

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