Error 10119 verilog

This error may appear in the Quartus® II software when synthesis iterates through a loop in Verilog HDL for more than the synthesis loop limit. This limit prevents synthesis from potentially running i

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: 000075915

Content Type: Error Messages

Last Reviewed: 09/11/2012

Error (10119): Verilog HDL Loop Statement error at <location>: loop with non-constant loop condition must terminate within <number> iterations

Environment

BUILT IN — ARTICLE INTRO SECOND COMPONENT

Description

This error may appear in the Quartus® II software when synthesis iterates through a loop in Verilog HDL for more than the synthesis loop limit. This limit prevents synthesis from potentially running into an infinite loop. By default, this loop limit is set to 250 iterations.

Resolution

To work around this error, the loop limit can be set using the VERILOG_NON_CONSTANT_LOOP_LIMIT option in the Quartus II Settings File (.qsf). For example:

set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 300

  • Description
  • Resolution

Need more help?

Alt text to be used for img

Give Feedback

Disclaimer

I am completely new to verilog and I have to know quite a bit of it fairly soon for a course I am taking in university. So I am play around with my altera DE2 board and quartis2 and learning the ins and outs.

I am trying to make a counter which is turned on and off by a switch.
So far the counter counts and resets based on a key press.

This is my error:

   Error (10119): Verilog HDL Loop Statement error at my_first_counter_enable.v(19): loop with non-constant loop condition must terminate within 250 iterations

I understand I am being asked to provide a loop variable, but even doing so I get an error.
This is my code:

module my_first_counter_enable(SW,CLOCK_50,LEDR,KEY);

    input CLOCK_50;
    input [17:0] SW;
    input KEY;

   output [17:0] LEDR;

   reg [32:0] count;
   wire reset_n;
   wire enable;

   assign reset_n = KEY;
   assign enable = SW[0];
   assign LEDR = count[27:24];


   always@ (posedge CLOCK_50 or negedge reset_n) begin
       while(enable) begin
           if(!reset_n)
               count = 0;
           else
               count = count + 1;
       end
    end

endmodule

I hope someone can point out my error in my loop and allow me to continue.

Thank you!

toolic's user avatar

toolic

55.3k14 gold badges74 silver badges114 bronze badges

asked Sep 10, 2013 at 20:20

Michael Miner's user avatar

Michael MinerMichael Miner

9542 gold badges17 silver badges39 bronze badges

I don’t think you want to use a while loop there. How about:

   always@ (posedge CLOCK_50 or negedge reset_n) begin
           if(!reset_n)
               count <= 0;
           else if (enable)
               count <= count + 1;
    end

I also added non-blocking assignments <=, which are more appropriate for synchronous logic.

answered Sep 10, 2013 at 20:25

toolic's user avatar

0

The block will trigger every time there is a positive edge of the clock. Where you had a while loop does not mean anything in hardware, it would still need a clock to drive the flip flops.

While loops can be used in testbeches to drive stimulus

integer x;
initial begin
  x = 0;
  while (x<1000) begin
    data_in = 2**x ; //or stimulus read from file etc ...
    x=x+1;
  end
end

I find for loops or repeat to be of more use though:

integer x;
initial begin
  for (x=0; x<1000; x=x+1) begin
    data_in = 2**x ; //or stimulus read from file etc ...
  end
end

initial begin
  repeat(1000) begin
    data_in = 'z; //stimulus read from file etc (no loop variable)...
  end
end

NB: personally I would also add begin end to every thing to avoid adding extra lines later and wondering why they always or never get executed, especially while new to the language. It also has the added benefit of making the indenting look a little nicer.

always@ (posedge CLOCK_50 or negedge reset_n) begin
  if(!reset_n) begin
    count <= 'b0;
  end
  else if (enable) begin
    count <= count + 1;
  end
end

answered Sep 11, 2013 at 7:01

Morgan's user avatar

