Jump to content

    

Отследить наличие порта в блоке в схемном файле

Есть в Квартусе (по кр. мере, в 9.0) неприятная вещь. 

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

Как отследить такую ошибку?

Share this post


Link to post
Share on other sites
1 час назад, MrGalaxy сказал:

Есть в Квартусе (по кр. мере, в 9.0) неприятная вещь. 

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

Как отследить такую ошибку?

Не работать со схемный вводом.

Что у Altera, что у Xilinx - схемный ввод порождает больше проблем, чем ускоряет разработку.

Share this post


Link to post
Share on other sites

А ещё быть очень внимательным при отладке проекта. Я Вас понял.

К сожалению, человеческий фактор никто не отменял и когда в проекте штук 20 блоков и в каждом по 10-20 портов, то запутаться просто.

Примеры во вложении. В одном проекте ошибок нет, во втором "случайно" забыт выходной порт B2 блока Block1 в схемном файле. При компиляции обоих проектов ошибок нет, а результат симуляции, очевидно, разный.

 

Пример для форума.7z

Share this post


Link to post
Share on other sites

А вы в отчёте не только ошибки смотрите, но и варнинги, а также просто сообщения. Квартус всегда предупреждает об оптимизации и отключении не используемых сигналов и модулей.

Как вариант можно написать скрипт, который будет отслеживать такие сообщения.

 

Share this post


Link to post
Share on other sites
On 7/13/2019 at 8:52 PM, MrGalaxy said:

К сожалению, человеческий фактор никто не отменял и когда в проекте штук 20 блоков и в каждом по 10-20 портов, то запутаться просто.

Разбивайте на блоки, пишите комментарии, читайте ворнинги, никто не отменял линт.

Share this post


Link to post
Share on other sites
On 7/13/2019 at 2:52 PM, MrGalaxy said:

А ещё быть очень внимательным при отладке проекта. Я Вас понял.

К сожалению, человеческий фактор никто не отменял и когда в проекте штук 20 блоков и в каждом по 10-20 портов, то запутаться просто.

Примеры во вложении. В одном проекте ошибок нет, во втором "случайно" забыт выходной порт B2 блока Block1 в схемном файле. При компиляции обоих проектов ошибок нет, а результат симуляции, очевидно, разный.

 

Пример для форума.7z

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

Share this post


Link to post
Share on other sites
5 часов назад, lexx сказал:

Разбивайте на блоки, пишите комментарии, читайте ворнинги, никто не отменял линт.

Посмотрите пример, я специально создал его. Когда разбиваешь на блоки, такая петрушка и происходит.

При чём тут комментарии вообще? (см. предыдущий п.)

И, в качестве ликбеза, что такое линт?

Share this post


Link to post
Share on other sites
2 часа назад, Maverick_ сказал:

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

Я, простите, ничего не понял.

Делаю проще: всю соединительную шину выделяю, пару раз щёлкнув по ней мышкой, и смотрю вкладку "сигналы", до каких блоков доходит конкретный сигнал.

Но это уже делается при отладке, при поиске косяков. А смысл в том, чтобы сам Квартус писал синим цветом сообщения, что, мол, сигнал-то не доходит до адресата.

7 часов назад, wolfman сказал:

А вы в отчёте не только ошибки смотрите, но и варнинги, а также просто сообщения. Квартус всегда предупреждает об оптимизации и отключении не используемых сигналов и модулей.

Как вариант можно написать скрипт, который будет отслеживать такие сообщения.

 

А я и смотрю не только ошибки. Пример выложен, можете сами откомпилировать и посмотреть.

ЗЫ. вообще-то это грубая ошибка, а не предупреждение, и, уж тем более не сообщение. 

 

 

 

Если у кого есть Квартус поновее, откомпилируйте, плз., мой пример с ошибкой.

Edited by MrGalaxy

Share this post


Link to post
Share on other sites
11 minutes ago, MrGalaxy said:

Я, простите, ничего не понял.

Делаю проще: всю соединительную шину выделяю, пару раз щёлкнув по ней мышкой, и смотрю вкладку "сигналы", до каких блоков доходит конкретный сигнал.

Но это уже делается при отладке, при поиске косяков. А смысл в том, чтобы сам Квартус писал синим цветом сообщения, что, мол, сигнал-то не доходит до адресата.

А я и смотрю не только ошибки. Пример выложен, можете сами откомпилировать и посмотреть.

я про работу с hdl описанием в текстовом редакторе...  NotePad++ поддерживает синтаксис VHDL/Verilog

как предварительный вариант получения файла top level графический редактор подойдет, потом можно сгенерить hdl описание и продолжать уже работать в текстовом редакторе

Share this post


Link to post
Share on other sites
2 минуты назад, Maverick_ сказал:

я про работу с hdl описанием в текстовом редакторе...

