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

Quartus запретить оптимизацию/переименование портов

Столкнулся с проблемой в "уважаемом" Квартусе: по исходному проекту нужно установить целый ворох констрейнов для  проверки прототипа в FPGA, но сам тул просто оптимизирует большинство имён модулей.

Как можно указать сохранить имена именно входных/выходных портов для конкретного модуля? Ну или не оптимизировать иерархически.

Квартус 20.1, бесплатный. Соответственно LogicLock не предлагать.

З.Ы. Также на более поздних этапах будет интересовать вопрос по фиксированию определённой логики во floorplan. Я хорошо знаю как это делается у Xilinx, но как и есть ли вообще такой функционал у Альтеры - вопрос.

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


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

Основной вопрос отпал, прагма (* keep = 1 *) перед портами в объявлении интерфейса сработала (при том, что /* synthesis keep */ до этого не работала).

Вопрос с фиксированием модулей в регионе на флорплане остаётся открытым.

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


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

Приветствую!

On 10/1/2020 at 1:33 PM, Nick_K said:

Основной вопрос отпал, прагма (* keep = 1 *) перед портами в объявлении интерфейса сработала (при том, что /* synthesis keep */ до этого не работала).

Вопрос с фиксированием модулей в регионе на флорплане остаётся открытым.

Вопрос  фиксации  флорплана в Qu  обычно решался через DP, но как я понял для web edition это не работает.  

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

С фиксацией части оной  при следующих fit через set_location_assignment.

 

Для этого  можно  в командной строке  выполнить

quartus_cdb --back_annotate=lc -c <revision name>  <project_name> 

 Получите в revision_name.qsf  портянку на десяток-другой MB  типа 

set_location_assignment MLABCELL_X163_Y56_N6 -to "bla_bla_path|...|inst_analog_datactrl|lpm_add_sub:inst_p2add_sub_wr|add_sub_iae:auto_generated|add_sub_cella[1]" 
set_location_assignment M20K_X132_Y26_N0     -to "bla_bla_path|...|altsyncram:g_alt_core.i_altsyncram|altsyncram_cos2:auto_generated|ram_block1a1~PORTADATAOUT0" 

Которую можно будет или  использовать  как есть :shok:, или немного почистив в отдельный файл подключать в проект через set_global_assignment -name SOURCE_TCL_SCRIPT_FILE "..../lock.tcl".

Бяка в том, что в Standart версии Qu нет встроенной фильтрации по типам и инстансам. А в выдаваемой портянке  куча странностей - например для памяти указываются все порты а не сам примитив памяти.  Придется либо смирится либо нетривиально парсить  этот бардак.

Есть второй вариант -  в том же quartus_cdb (или в tcl консоле chip_planner) через TCL скрипт  получить список  nodes и потом уже  брать параметры этих node. Плюс в том, что список nodes можно сразу фильтровать по типу lc, ram, dsp. И примитив выдается один раз.  Например для всей памяти:

  project_open -revision revision_name project_name
  read_netlist

  foreach_in_collection id [get_nodes -type ram] {
    set name     [get_node_info -node $id -info "name"]
    set loc_ind  [get_node_info -node $id -info "Location Index"]

    set str      [format "set_location_assignment %-20s -to %s" $loc_ind $name]
    puts ">> $str"
  }

Можно добавить выбор типа примитивов, фильтрацию по инстансам, разбивку на  файлы, ... в общем повторить то, что недавно сделали в Qu Pro 20.3  :yes3:   

Естественно если все это хоть как то работает в web версии

 

Удачи! Rob.

P.S.  Вопрос на засыпку - знаете сколько вариантов  имени node есть в db базе ?  :wink2: 

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


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

On 10/9/2020 at 5:35 AM, RobFPGA said:

Вопрос  фиксации  флорплана в Qu  обычно решался через DP, но как я понял для web edition это не работает.  

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

С фиксацией части оной  при следующих fit через set_location_assignment.

Вопрос немного заглох, но решение не самое лучшее, так как я надеялся всё-же ограничить область размещения, а не "словить" удачное размещение на переборе Сидов и потом просто заморозить... И да в Лайте не работает, а в Про нет нужного камня (получилось запустить на более старой версии, но там тоже с камнем вопросы небольшие).

За наводку в любом случае спасибо, но по-видимому без переделки RTL не обойтись - Ква упорно не хочет паковать неординарное описание сумматоров в DSP, что очень раздувает комбинационную часть.

On 10/9/2020 at 5:35 AM, RobFPGA said:

P.S.  Вопрос на засыпку - знаете сколько вариантов  имени node есть в db базе ?  :wink2: 

Не знаю, но есть предположение по каждому компоненту_его_параметры. В Genus вообще раздутие модулей происходит индивидуально для каждого, даже при условии одинаковых параметров - мол так можно оптимизировать каждый по-разному.

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


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

Приветствую!

5 hours ago, Nick_K said:

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

Ограничить область  размещения  это LogicLock, который вам "... не предлагать" :unknw:

5 hours ago, Nick_K said:

За наводку в любом случае спасибо, но по-видимому без переделки RTL не обойтись - Ква упорно не хочет паковать неординарное описание сумматоров в DSP, что очень раздувает комбинационную часть.

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

 

Ну и правильный ответ -  есть ...

... просто имя                  [get_node_info -node $id -info "name"]
... полное имя                 [get_node_info -node $id -info "Full Node Name"]
... короткое имя               [get_node_info -node $id -info "Short Node Name"]
... очень короткое имя     [get_node_info -node $id -info "Very Short Node Name"]
и  предпочтительное имя [get_node_info -node $id -info "Preferred Name"]  ...  :shok:

Следующая загадка пока без ответа - когда и где нужно использовать то или иное имя? :scratch_one-s_head:

 

Удачи! Rob.

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


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

On 10/9/2020 at 5:35 AM, RobFPGA said:

Вопрос  фиксации  флорплана в Qu  обычно решался через DP, но как я понял для web edition это не работает. 

Design Partition вроде как доступен для бесплатной версии. Нет, не доступен.

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

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


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

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

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

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

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

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

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

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

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

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