일부 기존 UVM 코드를 디버그하려고하는데 무슨 일이 일어나고 있는지 알 수 없습니다. 어쨌든, 필자의 노력으로이 기능 (print_config (1))을 보았습니다.이 기능은 config 데이터베이스를 재귀 적으로 출력해야합니다. 웬일인지, 내가 계층을 얻는 동안, 인쇄물은 저장된 값을 보여주지 않는다. 나는 단지 얻는다 :UVM print_config가 값을 표시하지 않습니다.
# resources that are visible in uvm_test_top.env.raster_stroke_agent.driver.sqr_pull_port
# vif [/^.*\.env\.raster_stroke_agent\..*$/] : ?
# -
# th_testset_path [/^.*$/] : ?
# -
# th_testset_name [/^.*$/] : ?
# -
# th_testset_exp_path [/^.*$/] : ?
# -
# th_number_of_images [/^.*$/] : ?
# -
# th_cgs_red_lut_cfg_file_name [/^.*$/] : ?
# -
# th_cgs_green_lut_cfg_file_name [/^.*$/] : ?
# -
# th_cgs_blue_lut_cfg_file_name [/^.*$/] : ?
나는 무엇을 얻는다? 실제 값 대신에?
EDIT : 필자가 가지고있는 기본적인 문제는 "testset_name"필드를 읽으려고 할 때 다른 값을 얻는 것입니다. 그래서 이것은 구성 방식이다
베이스 테스트 : set_config_string (""testset_name, "ABC") 아이 테스트 : set_config_string (""testset_name "JFK") 손자 시험 : set_config_string (" * ", testset_name,"XYZ ")
이제 시퀀스에서이 변수에 액세스하려고하면"ABC "가 표시됩니다. 손자 테스트 "set_config_string"을 꺼내면 "JFK"가 나옵니다.
"XYZ"를 가져 오지 않아야합니까?
더 이상 무엇은 print_config의 출력입니다 :
# resources that are visible in uvm_test_top.env.raster_stroke_agent.driver
# vif [/^.*\.env\.raster_stroke_agent\..*$/] : ?
# -
# th_testset_path [/^.*$/] : ?
# -
# th_testset_name [/^.*$/] : ?
# -
# th_testset_exp_path [/^.*$/] : ?
# -
# th_number_of_images [/^.*$/] : ?
# -
# testset_path [/^uvm_test_top\..*$/] : ?
# -
# testset_name [/^uvm_test_top\..*$/] : ?
# -
# testset_name [/^uvm_test_top\..*$/] : ?
왜 같은 구성 요소에서 테스트 세트 이름이 개 항목이 ???
+ UVM_CONFIG_DB_TRACE를 사용하면 'print_config()'에 대한 호출 삽입과 같이 코드를 수정하지 않아도되므로 더 깨끗합니다. –
3 개의 호출이 모두 동일한 계층 구조에 있다고 가정 해보십시오. 그러나 그들은 기초, 자녀, 손자녀로 설정되어 있습니다. 따라서 최고 수준의 계층 구조가 승리한다고 말하면 기본 클래스 설정이 이깁니다. 나는 이것들을 체크했다. 그것들은 모두 build_phase에 설정되어있다. – noobuntu
클래스 계층 구조 (상속 트리)를 객체 계층 구조 (인스턴스 트리)와 혼동하지 마십시오. 내가 의미 한 것은 객체 계층 구조였습니다. 부모 객체의 설정이 자식 객체에 대해 이깁니다 (에이전트를 통한 env 테스트 - 누구를 인스턴스화하는지). –