Systemverilog::随机指定范围方法


前言

Systemverilog 随机到指定范围的几种方法

1. constrain + rand

constraint : 权重分布
:= 数值范围内每一个值的权重十相等的
:/ 权重要均分到数值范围内的每一个值

// 简单约束
rand int in src, dst;
constraint c_in{
	in>16;
	in<20;
}
// 权重约束
constraint c_dist{
	src dist{0:=40,[1:3]:=60};
// src = 0: weight = 40/220
// src = 1: weight = 60/220
// src = 2: weight = 60/220
......
// inside 约束
rand bit[6:0] b;
constrain b_range{
	b inside{[$:4],[20:$]}; // 0<=b<=4 || 20<=b<=127
}

2. randomize方法

real clk_sysy_div_val;
real clk_aux_div_val;
assert(std::randomize(clk_sys_div_val) with {clk_sys_div_val inside {0, 1, 2, 4, 8, 16};}); 
assert(std::randomize(clk_aux_div_val) with {clk_aux_div_val inside {25, 50, 100};});  

3.randcase 方法

logic[31:0] cfg1;
delay_ns(1000);
randcase
10:begin //PLL_CLK 1000 MHZ
	cfg1[5:0]  = 6'h0; //p
end
10:begin //PLL_CLK 1050 MHZ
    cfg0[14:5]  = 10'h98 ; //mint
end    
 endcase
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值