Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Языки проектирования на ПЛИС (FPGA) _ Как правильно написать task automatic на System Verilog

Автор: Koluchiy Sep 28 2018, 07:34

Здравствуйте, уважаемые гуры.

Есть что-то типа такого:

Код
always @ (posedge Clk or posedge Reset)
begin
    if (Reset)
        begin
          VarA <= 0;
          VarB <= 0;
        end
    else
    begin
       simple_task(VarC, VarA);
       simple_task(VarD, VarB);
    end
end

task automatic simple_task;
input Var1;
output Var2;
begin
  Var2 <= ~Var1;
end
endtask


2 переменные изменяются при помощи 2х экземпляров task'а.
Проблема в том, что если использовать присваивание "<=" , то синтезатор (Quartus 18) ругается - говорит, что нельзя automatic с таким присваиванием.
Использовать присваивание "=" можно и все ок, но с таким присваиванием проблемы дальше, т.е. оптимально, чтобы на выходе из этого блока было присваивание "<=".

Понятно, что можно сделать task'и и присваивание "=", а потом переприсвоить в другую переменную по "=>".
Но так громоздко, хочется написать проще.

Кто что посоветует?

Автор: Koluchiy Sep 28 2018, 09:26

А, ну да. Понятно, что можно вместо таска сделать модуль. Но захотелось сделать именно таск.

Автор: RobFPGA Sep 28 2018, 09:47

Приветствую!

Цитата(Koluchiy @ Sep 28 2018, 12:26) *
А, ну да. Понятно, что можно вместо таска сделать модуль. Но захотелось сделать именно таск.
Если по логике подходит то сделайте как функцию
Код
...
function logic simple_func (input logic var1);
  return ~var1;
endtask
...
   VarC <= simple_func(VarA);
...


Удачи! Rob.

Автор: Koluchiy Sep 28 2018, 11:18

Цитата(RobFPGA @ Sep 28 2018, 13:47) *
Приветствую!
Если по логике подходит то сделайте как функцию
Код
...
function logic simple_func (input logic var1);
  return ~var1;
endtask
...
   VarC <= simple_func(VarA);
...


Удачи! Rob.

У реального таска несколько выходов.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)