如何只随机化一个类中的 1 个变量? [英] How to randomize only 1 variable in a class?

查看:23
本文介绍了如何只随机化一个类中的 1 个变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下课程

class ABC;


    rand bit[2 : 0] mode; 
    randc bit[2 : 0] mode_cylic;
    constraint range{

        mode >= 2;
        mode < 6;

    };

    constraint range_cylic{

        mode_cylic >= 2;
        mode_cylic < 6;

    };



endclass 

我有一个测试类 ABC 的测试对象,我只想随机化该对象中的 mode 变量.我该怎么做?

I have a test object of the test class ABC, and I want to randomize only the mode variable in that object. How can I do that?

推荐答案

一种方法是对不想随机化的变量禁用随机化:

One way is to disable randomization for the variable you don't want to randomize:

class ABC;
    rand bit[2 : 0] mode; 
    randc bit[2 : 0] mode_cylic;

    constraint range{
        mode >= 2;
        mode < 6;
    }

    constraint range_cylic{
        mode_cylic >= 2;
        mode_cylic < 6;
    }
endclass

module tb;
    ABC abc = new();
    bit result;
    initial begin
        abc.range_cylic.constraint_mode(0);
        abc.mode_cylic.rand_mode(0);
        repeat (10) begin
            result = abc.randomize();
            $display("mode=%0d mode_cylic=%0d", abc.mode, abc.mode_cylic);
        end
    end
endmodule

请参阅 IEEE Std 1800-2017,第 18.8 节使用 rand_mode() 禁用随机变量.

Refer to IEEE Std 1800-2017, section 18.8 Disabling random variables with rand_mode().

这是我得到的输出:

mode=2 mode_cylic=0
mode=2 mode_cylic=0
mode=2 mode_cylic=0
mode=4 mode_cylic=0
mode=4 mode_cylic=0
mode=2 mode_cylic=0
mode=4 mode_cylic=0
mode=3 mode_cylic=0
mode=5 mode_cylic=0
mode=4 mode_cylic=0


或者,如果您希望 mode_cylicrange_cylic 范围内具有特定值,请使用 with:


Or, if you want mode_cylic to have a specific value within the range_cylic range, use with:

initial begin
    repeat (10) begin
        result = abc.randomize() with { mode_cylic == 5; };
        $display("mode=%0d mode_cylic=%0d", abc.mode, abc.mode_cylic);
    end
end

这是我得到的输出:

mode=2 mode_cylic=5
mode=2 mode_cylic=5
mode=2 mode_cylic=5
mode=4 mode_cylic=5
mode=4 mode_cylic=5
mode=2 mode_cylic=5
mode=4 mode_cylic=5
mode=3 mode_cylic=5
mode=5 mode_cylic=5
mode=4 mode_cylic=5

这篇关于如何只随机化一个类中的 1 个变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