随机数组和队列,约束动态数组和队列
示例1
my_trans.sv文件
class my_trans;
rand bit [3:0] s_array[7];//非合并数组
rand bit [3:0] d_array[ ];//动态数组,使用rand修饰,每次随机化这个类,这个变量都会赋一个值
rand bit [3:0] queue[$];//队列,$代表最后一个元素
constraint d_array_cons {
d_array.size() > 5; d_array.size() < 10; }//size()内建方法返回数组的当前尺寸
constraint queue_cons {
queue.size()==3;}//size()返回队列中元素的数目,队列为空返回为0;
function void display();
$display("s_array = %p", s_array);//%p各式符输出指针指向的地址值
foreach (d_array[i])
$display("d_array[d_array[%0d] = 0x%0h", i, d_array[i]);
$display("queue = %p", queue);
endfunction
endclass
tb.sv文件
module tb;
my_trans trans;//例化
initial begin
trans = new()

本文探讨了Verilog中随机数组、动态数组(d_array)和队列(queue)的实现,包括如何使用`rand`修饰符进行随机化,以及如何应用约束条件如大小限制。示例展示了如何在`my_trans.sv`和`tb.sv`文件中使用这些概念,并通过`Makefile`进行编译和运行。同时,讲解了`rand`与`randc`的区别,以及在`my_trans`类中的属性和函数操作。
最低0.47元/天 解锁文章
1232

被折叠的 条评论
为什么被折叠?



