Verilog中的&random系统函数

我在编写一个testbench的时候需要产生一个2进制的随机序列,代码中有句为: in= {$random} %2;
但是编译的时候报错:Error (10174): Verilog HDL Unsupported Feature error at top_tb.v(22): system function "$random" is not supported for synthesis
请问这是什么原因?
`timescale 1 ps/ 1 ps
module top_tb();

reg in,en,clk;

lpm_shift tb (.clk (clk), .en( en ),.in ( in ), .q ( q ));

initial
begin
in=0;
en=1;
end

always #50 clk = ~clk;

always@ (posedge clk)
in= {$random} %2;

endmodule

{$random} 这个语句是不能综合的,只能作为仿真来使用,一般都用在testbench里面,仿真的话这个程序用modelsim是可以通过的。要想产生可综合的程序,楼主可以研究下伪随机序列的算法,使用fpga实现。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-15
在testbench中,不要将起使用在 always @(posedge clk)下,可直接根据需要写在initial模块下
第2个回答  2011-02-09
如果是modelsim的话应该不会报错的吧。
你用什么仿真的啊。

$random肯定是不能综合的。 而且得到的数应该是一个伪随机数。
相似回答