MorganMorgan

19.7k6 gold badges57 silver badges84 bronze badges

0

Title

Error (10119): Verilog HDL Loop Statement error at : loop with non-constant loop condition must terminate within iterations
Description

This error may appear in the Quartus® II software when synthesis iterates through a loop in Verilog HDL for more than the synthesis loop limit. This limit prevents synthesis from potentially running into an infinite loop. By default, this loop limit is set to 250 iterations.

Workaround / Fix

To work around this error, the loop limit can be set using the VERILOG_NON_CONSTANT_LOOP_LIMIT option in the Quartus II Settings File (.qsf). For example:

set_global_assignment -name VERILOG_NON_CONSTANT_LOOP_LIMIT 300

answered Sep 10, 2013 at 20:25

A.O.'s user avatar

A.O.A.O.

3,7236 gold badges29 silver badges49 bronze badges

3

Skip to main content

Forum for Electronics

Forum for Electronics

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals… and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

  • Digital Design and Embedded Programming

  • PLD, SPLD, GAL, CPLD, FPGA Design

You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an alternative browser.

Error in verilog code for stopwatch


  • Thread starter

    Nyom


  • Start date

    Jan 18, 2018

Status
Not open for further replies.

  • #1

Newbie level 3

Joined
Jan 18, 2018
Messages
4
Helped
0
Reputation

0

Reaction score
0
Trophy points
1
Activity points

34


I am getting error in verilog code while compiling using Quartus II as under

Error (10119): Verilog HDL Loop Statement error at DE1_SOC_golden_top.v(313): loop with non-constant loop condition must terminate within 250 iterations

Line 313 is
code for the test bench module is


Code Verilog - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Outputs
 wire [3:0] d0;
 wire [3:0] d1;
 wire [3:0] d2;
 
 // Instantiate the Unit Under Test (UUT)
 stopwatch uut (
  .clock(clock), 
  .reset(reset), 
  .start(start), 
  .d0(d0), 
  .d1(d1), 
  .d2(d2)
 );
 
initial
  begin
   clock = 0;
    forever
     #50 clock = ~clock;
  end
 
 initial begin
  // Initialize Inputs
  reset = 0;
  start = 0;
 
  // Wait 100 ns for global reset to finish
  #100;
  reset = 1;
  #100;
  reset = 0;
  #100;
  start = 1;
  // Add stimulus here
 end

Any suggestions for rectifying the same. I am generating a 0.1 second delay..

Last edited by a moderator: Jan 18, 2018

  • #2

Advanced Member level 7

Joined
Jun 7, 2010
Messages
7,109
Helped
2,080
Reputation

4,179

Reaction score
2,045
Trophy points
1,393
Activity points

39,761


Looks like you tried to compile the testbench in a synthesisor. You cannot synthesise this code, its only for simulation.

  • #3

You can’t synthesize a #<delay_value> statement. It is meaningless to the synthesis tool as time can’t be synthesized into hardware.

  • #4

Newbie level 3

Joined
Jan 18, 2018
Messages
4
Helped
0
Reputation

0

Reaction score
0
Trophy points
1
Activity points

34


you are right.. actual code is as under but i am trying to comile and run it using Quatus for Altera DE1 board.. I am new to it. What I thought I have a sample project which has functional and has a pin plannar and qpf file.. What I was trying to do was to embed the test code which i shared above and call this module. If this is wrong, then how do I compile the code

module stopwatch(
    input clock,
    input reset,
    input start,
    output a, b, c, d, e, f, g, dp,
    output [3:0] an
);
 
reg [3:0] reg_d0, reg_d1, reg_d2, reg_d3; //registers that will hold the individual counts
reg [22:0] ticker; //23 bits needed to count up to 5M bits
wire click;
 
 
//the mod 5M clock to generate a tick ever 0.1 second
 
