verilog中generate的用法(genvar)
时间:10-02
整理:3721RD
点击:
有没有见过这种用法的
wire [1:0] a, b, c;
parameter PW = 2;
//assign c[1:1] = a ^ b;
generate
genvar i;
for(i=0; i <= 1;i = i+1)begin : geniiii
assign c[ i : i ]
= ( (a ^ ( (b /*+ i[PW-1:0]*/) & {PW{1'b1}} ) ) == {1'b1, {PW-1{1'b0}}} );
end
endgenerate
赋值语句中i[PW-1:0],i作为genvar定义变量,还能这样用?ise无法综合。
wire [1:0] a, b, c;
parameter PW = 2;
//assign c[1:1] = a ^ b;
generate
genvar i;
for(i=0; i <= 1;i = i+1)begin : geniiii
assign c[ i : i ]
= ( (a ^ ( (b /*+ i[PW-1:0]*/) & {PW{1'b1}} ) ) == {1'b1, {PW-1{1'b0}}} );
end
endgenerate
赋值语句中i[PW-1:0],i作为genvar定义变量,还能这样用?ise无法综合。
将 genvar i 放到 generate 前面
不管是放到前面还是里面,ise都不能通过,像上面代码一样屏蔽i[PW-1:0]可以通过ise
丁。。
。
这个看过,应该可以综合,你查查资料吧
这个电路使用SYnplify综合没有问题,XST对综合的语法检查太严格了,建议给generate起一个名字试一试,genvar放在前面
综合的代码还是只用简单的rtl级风格吧,你用这些语言你能知道综合出来的东西是啥啊...性能如何保证..
这个主要用在TESTBENTCH中的
看看。
把 i[PW-1:0] 换成 bi[PW-1:0],试试
话说 可以被综合了
generate就是展开,是一个缩减代码的方法。
