Jackov
Участник-
Постов
425 -
Зарегистрирован
-
Посещение
Весь контент Jackov
-
ISE + Synplify
Jackov ответил Jackov тема в Среды разработки - обсуждаем САПРы
Исторически сложилось. А это проблема? Ознакомился конечно, потому и говорю. -
ISE + Synplify
Jackov ответил Jackov тема в Среды разработки - обсуждаем САПРы
Где SV-конструкции - да. Там про ip-корки, это будет следующим этапом. ) -
Ну так я и указываю директивы через `define. У меня несколько вариантов платы, отличаются наличием или отсутствием некоторых микросхем, потому закомментаривая или раскомментаривая соответствующие дифайны я включаю/исключаю куски кода работающие с этими микросхемами. Поэтому объявления некоторых переменных то появляются, то исчезают, а значит в do-файле мы каким-то образом должны знать какие переменные присутствуют в коде, какие нет. Впрочем вариантов решения задачи набралось достаточно. Ну переменные может нет, а вот адекватные названия состояниям иногда бывает затруднительно подобрать.
-
Что за ключ? Как можно что-то послать в RTL? Мне всегда нравилось численное название состояний автоматов. Состояний много, каждому надо имя выдумывать, а так пронумеровал и потом в симуляции или при отладке в железе посмотрел на номер состояния, нашёл его в графе/блок-схеме и сразу понятно где находится автомат и что происходит.
-
ISE + Synplify
Jackov ответил Jackov тема в Среды разработки - обсуждаем САПРы
Ну не знаю, какой смысл в крутом железе, если его нельзя нормально запрограммировать, какая с него польза конечному пользователю... Как по мне, в таком деле нельзя отдавать приоритеты, все направления нужны, все направления важны. -
Чёт я не совсем понял. Да может действительно будет проще силами TCL залезть в исходный RTL-код, прочитать там всё что надо и делать соответствующий выбор.
-
ISE + Synplify
Jackov ответил Jackov тема в Среды разработки - обсуждаем САПРы
У меня при создании проекта synplify крашится, не знаю почему, или криво встал, или кряки кривые. Я сравниваю с Q, Q версии 9.1 аж от 2009 года то что мне нужно компилирует без всяких танцев с бубнами, в отличии от. А ещё говорят, что Хилые - флагман ФПГА... Прикрепил. SV.rar -
NotePad++ такое умеет. Я уже давно не пользуюсь встроенным редактором.
-
ISE + Synplify
Jackov ответил Jackov тема в Среды разработки - обсуждаем САПРы
Буду признателен, если поделитесь опытом. Думаю, лучше здесь, может быть это прочитает ещё кто-то кому это нужно. -
ISE + Synplify
Jackov ответил Jackov тема в Среды разработки - обсуждаем САПРы
Я сравниваю по годам. Q версии 9.1 от 2009 года, а ISE версии 14.7 от 2013 года, Q может, I нет. У меня Spartan 6. И кстати, что получается, Vivado поддерживает SV, но не поддерживает Spartan 6, ISE поддерживает Spartan 6, но не поддерживает SV. Выходит так, что в принципе, используя штатные инструменты, нельзя ничего написать на SV для Spartan-а 6? Здорово у них там всё. И как выводить предупреждения и ошибки в удобном виде, используя Synplify, я так и не понял. -
ISE + Synplify
Jackov ответил Jackov тема в Среды разработки - обсуждаем САПРы
У меня туда нет доступа. Установил версию 2010. При попытке создать проект в самом Synplify он аварийно завершается. Подключил к ISE, вроде даже что-то синтезирует. Но вот незадача, логи синтеза выводит не в консоль ISE, а в отдельный файл, и всё бы ничего, но там такая портянка, что в ней среди прочего никак невозможно найти предупреждения и ошибки. В консоли ISE можно отфильтровать, переключив на соответствующую вкладку. А тут как? Неясно. -
ISE + Synplify
Jackov опубликовал тема в Среды разработки - обсуждаем САПРы
Нужны некоторые конструкции SV, в частности 2-х мерные массивы, по типу wire [7:0][15:0]ABC; ISE, как я понимаю, такое не могёт... в отличии, кстати от Q, тот вполне компилирует. Говорят к ISE можно подключить сторонний синтезатор Synplify. Собственно два вопроса: 1. Где его взять? Смотрел на торрентах, есть 9.6.1; 2009.06 SP1; 2010 2010091 и 2019.03 версии,. Какая лучше? Как обстоят дела с кряками, работают ли? 2. Как интегрировать, если это возможно, одно в другое? -
Ага, мысль понятна. Но в моём случае, сейчас, наверно, проще через catch или find сделать. Кстати, find, при отсутствии сигнала, выдаёт не ноль, а пустую строку "".
-
Да понятно что команды разные. Печально, что нет штатных возможностей добраться до определений прекомпилятора из tcl. Не понял, как?
-
Это да. Но как вернуть обратно? onerror {break} не работает. Только onerror "". find - хорошо, но это почти тоже самое что и catch. А хотелось бы что-то вида if {[define exists BBB]} {add wave B}
-
Обучающие видео по Verilog
Jackov опубликовал тема в Обучающие видео-материалы и обмен опытом
Канал на Youtube посвящённый проектированию под FPGA. Акцент сделан на производителя ПЛИС фирму Intel (Altera) и язык описания схем Verilog. Материал, в большей степени, ориентирован на начинающих. https://www.youtube.com/c/Jack0v/playlists?view=1 -
Есть код: `define AAA //`define BBB ... `ifdef AAA wire A; `endif `ifdef BBB wire B; `endif ... В Моделсиме добавляю эти сигналы через do-файл: ... add wave A add wave B ... Строчка add wave B вызывает ошибку. Есть ли способ добавлять сигналы с учётом определений прекомпилятора? Я знаю, что директивы - моветон, но всё же. Документацию полистал - ничего хорошего не нашёл, за исключением onerror {resume}, но он пропускает все неизвестные сигналы, поэтому приходится писать ... add wave A onerror {resume} add wave B onerror {break} ... Вот только onerror {break} не работает, и МоделСим продолжает пропускать неизвестные сигналы, поэтому вместо него пишу onerror "" , как пишут в документации это возврат команды onerror к исходному состоянию, вот только как оно называется так и не понятно. Но в любом случае это неудобно. Можно ещё через catch { }, но это тоже костыли. Всё же хотелось бы получить доступ к определениям прекомпилятора из tcl.
-
Ах да, верно. Виновен.
-
Вообще, если подумать, то в автомате тестировать нужно только комбинационную часть, регистр состояний тестировать незачем, он слишком прост для этого. Потому можно сделать так: переписываем автомат так чтобы его комбинационная часть была в отдельном always-блоке. Этот always-блок временно, на время тестирования, помещаем в отдельный модуль. На вход модуля помещаем счётчик, который, во время счёта, переберёт все возможные комбинации на входе модуля. Ну а далее просто смотрим что выдаёт модуль и сравниваем с графом автомата.
-
Обычный RS-триггер с приоритетом так-то. Ну да, выглядит непривычно, привычно так: if(RM_Rise == 1'b1) Dis_Foto <= 1'b1; else if(Res_Dis_Foto == 1'b1) Dis_Foto <= 1'b0; Но и так тоже можно.
-
Рекомендую навернуть этот плейлист https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
-
Это всё хорошо. Вот только если он инверсию поставит на выходе триггера, то инвертированное начальное состояние триггера (после выхода ПЛИС на рабочий режим) он никак скомпенсировать не сможет. Я в своё время накололся на этом, весь извёлся пытаясь понять почему у меня триггер после запуска сразу стоит в единице.
-
У Альтеры PLL вообще меньше 1МГц (или около того) выдавать не может. Можно поделить на PLL до приемлемых значений, а потом ещё и счётчиком, тогда разрядов у него меньше будет.
-
Тут нужно помнить что не во всех ПЛИС есть асинхронная установка в единицу. Например в Циклоне 1 она была, а Циклоне 4 уже нет. И если так написать то есть вероятность, что компилятор сделает асинхронный сброс в ноль, и чтобы его скомпенсировать поставит инверсию на выходе триггера, отчего начальное состояние триггера будет не 0, а 1. В таких случаях надо смотреть не только RTL, но ещё и что получилось после фитера.
-
У плисины корпус с ногами под брюхом, BGA он называется или ка-то так, особо не подпаяешься. У флешки, кстати, тоже такой корпус. Так что даже просто флешку на свободные ноги перекинуть - не вариант. Ладно, этот вопрос пока отложили, может позже ещё подниму тему.