always @ (posedge clock or posedge reset)
begin
 if(reset)
 
  ticker <= 0;
 
 else if(ticker == 5000000) //if it reaches the desired max value reset it
  ticker <= 0;
 else if(start) //only start if the input is set high
  ticker <= ticker + 1;
end
 
assign click = ((ticker == 5000000)?1'b1:1'b0); //click to be assigned high every 0.1 second
 
always @ (posedge clock or posedge reset)
begin
 if (reset)
  begin
   reg_d0 <= 0;
   reg_d1 <= 0;
   reg_d2 <= 0;
   reg_d3 <= 0;
  end
   
 else if (click) //increment at every click
  begin
   if(reg_d0 == 9) //xxx9 - the 0.1 second digit
   begin  //if_1
    reg_d0 <= 0;
     
    if (reg_d1 == 9) //xx99 
    begin  // if_2
     reg_d1 <= 0;
     if (reg_d2 == 5) //x599 - the two digit seconds digits
     begin //if_3
      reg_d2 <= 0;
      if(reg_d3 == 9) //9599 - The minute digit
       reg_d3 <= 0;
      else
       reg_d3 <= reg_d3 + 1;
     end
     else //else_3
      reg_d2 <= reg_d2 + 1;
    end
     
    else //else_2
     reg_d1 <= reg_d1 + 1;
   end
    
   else //else_1
    reg_d0 <= reg_d0 + 1;
  end
end
 
//The Circuit for Multiplexing - Look at my other post for details on this
 
localparam N = 18;
 
reg [N-1:0]count;
 
always @ (posedge clock or posedge reset)
 begin
  if (reset)
   count <= 0;
  else
   count <= count + 1;
 end
 
reg [6:0]sseg;
reg [3:0]an_temp;
reg reg_dp;
always @ (*)
 begin
  case(count[N-1:N-2])
    
   2'b00 : 
    begin
     sseg = reg_d0;
     an_temp = 4'b1110;
     reg_dp = 1'b1;
    end
    
   2'b01:
    begin
     sseg = reg_d1;
     an_temp = 4'b1101;
     reg_dp = 1'b0;
    end
    
   2'b10:
    begin
     sseg = reg_d2;
     an_temp = 4'b1011;
     reg_dp = 1'b1;
    end
     
   2'b11:
    begin
     sseg = reg_d3;
     an_temp = 4'b0111;
     reg_dp = 1'b0;
    end
  endcase
 end
assign an = an_temp;
 
reg [6:0] sseg_temp; 
always @ (*)
 begin
  case(sseg)
   4'd0 : sseg_temp = 7'b1000000;
   4'd1 : sseg_temp = 7'b1111001;
   4'd2 : sseg_temp = 7'b0100100;
   4'd3 : sseg_temp = 7'b0110000;
   4'd4 : sseg_temp = 7'b0011001;
   4'd5 : sseg_temp = 7'b0010010;
   4'd6 : sseg_temp = 7'b0000010;
   4'd7 : sseg_temp = 7'b1111000;
   4'd8 : sseg_temp = 7'b0000000;
   4'd9 : sseg_temp = 7'b0010000;
   default : sseg_temp = 7'b0111111; //dash
  endcase
 end
assign {g, f, e, d, c, b, a} = sseg_temp; 
assign dp = reg_dp;

endmodule

  • #5

You compile the stopwatch code as the top level file. The ports of the module become the pins used on the FPGA.

— — — Updated — — —

btw this:

 else if(ticker == 5000000) //if it reaches the desired max value reset it
  ticker <= 0;

does not generate a 0.1 sec tick.

you are counting 5000001 times instead of 5000000 times.

I find it somewhat perplexing that so many post code with that simple error.

  • #6

Newbie level 3

Joined
Jan 18, 2018
Messages
4
Helped
0
Reputation

0

Reaction score
0
Trophy points
1
Activity points

34


can you give assistance on how to do mapping of ports and pins.. I guess pins are names as HEX0, HEX 1 etc you mean to say i should assign or equate these ports to pins

