The browser version you are using is not recommended for this site.
Please consider upgrading to the latest version of your browser by clicking one of the following links.
- Safari
- Chrome
- Edge
- Firefox
Article ID: 000080661
Content Type: Error Messages
Last Reviewed: 06/24/2019
Error(16186): Can’t elaborate top-level user hierarchy: «VHDL info at pcie_example_design.vhd(1337): back to vhdl to continue elaboration»
Environment
Bug ID: 2205695476
Version Found: 18.1
Version Fixed: 19.1
Version Found: 18.1
Version Fixed: 19.1
Due to a problem in the Intel® Stratix® 10 Avalon® -ST Hard IP for PCIe* Design Example version 18.1 , you may observe this error when the «Generate HDL format» option is set to VHDL.
To work around this problem in the Intel® Quartus® Prime Pro Edition software version 18.1 set the «Generate HDL format» option to Verilog. This problem has been fixed beginning with the Intel® Quartus® Prime Pro Edition software version 19.1
- Description
- Resolution
Need more help?
Give Feedback
Disclaimer
I’m tring to write snake from LED on a Quartus Board. It’s kind of like KITT-Leds, but when I try to run my program, I get an error.
module ukol3(KEY,LEDR);
input[1:0]KEY;
output[14:0] LEDR;
counter counter(KEY[0], KEY[1], LEDR[14:0]);
endmodule
module counter(C,CLR,Q);
input C, CLR;
output [14:0] Q;
reg [14:0] tmp;
integer i;
always @(posedge C or posedge CLR)
begin
if (CLR)
tmp = 15'b000000000000000;
if (tmp == 15'b111111111111111)
i = 0;
if (tmp == 15'b000000000000000)
i = 1;
if (i == 1)
tmp = tmp + 1'b1;
if (i == 0)
tmp = tmp - 1'b1;
end
assign Q = tmp;
endmodule
This gives me an error:
Error: Can’t elaborate user hierarchy «counter:counter»
I really don’t know what’s going on.
TRiG
9,9927 gold badges57 silver badges106 bronze badges
asked Oct 23, 2012 at 17:26
2
This question is about Verilog, not vhdl. I want to ask a couple of questions: Is your code synthesizable? and what do you get after a synthesis module counter?
For your question, I think you should compile counter first, then compile ukol3. The EDA tool will not find counter when you didn’t did it first. You should split it into two separable files and do the counter first.
P.S.: You should use a better mapping port method such as counter counter (.C(KEY[0]),.CLR (KEY[1]),.Q (LEDR[14:0])); for clearer code.
TRiG
9,9927 gold badges57 silver badges106 bronze badges
answered Oct 23, 2012 at 18:10
Khanh N. DangKhanh N. Dang
8861 gold badge9 silver badges18 bronze badges
Форум РадиоКот :: Просмотр темы — Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под ПЛИС
| Автор: | Chettuser [ Вт авг 03, 2010 22:02:20 ] |
| Заголовок сообщения: | Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под ПЛИС |
|
Так и не нашёл подходящую ветку по данным устройствам. Решил создать отдельную тему. Я задал несколько вопросов в теме по Протеус — там они не совсем «к месту». Да простят меня КошкоАдмины! На нашем с Вами сайте http://radiokot.ru была открыта ОБУЧАЛКА для новичков (к сожалению незаконченная, надеюсь что пока): Всем кто заинтересовался данными устройствами, а также те кто хочет помочь, прошу обращаться сюда. Прошу — заходите, спрашивайте, помогайте. |
| Автор: | Chettuser [ Вт авг 03, 2010 22:08:16 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Начал изучать книжку по VHDL, вроде понемногу доходит, но… самый затык происходит при попытке скопировать пример из книжки: Код: Entity ANDOR is architecture example of ANDOR is КВАРТУС ругаться начинает, что не так? Сильно не пинайте новичка, а лучше помогите! |
| Автор: | Meteor [ Ср авг 04, 2010 07:13:31 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Не подключены библиотеки. Проект начинается с: |
| Автор: | Chettuser [ Ср авг 04, 2010 08:35:36 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Такс… понятно… в книжке не написано |
| Автор: | Chettuser [ Ср авг 04, 2010 09:20:11 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Код: library ieee; Entity ANDOR is architecture example of ANDOR is Ответ был следующим: Код: Info: ******************************************************************* Что здесь неправильно написано?: Код: Error (10170): Verilog HDL syntax error at oscilloscope_3f.v(1) near text «;»; expecting «.», or an identifier, or «*», or «/» |
| Автор: | Pe3ucTop [ Чт авг 05, 2010 18:14:02 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Так понимаю вы уже нашли свою ошибку: |
| Автор: | Chettuser [ Чт авг 05, 2010 20:34:27 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Просто я видимо не то воткнул… Ошибка в общем в другом. Не могу понять почему ругается на это: Код: Листинг6-1: Что то Quartus’у не нравится [NBRB – 1:0 ], точнее указывает на «-» — что здесь не так? |
| Автор: | Pe3ucTop [ Чт авг 05, 2010 23:40:02 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
В данном случае проблемма не в Quartus’е, а в редакторе или источнике копирования.. |
| Автор: | Chettuser [ Пт авг 06, 2010 09:20:10 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Pe3ucTop писал(а): В данном случае проблемма не в Quartus’е, а в редакторе или источнике копирования.. Какой УЖООООС! |
| Автор: | Chettuser [ Пт авг 06, 2010 09:58:12 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Ещё вопрос: Сколько вложений if допускает Quartus 7.1? Код: always @(posedge CLOCK_UP, posedge CLOCK_DN, posedge RESET_COUNT, negedge LOAD) Работает только незакомментированая часть. Код: // if (LOAD == 1) то выдает ошибку: Код: Error: Can’t elaborate top-level user hierarchy Спасибо. |
| Автор: | Meteor [ Пт авг 06, 2010 10:22:04 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Чтото у Вас совсем смесь бульдога с носорогом пошла. Код: else if Есть либо Код: elsif либо Код: else Приведите весь проект — нет желания догадывать что, куда, откуда, почему, зачем и как. |
| Автор: | Chettuser [ Пт авг 06, 2010 12:44:45 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Это Verilog, пример сдёрнут отсюда: Код: Листинг6-1: Собственно сам код (несколько изменённый к этому моменту):ИСПРАВЛЕНО Код: module probe(RESET, COUNT, LOAD, CLOCK_U, CLOCK_D); parameter NBRB = 8; В данном случае работает только в таком представлении: Код: always @(posedge CLOCK_U) при попытке добавить условие для: Код: always @(posedge CLOCK_U, posedge CLOCK_D) выдаёт ошибку: Код: Info: ******************************************************************* |
| Автор: | Pe3ucTop [ Пт авг 06, 2010 18:38:43 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Чесно сказать — не знаю, наверно мало вложенностей — ведь это последовательность действий , а последовательность — это не совсем правильный подход к ПЛИС. Проще и, на мой взгляд, правильнее: Код: always @(posedge CLOCK_UP) always @(posedge CLOCK_DN) always @(posedge RESET_COUNT) always @(negedge LOAD_COUNT) И то — это не лучший вариант, это всё асинхронные действия без связи с Задающей частотой (Clock). |
| Автор: | Chettuser [ Пт авг 06, 2010 18:46:15 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Забыл пояснить что это реверсивный счётчик, в дальнейшем будет модернизироваться под двоично-десятичный (точнее обрубленный до 5) и добавлен дешифратор. |
| Автор: | Pe3ucTop [ Пт авг 06, 2010 18:51:09 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Забыл добавить : А если вы всётаки хотите всё в одном процесс, то это должно быть не перечисление через запятую, а логическая операция: Код: always @(posedge CLOCK_UP or posedge CLOCK_DN or posedge RESET_COUNT or negedge LOAD_COUNT) |
| Автор: | Chettuser [ Пт авг 06, 2010 18:55:05 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Pe3ucTop писал(а): Забыл добавить : А если вы всётаки хотите всё в одном процессе, то это должно быть не перечисление а логическая операция: Код: always @(posedge CLOCK_UP or posedge CLOCK_DN or posedge RESET_COUNT or negedge LOAD_COUNT) Хех… добавил: Код: always @(posedge CLOCK_U, posedge CLOCK_D, posedge RESET, posedge LOAD) — заработало… что странно если исключить Код: posedge LOAD — ошибка остаётся. |
| Автор: | Pe3ucTop [ Пт авг 06, 2010 18:56:59 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
И вопрос у вас есть рабочая частота или у вас все события спонтанны ? По поводу : «always @() » это наверно зависит от компилятора, у меня в любом варианте компилит, в вашем случае может быть что возможно только одно «posedge» и одно «negedge» или ещё какие нюансы Quartus-a.. Варианты одного и того же: always @(posedge CLOCK_U, posedge CLOCK_D, negedge LOAD) |
| Автор: | Chettuser [ Пт авг 06, 2010 19:03:34 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
Асинхронные. По событию от внешних датчиков (аналоговых компараторов). |
| Автор: | Pe3ucTop [ Пт авг 06, 2010 19:37:02 ] |
| Заголовок сообщения: | Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под |
|
А в каких случаях у вас CLOCK_U и CLOCK_D возвращаются в исходное положение ?? |
| Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
пока чтото не получается….
Вот компонент передатчик. При компиляции выдает ошибки…
UART_Tx: process(CLK, RST) variable shift:std_logic_vector(2 downto 0); variable flag:std_logic; begin if RST='0' then UART_TXD <= '1'; TxBitCnt <= 0; TxBuf <= (others => '0'); CntTX <= 0; TxReady <= '1'; elsif (rising_edge(CLK)) then shift(2 downto 1):=shift(1 downto 0);--Сдвиг состояния кнопки shift(0):=TX_VALID; elsif (shift="001")then flag:='1';--Разрешаем работу передатчика if (TX_VALID = '0' and TxReady = '1' and flag = '1') then TxBuf(7 downto 0) <= DATA_IN (7 downto 0); TxReady <= '0'; TxBitCnt <= 0; CntTX <= 0; end if; if (TxReady = '0') then if CntTX=(System_CLK/(UART_Speed)) then CntTX <= 0; case TxBitCnt is when 0 => UART_TXD <= '0'; -- старт бит TxBitCnt <= TxBitCnt+1; when 1|2|3|4|5|6|7|8 => UART_TXD <= TxBuf(0); TxBuf <= '0' & TxBuf(7 downto 1); TxBitCnt <= TxBitCnt+1; when 9 => UART_TXD <= '1'; -- стоп бит TxBuf <= (others => '0'); TxBitCnt <= 0; TxReady <= '1'; flag := '0'; end case; else CntTX <= CntTX+1; end if; end if; end if; end process UART_Tx;
Лог ошибок
Error (10818): Can’t infer register for «TxReady» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[0]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[1]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[2]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[3]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[4]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[5]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[6]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[7]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[8]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[9]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[10]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[11]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «CntTX[12]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «TxBuf[0]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «TxBuf[1]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «TxBuf[2]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «TxBuf[3]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (10818): Can’t infer register for «TxBuf[4]» at uart.vhd(125) because it does not hold its value outside the clock edge
Error (12153): Can’t elaborate top-level user hierarchy
Error: Quartus II 64-Bit Analysis & Synthesis was unsuccessful. 20 errors, 12 warnings
Error: Peak virtual memory: 490 megabytes
Error: Processing ended: Thu Jan 31 23:04:05 2013
Error: Elapsed time: 00:00:01
Error: Total CPU time (on all processors): 00:00:01
Error (293001): Quartus II Full Compilation was unsuccessful. 22 errors, 12 warnings
Займусь пока проверкой четности, тут мне хоть понятно как должно работать.
А вот с задержкой хоть и выложили пример готовый, но все равно тяжеловато понять
Изменено 31 января, 2013 пользователем Lessberg
Пытаюсь написать змейку из светодиода на квартусовой плате. Это вроде как KITT-Leds, но когда я пытаюсь запустить свою программу, я получаю ошибку.
module ukol3(KEY,LEDR);
input[1:0]KEY;
output[14:0] LEDR;
counter counter(KEY[0], KEY[1], LEDR[14:0]);
endmodule
module counter(C,CLR,Q);
input C, CLR;
output [14:0] Q;
reg [14:0] tmp;
integer i;
always @(posedge C or posedge CLR)
begin
if (CLR)
tmp = 15'b000000000000000;
if (tmp == 15'b111111111111111)
i = 0;
if (tmp == 15'b000000000000000)
i = 1;
if (i == 1)
tmp = tmp + 1'b1;
if (i == 0)
tmp = tmp - 1'b1;
end
assign Q = tmp;
endmodule
Это дает мне ошибку:
Ошибка: невозможно разработать иерархию пользователей «счетчик:счетчик»
Я действительно не знаю, что происходит.
1 ответы
Этот вопрос касается Verilog, а не vhdl. Я хочу задать пару вопросов: можно ли синтезировать ваш код? а что вы получаете после счетчика модуля синтеза?
Для вашего вопроса, я думаю, вы должны скомпилировать counter сначала потом собрать ukol3. Инструмент EDA не найдет счетчик, если вы не сделали этого раньше. Вы должны разделить его на два отдельных файла и сначала выполнить счетчик.
PS: вы должны использовать лучший метод сопоставления портов, например counter counter (.C(KEY[0]),.CLR (KEY[1]),.Q (LEDR[14:0])); для более четкого кода.
ответ дан 29 авг.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
verilog
synthesis
or задайте свой вопрос.

.