首页 > 其他分享 >第18篇 :深入剖析systemverilog中 randomize 失败之烧脑案例(三)

第18篇 :深入剖析systemverilog中 randomize 失败之烧脑案例(三)

时间:2024-11-12 12:48:22浏览次数:3  
标签:obj1 src temp 烧脑 int 18 uvm randomize

在工作实践中,验证环境往往十分复杂,约束条件根据实际测试场景,也是层出不穷,到处都是。可能会遇到各种各样,奇奇怪怪的问题。 针对systemverilog 中的randomize() 随机约束问题,前面总结了一些规则,这些规则,语法书并不会讲的很透彻,全面覆盖到。只有我们在实际工作中,反复捶打,不断尝试,多想一些可能性,才能防止掉进更多的陷阱。

今天,分享一则苦恼数天的案例,脑细胞死伤无数。我们还是使用之前的程序源代码,我们稍加修改。        

我们对原始的print() 稍加修改,使其接收输入参数,a,b,c。输入参数,会影响函数内部 约束条件。具体如下源代码:

`timescale 1ns/1ps 
`include "uvm_macros.svh"
import uvm_pkg::*;
 
class my_obj1 extends uvm_test;
 
  `uvm_component_utils(my_obj1)
   
   rand int  src=4;
   constraint src_c {
     src inside {[1:9]};
   }
 
  function new(string name = "my_obj1" , uvm_component parent = null );
    super.new(name, parent);
  endfunction // new
 
  extern virtual function print (int a, int b, int c);

  virtual task run_phase(uvm_phase phase);
     super.run_phase(phase);
  endtask 
 
endclass //
 
function my_obj1::print(int a, int b , int c);
    randomize (src)   with {(src) inside {[a+b-c:6]};} ;  // 新增代码,意图重新约束src变量
    `uvm_info(get_type_name(),$psprintf("%0h,%0h,%0h",src),UVM_LOW)
endfunction

 
module tb();
  
import uvm_pkg::*;
`include "uvm_macros.svh"
 
  initial begin
    run_test("my_obj1");
  end
 
endmodule // tb

假如,我们对输入参数赋值: a = 3, b = 5, c=2。

按照理解:

randomize (src)   with {(src) inside {[a+b-c:6]};} ; 

等价于

randomize (src)   with {(src) inside {[6:6]};} ; 

那么实际随机化后的结果,将必定是数值6.

但是发现,实际结果可能是属于 [0+5-2:6] , 也就是{【3:6】}。

经过反复尝试,时钟得到如上结果。

通过添加 VCS 随机约束debug 选项:+ntb_enable_checker_trace=1  +ntb_enable_solver_trace=1 +ntb_enable_checker_trace_on_failure=3  +ntb_enable_solver_trace_on_failure=3

发现; a = 0, b = 5, c=2.  也就是说,a 没有取得相应的数值3. 这里可能求解器哪里出了问题。 我们怎么解决这个问题呢?

我们可以修改如下:

function my_obj1::print(int a, int b , int c);

    int temp_a; 

    int temp_b;

    int temp_c;

    temp_a = a;

    temp_b = b;

    temp_c = c;
    randomize (src)   with {(src) inside {[tem_a+temp_b-temp_c:6]};} ;  // 新增代码,意图重新约束src变量

    `uvm_info(get_type_name(),$psprintf("%0h,%0h,%0h",src),UVM_LOW)
endfunction

遇到此问题,希望对大家有用。 

标签:obj1,src,temp,烧脑,int,18,uvm,randomize
From: https://blog.csdn.net/qq_16423857/article/details/143704748

相关文章

  • 硬件基础18 单稳态触发器、施密特触发器
    目录一、单稳态触发器1、参数计算2、应用场景(1)、定时(2)、延时(3)、噪声滤波二、施密特触发器1、门电路施密特触发器(1)、原理与波形(2)、参数计算2、集成施密特触发器3、应用场景(1)、波形变换(2)、整形抗干扰(3)、幅度鉴别一、单稳态触发器        前面介绍的触......
  • 国标GB28181设备管理软件LiteGBS国标GB28181公网平台视频监控与监控汇聚的卓越方案
    LiteGBS国标GB28181软件是一个拓展性强、视频功能丰富且易于部署的平台,支持国标GB28181协议。该平台可灵活扩展视频能力,并支持RTMP、RTSP等多种视频流外部分发格式。平台能够接入遵循标准协议的摄像头,提供设备管理、视频存储、监控回放等一体化视频安防解决方案,实现实时监控管理,......
  • 国标GB28181软件LiteGBS国标GB28181公网直播动态IP的网络摄像头如何接入
    在功能方面,与一些传统的视频监控软件相比,LiteGBS国标GB28181软件支持的功能更加丰富多样。它不仅具备基本的视频监控直播、录像检索与回看功能,还拥有云台控制、语音对讲、告警上报、平台级联等高级功能。在社会资源接入项目中,有较多的单位不具备固定外网IP入网的条件。尤其像民办......
  • 国标GB28181视频平台LiteGBS国标GB28181软件是否支持H.265设备接入
    H.265,也称为高效视频编码(HEVC),相较于H.264提供了更高的压缩效率和视频质量,这对于视频监控系统来说尤为重要。但按照GB28181/2016版的协议规范,压缩视频编码是不支持H.265的,只支持H.264。GB/T28181-2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》规定如下:媒体压......
  • 国标GB28181软件LiteGBS国标GB28181公网平台PTZ云台控制的关键因素
    在探讨LiteGBS国标GB28181公网平台中PTZ云台控制的关键因素时,我们必须首先理解PTZ云台控制的核心要素。PTZ,即Pan(水平旋转)、Tilt(俯仰)和Zoom(缩放),是视频监控系统中用于远程调整摄像机方向、位置和焦距的关键技术。这种控制方式使得摄像机能够灵活地转动和聚焦,满足多样化的监控需求。......
  • 【软考】系统架构设计师-2018年下半年下午案例真题及答案
    全国计算机技术与软件专业技术资格(水平)考试高级系统架构设计师2018年下半年下午试卷 案例试题一 【说明】某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设水平。该软件公司组织项......
  • 【软考】系统架构设计师-2018年下半年下午论文真题及答案
    全国计算机技术与软件专业技术资格(水平)考试高级系统架构设计师2018年下半年下午试卷 论文试题一 论软件开发过程 RUP 及其应用RUP(RationalUnifiedProcess)是 IBM 公司一款软件开发过程产品,它提出了一整套以UML 为基础的开发准则,用以指导软件开发人员以 U......
  • 洛谷P1618
    P1618三连击(升级版)-洛谷|计算机科学教育新生态三连击(升级版)题目描述将1,2,...9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出`No!!!`。//感谢黄小U饮品完善题意输入格式三个数,A,B,C。输出格式......
  • NOIP2024模拟赛#18 总结
    头要炸了。T1题面很好懂,手玩了一下发现答案最小是\((m-1)\timesn\)。可能会多出来一个长度为\(k\)的部分,会发现如果多出来一个长度为\(k\)的部分且合法,那么单个串\(1\simk\)位与\(n-k+1\simn\)位一定相同,\(k+1\simn\)位与\(1\simn-k\)一定相同。Hash判一下即......
  • 题解:P11262 [COTS 2018] 题日 Zapatak
    https://www.luogu.com.cn/article/i7ajvm8e哈希好题。题意给定一个序列,每次询问给定两个长度相等的区间,问这两个区间是否只有一个数不一样。思路发现我们要求的信息只与数的出现次数有关,自然想到桶。那么如果有两个区间合法,那这两个区间的桶只有两个位置不同且桶内的值均相......