— — — Updated — — —

Do I need to map

output a, b, c, d, e, f, g, dp,
output [3:0] an

to my pin plannar

  • #7

    input clock,
    input reset,
    input start,
    output a, b, c, d, e, f, g, dp,
    output [3:0] an

these are what ends up being assigned in the Quartus as the pins of the device using either the pin mapping tool or just writing a text file that has the SDC syntax for placing the location of pins. http://quartushelp.altera.com/14.1/mergedProjects/assign/ase/ase_pro_assigning_pins.htm

Status
Not open for further replies.

Similar threads

  • Fun-King

    FPGA PR error message

    • Started by Fun-King
    • Feb 2, 2023
    • Replies: 5

  • qverify strange lint error

    • Started by rajmachol
    • Nov 12, 2022
    • Replies: 0

  • [SOLVED] Verilog Error

    • Started by Div_01
    • Dec 20, 2021
    • Replies: 2

  • Digital Design and Embedded Programming

  • PLD, SPLD, GAL, CPLD, FPGA Design

  • This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.

Сб сен 06, 2014 15:59:39

Добрый день коты. Выписал из книги строчку генератора. на непрерывном цикле forever. А компилятор чего то матерится.

Код:
module gen (output reg aa)
 initial forever begin aa=0; #50; aa=1; #50; end
endmodule

Error (10170): Verilog HDL syntax error at gen.v(2) near text «initial»; expecting «;»

где я точку с запятой не воткнул?

Сб сен 06, 2014 21:52:12

Запрос в google: initial forever verilog
Ответ :http://www.asic-world.com/verilog/vbehave3.html

Вс сен 07, 2014 00:30:49

Ну вот, скопировал от того сайта строчку, и получил по лещам.

Код:
  module forever_example (output reg clk);

        initial begin
      #1  clk = 0;
     forever begin
        #5  clk =  ! clk;
     end
  end

    initial begin
    $monitor ("Time = %d  clk = %b",$time, clk);
     #100  $finish;
  end

  endmodule

Error (10119): Verilog HDL Loop Statement error at gen.v(6): loop with non-constant loop condition must terminate within 250 iterations

Вот такая ошибка на цикл repeat: Error: Can’t synthesize current design — design does not contain any logic

Вс сен 07, 2014 12:15:23

Вот так компилируется:

Почему forever не катит, не знаю. Надо спецов спрашивать, а я тестбенчи ни разу не использовал и не писАл.

Вс сен 07, 2014 15:27:38

Да ладно с ним, написал счетчик делитель от гена на 48 мгц, и помигал светодиодами. :) правда это заняло 78 вентилей.

С выше приведенного сайта переписал удачно семпл Verilog UART Model А что с этим делать? там столько лишних пинов, клоков…
Счас расмариваю код, стока непонятного.

Вс сен 07, 2014 18:43:51

А что здесь символы #5 означают? (Сам не разбирался с этим.)

Код:
#5  clk =  ! clk;

Учтите, что у верилога есть синтезируемая часть и не синтезируемая (для тестов и отладки). Соответственно, не все директивы можно использовать для описания начинки ПЛИС.

Если не ошибаюсь, то процедурные действия должны для некоторых циклов укладываться в один такт. Если это не выполняется, то — ошибка синтеза. Хотя, могу ошибаться, не уверен.

Вс сен 07, 2014 19:52:06

для тестов и отладки

Все правильно, потому я и написал про тестбенч.
То есть clk-виртуальный сигнал,а не реальный генератор внутри ПЛИС (как ,наверное считал Автор).
#5 значит, например 5nS, если в начале модуля задан масштаб времени/точность: `timescale 1ns / 1ps.
Т.е. в данном примере- инвертировать clk каждые 5nS.
Насчет UARTa,вот http://www.fpga4fun.com/SerialInterface.html попроще и понятно, как его применить.

