covergroup如何访问dut层次信号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了covergroup如何访问dut层次信号相关的知识,希望对你有一定的参考价值。

总的来看,获取DUT内部状态分为前门和后门两种方式。

前门读写
前门读写:使用总线对DUT发起真实的读写,一般需要总线VIP支持,仅针对DUT内部可访问的地址空间,如配置和上报寄存器、memory。

这种方式好处在于能够和芯片真实的工作场景保持高度相似,能够发现时序配合上的一些问题。

缺点一方面也是前门的“真实性”,当需要读写的地址空间数量很大时,会消耗非常多的仿真时间,影响用例的执行效率。

另一方面是这种耗时的读写不满足“实时性”比对的验证要求。某些验证环境中,可能需要在几个cycle内完成对DUT状态的获取和比对,这种场景下前门读取方式则无法满足。

后门读写
后门读写:绕过前门总线,直接通过DUT内信号的hierarchy路径强制force或者读取信号值。

后门操作的方式可以分为:按信号的Hierarchy读取、interface连接DUT信号、和VPI访问。

1. 信号的Hierarchy读取

DUT经过编译后,内部的信号都有对应的hierarchy路径,如dut.a.b.c,dut.out。在验证环境中可以直接使用,例如:

bit A;
A=dut.sub_block.A;
if(A==0) begin
.....
end
此种方式的缺点是会直接在环境中出现各种繁杂的hierarchy路径,当dut的层次变化时,环境也需要做适配,如此不利于环境管理。

另外最重要的特点在于:使用hierarchy不能出现在package中。

package的定义和使用是systemverilog的一大特色,可以进行组件结构化设计,package之间互不影响,如UVM的env、agent、driver等组件,一般都会封装在一个package内。

2. interface连接

对上述方式改进后,可以使用interface作为DUT和验证环境的中间代理。在testbench的顶层完成DUT和interface的连接,并将interface传递到验证环境中。virtual interface可以出现package、class内,验证环境内使用interface中的信号,尽可能减少DUT改动对验证环境内部的影响。

3. VPI访问

systemverilog支持VPI接口,DUT经过编译后,可以通过VPI接口访问DUT内部信号,把信号的hierarchy换成字符串即可。经过UVM封装后,可以直接使用uvm_hdl_force/read等接口。
参考技术A DUT经过编译后,内部的信号都有对应的hierarchy路径,如dut.a.b.c,dut.out。在验证环境中可以直接使用,例如:

bit A;
A=dut.sub_block.A;
if(A==0) begin
.....
end
此种方式的缺点是会直接在环境中出现各种繁杂的hierarchy路径,当dut的层次变化时,环境也需要做适配,如此不利于环境管理。

另外最重要的特点在于:使用hierarchy不能出现在package中。

package的定义和使用是systemverilog的一大特色,可以进行组件结构化设计,package之间互不影响,如UVM的env、agent、driver等组件,一般都会封装在一个package内。

2. interface连接

对上述方式改进后,可以使用interface作为DUT和验证环境的中间代理。在testbench的顶层完成DUT和interface的连接,并将interface传递到验证环境中。virtual interface可以出现package、class内,验证环境内使用interface中的信号,尽可能减少DUT改动对验证环境内部的影响。

3. VPI访问

systemverilog支持VPI接口,DUT经过编译后,可以通过VPI接口访问DUT内部信号,把信号的hierarchy换成字符串即可。经过UVM封装后,可以直接使用uvm_hdl_force/read等接口。

bit A;
bit[15:0] B
if(uvm_hdl_read("dut.sub_block.A",A)) begin
.....
end
//bit[31:0] Y
uvm_hdl_read("dut.X.Y[15:0]",B) //错误!
使用VPI访问缺点:不能按位域驱动和读取。对于多bit信号,无法只对其中的部分bit操作。

一般而言对于黑盒验证中的加密代码,使用Hierarchy和VPI方式都是无法获取加密代码内部信号的状态。当然如果在已知加密代码层次前提下,通过一些处理,还是可以通过Hierarchy方式进行后门操作。
参考技术B 设置里面的访问记录,可以访问设置dut显示信号

如何在 android 设备中访问第二个麦克风信号?

【中文标题】如何在 android 设备中访问第二个麦克风信号?【英文标题】:How can I access second microphone signal in android device? 【发布时间】:2013-01-24 19:03:04 【问题描述】:

如何在安卓设备中获取第二个麦克风信号?

我正在尝试制作双通道降噪应用,但我不知道如何访问第二个麦克风信号。

我使用具有 2 个麦克风(底部和顶部)的 Galaxy S2,当我使用 AudioRecord 方法时 底部麦克风信号是我唯一可以访问的。

我会很感激任何回应~

谢谢你,尤娜

【问题讨论】:

据我所知,SDK 仅允许您通过 AudioRecord 访问降噪后的数据。您可能需要深入了解本机方法才能访问原始数据,并且它可能取决于设备。 【参考方案1】:

我不熟悉 Galaxy S2,但在我使用过的设备上,通常可以通过从 CAMCORDER AudioSource 进行单声道录音来获得辅助麦克风。立体声录音将使用两个麦克风。 不过,这些设备中的大多数都有底部/背面麦克风放置,而不是底部/顶部。

此外,正如 Edison 所评论的,您在录制时获得的数据通常已经通过了噪声抑制器,无论您使用什么 AudioSource。我从来没有遇到过可以从两个内置麦克风获得原始、未经过滤的立体声信号的 Android 设备(这并不是说不存在这样的设备)。

【讨论】:

感谢您的回复 :) 这取决于您的设备。我的回答是基于我自己使用的具有两个麦克风的设备。

以上是关于covergroup如何访问dut层次信号的主要内容,如果未能解决你的问题,请参考以下文章

如何在插件中访问 Maven 的依赖层次结构

冯诺依曼结构原理及层次分析

C# - 如何访问 WLAN 信号强度和其他?

如何在 android 设备中访问第二个麦克风信号?

当事先不知道层次结构中的键位置时,如何访问嵌套的 Python 字典键值对?

如何创建类型化工厂方法构造函数的类层次结构并使用抽象类型从 Scala 访问它们?