2016-03-25 6 views
0

私はテストベンチで簡単なクロックウイングタスクを宣言しようとしていますが、ModelSimは自分のタスクタイプの設計要素が存在しないと主張しています。同じVerilogファイルでタスクを宣言する

`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 

答えて

2

タスク手続きブロックから呼び出されなければならない、などalwaysinitial:このコードは何が問題になっています。あなたのケースでは、youllのいくつかの変更とinitialブロック内のタスクを実行したい:私は別のファイルにそれを持っていたときに、タスク内のREG CLKラインはから残った

`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

が、手続きブロックと整数の変更が発生しました。ありがとうございました! – Answoquest

関連する問題