Вс сен 21, 2014 16:32:21

Доброй ночи. Введу кратко в курс дела: Делаю ремейк «народного цапа v2. «
Теперь на борту есть два генератора 24.576 мгц и 22.5792 мгц. Плис умеет определять частотную сетку по пину L/R и отключает невостребованный генератор. Но вот незадача, если в квартусе обьеденить оба пина и подать как один пин_клок далее по схеме, то ругает меня по чем свет ночью стоит.

Написал на верилоге разделитель, так можно делать??? (ну дублировать одно и тоже, только с другой точки зрения)

Код:
module clock_spliter(

input in_24576,  // вход частоты от первого генератора,
input in_225792,  // вход частоты от второго генератора,
 input en_24576,  // включен - выключен первый генератор,
 input en_225792,  // включен - выключен второй генератор,

  output wire clock
 );

  assign clock = (en_24576 == 1)? in_24576 : in_225792;
 assign clock = (en_225792 == 1)? in_225792 : in_24576;

   endmodule

Пт сен 26, 2014 05:21:46

Люди, как прошить FPGA альтеру?
1- Вот написал простенький проект на верилоге светодиодами помигать. указал какие пины что делаают, откомпилировал.
2- как и с CPLD подключил плату по жтаг, залил прошивку…. не работает. В момент прошивки загорается лампочка что идет запись, пишет что 100% залито, а не мигает ни чего.
2а — вычитал что перед прошивкой надо нажать nConfig, это обнулит прошивку и переведет кристалл в режим прошивания. неработает.

3- решил прошить SPI_FLASH микра 25P28V6P (в мануале она описана как M25P128) Ее нет в настройках квартуса, там только EPCS*** EPCQ*** и ничего не подходит.

Не подскажите, где я видел статью в картинках пошаговая инструкция как подготовить и залить прошивку в постоянную память для FPGA альтеру, с описанием всех этих тонкостей.

Последний раз редактировалось WolfTheGrey Пт сен 26, 2014 07:11:05, всего редактировалось 1 раз.

Пт сен 26, 2014 07:09:00

ПЛИС EP4CE40F23I7
Если по Jtag заливать прошивку, то после успешной прошивки лампочка программирования гаснет. А тестовые светодиоды не мигают. Ведь в демопрошивке (которая залита во флеш память) светодиоды то дрыгаются как китайская елочная гирлянда.
Может набыдлокодил чего то не того?

Но ведь компилятор не ругается?! должно же работать.

Пт сен 26, 2014 11:50:46

У меня компилятор выдал более 100 предупреждений! В симуляторе код тоже не работает.
Подправил немного – должно работать.

Пт сен 26, 2014 23:31:01

Тоже ошибок стало всего 13, а не 370. Всего добавил одно слово: always@(posedge clock)

Закончил скачивать семплы на доску, но чето проект на светодиодах не открывается. Не открываются страницы с проектом, а некоторые проекты совсем не открываются. Максимум что могу, загрузить по жтаг прошивку в ФПГА.
Изображение

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

так не бро:

Надо в отдельном алвайс блоке присвоить переменной REG RES значение кнопки RESET

Вс сен 28, 2014 02:19:39

Регистр res, похоже не нужен.
Компилятор его вообще игнорирует!

Вложения
main_cr.jpg
(149.81 KiB) Скачиваний: 640

Вс сен 28, 2014 15:41:19

Не подскажите, что за нелепый наезд со стороны компилятора? Вроде какбы подправляет масиврегиистров, по сути сумма масива неизменяется: Warning (10230): Verilog HDL assignment warning at timer.v(65): truncated value with size 32 to match size of target (8)

