SV/UVM 中的大量查找 table
Huge lookup table in SV/UVM
我必须通过解析预测器的输入文件来构建大型查找 table(约 14k 个以字符串作为键的条目)。从模拟性能的角度来看,我是使用关联数组还是使用 uvm_config_db 更好?
因为它只有一个组件,所以我会使用关联数组。
如果它是多个组件,我更倾向于将整个关联数组放在一个 class 对象中,然后将 class 注册到 uvm_config_db。他们访问 table 的所有组件都指向同一个对象;从而限制内存占用。
不过,加载 table 可能有点资源激励,而保持 table 可能需要您的模拟器使用大量 RAM。如果每个 test/seed 只需要几百个或更少的条目,我建议只将您可能需要的条目加载到关联数组中;不是全部。
如果你需要整个东西,那么可能值得弄清楚如何将 table 放入真实数据库并使用 DPI 或 VPI 从模拟中访问它。 DPI 典型性的开销较小。一些工具集具有用于访问内存映像和您可能能够利用的其他大型数据结构的 IP。
我必须通过解析预测器的输入文件来构建大型查找 table(约 14k 个以字符串作为键的条目)。从模拟性能的角度来看,我是使用关联数组还是使用 uvm_config_db 更好?
因为它只有一个组件,所以我会使用关联数组。
如果它是多个组件,我更倾向于将整个关联数组放在一个 class 对象中,然后将 class 注册到 uvm_config_db。他们访问 table 的所有组件都指向同一个对象;从而限制内存占用。
不过,加载 table 可能有点资源激励,而保持 table 可能需要您的模拟器使用大量 RAM。如果每个 test/seed 只需要几百个或更少的条目,我建议只将您可能需要的条目加载到关联数组中;不是全部。
如果你需要整个东西,那么可能值得弄清楚如何将 table 放入真实数据库并使用 DPI 或 VPI 从模拟中访问它。 DPI 典型性的开销较小。一些工具集具有用于访问内存映像和您可能能够利用的其他大型数据结构的 IP。