Verilog 为什么使用分层测试台而不是简单的一个程序块?

Verilog 为什么使用分层测试台而不是简单的一个程序块?,verilog,system-verilog,verification,uvm,Verilog,System Verilog,Verification,Uvm,当我们可以在一个简单的程序块中编写所有功能时,用于验证的分层测试台的基本目的是什么。我知道可重用性是一个目的,但除此之外,它还有什么独特之处。这取决于您的设计有多大。如果您的设计非常小,一个程序块可能可以正常工作。(顺便说一句,我强烈反对使用程序块,而是使用顶层模块。在big 3 EDA的模拟器中,使用程序块进行线程调度存在已知问题) 然而,如果你认为设计是巨大的,你必须通过分而治之的方式来测试它,那么你必须在与分工相匹配的层中构建你的测试台。如果您不分层测试台,您将无法在系统级环境中重用块级代

当我们可以在一个简单的程序块中编写所有功能时,用于验证的分层测试台的基本目的是什么。我知道可重用性是一个目的,但除此之外,它还有什么独特之处。

这取决于您的设计有多大。如果您的设计非常小,一个程序块可能可以正常工作。(顺便说一句,我强烈反对使用程序块,而是使用顶层模块。在big 3 EDA的模拟器中,使用程序块进行线程调度存在已知问题)


然而,如果你认为设计是巨大的,你必须通过分而治之的方式来测试它,那么你必须在与分工相匹配的层中构建你的测试台。如果您不分层测试台,您将无法在系统级环境中重用块级代码。

我很难想象有人如何用一个简单的程序块完全测试一个简单的4级流水线16位CPU或一个简单的4端口路由器?即使有几个简单的测试,在测试之间复制代码也不会太久。将重复代码放入公共库(或包含文件)实际上是基本分层测试台的开始。但如果我不这样做,任何协议/设计变更都将是一件令人头痛的事。我如何将模块级TB检查器移植到顶级芯片TB?