zoukankan      html  css  js  c++  java
  • SV-随机化问题(大疆2019笔试)

    1、原题

    2、代码

    class class_a;
            rand bit signed [7:0] a[4];
            bit [1:0] mode;
    
            function new(bit [1:0] mode);   // 注意分号结尾
                mode = mode;
            endfunction
    
            constraint reasonable_a{    // 注意约束中用{}而不是begin end
                    foreach(a[i]) {
                            a[i]>$signed(8'hEF);   // 系统函数的使用
                            a[i]<$signed(8'h11);
                    }
                    
            }
            constraint valid_a{
                if(mode==2'b00){
                    a.sum() == 64;   // 如果a元素位宽为6bit,其和范围则为-32-31,
                                                     // 所有要想和能到64,位宽至少8bit
                                                     // 注意用==而不是=
                }
                else{
                        a[2]>a[0];
                        a[2]>a[1];
                        a[2]>a[3];
                }
    
            }
    endclass
    
    program test;
            initial begin   // 注意放在begin……end块
                    class_a ca;
                    ca = new(2'b00);
                    assert(ca.randomize())
                    $display("a[0]=%d,a[1]=%d,a[2]=%d,a[3]=%d,mode=%d",
                            ca.a[0],ca.a[1],ca.a[2],ca.a[3],
                            ca.mode);
            end
    
    endprogram

    3、输出

    a[0]=  16,a[1]=  16,a[2]=  16,a[3]=  16,mode=0
  • 相关阅读:
    Python基础知识
    Oracle 总结
    Linux基本命令
    测试理论
    计算机基础
    http常见的状态码,400,401,403状态码分别代表什么?
    html
    day21 包
    day20 模块引入的一些说明
    我又回来了???
  • 原文地址:https://www.cnblogs.com/wt-seu/p/12398033.html
Copyright © 2011-2022 走看看