как предварительный вариант получения файла top level графический редактор подойдет, потом можно сгенерить hdl описание и продолжать уже работать в текстовом редакторе

При чём тут файл hdl?

В нём порт есть, а в блоке нету. Как это отследить автоматически?

Откройте пример, я попытался максимально просто в нём всё показать.

Edited by MrGalaxy

Share this post


Link to post
Share on other sites
В 15.07.2019 в 12:43, MrGalaxy сказал:

А я и смотрю не только ошибки. Пример выложен, можете сами откомпилировать и посмотреть.

ЗЫ. вообще-то это грубая ошибка, а не предупреждение, и, уж тем более не сообщение. 

Это ваша грубая ошибка, откуда компилятору знать что вы хотели сказать отсутствующим сигналом/модулем?

Он и отключает всё, что связано с этим сигналом, с точки зрения Квартуса это не ошибка и он честно пишет, что именно он отключил.

Пишите скрипт, который после синтеза будет автоматом запускаться и искать сообщения об отключенных сигналах/модулях, либо скрипт, который будет проверять до синтеза наличие всех портов и выдавать ошибки при не совпадении.

Share this post


Link to post
Share on other sites
В 18.07.2019 в 23:07, wolfman сказал:

Это ваша грубая ошибка, откуда компилятору знать что вы хотели сказать отсутствующим сигналом/модулем?

Так и смысл в том, чтобы отследить ошибки инженера. Например, Квартус выдаёт синие предупреждения том, что переменная/сигнал подсчитана, но нигде не используется. А эту ошибку почему-то не отслеживает.

В 18.07.2019 в 23:07, wolfman сказал:

и он честно пишет, что именно он отключил.

У меня просьба: ткните меня носом где именно он об этом пишет. Вот сообщения компилятора:

Info: *******************************************************************
Info: Running Quartus II 64-Bit Analysis & Synthesis
	Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Full Version
	Info: Processing started: Sat Jul 20 10:45:08 2019
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off A1 -c A1
Info: Found 2 design units, including 1 entities, in source file Block1.vhd
	Info: Found design unit 1: Block1-Block1_architecture
	Info: Found entity 1: Block1
Info: Found 2 design units, including 1 entities, in source file Block2.vhd
	Info: Found design unit 1: Block2-Block2_architecture
	Info: Found entity 1: Block2
Info: Found 1 design units, including 1 entities, in source file A1.bdf
	Info: Found entity 1: A1
Info: Elaborating entity "A1" for the top level hierarchy
Info: Elaborating entity "Block2" for hierarchy "Block2:inst2"
Info: Elaborating entity "Block1" for hierarchy "Block1:inst"
Info: Implemented 4 device resources after synthesis - the final resource count might be different
	Info: Implemented 2 input pins
	Info: Implemented 1 output pins
	Info: Implemented 1 logic cells
Info: Quartus II 64-Bit Analysis & Synthesis was successful. 0 errors, 0 warnings
	Info: Peak virtual memory: 290 megabytes
	Info: Processing ended: Sat Jul 20 10:45:09 2019
	Info: Elapsed time: 00:00:01
	Info: Total CPU time (on all processors): 00:00:01
Info: *******************************************************************
Info: Running Quartus II 64-Bit Fitter
	Info: Version 9.0 Build 235 06/17/2009 Service Pack 2 SJ Full Version
	Info: Processing started: Sat Jul 20 10:45:10 2019

Я ни словечка про сигнал B2, существующий в Block1.vhd, но не выведенный наружу, не нашёл.

Share this post


Link to post
Share on other sites
8 hours ago, MrGalaxy said:

А эту ошибку почему-то не отслеживает.

Могу ошибаться, но по-моему схемный ввод при создании блока делает новый компонент-обертку для исходника, написанного на vhdl. А поскольку в этой обертке добавлены не все порты, то и рассматриваться при компиляции они не будут.

Share this post


Link to post
Share on other sites
1 час назад, Amurak сказал:

написанного на vdhl

Я бы сказал "который возможно будет написан на VHDL/AHDL/Verilog", т.к. текстовый файл создаётся после создания блока по отдельной команде.

 

1 час назад, Amurak сказал:

А поскольку в этой обертке добавлены не все порты, то и рассматриваться при компиляции они не будут

Да, получается, что не рассматриваются. Однако, некоторые коллеги здесь пишут, что компилятор Квартуса пишет об этом.

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

 

 

ЗЫ. А нет ли команды, по которой по написанному vhdl-коду создавался бы блок на схеме? Или не создавался бы, а "синхронизировал" бы свои порты под файл .vhd? Наоборот, знаю, можно - команда "Update design file from selected block".

Edited by MrGalaxy

Share this post


Link to post
Share on other sites

Сейчас сходил к коллегам с соседней лаборатории, откомпилировали мне проект в 18-м Квартусе. То же самое, нет сообщений об ошибке ...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this