Error al crear una tarea en un archivo separado en verilog

0
module tb();

    reg [7:0] a = 1;
    reg [7:0] b;

    initial begin
      AddTask(a, b);
      $display("%d", b);
    end

    task AddTask;

        input [7:0] a;
        output reg[7:0] b;

        begin
          b = a + 1;
        end

    endtask


endmodule

El código anterior se compila y simula correctamente; Pero quiero cortar la tarea "AddTask" del módulo "tb.v" y colocarla en un módulo separado "AddModule.v" (que está en un archivo separado) para una codificación clara. Cuando hago esto, modelsim puede compilarlo pero no puede simularlo y dar el error: %código%. Aunque incluyo AddModule.v, no puede reconocer AddTask. ¿Puedes ayudarme por favor, que está mal?

module tb;

    reg [7:0] a = 1;
    reg [7:0] b;

    'include "AddModule.v"

    initial begin
      AddTask(a, b);
      $display("%d", b);
    end
 endmodule

AddTask en un archivo separado:

module AddModule;

    task AddTask;

        input [7:0] a;
        output reg[7:0] b;

        begin
          b = a + 1;
        end

    endtask

endmodule 
    
pregunta Soheil Shababi

1 respuesta

0

El problema es probablemente la declaración del módulo anidado. Esto no está permitido en Verilog, sin embargo, es posible en SystemVerilog.
Intente declarar solo la tarea AddModule() en un archivo separado sin una declaración de módulo circundante. Este archivo se puede incluir dentro del alcance de otro módulo, por ejemplo, dentro de su banco de pruebas (como en su código de ejemplo).

    
respondido por el damage

Lea otras preguntas en las etiquetas