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

ICE40 Lattice ICECube2 много вопросов начинающего

Добрый день,

 

много раньше работал с готовыми платами от Altera на Stratix 3-4, Cyclone 3-5, SoC, но появилась нужда развести маленькую простую плату с плиской и, похоже, останавливаю свой выбор на ICE40 от Lattice, но возникло куча вопросов.

 

Мне надо: где-то 24-30 вводов-выводов, минимальный корпус, два питания, максимальная скорость работы внутренней логики на простой операции, чуть сложнее FIFO, и максимальное колличество внутренней памяти под два FIFO, минимум надо 64кбита, но желательно больше, 128кбит. Также нужен очень точный клок, который внутри плиски надо умножить до примерно 240МГц (или хотя бы до 160МГц) и на нем все клочить.

 

Хочется идеально остаться в 2-х слойке, так как на плате все остальное тоже двухслойное :) То есть ice40lp8k-cm81 должно получиться, если некоторые неудобные в разводке пины с внитренних частей никуда не соединять.

 

Пока плату не разводил, начал играться с оболочкой iCEcube2. Важное замечание, у меня есть куча компов, но ни одного с Виндой, все с убунтами, в основном 14.04LTS, но уже есть и 16.04. Винду хотел бы не ставить, ибо даже как виртуалку некуда.

 

Поставил и iCEcube2, и Олимексовкий вариант http://www.clifford.at/icestorm/ все запускается, у олимекса получается скомпилить пример. У iCEcube2 никакой проект скомпилить не могу, ругается так:

 

