我想测试具有以下端口的接收器:
上图中箭头的详细信息:
控制/状态寄存器:
数据:
BRAM:我认为这在这里并不重要,因为无论如何我都必须为此创建一个代理
控制流程看起来像这样:
我应该如何实施代理? UVM 建议为控制/状态和数据设置一个代理,这让我有些头痛:
来自UVM环境文档:
是否可以将控制/状态和数据合并到一个代理中?会有什么缺点?一个代理可以(应该?)包含多个驱动程序吗?
从提供的信息来看,您似乎有 3 个不同的接口(信号组)连接到 DUT:
这意味着您将拥有 3 个不同的 SystemVerilog
interface
,从而导致 3 个不同的 uvm_agent
。
对于控制/状态寄存器代理,请考虑使用 16 个代理的阵列(每个 32 位分组一个)。
创建测试时,您可能需要协调在不同代理上运行的序列。虚拟排序器是标准 UVM 实践,可能适合您的情况。很难说在这种情况下是否太过分了。请记住,设计验证并非微不足道。
一个代理可以(应该?)包含多个驱动程序吗?
不,一个
uvm_agent
最多应包含一个 uvm_driver
。