应用场景:很多情况下需要编写很多结构相同但是参数不同的组合语句或者时序语句,如果在参数量很大的的情况下,原本的列举就会显得心有余而力不足。c语言中常用for语句来解决此类问题,verilog则为我们提供了generate语句。
generate语句的最主要功能就是对module批量例化,对reg、assign、always、task等语句进行复制。
分类:generate块可以分为generate for和generate if或者generate case。
generate for
格式:
(1)必须使用genvar定义一个正整数变量,用作for循环的判断。
(2)需要复制的语句必须写到begin_end语句里面。就算只有一句
(3)for需要有一个类似于模块名的名字,放在begin后面。
例:
module generate_for(
input [7:0] data_in,
output [1:0] t0,
output [1:0] t1,
output [1:0] t2,
output [1