首页 > 其他分享 >Implication(->) and If-Else constraint

Implication(->) and If-Else constraint

时间:2022-08-20 22:01:19浏览次数:63  
标签:short garbage burst constraint Else mode Implication data d1

可以使用蕴含运算符 (->) 和 if-else 构造进一步限制随机化。它们都表示两个变量之间的条件关系。隐含运算符用于声明隐含约束的表达式。例如:

constraint dataC { (data == 'hff) -> (addr == 0); }

相当于:

if (data == 'hff)  addr = 0;

看一个例子:

class dataP;
  rand bit [7:0] data;
  string    burst_mode ;
  constraint burst1 { (burst_mode == "short") -> (data < 16);}
                                             //implication
  constraint burstIf { if (burst_mode == "long") data > 16;
                  else if (burst_mode == "garbage") data == 0;}
endclass
module top;
  initial begin
    dataP d1;
    d1 = new();
    d1.burst_mode = "short";
    repeat(4) begin
      d1.randomize();
      $display("\t Short burst_mode = %s data = %0d",d1.burst_mode,d1.data);
    end
    $display("\n");
    d1.burst_mode = "long";
    repeat(4) begin
      d1.randomize();
      $display("\t Long burst_mode = %s data = %0d",d1.burst_mode,d1.data);
    end
    $display("\n");
    d1.burst_mode = "garbage";
    repeat(4) begin
      d1.randomize();
      $display("\t garbage burst_mode = %s data = %0d",d1.burst_mode,d1.data);
    end
  end
endmodule

仿真结果:

ompiler version S-2021.09; Runtime version S-2021.09; Aug 20 09:46 2022
Short burst_mode = short data = 13
Short burst_mode = short data = 6
Short burst_mode = short data = 1
Short burst_mode = short data = 2


Long burst_mode = long data = 36
Long burst_mode = long data = 109
Long burst_mode = long data = 28
Long burst_mode = long data = 47


garbage burst_mode = garbage data = 0
garbage burst_mode = garbage data = 0
garbage burst_mode = garbage data = 0
garbage burst_mode = garbage data = 0
V C S S i m u l a t i o n R e p o r t

当burst_mode == “short”时,data应该小于16。在模块“top”中,我们为字符串burst_mode分配值“short”,得到的data值均小于16。类似地,在 if-else 条件下,如果 burst_mode == long,我们看到data值大于 16,如果 burst_mode == “garbage”,data值被限制为0。

 

标签:short,garbage,burst,constraint,Else,mode,Implication,data,d1
From: https://www.cnblogs.com/fuqiangblog/p/16608720.html

相关文章

  • Unique Constraint
    如果不希望组中的任何两个成员在随机化后具有相同的值,需要使用“unique”constraint。“unique”是一个关键词,使用“unique”将生成受约束的rand变量的唯一值。它不仅适......
  • 解决if else的链式调用问题
    问题​ 在我们的代码中经常会出现大量的ifelse的情况,有些场景会出现链式的ifelseif,还有的业务必须按照顺序来进行ifelse的顺序判断,这样的代码不美观不说而且可维护性......
  • 【java基础】分支结构if-else、switch-case
    1.if-elseinta=10;if(a==0){ System.out.println("a等于0");}elseif(a<0){ System.out.println("a小于0");}else{ System.out.println("a大于0");}(1)条件表达式......
  • Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExceptio
    多表查询时mysql语句报错Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Column'XX'inwhereclauseisambiguous原因多表查......
  • LaTeX algorithm2e if-elseif-else
    \uIf{if-condition}{  if-content\; } \uElseIf{elseif-condition}{  elseif-content} \Else{  else-content} 感谢 https://www.cnblogs.com/su......
  • switch 与if else 的区别和使用差别
    switch关键特性是 1key ===value 严格判断是否switch(key){casevalue:......
  • External Constraint Blocks
    您可以将类中的约束指定为“外部”约束。一旦将一个约束声明为“extern”,必须在一个外部约束块中提供它的定义,否则将会报错。请注意,“外部”约束和内部(隐式)约束都可以由......
  • constraint的on与off以及with约束
    modulecrv;classPCIBus;randbit[15:0]addr;randbit[31:0]data;constraintaddrw{addr[7:0]=='h01;}constraintdataw{data[15:0]=='h......
  • Constraint
    1moduletop;2classPacketBase;3randbit[7:0]src;4randbit[5:0]len;5randbit[7:0]payld[];6constraintpayload_size{payld.size......
  • 约束(constraint)
    约束(constraint):         1.数据完整性(DataIntegrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。           它是防止......