2015-12-06 1 views
-1

Я получаю следующую ошибкуОтдел в Verilog с помощью теста

ВСЕ ПРАВА ЗАЩИЩЕНЫ Эта программа является служебной и конфиденциальной информация Synopsys Inc. и могут быть использованы и раскрываемые только уполномоченным в лицензионного соглашения, контролирующего такое использование и раскрытие.

Предупреждение: Лицензия на продукт vcscompiler_Net (723) истекает в течение 26 дней, o n: 31-dec-2015. Если вы хотите временно отключить это сообщение, установите vcs LIC EXPIRE WARNING environment variab le на за количество дней до истечения срока, в течение которого вы хотите, чтобы это сообщение начиналось с (минимум равен 0). Синтаксический файл проекта '../src/divi .V' error- [SE] Синтаксис ошибки "Этот Verilog источник имеет Синтаксическая ошибка

.../SRC/диви .в", 12: лексема «бит 'reg [4: 0] бит;

Системное ключевое слово «бит» не используется в этом контексте . 1 ошибка времени CPU: .143 секунды компилировать анг-Зв г-0:/класс/Linux/avicente/ASIC_Design/работа>

module streamlined_divider(quotient,remainder,ready,dividend,divider,start,clk); 


input [15:0] dividend,divider; 
    input   start, clk; 
    output [15:0] quotient,remainder; 
    output  ready; 

    reg [15:0] quotient; 
    reg [31:0] dividend_copy, divider_copy, diff; 
    wire [15:0] remainder = dividend_copy[15:0]; 

    reg [4:0]  bit; 
    wire   ready = !bit; 

    initial bit = 0; 

    always @(posedge clk) 

    if (ready && start) begin 

     bit = 16; 
     quotient = 0; 
     dividend_copy = {16'd0,dividend}; 
     divider_copy = {1'b0,divider,15'd0}; 

    end else begin 

     diff = dividend_copy - divider_copy; 
     quotient = { quotient[14:0], ~diff[31] }; 
     divider_copy = { 1'b0, divider_copy[31:1] }; 
     if (!diff[31]) dividend_copy = diff; 
     bit = bit - 1; 

    end 

endmodule 

module l07_test_div(); 
    wire [15:0] quot, rem; 
    reg [15:0] shadow_quot, shadow_rem; 
    reg [15:0] a, b; 
    integer i; 
    parameter num_tests = 1000; 

    reg  clk; 
    initial clk = 0; 
    always #1 clk = ~clk; 

    reg  start; 
    wire  ready; 

    wire [15:0] infinity; 
    assign  infinity = 16'hffff; 

    // simple_divider div(quot,rem,ready,a,b,start,clk); 
    streamlined_divider div(quot,rem,ready,a,b,start,clk); 

    initial begin 

     # 0.5; 

     while (!ready) #1; 

     for (i=0; i<num_tests; i=i+1) begin:A 

     integer shadow_quot, shadow_rem; 

     a = $random; 
     b = i & 1 ? $random : $random & 3; 
     start = 1; 

     while (ready) #1; 

     start = 0; 

     while (!ready) #1; 

     shadow_quot = b ? a/b : infinity; 
     shadow_rem = b ? a % b : a; 

     #1; 
     if (quot != shadow_quot || rem != shadow_rem) begin 
      $display("Wrong quot: %h/%h = %h r %h != %h r %h (correct)", 
        a, b, quot, rem, shadow_quot, shadow_rem); 
      $stop; 
     end 
     end 

     $display("Tried %d divide tests",num_tests); 
     $stop; 
    end 

endmodule' 

Нужна помощь вычисляя ошибку

ответ

3

Строка bit не может использоваться как имя сигнала, поскольку это ключевое слово. См. Раздел IEEE Std 1800-2012 «6.8 Объявления переменных». Он был добавлен к языку в 2005 году.

Вы должны изменить bit на что-то вроде my_bit (или что-то, что имеет смысл для вашего дизайна).

Смежные вопросы