Перейти к содержанию
    

Questa ложится, что делать?

Добрый день. Questa постоянно ложится без объяснения причин, невозможно работать. Провел следствие и подготовил типа баг-репорт.

Имеем файл "my_class.sv":

class my_class;

    bit bit1, bit2;

    task my_task (
        ref bit bit1, bit2
        );

        forever @ (*) begin
            this.bit1 = bit1;
            this.bit2 = bit2;
            end

    endtask

endclass

и файл "my.sv":

`include "my_class.sv"

module my;

endmodule

компилируем:

vlog -novopt -sv my.sv

получаем:

# ** Error: my.sv(7): Internal error: ../../../src/vlog/vtokfile.c(334) nr == 1

Файлы прилагаю.

Квесте не нравится вот это:

forever @ (*)

Что я сделал неправильно? Помогите, уважаемые гуру, только на вас и уповаю :crying:

bag.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

    task my_task (
        ref bit bit1, bit2
        );

        forever @ (*) begin
            this.bit1 = bit1;
            this.bit2 = bit2;
            end

    endtask

Что я сделал неправильно? Помогите, уважаемые гуру, только на вас и уповаю :crying:

 

ничего себе, первый раз такое вижу, так тоже можно писать ?? %))))

 

подозревая что вы хотели сделать, я бы сделал так

 

    task my_task (
        ref bit bit1, bit2
        );
    begin 
        forever begin
            wait(bit1 || bit2);
            this.bit1 = bit1;
            this.bit2 = bit2;
            end
    end 
    endtask

 

но вообще ИМХО таскать такие битовые вещи в классы я бы не стал, классы для транзакций и работы через BFM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из Вашего ответа понял только, что неизвестно, что я сделал неправильно но так почему-то нельзя писать и никто никогда такого не видел. Запутался еще больше :crying:

Спасибо за участие :)

ЗЫ Зачем Вы в Вашем коде окружили тело таска словами-"паразитами" begin ... end???

ЗЫЫ Страшно мне...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из Вашего ответа понял только, что неизвестно, что я сделал неправильно но так почему-то нельзя писать и никто никогда такого не видел. Запутался еще больше :crying:

IEEE Standard Verilog® Hardware Description Language -> 9.6 Looping statements -> Syntax 9-7 Syntax for the looping statements ->

 

function_loop_statement ::= (From Annex A - A.6.8)
  forever function_statement 
| repeat ( expression ) function_statement 
| while ( expression ) function_statement 
| for ( variable_assignment;  expression; variable_assignment )
     function_statement  
loop_statement ::= 
  forever statement 
| repeat ( expression ) statement 
| while ( expression ) statement 
| for ( variable_assignment;  expression; variable_assignment )
     statement

 

т.е. так делать как вы делаете нельзя по стандарту %) Это же процедурный код, а не процесс. вот и весь ответ. Компилятор квесты наверное валиться от такой наглости %)))

 

я предположил, что вы пытаетесь в таске ждать событий по обновлению переменных по ссылке bit1 и bit2, и написал как бы это сделал я

 

ЗЫ Зачем Вы в Вашем коде окружили тело таска словами-"паразитами" begin ... end???

 

привычка и шаблоны в редакторе %)

 

Хотя вообще ваш код, в том виде в котором вы его представили, почти распадается на 2 операторных блока.

 

1. блок forever @(*) //вот тут не хватает точки с запятой.

2. begin...end

 

но @(*) это неявный список чувствительности для процессов, в процедурном коде его использовать нельзя, т.к. откуда брать сигналы то ?

 

если вам нужно ждать события то, в процедурном коде надо использовать либо wait(event) либо @(event).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!!! Теперь все уложилось в моей голове :)

 

ЗЫ Компилятор не должен падать от наглости, однако.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...