用于在系统verilog中将未知数量的字节附加到单个大型数组中的数组

时间:2017-06-16 07:16:32

标签: arrays system-verilog

我试图将未知数量的字节附加到单个大型数组中。我应该使用哪种数组类型?我正在尝试这个

UPDATE

其中temp_i是输入srting。我的最终目标是将输入字符串转换为其ASCII值的二进制表示形式,并将它们连接成一个大型数组。 我很难选择使用动态或关联的数组,或者我是否可以使用队列。

任何帮助都会非常明显。

2 个答案:

答案 0 :(得分:1)

当索引值不连续或排序无意义时,您使用关联数组。这里不适用。

在向阵列添加或删除一个元素时使用队列。如果将arr声明为队列,则可以编写

string temp_i;
bit [7:0] arr[$];
int len;

len = temp_i.len();
for(int i=0,i<len;i++) 
  arr.push_back(temp_i.getc(i));

如果您的字符串很小,或者您计划将多个字符串连接在一起,则队列是您的最佳选择。但是,如果您只计划将一个字符串转换为数组,那么使用比特流转换为动态数组将是最有效的。

string temp_i;
typedef bit [7:0] uint8_da_t[]; // typedef required for cast to target
uint8_da_t arr; // using typedef not required here, but A VERY GOOD IDEA

arr = uint8_da_t'(temp_i);

答案 1 :(得分:0)

它应该是可综合的代码还是测试平台? 以上都不是可综合的。

你会在不同的世界中以不同的方式做到这一点。