如何在 Verilog-2005 中初始化二维参数数组?
How do I initialize a 2-dimensional parameter array in Verilog-2005?
我知道以前有人问过这个问题,但是,我能找到的每个答案都涉及 SystemVerilog 及其语法。
我有以下代码:
parameter NUM_TILES = 2;
parameter [15:0] TILE_SIZE [NUM_TILES - 1'b1:0];
parameter [15:0] TILE_PRV_SIZE [NUM_TILES - 1'b1:0];
parameter [15:0] TILE_LOOP [NUM_TILES - 1'b1:0];
我尝试了以下方法,但 Verilog-2005 不支持数组文字。
parameter [15:0] TILE_SIZE [NUM_TILES - 1'b1:0]; = '{16'd4, 16'd4};
defparam 语句似乎会有一些用处,但我需要实例化我的测试平台模块并从实例化外部使用它。我相信我的另一个选择是使用模块实例参数值分配,例如
module top_tb UUT #(.TILE_SIZE[i](16'd4),...,...)();
但我正在努力远离它。我可以使用一些鲜为人知的技巧,还是我必须求助于上述两种方法之一?
你可以做的是将你的数组打包成一个向量和 select 它的一部分。
parameter [(NUM_TILES*16)-1:0] TILE_SIZE = {16'd4, 16'd4};
然后你可以select参数
TILE_SIZE[i*16+:16]
我知道以前有人问过这个问题,但是,我能找到的每个答案都涉及 SystemVerilog 及其语法。
我有以下代码:
parameter NUM_TILES = 2;
parameter [15:0] TILE_SIZE [NUM_TILES - 1'b1:0];
parameter [15:0] TILE_PRV_SIZE [NUM_TILES - 1'b1:0];
parameter [15:0] TILE_LOOP [NUM_TILES - 1'b1:0];
我尝试了以下方法,但 Verilog-2005 不支持数组文字。
parameter [15:0] TILE_SIZE [NUM_TILES - 1'b1:0]; = '{16'd4, 16'd4};
defparam 语句似乎会有一些用处,但我需要实例化我的测试平台模块并从实例化外部使用它。我相信我的另一个选择是使用模块实例参数值分配,例如
module top_tb UUT #(.TILE_SIZE[i](16'd4),...,...)();
但我正在努力远离它。我可以使用一些鲜为人知的技巧,还是我必须求助于上述两种方法之一?
你可以做的是将你的数组打包成一个向量和 select 它的一部分。
parameter [(NUM_TILES*16)-1:0] TILE_SIZE = {16'd4, 16'd4};
然后你可以select参数
TILE_SIZE[i*16+:16]