ハブ君の寝言

日記のような何か

parameterとかの渡し方

人に教える立場になった気がするので,まとめておく

module clk(
  output ck
);
  reg  ck;
  initial  ck=1;
  always #10  ck= ~ck;
endmodule

module r #(
  parameter n = 1
  )(
  input[n-1:0] d,
  input   load,ck,
  output [n-1:0] q
  );
  reg   [n-1:0] qd;
  initial qd = 0;
  assign #5 q = qd;
  always @(posedge ck) #0  qd = load? d : q;
endmodule

module rSim #(
 parameter n = 4
);
 reg [n-1:0] d;
 reg load;
 wire [n-1:0] q;
 clk ck1(
   .ck (ck)
 );
 r #(n) f(
   .q    (q),
   .d    (d),
   .load (load),
   .ck   (ck)
 );
 initial
  begin
   $monitor(" %d %d  %b   %b", q, d, load, ck, $stime);
   $display("  q d load ck          time");
   d = 0; load = 0; #10
   for(d=0; d<15; d=d+1) #20 load =~ load;
   #50 $finish;
  end
endmodule

こんな感じで,てきとうに引数渡せばおk