在大多数的应用场景,对寄存器的访问完全可以通过write(value) & read()这样的组合来完成,也可以选用set(value)先修改期望值,然后在通过update()函数去做同步。这样的好处是,如果RTL寄存器的值已经是我们的期望值,那么就不会也没有必要再浪费总线资源去重新配置一遍。
Explicit Prediction相对于Implicit Prediction,除了监视通过寄存器模型API对寄存器的访问操作,还可以覆盖到其他测试序列(sequence)通过总线对寄存器的直接访问,这一点会使它更加通用。
prediction的分类
auto prediction
如果在环境中没有集成独立的predictor的情况下,利用寄存器操作来自动记录每一次寄存器的读写值,并在后台自动调用predict()来保持寄存器模型中的值与RTL中的值保持一致。但是如果对于寄存器的操作是直接由总线层面进行的,如跳过寄存器模型的wirte()/read(),自动预测则捕捉不到这些寄存器行为,有可能导致DUT和registermodel两边的值不一致。
前门访问(write()/read()— 针对寄存器的)或者后门访问(peek()/poke())都可以触发隐式预测
register_model_inst.default_map.set_auto_predict(1);
explicit prediction
通过monitor在物理总线上捕捉总线事务,并将bus_transaction 传到外部predictor中,predi

文章讨论了寄存器访问的两种预测机制——隐式预测和显式预测。隐式预测基于寄存器模型的读写操作,而显式预测通过监视总线事务更精确地同步寄存器模型。当启用显式预测时,会关闭隐式预测,并通过adapter将总线事务转化为寄存器模型的更新。监控器收集总线事务,predictor处理这些事务以保持模型和实际硬件的一致性。
最低0.47元/天 解锁文章
686

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



