浅谈参考模型的设计

大纲
1.参考模型的含义和相关概念。
2.参考模型应该有时间表吗?
3.几个参考模型设计的例子。
IC验证工程师双手,一只抓住规格特性SPEC,另一只抓住SVUVMTestBench。TestBench的重要组成部分是参考模型。
参考模型,英文为referencemodel,简称RM。IC验证工程师通常使用比硬件描述语言Verilog/VHDL更抽象的语言,如SystemVerilog或MATLAB,以便在模块级验证(BT)或单元验证(UT)中理解自己的业务和规格特征。这就是参考模型。
参考模型是逻辑模块功能的等效。用于与逻辑模块进行比较,以证明逻辑设计的正确性。逻辑模块的功能特征不需要集成电路验证工程师来开发,也可以集成第三方设计。例如,当验证某些算法逻辑时,使用的参考模型是由算法工程师开发的模型。然而,这种参考模型不能由逻辑设计工程师自己开发。


为什么会这样?
鲁迅先生说,这个世界上没有路,走的人多了就有路。其实这个世界上没有IC验证工程师。逻辑电路写好后,IC设计工程师可以随意给逻辑输入一些测试激励,看看输出时序是否符合要求。后来,集成电路发展起来,复杂度提高了。不仅仅是通过简单的灌输测试激励来保证逻辑的正确性,还需要专门的人来验证逻辑电路的正确性。开发逻辑电路与开发软件最大的区别在于,一旦电路开发完成,芯片就不能改变。所以一定要保证验证的充分性和完整性。人的思维往往有一定的局限性,在复杂的设计中,往往有一些隐藏的角落,考虑不完整,难以覆盖。面对这样复杂的设计,如果两个人分别从独立的角度思考,犯同一个错误的概率也会大大降低。所以IC验证工程师很难覆盖。
我在想。能够独立思考而不受IC设计工程师的诱惑和束缚,是IC验证工程师存在的最大价值和意义。
为什么要使用参考模型?参考模型有什么意义?
从辩证法的角度来看,这是另一个抽象具体的例子。当我们描述一件事情时,抽象可以保证正确性,具体可以保证准确性。越抽象越正确,越具体越准确。比如夸一个人的时候,我们说:她是个好姑娘。一个好字足够抽象,绝对正确。又说:她是一个善良可爱的好女孩。比较抽象,但不具体。大多数人会认为她在夸她,但也可能被误解为长得丑。这种夸奖不够生动具体,怎么善良,有多可爱,没有表达清楚。又说:她是一个视金钱如粪土,为朋友插刀的好女孩。这种描述非常具体,描述这个女孩的好非常准确生动。但是抽象很弱,很难保证正确性。这个女孩挺好的,但为什么不像女孩?
举例来说,这篇文章对参考模型进行了阐述。假如我有足够的记忆力,直接把我写的参考模型的代码贴在这里,简单直接,非常具体。但是我的代码是否足以代表参考模型设计的意义呢?很明显,没有。
逻辑电路是规格特性的具体准确实现,准确是第一位的。参考模型是为了验证逻辑电路而设计的,规格特性的正确模拟是第一位的。因此,在写参考模型时,必须考虑增加抽象性,降低其具体性。抽象性越高,其正确性越能保证。
举例来说。在基带芯片验证过程中。各个算法逻辑模块的参考模型的实现有两种选择。IC验证工程师根据算法的理解和规格文件,用SV语言开发,或者用算法工程师写的MATLAB模型。这两种方法都比RTL设计,抽象性高,准确性高。与MATLAB相比,SV抽象性略低,所以准确性略低,但准确性更高。项目组没有死亡,可以灵活选择。但俗话说,孩子选择,大人都要。最好在BT/UT中实现两种方式,与RTL进行三方比较。三个人错在一起的概率会更小。对于调制解调子系统的正确性,只能通过抽象MATLAB模型来保证。
就抽象与具体的关系而言,参考模型这加时序,是不好的。引入时序,把抽象的事物级描述,变成更具体的时序级表达。精确度提高了,但是精确度会降低。因此,带时序的参考模型不够鲁棒,调试不好,不容易适应RTL的变化。
下图显示了事物级与时序级的关系。事物级是时序级的抽象,时序级是事物级的具体实现。
本想对之前写过的参考模型进行梳理分类,逐一列出。这样,一是繁琐冗余,难以列出,二是过于具体,容易出错。将参考模型抽象为以下流程图,如图3所示。
参考模型的功能总结如下:
第一,参考模型是一个死循环,不止一个。如果没有业务报告或命令到达,等待。如果有,分析处理。完成后,继续等待新的命令或报告。
参考模型处理的是事务级报文,无时序,无延迟。由接到命令或报文,到完成处理,耗时为0。
参考模型的输入和输出都是TLM端口,通常从UVMcomponent中扩展出来。
参考模型处理完成报文或命令后,所用变量或缓存队列、数组等均应清除。

相关推荐
军事沙盘是一种比较常见的沙盘,在市场上的应用比较普遍。在科技...
2019-11-08
建筑模型设计的时候有很多不同类型的建筑模型,不同的建筑模型特...
2020-03-12
很多有沙盘制作需求的客户总是纠结,该选择数字沙盘还是传统沙盘...
2020-03-12