生成块作用是产生多个模块,相当于复制电路。 begin-end本身是没作用的,它只用来规范程序的执行顺序。假如有1个模块A,可以产生1位的伪随机码,但现在需要32位的伪随机码,可以用generate-for产生32个模块从而输出32位伪随机码。当然也可以在begin-end中例化32次模块A达到相同的目的。
1、生成块必须在模块中说明生成的实例范围,用关键字generate-endgenerate。
2、创建生成语句的方法:循环生成 条件生成 case生成
3、在仿真开始之前,仿真器会对生成块中的代码进行展平,将生成块转换为展开的代码,然后对展开的代码进行仿真。
4、关键词genvar用于声明生成变量,该变量只用在生成块中,在确立后的仿真代码中,该变量是不存在的。
5、localparam在本module是有效的,不能用于参数传递。