verilog中的随机向量生成

时间:2018-04-09 20:34:00

标签: verilog

我需要在Verilog中生成随机的1023位向量。我需要一些可以放在测试平台中的东西来生成这样的向量并将这些向量提供给测试中的设计

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,对$random的串联调用可能会达到您的目的,除非您确实需要避免32位周期(这可能仍然可以通过$random但我不确定如何最好如果可能的话,这样做。)

最好使用一些SystemVerilog结构,即随机类:

class myVector;
   rand bit [1022:0] vec; // 1023 bits
endclass
...
myVector vec = new;
vec.randomize();
getRandomVector <= vec.vec;
vec.randomize();
getAnotherRandomVector <= vec.vec;

如果您想确保多次调用.randomize()时不重复,则可以将vec声明为randc(您可以详细了解IEEE 1800-2012的确切差异)第18章)。您还可以对随机化提供约束,以便在需要时仅获取某种形式的向量(例如限制1的数量或类似的数量)。