参数化的IP设计是一种不断加速的工业趋势,同样的,在有着不同设计参数的SoC工程中使用同一个IP设计也是一种趋势。这些趋势大大推动了IC设计的发展。但与此同时,也需要一种验证方法来适应这种趋势。 一个参数化的IP就是指IP的参数是可以自由配置的,这就意味着在不同的SoC上,IP设计有着不同的参数。设计的参数可以是端口协议、端口数目、端口名和内部逻辑。不同的IP参数会影响验证环境的基础设施,这些基础设施包括验证平台(test bench)的连接、激励器(driver)、 监视器(monitor)、激励序列(stimulus sequence)和功能覆盖率(function coverage)。当去验证用不同参数配置的设计,是一项重要挑战。根据新的设计参数,去手动更新验证环境,是一项复杂的工作。这包括了改变test bench的连接、增加或减少driver、monitor和scoreboard的数目、更新配置对象、重写stimulus sequence、以及调整功能覆盖率和断言。这些都是非常麻烦的事情。 一个普遍使用的方法是使用宏去区分不同的设计参数。这样我们的项目将会有一些宏定义,但是这样当工程多起来的时候,test bench的debug和维护就变得相当复杂。 所了减以为少验证花费的力气,验证的环境一定是高可配置的,而且要易被复用。所以我们要推荐一篇文章——Highly Configurable UVM Environment for Parameterized IP Verification。这篇文章介绍一种参数化IP验证的高度可配置UVM环境。 在这篇文章里,用于举例的参数化的IP设计是一个AMBA(advanced microcontroller bus architecture)。这个微控制器总线结构连接了一组AXI、AHB、APB的主从结构。它的端口位宽、端口协议、端口数目、内部寄存器基址、计数器初值都会随设计参数不同而改变。 自适应的参数化IP验证环境结构 IP_PREPROCESS 这里的IP_PREPROCESS把所有的IP设计参数放到一个组里,在这些组经过预处理之后,一个可用于设计方法的参数化文件就生成了,同时一个可用于验证方法的全局的Ruby数组@@FEATURES也生成了。全局的Ruby数组@@FEATURES 储存了所有的IP设计参数,一旦IP参数改变,全局的Ruby序列也在VCS仿真器运行之前自动更新。 IP_TEST_BENCH IP_TEST_BENCH包括了一个IP模块UVC (UVM Component) 、一个feature Ruby程序、一个绑定Ruby程序的模块和一个断言Ruby程序。这三个Ruby程序在VCS仿真之前执行,自动捕捉IP设计参数。
IP_MODULE_UVC IP_MODULE_UVC是从包含了AMBA SVT VIP (verification IP) 、预测器(predictor)、记分板(scoreboard)、监测器(monitor)、IP模块UVC配置对象、基础的测试序列(basic sequence)和全局的虚拟序列发生器 (global virtual sequencer ) 的UVM环境延伸出来的。
自适应的参数化IP验证环境的复用 垂直复用 垂直复用是指从IP层次到SoC层次的复用。
水平复用 水平是指从一个工程项目到另一个工程项目的复用。 因为整个IP模块UVC都可以随参数IP设计参数自动适应调整,所以IP模块UVC可以直接被不同的项目复用。
所以,这种高可配置UVM环境是很有价值的。虽然在不同的工程项目里像设备的数目、内存、地址、数据总线以及端口名这些参数都是改变的,但是UVM验证环境确实对这些变化都是自适应的。Sequences 和 drivers 会自动给出适当的激励;UVC会根据设计新的设计参数自动创建正确的组件;predictor会根据新的设计参数调整功能;test bench 的连接也会自动增加或减少端口;功能覆盖率和断言也是会根据新的设计参数自动更新的。这样只需要极少的精力去更新验证环境,并且这种验证环境还是可垂直和水平复用的。 您可以在手机移动端同步关注订阅号“路科验证”。 如需转载请联系路科验证,并注明出处“路科验证”。 |
|
来自: 晓理晓章 > 《路科验证(转帖)》