Вот еще, нелепая поправка кода: Warning (10230):
Verilog HDL assignment warning at timer.v(122): truncated value with size 10 to match size of target (9)
Verilog HDL assignment warning at timer.v(123): truncated value with size 10 to match size of target (9)
Verilog HDL assignment warning at timer.v(124): truncated value with size 10 to match size of target (9)
Verilog HDL assignment warning at timer.v(125): truncated value with size 10 to match size of target (9)

Вс сен 28, 2014 21:04:46

Это стандартные предупреждения о несоответствии размеров регистров. Вполне можно игнорировать. На всякий случай проверьте объявление для encoder_binaru.

Максимум что могу, загрузить по жтаг прошивку в ФПГА.

Квартус сильно не любит русских букв в путях. Переместите проект в каталог с латинским именем.

Пн сен 29, 2014 02:54:26

MisterDi писал(а):Квартус сильно не любит русских букв в путях. Переместите проект в каталог с латинским именем.

D:alteraPROJEKTep4ce40 Скореее в настройках что то не то.

Опять какая то непонятная ошибка.
Error (10028): Can’t resolve multiple constant drivers for net «LCD_massiv_count[6]» at timer.v(140)
Error (10028): Can’t resolve multiple constant drivers for net «LCD_massiv_count[5]» at timer.v(140)
Error (10028): Can’t resolve multiple constant drivers for net «LCD_massiv_count[4]» at timer.v(140)
Error (10028): Can’t resolve multiple constant drivers for net «LCD_massiv_count[3]» at timer.v(140)
Error (10028): Can’t resolve multiple constant drivers for net «LCD_massiv_count[2]» at timer.v(140)
Error (10028): Can’t resolve multiple constant drivers for net «LCD_massiv_count[1]» at timer.v(140)
Error (10028): Can’t resolve multiple constant drivers for net «LCD_massiv_count[0]» at timer.v(140)

Драйвер 8 знакового LCD дисплея TIC8148 Там три контакта:
LCD_load, — можно просто поставить 1, это чтоб символы отображались, не блолее.
LCD_dclk, — тактовая частота.
LCD_din — информация.

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

Пн сен 29, 2014 08:31:27

Нельзя присваивать значение регистру в разных always блоках. Вы по фронту тактовой присваиваете LCD_dclk 1, а по спаду 0. Так работать не будет.

Пн сен 29, 2014 15:18:32

Вы по фронту тактовой присваиваете LCD_dclk 1, а по спаду 0

Ну, с этим ладно, чего придумаю.Хотя непонятно в чем кофликт, если оба блока тактируются от одного сигнала.
А вот как быть с спусковым крючком LCD_massiv_count <= 0; в одном алвайс блоке, чтоб заработал другой блок. По сути конфликта (внутри кристального короткого замыкания) не должно быть. Как же тогда пишутся сложнейшие схемы?, есть же способ как легально обойти этот запрет.

Написать новый модуль, куда передать нужные параметры, и запустить его из первого алвайс блока?

Не подскажете, что за харек: (выписал из книги, а компилироваться ни в какую не хочет)
task pot(x,y);
input x; output y;
endtask

Пн сен 29, 2014 15:59:49

Попробуйте применить машину состояний (сделайте через case).
И что Вам мешает написать так?

Код:
// LCD_driver
     initial LCD_load = 1;
     always @(posedge clk_1k)    //такт одна микросекунда
        begin
          if(LCD_massiv_count == 72)
            begin
               LCD_din  <= LCD_massiv[LCD_massiv_count];
               LCD_massiv_count <= LCD_massiv_count + 1;
               LCD_dclk <= 1;               
            end else LCD_dclk <= 0;   
        end

По идее должно работать. Сам недавно начал изучать ПЛИСки :))

Пн сен 29, 2014 23:43:40

И что Вам мешает написать так?

Потому что алвайс блок LCD_driver должен заработать по команде от алвайс блока где все эти числа собираются.
Вот интересно
always 1
LCD_massiv <= данные;
LCD_massiv_count <=0;

