当前位置: 首页 > news >正文

前端学习 10-3 :验证中的SV

 1、 rand bit 

rand bit [2:0] val1;  声明了一个3位宽 ​的随机变量​ val0,其取值范围为 0到 7(因为 3'b111 = 7
bit 为2值结构,只可以表示0 和1.
rand​​ 关键字,表示 val0 是一个 ​​随机变量,在调用 randomize()方法时会自动赋随机值。

2、real 

real​:
SystemVerilog 中的 ​​双精度浮点数数据类型​​(类似 C 中的 double),用于表示带小数点的数值
real apb_exp;

3、realtime

realtime time_start, time_end, act_clk;
real error_ratio = 0.05;  // 允许的误差范围(5%)

realtime​:SystemVerilog 的高精度时间类型(类似 real,但专用于时间计算)。
error_ratio​:定义允许的频率误差(±5%)。

4、时钟周期计算

​时钟频率 (f) = 1 / 时钟周期 (T)​​ 

​​时钟频率 (f)​​:单位通常是 ​​赫兹 (Hz)​​,常用单位还有 kHz、MHz 或 GHz(1 GHz = 1000 MHz = 1,000,000 kHz = 1,000,000,000 Hz)。
​时钟周期 (T)​​:单位通常是 ​​秒 (s)​​,常用单位还有毫秒 (ms)、微秒 (μs) 或纳秒 (ns)(1 s = 1000 ms = 1,000,000 μs = 1,000,000,000 ns)。

计算示例:

假设某CPU的时钟周期为 ​​0.5纳秒 (0.5 ns)​​,求其时钟频率。

1.转换单位​​:1 ns = 10⁻⁹ s,所以 0.5 ns = 0.5 × 10⁻⁹ s = 5 × 10⁻¹⁰ s。
2.代入公式​​:f = 1 / T = 1 / (5 × 10⁻¹⁰) = 2 × 10⁹ Hz。
3.转换单位​​:2 × 10⁹ Hz = 2000,000,000 Hz = ​​2000 MHz​

f = 1/(a*10⁻⁹ ns) [Hz]= 1/(a*10⁻⁹ ns)/10^{6} [MHz] = 10^{3}/ a [MHz]

5、fork

fork是一个 ​​并行执行控制结构​​,用于启动多个并发线程(concurrent threads)。
语法:

fork 
begin ... end               // 线程1
begin ... end              // 线程2
// ...
join                                 // join_any / join_none

它通常与 joinjoin_any或 join_none结合使用,以控制线程的同步行为.

fork ... join(全等待)​​所有线程并行执行,主线程阻塞,直到 所有子线程完成。​

fork ... join_any(任一等待),主线程在任一子线程完成后继续,其余线程继续在后台运行。

fork ... join_none(不等待),主线程立即继续 ,所有子线程在后台并行执行。

disable fork;   ​​立即终止​​当前作用域内所有通过 fork启动的并发线程。它通常用于异常处理、超时控制或资源清理场景

6、force

在 ​​SystemVerilog(SV)​​ 中,force是一种 ​​强制赋值​​ 机制,用于在仿真过程中 ​临时覆盖​​ 信号或变量的值,无论其原始驱动源(如模块输出、寄存器赋值等)如何。它通常用于调试、错误注入或特定测试场景。

语法
force <信号或变量> = <值>;    // 强制赋值
release <信号或变量>;         // 释放强制,恢复原始驱动

7、 phase.phase_done

 phase.phase_done.set_drain_time(this, (100));

phase_done 是 ​UVM 相位(Phase)​ 的内置成员事件​,用于通知该相位的完成状态。

 set_drain_time 通常在phase 的启动或执行阶段​​中调用,设置当前 phase的 ​排水时间​​ 比如 100时间单位( ns)。表示在phase 正式结束后,UVM 会等待 drain time再进入下一个phase。​

作用:确保所有未完成的事务(如未响应的 DUT 操作)在相位切换前完成,可以避免资源竞争或数据丢失(如正在传输的数据包被截断)。

8、repeat

   begin
repeat(time_limit*500)      // 等待 time_limit*500 个时间,
env_cfg.tb_assist_vif.posedge_cpu_clk_root();
`uvm_fatal(get_type_name(), $sformatf("wait for c time-out!"));  // 收不到则报告 超时
end


http://www.dtcms.com/a/496040.html

相关文章:

  • Linux小课堂: 用户管理与权限控制机制详解
  • 四川网站seowordpress标题分隔符
  • 前端角度实现网站首页加载慢优化衡阳网站推广优化公司
  • 网站增加关键词正规网站开发需要哪些技术
  • 即墨做砍价小程序最好的网站系统开发
  • 数据库-联表查询
  • 德化网站建设新开的网页游戏大全
  • 仿网站建设平凉哪家做企业网站
  • 长沙岳麓区做网站湘潭做网站选择磐石网络
  • 简述网站设计规划的步骤响应式网站开发
  • CF2124B Minimise Sum 题解
  • 招标网站有哪些成长厉程网站
  • 购物网站哪个最便宜网站建设 统一质量标准
  • 多模态大模型OCR幻觉缓解思路:DianJin-OCR-R1通过“再看一眼”图像减轻幻觉
  • JJJ:SD 卡中的 OCR(Operating Conditions Register)寄存器
  • 手机网站图片切换网站设计师需要什么知识与技能
  • 20251017流程控制Demo
  • 浔川 AI 翻译 v7.0 公测版介绍(即将上线)
  • CPU性能对GPU服务器有影响吗?
  • 安徽省港航建设投资集团网站牛商网网站后台
  • 永磁体的磁导率
  • 亚马逊网站建设进度计划网站怎么做落款
  • h5模板网站西安到北京的高铁
  • wordpress建站两秒打开论坛模板建站
  • AI服务器工作之服务器的种类分类
  • 校园网站建设的目的中国建设机械教育协会网站
  • nextjs 接入 谷歌分析
  • asp.net core CVE-2025-55315漏洞验证修复
  • 建网站要多少费用加强信息管理 维护网站建设
  • 读书笔记:《2049未来10000天的可能》