generate-for只針對於module、reg、net、assign、always、parameter、function、initial、task等語句或者模塊,而for只針對於非例化的循環。
generate-for語句:
1、generate-for語句必須用genvar關鍵字定義for的索引變量;
2、for的內容必須用begin end塊包起來,哪怕只有一句;
3、begin end塊必須起個名字
在開始仿真前,仿真器會對生成塊中代碼進行確立展開,展開后的仿真代碼中生成變量genvar不復存在。
GENERATE-FOR循環語句
GENERATE-CONDITIONAL條件語句
1 module top( 2 input [9:0] in, 3 output [9:0] out 4 ) 5 genvar i 6 generate 7 for(i=0;i<10;i=i+1) 8 begin: reverse 9 assign out[i] = in[9-i]; 10 end 11 endgenerate 12 13 endmodule
引用時:reverse[0].out,reverse[1].out,reverse[2].out,,,,reverse[9].out。
其他:
1 generate 2 if .. 3 else .. 4 endgenerate
1 generate 2 case(N) 3 1: .. 4 2: .. 5 default: .. 6 endgenerate
for循環語句:
1 module top( 2 input [9:0] in, 3 output [9:0] out 4 ) 5 6 integer i; 7 always@(*) begin 8 for(i=0;i<10;i=i+1) begin: 9 out[i] = in[9-i]; 10 end 11 end 12 13 endmodule
————————————————
版權聲明:本文為CSDN博主「無信號」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43274923/article/details/107510142