Verilog-2001 之generate 语句的用法 Verilog-1995 支持通过以声明实例数组的形式对primitive 和module 进行复制结构建模。而在Verilog-2001 里,新增加的generate 语句拓展了这种用法(其思想来源于VHDL 语言)。除了允许复制产生primitive 和module 的多个实例化,同时也可以复制产生多个net、reg、parameter、assign、always、initial、task、function。 在generate 中引入了一种新的变量类型:genvar,用以在generate-for 语句中声明一个正整数的索引变量(如果将“X”或“Z”或者“负值”赋给genvar 变量,将会出错)。genvar 变量可以声明在generate 语句内,也可以声明在generate 语句外。 generate 语句有generate-for、genreate-if 和generate-case 三种语句; generate-for 语句 ① generate-for 语句必须用genvar 关键字定义 for 的索引变量; ② for 的内容必须用begin…end 块包起来,哪怕只有一句; ③ begin…end 块必须起个名字; 例1:一个参数化的gray-code to binary-code 转换器;这里采用复制产生多个assign 语句的形式来实现; module gray2bin1 (bin, gray); parameter SIZE = 8; // this module is parameterizable output [SIZE-1:0] bin; input [SIZE-1:0] gray; genvar i; generate for(i=0; i