在uvm中,前门访问(frontdoor)操作是通过寄存器配置总线(比如ahb,apb,i2c协议等)来对dut中的寄存器进行操作。
在任何总线协议中,前门访问的方式只有两种,即写操作和读操作。对于实际焊接在电路板上的工作的芯片来说,如果想访问其中的某些寄存器,则只能通过前门访问来实现。
后门访问与前门访问相对,可以认为所有不通过总线对dut内部的寄存器或者存储器进行存取的操作都属于后门访问操作。
后门访问与前门访问的优劣:
首先,后门访问不消耗仿真时间,与前门访问相比其消耗的运行时间远小于前门访问所需的时间。比如在实际的芯片验证任务中,在验证前首先需要配置数量巨大的寄存器,如果采用前门访问来操作,时间可能达数小时,而如果采用后门访问则时间可以缩短为前门访问的几十分之一。
其次,后门访问可以完成一些前门访问不能完成的操作。比如在网络通信系统中,计数器通常都是只读的(有一些会有附加清零功能),无法通过前门访问操作对其指定一个非零的初始值。而大部分计数器都是由多个加法器叠加实现的,需要测试它们的进位操作。比如两个叠加的16位加法器,需要测试当计数到32’hffff时候能否顺利进位成32’h1_0000。对于计数快的dut(比如一个时钟计一个数),那么可以等待仿真时间来等待计数到32’hffff。但实际情况是,可能几千几万的时钟才会计数1,那就需要大量运行时间。考虑到这种情况,直接采用后门访问给寄存器一个初始值就可以节省大量时间。
但是,前门访问的操作都可以在波形文件中找到总线信号变化的波形以及操作的记录,方便后期调试。而后门访问则无法在波形文件中找到操作记录,有关操作记录只能依靠verifier在进行后门访问操作时输出的打印信息,增加了调试难度。