前门访问:指的是通过模拟cpu在总线上发出读指令,进行读写操作。在 这个过程中,仿真时间($time函数得到的时间)是一直往前走的。有了寄存器模型后,可以在任何耗费时间的phase中使用寄存器模型以前门访问或后门(BACKDOOR)访问的方式来读取寄存器的值。
后门访问:从广义上来说,所有不通过DUT的总线而对DUT内部的寄存器或者存储器进行存取的操 作都是后门访问操作。不通过总线进行读写操作,而是直接通过层次化的引用来改变寄存器的值。所有后门访问操作都是不消耗仿真时间(即$time打印的时间)而只消耗运行时间的。
在验证平台中离不开寄存器的使用,通过寄存器来控制数据行为。那么在验证平台中如何将寄存器的值传递给参考模型和duv呢?和正常的数据item通过intf有什么区别?为什么多了个寄存器模型?
通常来说,DUT中会有一组控制端口,通过控制端口,可以配置DUT中的寄存器, DUT可以根据寄存器的值来改变其行为。这组控制端口就是寄存器配置总线。可以通过外挂agent产生的item通过intf传递给duv。总线协议规定了读写操作等,由上图可以好理解写入改变寄存器的值。也可以如in_agent将控制数据传递给intf。那么DUT中寄存器的值应该和refm控制数据的值是保持一致的,都是由外部bus_agent产生写入的。
假如DUT中某个寄存器会根据RTL内部代码行为,不同的状态下改变自己的值,即这个值不是外部agent产生同时写入refm和DUV的,那么refm如何获取DUT中寄存器的值?只能先通过使用bus_driver向总线上发送读指令,并给出要读的寄存器地址来查看一个寄存器的值。要实现这个过程,需要启动一个sequence,这个seq


2997

被折叠的 条评论
为什么被折叠?



