Jump to content

    
Sign in to follow this  
Nick_K

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

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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: 

Share this post


Link to post
Share on other sites
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 вообще раздутие модулей происходит индивидуально для каждого, даже при условии одинаковых параметров - мол так можно оптимизировать каждый по-разному.

Share this post


Link to post
Share on other sites

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

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.

Share this post


Link to post
Share on other sites
On 10/9/2020 at 5:35 AM, RobFPGA said:

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

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

Edited by EgorT

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this