UVM(Universal Verification Methodology)은 SystemVerilog 설계를 검증하는 데 도움이 되는 널리 사용되는 방법이며 다음을 포함합니다. 구성 시스템 불행히도 속도와 사용에 문제가 있습니다. Siemens EDA의 Rich Edelman은 이러한 문제를 방지하는 방법에 대한 주제로 20페이지 분량의 상세한 문서를 작성했으며, 이를 통해 주요 내용을 요약했습니다. 검증 엔지니어는 UVM 구성 데이터베이스를 사용하여 값을 설정한 다음 나중에 UVM 테스트에서 값을 가져옵니다. 값 'T'를 설정하고 가져오는 한 가지 예는 다음과 같습니다.
uvm_config#(T)::set(범위, 인스턴스_경로_이름, 필드_이름, 값); uvm_config#(T)::get(범위, 인스턴스_경로_이름, 필드_이름, 값);
UVM 테스트벤치를 테스트 대상 장치에 연결하면 구성 데이터베이스를 사용하여 가상 인터페이스를 전달합니다. UVM 구성을 사용하는 데에는 세 가지 문제가 있습니다.
- 큰 코드, 약 2,600줄의 코드
- 정확한 유형 일치가 필요하므로 'int'와 'bit'는 동일하지 않습니다.
- 느린 코드
느린 코드의 경우를 생각해 보십시오. 와일드카드가 포함된 이름을 사용하여 set()을 수천 번 호출하면 'set' 및 'get' 단계를 완료하는 데 최대 30분이 걸릴 수 있습니다.
Rich는 비교하면 몇 초밖에 걸리지 않는 훨씬 더 빠른 속도를 가진 UVM 구성에 대한 새로운 솔루션을 제안합니다.
UVM 코드에서 와일드카드 사용을 피하고 'set' 명령이 거의 없으면 코드가 더 빠르게 실행됩니다.
UVM 구성 문제에 대한 가능한 해결 방법은 다음과 같습니다.
- 대신 전역 변수를 사용하세요
- 하나의 set()으로 UVM 구성 사용
- 몇 가지 set()과 함께 UVM 구성 사용
- 구성 트리 사용
- 다른 것을 시도하십시오
다른 것을 시도하는 마지막 접근 방식은 새로운 솔루션이며 계속해서 set() 및 get() API를 사용한 다음 구성의 매개변수화를 제거하여 단순화하고 우선 순위를 제거하며 조회 알고리즘 변경을 제거합니다. 이 새로운 접근 방식의 결과는 빠른 속도입니다.
새 구성 항목은 'config_item'의 파생 클래스에 정의되어 있으며 아래 예에서는 설정되는 속성으로 'int value'를 보여줍니다. 디버그 목적으로 예쁜 인쇄 기능을 추가합니다.
my_special_config_item 클래스는 config_item을 확장합니다. function new(문자열 이름 = "my_special_config_item"); super.new(이름); endfunction int 값; 가상 함수 문자열 Convert2string(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); endfunction endclass
'config_item'에는 name 속성이 있으며 이 이름과 인스턴스 이름이 함께 조회됩니다. 구성 객체에는 이름을 반환하는 get_name() 함수도 있습니다. "instance_name.field_name"을 찾기 위해 구성 데이터베이스는 빠른 조회 및 생성 속도를 위해 연관 배열을 사용합니다.
추적성을 위해 파일 이름과 줄 번호는 set() 및 get() 함수 호출의 필드이기 때문에 누가 get을 설정하고 호출했는지 알 수 있습니다.
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
누가 set() 및 get()을 호출했는지 확인하기 위해 디버그 중에 접근자 대기열을 인쇄할 수 있습니다.
와일드카드를 지원하려면 컨테이너를 사용하여 조회 메커니즘을 추가해야 했습니다. 인스턴스 이름 'top.abcd*_0'을 고려하세요.
인스턴스 이름의 와일드카드 부분은 연관 배열 대신 컨테이너 트리를 사용하여 처리됩니다.
요약
UVM 테스트벤치의 모듈/인스턴스와 클래스 기반 세계 간의 데이터 공유는 UVM 구성 데이터베이스를 사용하여 수행할 수 있지만 속도 저하에 유의하세요. 방법론에서 많은 구성을 사용하는 경우 UVM 구성 데이터베이스 파일의 300줄 코드 대신 약 2,600줄의 코드를 사용하는 패키지가 포함된 새로운 접근 방식을 사용하는 것이 좋습니다.
20페이지 분량의 전체 논문을 읽어보세요. 광란적인 구성을 피하는 쉬운 방법 지멘스 EDA에서.
관련 블로그
다음을 통해이 게시물 공유 :
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- PlatoData.Network 수직 생성 Ai. 자신에게 권한을 부여하십시오. 여기에서 액세스하십시오.
- PlatoAiStream. 웹3 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 플라톤ESG. 탄소, 클린테크, 에너지, 환경, 태양광, 폐기물 관리. 여기에서 액세스하십시오.
- PlatoHealth. 생명 공학 및 임상 시험 인텔리전스. 여기에서 액세스하십시오.
- 출처: https://semiwiki.com/eda/339885-making-uvm-faster-through-a-new-configuration-system/
- :있다
- :이다
- :아니
- $UP
- 30
- 300
- 600
- a
- 소개
- 더하다
- 첨가
- 연산
- 또한
- an
- 및
- 어떤
- API를
- 접근
- 있군요
- 배열
- AS
- At
- 피하기
- 인식
- b
- BE
- 때문에
- 존재
- 이하
- 사이에
- by
- 라는
- 통화
- CAN
- 케이스
- 이전 단계로 돌아가기
- 수업
- 암호
- 비교
- 완전한
- 구성
- 고려
- 컨테이너
- 용기
- 계속
- 창조
- 데이터
- 데이터베이스
- 한정된
- 파생
- 디자인
- 상세한
- 장치
- 다른
- 한
- ...동안
- 쉽게
- 엔지니어
- 에테르 (ETH)
- 예
- 확장하다
- FAST
- 빠른
- 를
- Fields
- 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에
- Find
- 럭셔리
- 에
- 가득 찬
- 기능
- 얻을
- 점점
- 글로벌
- 사라
- 도움
- 하이라이트
- 방법
- How To
- HTTPS
- if
- in
- 포함
- 예
- 를 받아야 하는 미국 여행자
- 인터페이스
- 소개
- 문제
- IT
- JPG
- 다만
- 성
- 후에
- 라인
- 라인
- 보고
- 조회
- 많은
- 유튜브 영상을 만드는 것은
- 어울리는
- 최대 폭
- 기구
- 방법론
- 분
- 분
- 많은
- name
- 이름
- 신제품
- 새로운 솔루션
- 번호
- 대상
- of
- on
- ONE
- 만
- or
- 아웃
- 꾸러미
- 서
- 부품
- 패스
- 상
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- ...을 더한
- 인기 문서
- 게시하다
- 상위
- 문제
- 재산
- 제안하다
- 목적
- 제거하다
- 제거
- 필수
- 결과
- return
- 풍부한
- 달리기
- 범위
- 초
- 참조
- 세트
- 설정
- 쇼
- 지멘스
- 단순화하다
- 느리게
- 감속
- So
- 해결책
- 솔루션
- 일부
- 무언가
- 속도
- 속도
- 끈
- 요약
- 감독자
- SUPPORT
- 체계
- T
- 받아
- 복용
- test
- 그
- XNUMXD덴탈의
- 그들의
- 그때
- 그곳에.
- Bowman의
- 이
- 수천
- 세
- 을 통하여
- 시간
- 에
- 상단
- 화제
- 추적
- 나무
- 노력
- 유형
- 아래에
- 운수 나쁘게
- 보편적 인
- 용법
- 사용
- 사용
- 사용
- 가치
- 마케팅은:
- 변수
- 확인
- 확인
- 를 통해
- 온라인
- 방법..
- 어느
- 누구
- 의지
- 과
- 세계
- 쓴
- 당신
- 너의
- 제퍼 넷