Current Implementation my_first_project_Implmnt its sbt path: /home/ilgis/iCEcube2/Projects/test/my_first_project/my_first_project_Implmnt/sbt
"/opt/iCEcube2.2016.02/sbt_backend/bin/linux/opt/synpwrap/synpwrap" -prj "my_first_project_syn.prj" -log "/home/ilgis/iCEcube2/Projects/test/my_first_project/my_first_project_Implmnt/my_first_project.srr"
/opt/iCEcube2.2016.02/synpbase/bin/synplify_pro: 135: [: unexpected operator
/opt/iCEcube2.2016.02/synpbase/bin/synplify_pro: 149: [: !=: argument expected
Copyright (C) 1992-2014 Lattice Semiconductor Corporation. All rights reserved.
Child process exit with 2.
Error of dumping file /home/ilgis/iCEcube2/Projects/test/my_first_project/my_first_project_Implmnt/my_first_project.srr, 'stdout.log' is instead. 
Synthesis exit by 2.
/opt/iCEcube2.2016.02/synpbase/bin/synplify_pro: 208: /opt/iCEcube2.2016.02/synpbase/bin/config/execute: Syntax error: "(" unexpected (expecting ";;")
Error : can not print out log file stdout.log
Synthesis failed.
Synthesis batch mode runtime 0 seconds

 

хелп также не работает, хотя я и хачил его как было сказано по ссылке

 

В олимексе не понимаю как описать PLL и блочную память для внутренних буферов.

 

Пока курил только ICE40FamilyHandbook.pdf с сайта производителя, но не помогло...

 

Помогите, пожалуйста:

 

1. где достать вменяемый мануал по латисовской оболочке, чтобы в ней начать описывать свою логику?

2. на сколько олимексовская ссылка лучше или хуже по оптимизации, чем сама латисовская оболочка?

3. вопрос по железу: нужен точный клок, не уплывающий в диапазоне (0-40С) температур, стоит ли закладываться на внутренний клок от латтиса, или обязательно ставить внешний, и если внешний, то какой?

 

Спасибо!

 

ИИВ

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


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

Current Implementation my_first_project_Implmnt its sbt path: /home/ilgis/iCEcube2/Projects/test/my_first_project/my_first_project_Implmnt/sbt
"/opt/iCEcube2.2016.02/sbt_backend/bin/linux/opt/synpwrap/synpwrap" -prj "my_first_project_syn.prj" -log "/home/ilgis/iCEcube2/Projects/test/my_first_project/my_first_project_Implmnt/my_first_project.srr"
/opt/iCEcube2.2016.02/synpbase/bin/synplify_pro: 135: [: unexpected operator
/opt/iCEcube2.2016.02/synpbase/bin/synplify_pro: 149: [: !=: argument expected
Copyright (C) 1992-2014 Lattice Semiconductor Corporation. All rights reserved.

Похоже, synplify_pro -- это shell-скрипт. Если у вас там везде Линукс, значит, вы способны разобраться со скриптом. Посмотрите, что там в этих строках.

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


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

нужно проверить в системе, что sh (см. первую строчку в synplify_pro) указывает на bash - вроде слышал, что в новом дебиане и производных от него убунтах это не так по дефолту

 

ну и про ice40 вообще - рекомендую обязательно проверить разводимость проекта, прежде чем железо покупать - там из-за минимизации трассировочных ресурсов плисина может не разводится при 70% занятости

 

> 1. где достать вменяемый мануал по латисовской оболочке, чтобы в ней начать описывать свою логику?

 

описывайте логику в сиплифае, в его среде. а проект в айскубе делайте из нетлиста

 

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


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

нужно проверить в системе, что sh (см. первую строчку в synplify_pro) указывает на bash - вроде слышал, что в новом дебиане и производных от него убунтах это не так по дефолту

точно, спасибо! Там на dash показывало и из-за этого проблемы были.

 

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

 

ну и про ice40 вообще - рекомендую обязательно проверить разводимость проекта, прежде чем железо покупать - там из-за минимизации трассировочных ресурсов плисина может не разводится при 70% занятости

у меня на всех Альтерах такое же бывало, тайминги падают при заполненности ALUов от 70% и выше, по умножителям и блочной памяти такое только при 99% начинается, а по логике да, но у меня вечно проекты кривые, и на 400МГц+ работавшие.

 

описывайте логику в сиплифае, в его среде. а проект в айскубе делайте из нетлиста

не осилил где брать симплифай, помогите, пожалуйста ссылкой!

 

 

Есть еще два вопроса новичка в Латисах... Хочу работать с iCE40HX8K (может впишусь в 4К, но не факт), так как другие не пройдут по объему памяти, и обязательно HX серия из-за скорости. Пинов надо мало, поэтому наверное буду пользовать -cb132.

 

1. Не могу понять мануал iCE40FamilyHandbook.pdf, примерно на 25 странице. скажите, пожалуйста, могу ли я сделать так:

 

VCC_SPI=1.8В,

VPP_2V5=2.5В,

 

и при таких параметрах заливать новые прошивки (для запоминания в NVCM), или при запоминании в NVCM мне обязательно надо поднять VCC_SPI до 2.5В? Убей не понятно написано, поэтому и сомневаюсь, а поэкспериментировать с разводкой и платой обойдется в штуку зелени и кучу времени...

 

2. Еще вопрос, скажите, пожалуйста, можно ли клок, генерируемый микроконтроллером в виде меандра на 1.8В завести внутрь плиски, и поднять частоту PLLем до 250МГц примерно. Клок с контроллера могу примерно в диапазоне 4-20МГц взять. Если так можно сделать, то на какую ногу мне этот меандр заводить, на обычную, или PLL.ую?

 

Спасибо!!!

 

ИИВ

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


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

> у меня на всех Альтерах такое же бывало

 

с ICE40 сильно не так, как с Альтерами, Ксайлинсами или другими Латисами (XP2 или MACHXO)

 

мне хватило тестов синтеза - больше с железом я ничего не делал и в даташиты не читал

 

---------------

 

> не осилил где брать симплифай, помогите, пожалуйста ссылкой!

 

я соврал - думал, что ICECUBE предоставляет те же возможности, что и DIAMOND (тул для родных латтисовских ПЛИС)

 

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

LSC_SYNPLIFYPRO1 видимо не достаточно, нужно еще LSC_SYNPLIFY

 

то есть, спрашивать нужно в специальных разделах форума, там же наверно, нужно взять не урезаную под ICE40 версию синплифая, а полную, которая поддерживает все чипы всех вендоров

 

тут я не могу посоветовать, так как давно не пользовался

 

 

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


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

> у меня на всех Альтерах такое же бывало

 

с ICE40 сильно не так, как с Альтерами, Ксайлинсами или другими Латисами (XP2 или MACHXO)

 

мне хватило тестов синтеза - больше с железом я ничего не делал и в даташиты не читал

 

---------------

 

> не осилил где брать симплифай, помогите, пожалуйста ссылкой!

 

я соврал - думал, что ICECUBE предоставляет те же возможности, что и DIAMOND (тул для родных латтисовских ПЛИС)

 

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

LSC_SYNPLIFYPRO1 видимо не достаточно, нужно еще LSC_SYNPLIFY

 

то есть, спрашивать нужно в специальных разделах форума, там же наверно, нужно взять не урезаную под ICE40 версию синплифая, а полную, которая поддерживает все чипы всех вендоров

 

тут я не могу посоветовать, так как давно не пользовался

 

 

Доброго дня. Не получается скачать iCEcube2 и Diamond , а также лицензии. С латисами не работал, но нужно освоить быстро, хотим использовать в серийных изделиях. Подскажите, как добыть среды разработки, на что обратить внимание из чипов, нужны аналоги циклона 1-го.

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


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

Доброго дня. Не получается скачать iCEcube2 и Diamond , а также лицензии. С латисами не работал, но нужно освоить быстро, хотим использовать в серийных изделиях. Подскажите, как добыть среды разработки, на что обратить внимание из чипов, нужны аналоги циклона 1-го.

я советую ECP5 (LFE5U) они очень хорошо по цене и наверняка покрывают циклон 1, но они только в BGA корпусах

если нужны планарные - то MACHXO2 или XP2 (там плюс - конфигурационная память внутри)

софт - бесплатный даймонд и лицензия к нему - лицензию они пришлют даже на yandex почту

 

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


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

я соврал - думал, что ICECUBE предоставляет те же возможности, что и DIAMOND (тул для родных латтисовских ПЛИС)

 

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

LSC_SYNPLIFYPRO1 видимо не достаточно, нужно еще LSC_SYNPLIFY

Странно, у меня нормально работает synplify, под винду и с бесплатной лицензией. Пользуюсь версией 2017 года, но и в 2015, насколько я помню, все было в порядке с этим.

У меня стоят и iCECcube2 и Diamond, может дело в этом? В Synplify когда выбираешь семейство, доступны и ice40 и родные латтисовские. :laughing:

 

3. вопрос по железу: нужен точный клок, не уплывающий в диапазоне (0-40С) температур, стоит ли закладываться на внутренний клок от латтиса, или обязательно ставить внешний, и если внешний, то какой

У встроенного rc генератора огромный джиттер, больше 10000ppm. И частота прилично различается в разных микросхемах. Если нужен точный (насколько?) клок, поставьте, лучше, внешний генератор с требуемыми параметрами, их сейчас полно всяких. mems генераторы бывают весьма экономичными.

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


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

Привет всем.

Попробовал тоже работать с iCECube2 и возникла следующая проблема:

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

Так вот в квартусе или диамонде все хорошо: компилятор малоразрядные умножители с небольшим набором комбинаций множимого и множителя заменяет комбинаторной логикой.

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

Пришлось в коде умножитель заменять кейсом, тогда все собирается как надо. Но это как-то неудобно.

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

Или может быть есть для этого случая какая-нибудь верилог-директива?

Изменено пользователем dortonyan

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


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

8 hours ago, dortonyan said:

Или может быть есть для этого случая какая-нибудь верилог-директива?

Это не от языка зависит, а от синтезатора. Читайте доку на ваш синтезатор.

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


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

9 hours ago, dortonyan said:

Попробовал тоже работать с iCECube2 и возникла следующая проблема:

А синтезатор там synplify?

посмотрите help в его вендор-депендент версии (которая "ис коропки")

-------------

я когда-то посмотрел на iCE* и разочаровался в их возможностях - похоже, что в этой "архитектуре" сильно сэкономили на трассировочных ресурсах, мои проекты не лезли вообще никак (в сравнении с "такими же" по гейтам LCP5, например). 
то есть рекомендую довести P&R до конца, прежде чем брать iCE для проектов 

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


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

1 hour ago, andrew_b said:

Это не от языка зависит, а от синтезатора. Читайте доку на ваш синтезатор.

Не ну есть же в верилоге директивы, типа запрета вырезания проводника оптимизацией.

Подумал может что-то есть и для моего случая. А в синтезаторе там опций с гулькин нос.

 

21 minutes ago, yes said:

А синтезатор там synplify?

посмотрите help в его вендор-депендент версии (которая "ис коропки")

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

 

24 minutes ago, yes said:

я когда-то посмотрел на iCE* и разочаровался в их возможностях - похоже, что в этой "архитектуре" сильно сэкономили на трассировочных ресурсах, мои проекты не лезли вообще никак (в сравнении с "такими же" по гейтам LCP5, например). 

Да, я тоже обратил внимание, что логика оптимизируется хуже, чем например MachXO2.

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

Мой текущий проект как раз хорошо помещается в 2к плисину с 4-мя DSP блоками, но приходится второстепенные операторы умножения расписывать кейсами. Сделать то же самое автоматом компилятор почему-то не умеет.

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


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

1 hour ago, dortonyan said:

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

можно что-то от ксайлиса попробовать типа c= a * b (* syn_mult = logic *); или как-то так (точно не так "прагма" называется - это просто стиль в SV, но вроде и в коментах /* */ работало в старых версиях), я не помню уже. в гайде на ксайлинс написано было
может и сработает

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


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

2 hours ago, dortonyan said:

Не ну есть же в верилоге директивы, типа запрета вырезания проводника оптимизацией.

Это директивы не языка, а конкретного синтезатора. С точки зрения языка это комментарии. У другого синтезатора директивы будут другие.

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


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

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

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

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

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

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

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

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

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

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