Jump to content

    

Recommended Posts

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

Пытаюсь вот вникнуть в нюансы  скриптинга под Qu.  Но что то туго идет - видать грибы в наше местности не такие забористые как у разработчиков :wacko2:

Хочу  сваять скрип который  делает билд несколькими этапами с модификацией настроек между билдами. 
Для этого используя qurtus_sh и в соответствии с наставлениями "Quartus II Scripting Reference Manual"  создаю пустой проект.
Теперь надо бы наполнит его содержимым,  но чтобы опять не набивать лишние  пару тысяч строк настроек можно же использовать source  готовых настроек  

project_new -overwrite -revision $rev $prj
source "project_all_setings.qsf" 
project_close

Вроде  все ок, проект создался  - но  портянка получающаяся  в project.qsf удручает. Думаю, можно же сделать и так 

project_new -overwrite -revision $rev $prj
set_global_assignment -name FAMILY "Stratix V"
set_global_assignment -name DEVICE 5SGXEABK2H40C2
set_global_assignment -name NUM_PARALLEL_PROCESSORS 4
project_close

set fou [open "$rev.qsf" "a"]
puts  $fou "\n"
puts  $fou "#=============================================================================="
puts  $fou "source \"./project_all_setings.qsf\""
puts  $fou "#=============================================================================="
close $fou
...

Тогда  в qsf проекта будет только ссылка/source со всеми настройками   - красота! В GUI это работает и позволяет контролировать бардак в головах  qsf.  И действительно - на диске получается красивый  qsf  

...
set_global_assignment -name TOP_LEVEL_ENTITY top
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 19.1.0
set_global_assignment -name PROJECT_CREATION_TIME_DATE "02:12:09  SEPTEMBER 18, 2020"
set_global_assignment -name LAST_QUARTUS_VERSION "19.1.0 Standard Edition"
set_global_assignment -name NUM_PARALLEL_PROCESSORS 4

#==============================================================================
source "./project_all_setings.qsf"
#============================================================================== 

Как бы ни так (подумали разработчики Qu) - потому как  последующее ...

...
project_open -revision $rev $prj
set_global_assignment -name PARTITION_NETLIST_TYPE EMPTY -section_id id_some_parttion
...
project_close  

... приводит к тому что  добавленные строки с source удаляются! :shok::wacko2: 

Получается что в qurtus_sh  в этом случае команда project_close  ничего не закрывает хотя  файл qsf и обновляется после "закрытия".  А команда  project_open соответсвенно не читает реальное содержимое qsf (а зачем, раз не закрыто то вот же оно, в кэше лежит)?

Может кто проверить,  такое поведение повторяется?

 

Удачи! Rob.

 

Share this post


Link to post
Share on other sites

По-моему это стандартное поведение Ква. Они что хотят, то и добавляют/меняют в своих проприетарных файлах. Пока читал, пришла мысль - поменяйте политику для файлов, чтобы сделать его read-only может тогда не будет проблем с чтением, а Квартус высрет создаст свой отдельный файл со своими значениями, который не будет мешать Вам.

Share this post


Link to post
Share on other sites

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

On 9/20/2020 at 7:46 AM, Nick_K said:

Пока читал, пришла мысль - поменяйте политику для файлов,

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

On 9/19/2020 at 1:51 PM, pavlovconst said:

Я бы попробовал после project_close закрыть и quartus_sh. И дальнейшие дествия сделать в другом экземпляре quartus_sh.

Ну так фактически пока так и сделал - создал этакого "Франкенштейна",  часть логики  в bash скрипте вызывает функции реализованные в tcl. Осталось java и с python добавить и можно снимать фильм  ужасов   :hang3:

Удачи! Rob.

Share this post


Link to post
Share on other sites

Правильно ли я понял, что суть в том, что нужно подключить свой дополнительный qsf файл?

Я тут тоже озадачился, решил автоматически делать свой отдельный qsf с MAX_FANOUT и пробовать подключать. Перерыл альтеровский форум, нашел https://community.intel.com/t5/Intel-Quartus-Prime-Software/Working-with-Multiple-QSF-files/td-p/169366 , якобы альтера посоветовала делать так

set_global_assignment -name SOURCE_TCL_SCRIPT_FILE supplemental.qsf вместо source

 

но еще не попробовал

upd. Проверил. Нормально цепляет второй qsf

Edited by new123

Share this post


Link to post
Share on other sites

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

On 9/18/2020 at 1:13 PM, RobFPGA said:

Получается что в qurtus_sh  в этом случае команда project_close  ничего не закрывает хотя  файл qsf и обновляется после "закрытия".  А команда  project_open соответсвенно не читает реальное содержимое qsf (а зачем, раз не закрыто то вот же оно, в кэше лежит)?

Эта же ситуация  повторилась  но теперь непосредственно в GUI  Qu. 
Создал  проект с несколькими LL регионами.  Открыл в GUI Qu, все OK.  Закрыл проект в GUI (не выходя из Qu).  Убрал из файла qsf все настройки LL, удалил все рабочие директории (db, incremental_db, ...). Открываю опять проект в GUI Qu - вижу старые LL регионы! Которые к тому-же опять записываются в  файл qsf если в GUI как то изменить настройки проекта :shok:     
Это чертовщина сохраняется до тех пока пока либо не закроешь Qu либо не откроешь другой проект (даже несуществующий). 

Еще прикол в том что так фантомно LL только сохраняются - то есть когда удаляешь их из закрытого проекта, если же после закрытия в GUI, добавить LL в qsf,  то при открытии все прекрасно добавится.

В общем :diablo: какая-то :unknw:

 

Удачи! Rob. 

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.