2

大きなメモリをランダム化する必要があります。すべてのデータは、ラッチ モジュール内に含まれています (ビットごとに 1 つ)。

以下を修正するにはどうすればよいですか?

// Quick mock up of the memory, which I can't change
`define WIDTH 64*144

module latch(
  output reg Q);
endmodule

module memory;
  wire [`WIDTH-1:0] latchData;
  latch latch[`WIDTH-1:0] (.Q(latchData[`WIDTH-1:0]));
endmodule

// My testbench, which I can change
module test;

  reg [31:0] index;

  memory memory();

  initial begin
    $display("Initial data: %0d", memory.latchData);
    injectRandomData();
    $display("Randomized data: %0d", memory.latchData);
  end

  task injectRandomData();
    // Using for loop does not work
    //for (index=0; index < `WIDTH; index = index+1) begin
    //  memory.latch[index].Q = $urandom;
    //end

    // Doing it this way seems terrible
    memory.latch[0].Q = $urandom;
    memory.latch[1].Q = $urandom;
    memory.latch[2].Q = $urandom;
    // ... a bunch more to go; don't wait up

  endtask

endmodule

EDA Playground のコード: http://www.edaplayground.com/s/4/235

4

2 に答える 2