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 задайте свой вопрос.