always 2
if(LCD_massiv_count <= 72) так делать нельзя, конфликт блоков,
а вот LCD_massiv, пришедшая с того же блока работает на ура.

Powered by phpBB © phpBB Group.

phpBB Mobile / SEO by Artodia.

Error (10228): Verilog HDL error at test1.v(1): module «test1» cannot be declared more than once

Эта ошибка заключается в том, что я в симуляции, то есть из-за тестового кода.

Таким образом, есть ошибка в модуле повторного определения, и это утверждение не требует этого оператора в некоторых средах отладки моделирования, и вам необходимо ввести путь и имя файла модуля из меню среды отладки.

Error: Can’t launch the ModelSim-Altera software — the path to the location of the executables for the ModelSim-Altera software were not specified or the executables were not found at specified path.

Решение:

Tools -> Options -> General -> EDA Tool Options

После вскрытия квартал, нажмите на инструменты строки меню, затем выберите Второе параметры меню …, есть параметры инструмента EDA в общем подскарке, после открытия, второй или подсчитывают четвертую (квартал 13.0, другие аналогичные) да Moelsim-ALTERA или MODUSIMIM, добавьте каталог папок в соответствии с самостоятельно установленным версией ISTOMIM-ALTERA и номер версии, установленным в моделировании, обратите внимание, не добавляя файл EXE, но добавляет файл первого уровня, в котором находится файл EXE. Например, я добавляю Modesim-altera установил диск e, затем добавитьE:altera13.0modelsim_asewin32aloem,OK。

Примечание. Последний «» должен быть добавлен, в противном случае это будет не так, как показано:

Ошибка: квартал установлен после выбора устройства Cyclone после доступного столбца устройства. Устройство не может выбрать

Эта ошибка заключается в том, что нет, вызываемая трещина, повторная трещина разрешена, добавьте правильный файл лицензии, обратите внимание на замену лицензии XXXXX следующим образом:

Error (10119): Verilog HDL Loop Statement error at compute.v(36): loop with non-constant loop condition must terminate within 250 iterations

Причина этой ошибки заключается в том, что ширина данных данных и операнда одинаковы, и индекс условия определения = Operand появляется в цикле для LOOP, а индекс добавит 1 после этого, потому что переполнение сгенерировано превратился в мертвый цикл, поэтому оно будет сообщено.

Wearaboundouround: Wide Wide Windows ширина данных определяется как reg [3: 0] индекс.

Блок срабатывает каждый раз, когда есть положительный фронт часов. Где у вас был while петля ничего не значит в аппаратном обеспечении, все равно нужны часы для управления триггерами.

В то время как циклы могут использоваться в тестовых приложениях для управления стимулом

integer x;
initial begin
  x = 0;
  while (x<1000) begin
    data_in = 2**x ; //or stimulus read from file etc ...
    x=x+1;
  end
end

Я считаю, for петли или repeat чтобы быть более полезным, хотя:

integer x;
initial begin
  for (x=0; x<1000; x=x+1) begin
    data_in = 2**x ; //or stimulus read from file etc ...
  end
end

initial begin
  repeat(1000) begin
    data_in = 'z; //stimulus read from file etc (no loop variable)...
  end
end

NB: лично я бы также добавил begin end к каждой вещи, чтобы не добавлять лишние строки позже и не задаваться вопросом, почему они всегда или никогда не выполняются, особенно когда я новичок в языке. Это также имеет дополнительное преимущество, заключающееся в том, что отступы выглядят немного лучше.

always@ (posedge CLOCK_50 or negedge reset_n) begin
  if(!reset_n) begin
    count <= 'b0;
  end
  else if (enable) begin
    count <= count + 1;
  end
end

Понравилась статья? Поделить с друзьями:
  • Error 1011 на сайте
  • Error 1010 access denied
  • Error 101 when loading url https gm world ru gm forge1
  • Error 101 this game must be launched from steam
  • Error 101 street storm при обновлении