首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何随机化一个很大内存的内容?

如何随机化一个很大内存的内容?
EN

Stack Overflow用户
提问于 2013-10-14 19:17:03
回答 1查看 526关注 0票数 2

我需要随机化一个大的记忆。所有的数据都包含在锁存模块内部-每比特1。

如何解决以下问题?

代码语言:javascript
复制
// 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游乐场代码:http://www.edaplayground.com/s/4/235

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-14 19:44:24

快速而肮脏的解决方案:

代码语言:javascript
复制
task injectRandomData();
  ->do_InjectRandomData;
  #0; // gen always block a change to finish;
endtask

event do_InjectRandomData;
genvar index;
generate
  for(index = 0; index < `WIDTH; index = index +1) begin : gen_loop
    always @(do_InjectRandomData) begin : set_rand
      memory.latch[index].Q = $urandom;
    end
  end
endgenerate

EDA游乐场代码:http://www.edaplayground.com/s/6/236

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19367581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档