uvm1.1应用指南及源代码分析

UVM1.1和UVM1.2的区别参考官网UVM_REG动态地址索引UVM1.2,uvm_reg_block::lock_model()是必不可少的一步,用来检查和缓存地址映射,但是一旦锁定,就不能第二次修改映射 。在UVM1800.2中,我们可以在模拟过程中(不一定在构建阶段)解锁_model()和取消注册(),然后为uvm_reg_block创建一个新的uvm_reg_map并添加它和lock_model() 。

1、uvm为了什么原因才引入factory机制如果你的cpuenv会被用作另一个更高层次的代理组件,情况会变得更糟一点;如果你的cpuenv会被大量实例化 , 用在更大级别的环境中,情况会变得更糟;如果你的pciedriver在一个大环境的很多地方单独作为一个组件 , 分布在树结构的不同深度,那就是噩梦了!假设目前我有一个环境,有10个PCIe驱动,其中5个在5个CPU代理中作为子组件使用,另外5个PCIe驱动在topenv中作为子组件使用(前5个CPU代理包含在topenv中) 。

2、UVM1.1和UVM1.2的不同参考官网UVM_REG动态地址索引UVM1.2时,uvm_reg_block::lock_model()是必经的一步 , 用来检查和缓存地址映射,但是一旦锁定,就不能第二次修改映射 。问题是现在的SoC子系统都有动态映射或者重映射的功能,所以如果UVM寄存器模型在仿真中只有静态地址映射,就不能很好的支持这个 。
【uvm1.1应用指南及源代码分析】比如我想在仿真过程中建立modelA的地址映射关系 , 然后在仿真过程中重新建立地址映射 。在UVM1800.2中,我们可以在模拟过程中(不一定在构建阶段)解锁_model()和取消注册(),然后为uvm_reg_block创建一个新的uvm_reg_map并添加它和lock_model() 。

    推荐阅读