2016-03-25 3 views
0

Ich versuche, eine einfache Clock-Wiggle-Aufgabe in einer Testbench zu deklarieren, aber ModelSim behauptet, dass kein Design-Element meines Aufgaben-Typs existiert. Was ist das Problem mit diesem Code:Aufgabe in derselben Verilog-Datei deklarieren

`timescale 1 ns/1 ns 

module at25320a_tester(); 
    reg clk, s_in, s_out, chip_select, write_protect, hold; 

    // Instantiate at25320a module 
    at25320a EEPROM (.SCK(clk), .SI(s_in), .CSNeg(chip_select), .HOLDNeg(hold), .WPNeg(write_protect), .SO(s_out)); 

    run_clk(15); 

    task run_clk; 
     input [3:0] cycles; 
     output reg clk; 

     integer i; 

     for (i=0;i<cycles;i=i+1) begin 
      #100 clk = 1; 
      #100 clk = 0; 
     end 
    endtask 

endmodule 

Antwort

2

Aufgaben von einem Verfahrensblock aufgerufen werden muss, wie always oder initial. In Ihrem Fall möchte youll die Aufgabe, in einem initial Block mit einigen Modifikationen auszuführen:

`timescale 1 ns/1 ns 

module at25320a_tester(); 
    reg clk, s_in, s_out, chip_select, write_protect, hold; 

    // Instantiate at25320a module 
    at25320a EEPROM (.SCK(clk), .SI(s_in), .CSNeg(chip_select), .HOLDNeg(hold), .WPNeg(write_protect), .SO(s_out)); 

    initial begin 
     run_clk(15); 
    end 

    task run_clk; 
     input integer cycles; // Might as well not have this be bigger 
     // No clock, you want to use the clock from the module 
     integer i; 

     for (i=0;i<cycles;i=i+1) begin 
      #100 clk = 1; 
      #100 clk = 0; 
     end 
    endtask 

endmodule 
+0

Die reg clk Linie in der Aufgabe von übrig blieb, als ich hatte es in einer separaten Datei, aber der Verfahrensblock und ganzzahlige Änderungen waren genau richtig. Vielen Dank! – Answoquest