从测试台访问 uvm_config_db 的最佳方式?

2024-01-26

我想在我的顶级测试平台中创建一个时钟,其周期可以通过测试进行控制。我所做的是将周期设置到 uvm_config_db 中并将其返回到测试台中。我必须输入 #1 以确保构建阶段已完成,否则 get 返回错误值:

module testbench_top;
  int clk_period;

  bit clk = 0;

  initial begin
    #1;    
    void'(uvm_config_db #(int) ::get(null, "uvm_test_top.env", "clk_period", clk_period));
    // Create clk
    forever begin
      #(clk_period/2) clk = !clk;
    end
  end

我对#1感到恼火。有没有更好的方法来检查配置是否已设置?我可以以某种方式阻塞直到start_of_simulation_phase吗?


我发现它埋在类参考中:您可以使用以下命令访问每个阶段的全局单例版本<phase name>_ph。然后我可以使用wait_for_state函数阻塞直到模拟阶段开始。模拟了一下,似乎有效:

module testbench_top;
  int clk_period;

  bit clk = 0;

  initial begin
    start_of_simulation_ph.wait_for_state(UVM_PHASE_STARTED);    
    if(!uvm_config_db #(int) ::get(null, "uvm_test_top.env", "clk_period", clk_period))
      `uvm_fatal("CONFIG", "clk_period not set");
    // Create clk
    forever begin
      #(clk_period/2) clk = !clk;
    end
  end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从测试台访问 uvm_config_db 的最佳方式? 的相关文章

  • 在 SystemVerilog 中 fork join_none 后仅等待一些线程完成

    在 SystemVerilog 中 我需要等待在 fork join none 结构内执行的一些线程完成 但是在另一个 fork join none 结构中还有另一个永远不会结束的进程 我的代码如下所示 fork process that
  • 「Verilog学习笔记」 Johnson Counter

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module JC counter input clk input rst n output reg 3 0
  • [Verilog] Verilog 基本格式和语法

    主页 元存储博客 全文 3000 字 文章目录 1 声明格式 1 1 模块声明 1 2 输入输出声明 1 3 内部信号声明 1 4 内部逻辑声明
  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • 为什么这个 verilog 关系语句返回 true?

    我有一条名为 sin hall2 的 9 位签名线 该语句返回 true sin hall2 8 0 gt 9 d1 当我查看模拟时 sin hall2 169 我假设这是 verilog 处理比较负数的方式 但我做错了什么 当我执行 si
  • 将枚举转换为逻辑

    考虑以下模块声明 module DFF d q CLK RESET parameter W 2 input W 1 0 d input CLK input RESET output logic W 1 0 q endmodule 当 d 和
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • 如何使用 don't cares 参数化 case 语句?

    我有一条称为输入的电线 我想检测前导的数量 我正在尝试创建一个模块 该模块使用下面的 case 语句根据前导零的数量更改输出数据 然而 输入的大小是可参数化的 如果 X 是固定值 4 我将创建一个 case 语句 case input 4
  • verilog $readmemh 对于 50x50 像素 RGB 图像花费太多时间

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 如何在Verilog中将二维数组中的所有位设置为0?

    我构建了一个 8 2bits 数组来表示 Verilog 中的一块内存 reg 1 0 m 0 7 该存储器有一个复位信号 如果复位为1 则该存储器中的所有位都应重置为0 但是我不知道如何以简洁的方式设置m的所有位 因为如果有数百个内存中有
  • 在 Verilog 程序中使用连续分配?

    在 Verilog 程序中使用连续赋值是否可能和 或有用 例如 是否有任何理由将assign里面一个always堵塞 例如这段代码 always begin assign data in Data end 此外 是否可以用这种方法生成顺序逻
  • verilog 中的案例陈述

    我遇到了优先级编码器设计 并找到了一种使用 case 语句来实现它的新方法 唯一令人困惑的是 case语句是否优先考虑case 例子 case 1 b1 A 3 Y lt 4 b1000 A 2 Y lt 4 b0100 A 1 Y lt
  • reg 声明中的位顺序

    如果我需要使用 4 个 8 位数字 我会声明以下 reg reg 7 0 numbers 3 0 我对第一个和第二个声明 7 0 和 3 0 之间的区别感到很困惑 他们应该按什么顺序来 第一个是保留数字的大小 而第二个是保留数字的数量 还是
  • 使用正则表达式进行 Verilog 端口映射

    我有一个很长的端口映射 我想在其中替换一堆 SignalName i with SignalName SignalName i 我想我可以用正则表达式轻松地做到这一点 但我无法弄清楚如何做到这一点 有任何想法吗 假设 SignalData
  • 如何修复实例上的错误:未定义的变量 B?

    我想编译此 Verilog 代码 但在实例中出现错误B模块中的MultiP module error 1 Undefined variable B error 2 near Adder1 syntax error unexpected ID
  • 具有内部赋值延迟的阻塞和非阻塞语句之间的区别

    以下 2 个 verilog 代码片段有什么区别 1 always in out 5 in AND 2 always in out lt 5 in 考虑到always块中不存在其他行 输出会有什么不同吗 问题参考幻灯片 16 参见 o5 和
  • Verilog 双向握手示例

    我正在完成一个项目 要求是处理器内部功能单元之间的双向握手 我知道它是什么 但是有没有任何 标准 或一个简单的例子 我唯一能想到的就是两个单元之间 当它们之间有一条数据线并且当 X 发送到 Y 时 会给出一个单独的 发送 信号 当 Y 接收

随机推荐

  • Android Chrome 浏览器不必要地重命名下载文件的名称和类型

    我想我会重新发布这个 因为我有更详细的信息 问题 Android Chrome 浏览器在所有情况下都会将文件重命名为 下载 在某些情况下 它会将类型重命名为 bin 例如 如果扩展名是 MOV 正如我之前提到的 同一 Android 设备上
  • 在pyspark中合并两个RDD

    假设我有以下 RDD a sc parallelize 1 2 5 3 b sc parallelize a c d e 如何将这 2 个 RDD 合并为一个 RDD 如下所示 a 1 c 2 d 5 e 3 Using a union b
  • 重用的 React 元素会阻止组件更新

    Foo是一个只应该渲染一次的组件 这可以用于性能优化 尽管这纯粹是理论问题 不解决任何特定的编码问题 这可以通过使用来实现shouldComponentUpdate或纯组件 这是推荐的方法 const Foo gt p Math rando
  • dask 和 pandas 数据帧中 apply 的不兼容性

    的一个样本triggers我的专栏Dask数据框看起来像下面这样 0 Total Traffic DNS UDP 1 TCP RST 2 Total Traffic 3 IP Private 4 ICMP Name triggers dty
  • 运行时出错 01 46,响应:...UNABLETOCONNECT

    通过蓝牙成功从 OBD II 模拟器获取数据到 Android 应用程序 现在我正在尝试将数据从 ELM327 设备获取到 Android 应用程序 我的汽车上连接了一个 ELM327 设备 蓝牙连接是由于 ECU 连接失败并出现无法连接错
  • 我应该将 .vscode 文件夹提交到源代码管理吗?

    Is the vscode文件夹是否要提交给源代码管理 在新项目中 该文件夹是空的 除了settings json文件 这个文件夹里会放什么东西 它是特定于机器的 特定于开发人员的吗 vs文件夹 从而不被提交 或者所有开发人员都应该共享这个
  • 确定安装的是哪个版本的 SharePoint?

    确定安装的 SharePoint 版本的最可靠方法是什么 无论是WSS还是MOSS 如果是MOSS 不管是标准的还是企业的 我想以编程方式检测安装的确切 SharePoint 版本 PS 我已经发过了SharePoint SE 上的这个问题
  • Django 多个动态数据库

    我一直在评估 django 并想知道以下是否可能 我已经查看了常规的多个数据库文档 因此请不要向我指出这一点 因为据我所知 尚未提及此用例 如果我错了 我收回它 我想要一个主数据库 其中驻留我的应用程序的大部分模型 但是其中一个应用程序需要
  • 如何整合我的 Xcode 项目文件?

    当我开始开发我的第一个应用程序时 我假设将文件拖到 xcode 中会将它们放入我的项目的实际目录中 并非如此 显然 Xcode 在桌面上引用了它们 有没有一种简单的方法将所有引用的文件复制到项目目录中 我的桌面很乱 使用 Finder 将所
  • Symfony2 - 以编程方式设置记住我 cookie

    我通过新的 simple form 功能实现了自定义身份验证器 main pattern simple form authenticator custom authenticator provider fos userbundle csrf
  • 调试 ASP.NET 会话状态服务器问题

    我们有一个在负载平衡服务器实例上运行的应用程序 因此配置为使用 ASP NET 会话状态服务 该服务在我们的一台数据库服务器上运行 虽然我们应用程序的两个实例都可以成功连接到状态服务器 但会话状态数据的更改并未在它们之间反映出来 FI 如果
  • 为什么原型未定义

    我知道这个问题已经被问过数百次了 但是 我似乎无法理解这个概念prototype 这是我的示例脚本 var config writable true enumerable true configurable true var defineP
  • 更改 Shapefile 的投影

    我正在尝试更改或分配德国形状文件的投影NA to proj longlat datum WGS84 no defs ellps WGS84 towgs84 0 0 0 但不知何故效果不佳 可重现的示例 可以下载Shapefile和其他文件h
  • Cmake:基于变量内容的 add_custom_command 参数

    我想要一个 Cmake 函数来将一些二进制文件复制到特定位置 为此 我有以下函数定义 function collect binaries TARGET NAME DEST DIR set targetsToCopy ARGN set cop
  • 如何使用 Jasmine 模拟另一个模块中所需的模块

    const Client require src http client module exports handler gt const client new Client const locationId client getLocati
  • 用于测试分布式系统的集成测试框架?

    我有一个分布式系统 其组件分布在多个盒子中 他们使用 TCP 或多播相互通信 每个组件相互交换消息 这些基本上是序列化的数据结构 我们有哪些集成测试框架来测试此类系统 我熟悉红宝石 所以基于红宝石的东西肯定会有所帮助 我想有不同的方法可以做
  • 两个变量相减

    我正在使用 Jasper 报告设计我的报告 我有一份收入支出报告 其中我使用变量获得总收入TOT INCOME和使用第二个变量的总费用 TOT EXPENSES 我需要减去两个变量才能得到净利润 所以我创建了第三个变量TOT PROFIT
  • Cordova/Phonegap:WP8.1 导航栏重叠

    我的 cordova 应用程序是为 WP 8 0 Target 构建的 当在没有硬件按钮但有可切换导航栏的 WP8 1 设备上运行它时 HTML 内容会被导航栏重叠 隐藏导航栏时 导航栏的黑色背景将保留并仍然与 HTML 重叠 还可以滚动整
  • 如何在保存打印页面时为文件创建自定义文件名?

    在这里 我通过 window print 事件打印页面 在打印之前 我需要保存此页面 因为我需要在此事件中硬核文件名 a href img class noPrint src Images Print icon png border 0 a
  • 从测试台访问 uvm_config_db 的最佳方式?

    我想在我的顶级测试平台中创建一个时钟 其周期可以通过测试进行控制 我所做的是将周期设置到 uvm config db 中并将其返回到测试台中 我必须输入 1 以确保构建阶段已完成 否则 get 返回错误值 module testbench