永利皇宫官网网址

约束所在

上一篇 / 下一篇  2016-07-11 21:45:38 / 个人分类:验证杂谈

1 背景
  UVM的方法学激励需要施加有效约束,本文总结各种约束。

2原则
    原则1:在pkt(item)中的约束要考虑周全,要适当,不能过紧,排除不可能的情况,并明确variable的关系即可。
   原则2:其他约束放在sequnce中,每个sequence对应了一个case(pattern)

3. 具体原则2的约束总结
   第一:在sequnce,使用系统函数$urandom,$urandom_range;目的是产生一个随机数值(经过一些运算)并将给随机后的数值赋值给pkt的一个property.
   第二:在sequnce,控制pkt的rand_mode和constraint_mode,以精确控制约束和property的随机性。
   第三:在sequnce,使用in_line constrait(与pkt中的constraint格式一样);示例如下
    repeat(iem_count) 
          ·uvm_do_with(req, {if  (port_id == -1)  sa inside { [0:10]};  else sa == port_id; da inside valid_da;})

  第四:在sequnce,使用constraint; 实例如下:
      class my_seq extends uvm_sequnce #(pkt);
           `uvm_object_utils(my_seq)
           function new(string name = "my_seq");
              super.new(name);
           endfucntion

            rand bit[1:0]  seqadd;
           constraint  c1 { seqadd <= 2'b01;}
           task body();
               `uvm_do_with(req, {addr == seqadd;})
            endtask

      endclass
     第五: 在pre_randomize()和post_randomize()中放置合适的操作。



总之,变化的约束要放在sequnce中,不变的约束放在pkt中,UVM的其他地方不要放置约束,便于管理,维护,和debug.

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2019-01-15  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 97945
  • 日志数: 246
  • 建立时间: 2016-03-25
  • 更新时间: 2017-05-19

RSS订阅

Open Toolbar