uvm_config_db的生效顺序

2016年9月,我去面新的工作,面试官问了我一个问题:如果在不同的component的同一个phase中对uvm_config_db#(int)的某个key set不同的值,那么最终哪个值会生效?当时只是肤浅的回答:后设置的生效。然后面试官引导了一下,问,那在build_phase中呢?回答是最顶层的设置生效。虽然答案是对的,但是我想并没有达展现是面试官想要的。

诚然,UVM对uvm_config_db的设计思路是保证最后设置的生效,但是为什么会在build_phase的时候做特殊的判断呢?其他phase为何不需要?回到面试官的问题,其实他是想问uvm_phase的执行顺序。一旦了解uvm_phase的执行顺序,那么上面的问题就是自然而然的。

uvm_phase按执行顺序,分为两类:top-down和bottom-up。目前只有build_phase是top-down的,其他都是bottom-up。

通常我们可能会在不同层次上的component里对uvm_config_db的某个key值进行操作,比如在VIP中。但是我们有希望可以在上层的component中进行改写控制,所以,在build_phase这样的top-down的phase中,需要额外加以控制,保证上层的component的设置生效。而对于bottom-up的phase,只需要按照自然顺序覆盖即可。

Author: aquaporcus

上过大学读过研,进过华为创过业,敢追台风敢吸霾,娶了老婆就生娃,没车没房闯京城,哥有肩膀哥能扛!

Leave a Reply

Your email address will not be published. Required fields are marked *