Verilog 我得到一个错误,说1)意外的genvar 2)未定义I 模块时钟 ( 输入逻辑wclk,rclk ); 初始开始 wclk=1'b0; rclk=1'b0; 终止 任务锁; 开始 genvar i; 生成 开始 对于(i=0;i

Verilog 我得到一个错误,说1)意外的genvar 2)未定义I 模块时钟 ( 输入逻辑wclk,rclk ); 初始开始 wclk=1'b0; rclk=1'b0; 终止 任务锁; 开始 genvar i; 生成 开始 对于(i=0;i,verilog,system-verilog,Verilog,System Verilog,Generate通常用于生成模块、函数、任务等的多个实例。它用于重复顶级结构 genvar通常用于generate块。对于您的情况,您确实不需要genvar和generate 为您提供一个小的编辑示例: module clock ( input logic wclk,rclk ); initial begin wclk = 1'b0; rclk = 1'b0; end task genclock; begin genvar i; generate

Generate
通常用于生成
模块
函数
任务
等的多个实例。它用于重复顶级结构

genvar
通常用于
generate
块。对于您的情况,您确实不需要
genvar
generate

为您提供一个小的编辑示例:

module clock
  (
 input logic wclk,rclk
 );
  initial begin
    wclk = 1'b0;
    rclk = 1'b0;
  end



task genclock;
begin
  genvar i;
    generate
      begin
    for(i=0;i<20;i++)
    begin
    #10
    wclk=~wclk;
    rclk=~rclk;
    #20
    rclk=~rclk;
    #20
    wclk=~wclk;
    #40
    wclk=~wclk;
    #40
    rclk=~rclk;
    #80
    wclk=~wclk;
    #100
    rclk=~rclk;
    #10
    wclk=~wclk;
    #2
    rclk=~rclk;
    #150
    wclk=~wclk;
    rclk=~rclk;
    #30
    wclk=~wclk;
    #44
    rclk=~rclk;
    end
    #100
    $finish;
    end
    endgenerate
    end
   endtask
   endmodule
模块时钟(wclk、rclk);
输入reg wclk;
输入reg rclk;
初始开始
wclk=1'b0;
rclk=1'b0;
$finish;
终止
任务锁;
整数i;
开始
对于(i=0;i
module clock(wclk, rclk);

input reg wclk;
input reg rclk;

initial begin
  wclk = 1'b0;
  rclk = 1'b0;
  $finish;
end

task genclock;
    integer i;

    begin
    for(i=0;i<20;i=i+1) 
      #10
        wclk <= ~wclk;
        rclk <= ~rclk;
        #20
        rclk <= ~rclk;
        #20
        wclk <= ~wclk;
        #40
        wclk <= ~wclk;
        #40
        rclk <= ~rclk;
        #80
        wclk <= ~wclk;
        #100
        rclk <= ~rclk;
        #10
        wclk <= ~wclk;
        #2
        rclk <= ~rclk;
        #150
        wclk <= ~wclk;
        rclk <= ~rclk;
        #30
        wclk <= ~wclk;
        #44
        rclk <= ~rclk;
        #100;

    end

endtask
endmodule