三种形式的if语句中在if后面都有“表达式” ,一般为逻辑表达式或关系表达式。系统对表达式的值进行判断,若为0,x,z,按“假”处理,若为1,按“真”处理,执行指定的语句。 第二、第三种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号。 在if和else后面可以包含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时
class Transaction; rand int data; rand bit [1:0] state; // 定义条件约束 constraint c_data { if (state == 2'b00) { data inside {[0:10]}; // 如果state为00,则data在0到10之间 } else if (state == 2'b01) { data inside {[11:20]}; // 如果state为01,则data在11到20之间 }...
(data_flag>2) -> data inside {[1:3]}; (data_flag<=2) -> data inside {[4:6]}; } if else 条件判定,只有在data_flag大于2时,data从1、2、3中取值,在data_flag小于等于2时,data从4、5、6中取值. rand byte data; constraint data_cons{if(data_flag>2) data inside {[1:3]};elsedat...
if(start) next_state <= S1;//状态转移 else next_state <= S0; end S1:begin if(s1_over == 1'b1) next_state <= S2; else next_state <= S1; end S2:begin if(s2_over) next_state <= S1;//状态转移 else next_state <= S2; end S3:begin if(s3_over) next_state <= S0;//状态...
SystemVerilog gives us two constructs to declare conditional relations - implication and if else. The following code snippet shows both styles // Implication operator "->" tells that len should be // greater than 10 when mode is equal to 2 constraint
但往往随机化并非完全的随机化,很多时候需要有一定的限制,所以还需要使用constraint语句 构造约束条件。 其中约束有很多种: (1)表达式约束: constraint word_align {addr[1:0] == 2’b0; data < 32 } (2)条件约束: class MyBus extends Bus; rand AddrType atype; ...
一个类可以包含多个约束块。在运行期间,可以使用内建constraint_mode()函数打开或关闭约束。 有效性约束 设置多个约束以保证随机激励的正确性是一种很好的随机化技术,也称为“有效性约束”。 要遵循协议规则。 内嵌约束 SV允许使用randomize()with来增加额外的约束 ...
与randomize对应的是constraint。constraint是SystemVerilog中非常有特色也是非常有用的一个功能。在不加任何约束的情况下,上述animal中的data经过随机化后,其值为0~’h3F中的任一值。可以定义一个constraint对其值进行约束: class animal;rand bit[5:0] data;constraint data_cons{data > 10;data < 30;}endclass...
typedef virtual pkt_if.drv vdrv; typedef virtual pkt_if.mon vmon; 之前我习惯在interface之后直接声明一下virtual interface,virtual interface是为了解决环境中灵活调用而产生的语法,当然这个地方不声明也无所谓用法很灵活,可以先按着这个来写后面慢慢自己改进。
constraint c_xy{ x==0 -> y==0; solve x before y; } //先求解x再求解y • randomize () with t.randomize () with {addr >= 50 ;} ; • pre_randomize 和 post_randomize 分别在randomize之前和之后自动执行• 随机数函数 $random() //平均分布,返回32位有符号随机数 ...