SystemVerilog学习之路(9)— 枚举类型的随机化约束

SystemVerilog学习之路(9)— 枚举类型的随机化约束

一、前言

在SystemVerilog中我们经常用到枚举类型,同样的我们也会对其进行随机化

二、代码

编写代码如下所示:

class transaction;
    typedef enum {
        SIZE_8BIT,
        SIZE_16BIT,
        SIZE_32BIT,
        SIZE_64BIT,
        SIZE_128BIT
    } burst_size_t;
    rand burst_size_t burst_size;
    rand int langth = 0;
    string name;

    function new(string name="transaction");
        this.name=name;
    endfunction

    constraint cstr{
        langth inside {[1:9]};
    }

endclass

module tb_top;

    initial begin
        int i=0;
        transaction tr;
        tr = new("tr");

        for(i=0; i<10; i++) begin
            tr.randomize() with {   langth < 5;
                                    burst_size inside { transaction::SIZE_8BIT, 
                                                        transaction::SIZE_128BIT};    
                                };
            
            $display("****************************************");
            $display("this is the %0d times randomize.", i);
            $display("tr.burst_size:", tr.burst_size);
            $display("tr.langth:", tr.langth);
        end

        $finish(2);
    end

endmodule

三、运行

运行结果如下所示,可以看到我们可以成功将其随机化并添加约束
在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值