Error can t elaborate top level user hierarchy

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.

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

Quartus Edition

  • Intel® Quartus® Prime Pro Edition
  • Version Found: 18.1

    Version Fixed: 19.1

    FPGA Intellectual Property

  • Avalon-ST Intel® Stratix® 10 Hard IP for PCI Express
  • Version Found: 18.1

    Version Fixed: 19.1

    BUILT IN — ARTICLE INTRO SECOND COMPONENT

    Description

    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.
     

    Resolution

    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?

    Alt text to be used for img

    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's user avatar

    TRiG

    9,9927 gold badges57 silver badges106 bronze badges

    asked Oct 23, 2012 at 17:26

    JohnDow's user avatar

    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's user avatar

    TRiG

    9,9927 gold badges57 silver badges106 bronze badges

    answered Oct 23, 2012 at 18:10

    Khanh N. Dang's user avatar

    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 и прочий софт под ПЛИС

    Так и не нашёл подходящую ветку по данным устройствам. Решил создать отдельную тему. Я задал несколько вопросов в теме по Протеус — там они не совсем «к месту». Да простят меня КошкоАдмины! :oops:

    На нашем с Вами сайте http://radiokot.ru была открыта ОБУЧАЛКА для новичков (к сожалению незаконченная, надеюсь что пока):
    1. http://radiokot.ru/start/mcu_fpga/altera/ — по ALTERA
    2. http://radiokot.ru/start/mcu_fpga/xilinx/ — по XILINX

    Всем кто заинтересовался данными устройствами, а также те кто хочет помочь, прошу обращаться сюда.
    А так же здесь может обсуждаться AHDL/VHDL/Verilog HDL…

    Прошу — заходите, спрашивайте, помогайте.


    Автор:  Chettuser [ Вт авг 03, 2010 22:08:16 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Начал изучать книжку по VHDL, вроде понемногу доходит, но… самый затык происходит при попытке скопировать пример из книжки:

    Код:

    Entity ANDOR is
       port (x1,x2,x3 : in bit;
                f: out bit);
    end ANDOR;

    architecture example of ANDOR is
       signal w:bit;
    begin
       p0: w<=x1 and x2 after 10ns;
       p1: process (w, x3)
       begin
          f<=w or x3 after 20ns;
       end process p1;
    end example;

    КВАРТУС ругаться начинает, что не так? Сильно не пинайте новичка, а лучше помогите! :shock:


    Автор:  Meteor [ Ср авг 04, 2010 07:13:31 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Не подключены библиотеки. Проект начинается с:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.numeric_std.all;
    Нумерик пока можно пропустить — нужна при работе с числами


    Автор:  Chettuser [ Ср авг 04, 2010 08:35:36 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Такс… понятно… в книжке не написано :oops:


    Автор:  Chettuser [ Ср авг 04, 2010 09:20:11 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Код:

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.numeric_std.all;

    Entity ANDOR is
       port (x1,x2,x3 : in bit;
                f: out bit);
    end ANDOR;

    architecture example of ANDOR is
       signal w:bit;
    begin
       p0: w<=x1 and x2 after 10ns;
       p1: process (w, x3)
       begin
          f<=w or x3 after 20ns;
       end process p1;
    end example;

    Ответ был следующим:

    Код:

    Info: *******************************************************************
    Info: Running Quartus II Analysis & Synthesis
       Info: Version 7.1 Build 156 04/30/2007 SJ Web Edition
       Info: Processing started: Wed Aug 04 10:18:44 2010
    Info: Command: quartus_map —read_settings_files=on —write_settings_files=off oscilloscope_3f -c oscilloscope_3f
    Error (10170): Verilog HDL syntax error at oscilloscope_3f.v(1) near text «;»;  expecting «.», or an identifier, or «*», or «/»
    Info: Found 0 design units, including 0 entities, in source file oscilloscope_3f.v
    Error: Quartus II Analysis & Synthesis was unsuccessful. 1 error, 0 warnings
       Info: Allocated 128 megabytes of memory during processing
       Error: Processing ended: Wed Aug 04 10:18:44 2010
       Error: Elapsed time: 00:00:00
    Error: Quartus II Full Compilation was unsuccessful. 1 error, 0 warnings

    Что здесь неправильно написано?:

    Код:

    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 и прочий софт под

    Так понимаю вы уже нашли свою ошибку:
    Программа на VHDL, а компиляция как Verilog — а языки то разные..
    Для быстрого начала изучениея Verilog мне понравилась статья :
    http://www.xakep.ru/magazine/xa/123/106/1.asp
    Сам по ней уже сделал резвертку для VGA и проверил — заработало почти с первого раза.
    Проверял в Max Plus (Win) и Icarus Verilog ( Linux ).


    Автор:  Chettuser [ Чт авг 05, 2010 20:34:27 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Просто я видимо не то воткнул… Ошибка в общем в другом.

    Не могу понять почему ругается на это:

    Код:

    Листинг6-1:
    module counter(DIN, COUNT, LOAD, CE, DIR, RST, CLK);
    parameter NBRB = 8;
    input [NBRB – 1:0] DIN;
    input LOAD, CE, DIR, RST, CLK;
    output [NBRB – 1:0 ] COUNT;
    reg [NBRB – 1:0 ] COUNT;
    always @(posedge CLK or posedge RST)
    begin
    if (RST == 1) COUNT <= ’b0;
    else
    if (CE == 1)
    begin
    if (LOAD == 1) COUNT <= DIN;
    else
    begin
    if (DIR == 1) COUNT <= COUNT + 1;
    else if (DIR == 0) COUNT <= COUNT — 1;
    end
    end
    end
    endmodule

    Что то Quartus’у не нравится [NBRB – 1:0 ], точнее указывает на «-» — что здесь не так?


    Автор:  Pe3ucTop [ Чт авг 05, 2010 23:40:02 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    В данном случае проблемма не в Quartus’е, а в редакторе или источнике копирования..
    Т.е. посмотрите на эти два тере, они разные, ваше » – » и в моё » — » !!!
    Ваше в формате уникод, моё просто минус :) . Просто замените их все в ручную на минусы…
    А точнее не все, а в строчках 3,5,6,9 ..


    Автор:  Chettuser [ Пт авг 06, 2010 09:20:10 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Pe3ucTop писал(а):

    В данном случае проблемма не в Quartus’е, а в редакторе или источнике копирования..
    Т.е. посмотрите на эти два тере, они разные, ваше » – » и в моё » — » !!!
    Ваше в формате уникод, моё просто минус :) . Просто замените их все в ручную на минусы…
    А точнее не все, а в строчках 3,5,6,9 ..

    Какой УЖООООС! :shock: Чем дальше в лес — тем крепче партизаны!
    Спасибо. Просто об этом нигде не написано почему то.


    Автор:  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)
    begin
    if (RESET_COUNT == 1)
       COUNT <= ‘b0;
    else
       begin
    //      if (LOAD == 1)
    //      COUNT <= DIN;
    //      else
             begin
                if (CLOCK_UP == 1)
                   COUNT <= COUNT + 1;
                else if (CLOCK_DN == 1)
                   COUNT <= COUNT — 1;
             end
       end
    end

    Работает только незакомментированая часть.
    Если открываю

    Код:

    //      if (LOAD == 1)
    //      COUNT <= DIN;
    //      else

    то выдает ошибку:

    Код:

    Error: Can’t elaborate top-level user hierarchy

    Спасибо.


    Автор:  Meteor [ Пт авг 06, 2010 10:22:04 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Чтото у Вас совсем смесь бульдога с носорогом пошла.
    Нет в VHDL такого выражения

    Код:

    else if

    Есть либо

    Код:

    elsif

    либо

    Код:

    else

    Приведите весь проект — нет желания догадывать что, куда, откуда, почему, зачем и как.


    Автор:  Chettuser [ Пт авг 06, 2010 12:44:45 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Это Verilog, пример сдёрнут отсюда:

    Код:

    Листинг6-1:
    module counter(DIN, COUNT, LOAD, CE, DIR, RST, CLK);
    parameter NBRB = 8;
    input [NBRB – 1:0] DIN;
    input LOAD, CE, DIR, RST, CLK;
    output [NBRB – 1:0 ] COUNT;
    reg [NBRB – 1:0 ] COUNT;
    always @(posedge CLK or posedge RST)
    begin
    if (RST == 1) COUNT <= ’b0;
    else
    if (CE == 1)
    begin
    if (LOAD == 1) COUNT <= DIN;
    else
    begin
    if (DIR == 1) COUNT <= COUNT + 1;
    else if (DIR == 0) COUNT <= COUNT — 1;
    end
    end
    end
    endmodule

    Собственно сам код (несколько изменённый к этому моменту):ИСПРАВЛЕНО

    Код:

    module probe(RESET, COUNT, LOAD, CLOCK_U, CLOCK_D);

    parameter NBRB = 8;
    input CLOCK_U, CLOCK_D, LOAD, RESET;
    output [NBRB — 3:0 ] COUNT;
    reg [NBRB — 3:0 ] COUNT;
    always @(posedge CLOCK_U, posedge CLOCK_D)
    begin
       if (RESET == 1) COUNT <= ‘b0000;
       else
          if (LOAD == 1) COUNT <= ‘b0101;
          else
             if (CLOCK_U == 1) COUNT <= COUNT + 1;
                else
                if (CLOCK_D == 1) COUNT <= COUNT — 1;
    end
    endmodule

    В данном случае работает только в таком представлении:

    Код:

    always @(posedge CLOCK_U)

    при попытке добавить условие для:

    Код:

    always @(posedge CLOCK_U, posedge CLOCK_D)

    выдаёт ошибку:

    Код:

    Info: *******************************************************************
    Info: Running Quartus II Analysis & Synthesis
       Info: Version 7.1 Build 156 04/30/2007 SJ Web Edition
       Info: Processing started: Fri Aug 06 19:32:02 2010
    Info: Command: quartus_map —read_settings_files=on —write_settings_files=off probe -c probe
    Info: Found 1 design units, including 1 entities, in source file ../Project/probe.v
       Info: Found entity 1: probe
    Info: Elaborating entity «probe» for the top level hierarchy
    Error (10200): Verilog HDL Conditional Statement error at probe.v(11): cannot match operand(s) in the condition to the corresponding edges in the enclosing event control of the always construct
    Warning (10230): Verilog HDL assignment warning at probe.v(15): truncated value with size 32 to match size of target (6)
    Warning (10230): Verilog HDL assignment warning at probe.v(17): truncated value with size 32 to match size of target (6)
    Warning (10240): Verilog HDL Always Construct warning at probe.v(9): inferring latch(es) for variable «COUNT», which holds its previous value in one or more paths through the always construct
    Info (10041): Inferred latch for «COUNT[0]» at probe.v(9)
    Info (10041): Inferred latch for «COUNT[1]» at probe.v(9)
    Info (10041): Inferred latch for «COUNT[2]» at probe.v(9)
    Info (10041): Inferred latch for «COUNT[3]» at probe.v(9)
    Info (10041): Inferred latch for «COUNT[4]» at probe.v(9)
    Info (10041): Inferred latch for «COUNT[5]» at probe.v(9)
    Error: Can’t elaborate top-level user hierarchy
    Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 3 warnings
       Info: Allocated 129 megabytes of memory during processing
       Error: Processing ended: Fri Aug 06 19:32:03 2010
       Error: Elapsed time: 00:00:01
    Error: Quartus II Full Compilation was unsuccessful. 2 errors, 3 warnings


    Автор:  Pe3ucTop [ Пт авг 06, 2010 18:38:43 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Чесно сказать — не знаю, наверно мало вложенностей — ведь это последовательность действий , а последовательность — это не совсем правильный подход к ПЛИС.

    Проще и, на мой взгляд, правильнее:

    Код:

    always @(posedge CLOCK_UP)
        COUNT <= COUNT + 1;

    always @(posedge CLOCK_DN)
        COUNT <= COUNT — 1;

    always @(posedge RESET_COUNT)
        COUNT <= ‘b0;

    always @(negedge LOAD_COUNT)
        COUNT <= 4;

    И то — это не лучший вариант, это всё асинхронные действия без связи с Задающей частотой (Clock).
    И на сколько реально появление одновременно CLOCK_UP и CLOCK_DN , если реально тогда наверно и надо в длинные зависимости но правильно ли это ??


    Автор:  Chettuser [ Пт авг 06, 2010 18:46:15 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Забыл пояснить что это реверсивный счётчик, в дальнейшем будет модернизироваться под двоично-десятичный (точнее обрубленный до 5) и добавлен дешифратор.
    Сигналы CLOCK_U и CLOCK_D — в идеальном случае не будут одновременными. В реальном случае разница может быть примерно 100 нс, может и больше.
    Как тогда грамотно сделать такой реверсивный счётчик?
    Спасибо.


    Автор:  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

    — ошибка остаётся.
    Спасибо!
    Шайтан-программа какая то :kill: .


    Автор:  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)
    always @(posedge CLOCK_U or posedge CLOCK_D or negedge LOAD)
    always @(posedge CLOCK_U or CLOCK_D or negedge LOAD)


    Автор:  Chettuser [ Пт авг 06, 2010 19:03:34 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    Асинхронные. По событию от внешних датчиков (аналоговых компараторов).
    ЗЫ: Вы что! Я еще не дошёл до того уровня чтобы проектировать с UFM. Я всего второй день пытаюсь изучить Verilog. Пытался создать в виде схемы — итог был печальным — реверс работал некорректно.


    Автор:  Pe3ucTop [ Пт авг 06, 2010 19:37:02 ]
    Заголовок сообщения:  Re: Quartus, MAX+Plus, AHDL, VHDL,Verilog и прочий софт под

    А в каких случаях у вас CLOCK_U и CLOCK_D возвращаются в исходное положение ??
    Вообще, посмотрел — в реверсивных счетчиках имеется входы сч+/сч-, строб.. В вашем случае строб надо выделять из 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 задайте свой вопрос.

    Понравилась статья? Поделить с друзьями:
  • Error can not get i2c device data
  • Error cameralist not match
  • Error calling startservicebyname
  • Error calling setupdigetdeviceregistrypropertyw 122 x360ce как исправить
  • Error calling python module function wbadmin testinstancesettingbyname