IT/ASIC | FPGA 2024. 5. 29.
UVM sequence - 메인함수는 body task
그냥 간단한 노트 겸 저장, 기본적으로는 run_phase 에서 메인 코드가 도는데 희안하게 uvm_sequence 에서는 task body();여기서 메인 코드가 수행됨https://www.eunchan.kim/research/uvm/uvm-flow.htmlrun_phase 는 실제 동작이 구현되는 부분이니 이 코드가 들어갈만한 곳은 uvm_driver나 uvm_monitor, uvm_sequence정도 일것 같습니다. 각 블럭은 다음 글에서 설명드릴텐데, uvm_driver 나 uvm_monitor 는 run_phase에서 실행되는 게 맞으나, uvm_sequence는 bodytask에서 메인 코드가 실행됩니다. 예제를 보면, /* "body()" is a task that is invoked..
IT/ASIC | FPGA 2024. 5. 29.
UVM Factory Pattern - 무슨 디자인 패턴까지..
UVM Factory Pattern - 무슨 디자인 패턴까지 나오냐? 그냥 케이스별로 테스트 벤치를 왠만하면 짤텐데...아래 글을 열심히 읽어보자. 핵심은 source code의 수정 없이 서로 다른 type의 object를 생성하는 방법. string argument를 받아 run-time동안 dynamic 하게 object를 return 하는 방법을 제공하기 위해서는 factory design pattern 을 활용하라는 뜻 테스트 벤치가 Runtime 에 입력파일으로 부터 클래스 명을 입력 받아 테스트 하도록 돌려면, 유용한 방법인듯...머 귀찮으면 그냥 따로 시나리오별로 짜면 된다. ㅋㅋㅋ :) https://floatandflow.tistory.com/4 [SystemVerilog/UVM] Fa..
IT/ASIC | FPGA 2024. 5. 28.
UVM - Interface 에서 Drive로 Sequence item으로 데이터 받기
보통 쓰기 동작은 예제가 너무 많아서 쉽게 되는데, 되려 read 즉 DUT Interface 에서 데이터를 받아서 Driver 이런 곳에서 확인하는 것에 대한 예제가 잘 안보이네.우리 AI를 이용해서 열심히 답을 내보니, 좋은 결과를 보여주네. 핵심은seq_item_port.put_response(item);예로 살펴보자. AXI 인터페이스를 사용하는 경우, 읽기 트랜잭션에서 데이터를 받아 sequence_item의 데이터 필드에 넘겨주는 기능을 구현하고자 할 때, 몇 가지 추가적인 단계가 필요합니다. 이 과정은 드라이버가 데이터를 받고 해당 데이터를 관련 sequence_item에 저장하여, 이후의 검증 단계 또는 점수 계산(scoreboarding)에서 사용할 수 있도록 하는 것을 포함합니다.읽기 ..
IT/ASIC | FPGA 2024. 5. 24.
Tessent shell - 이건 머지? SIEMENS DFT
Tessent Shell은 반도체 설계 및 검증 과정에서 사용되는 Tessent 소프트웨어 제품군의 일부입니다. 이 소프트웨어는 주로 DFT(Design for Testability) 솔루션을 제공하는데 사용되며, 반도체 칩의 테스트 가능성을 높이고 제조 결함을 검출하는 데 필요한 기능들을 포함하고 있습니다. Tessent 제품군은 Mentor Graphics에서 개발하였으며, 현재는 Siemens의 일부입니다.Tessent Shell의 기능과 역할사용자 인터페이스 제공:Tessent Shell은 명령 줄 인터페이스(CLI)를 제공하여 사용자가 Tessent 도구들을 실행하고 관리할 수 있게 합니다. 사용자는 이 쉘을 통해 다양한 명령어를 입력하고 Tessent 도구와의 상호 작용을 수행할 수 있습니다...
IT/리눅스 2024. 5. 24.
Bash 쉘 vs C 쉘 스크립트 간단 차이점
바쉬 쉘 스크립트와 C 쉘 스크립트, 헷갈리시죠? 오늘은 이 두 쉘 스크립트의 차이점을 친절하고 캐주얼하게 풀어보도록 하겠습니다. 예제도 함께 보여드릴 테니 재미있게 따라와 주세요!1. 문법의 차이가장 먼저 눈에 띄는 건 바로 문법의 차이입니다.Bash Shell은 Bourne-Again SHell의 약자로, Unix의 전통적인 sh 쉘을 확장한 것입니다. 프로그래밍에 있어서 상당히 유연하며, 변수를 다루거나 함수를 작성하는 방식이 직관적이죠.# Bash 예제: 변수 사용my_var="Hello Bash!"echo $my_varC Shell은 C 프로그래밍 언어에서 영감을 받아 만들어졌습니다. C 언어를 좀 아신다면 문법이 낯설지 않을 거예요. 하지만 복잡한 스크립트를 작성할 때는 다소 제한적일 수 있습..
IT/ASIC | FPGA 2024. 5. 23.
UVM DPI (Direct Programming Interface) 기능 기초 예제
UVM DPI (Direct Programming Interface) 라이브러리는 UVM 환경에서 C 함수 호출 등을 가능하게 하는 라이브러리입니다. 이를 통해 SystemVerilog 테스트벤치와 외부 C 코드를 연동할 수 있습니다. 구체적인 예를 들어보겠습니다.예제: 외부 C 함수 호출아래는 SystemVerilog 코드에서 외부 C 함수를 호출하는 예제입니다. 이 예제에서는 UVM DPI 라이브러리를 사용하여 외부 C 함수를 호출하여 데이터를 처리합니다.C 함수 정의먼저, 외부 C 함수가 정의되어 있습니다. 이 함수는 두 개의 정수를 더하는 간단한 함수입니다.// add.c#include int add(int a, int b) { return a + b;}DPI 임포트SystemVerilog ..
IT/리눅스 2024. 5. 23.
리눅스에서 큰 폴더 찾기: du 명령어 활용법
서버 공간이 꽉 차서 어디서부터 청소를 시작해야 할지 모르시겠다고요? 'du' 명령어와 몇 가지 유용한 옵션을 활용하면, 가장 많은 공간을 차지하는 파일과 폴더를 빠르게 찾아낼 수 있습니다. 이제 du 명령어를 좀 더 빠르게 실행해 보는 방법을 소개합니다!참고글은 아래와 같습니다.리눅스 폴더별 용량 확인(du 명령어) (tistory.com)빠른 'du' 명령어로 리눅스에서 대형 폴더 식별하기빠르게 큰 폴더 찾기du -ah --max-depth=1 | sort -rh | head -n 5이 명령어는 다음과 같은 기능을 수행합니다:-ah: 파일과 폴더의 용량을 사람이 읽기 쉽게 표시합니다.--max-depth=1: 현재 디렉토리 바로 아래에 있는 항목들만 조사하여 속도를 향상시킵니다.sort -rh: 결과..
IT/ASIC | FPGA 2024. 5. 22.
SystemVerilog에서 패키지를 사용하는 장점
SystemVerilog에서 패키지를 사용하는 것은 매우 중요한 설계 및 조직 전략이며, 패키지를 사용하지 않을 때와 비교해 여러 장점이 있습니다. 아래에서는 패키지를 사용하는 것과 사용하지 않는 것의 차이점 및 패키지 사용의 주요 이점을 설명합니다.패키지를 사용하는 것과 사용하지 않는 것의 차이네임스페이스 관리: 패키지 사용: 패키지는 데이터 타입, 서브루틴, 파라미터 등을 포함할 수 있는 컨테이너 역할을 하며, 네임스페이스를 제공합니다. 이를 통해 다른 패키지나 모듈에서 동일한 이름을 사용하더라도 충돌 없이 관리할 수 있습니다.패키지 미사용: 이름 충돌의 가능성이 높아지고, 글로벌 스코프에서 모든 정의를 관리해야 하므로 복잡성이 증가할 수 있습니다.코드의 재사용성 및 모듈화: 패키지 사용: 관련된 기..
IT/파이썬 2024. 5. 21.
'\n'.join(str_buffer) 구문 설명 - join 자동 루프
'\n'.join(str_buffer) 구문은 Python에서 리스트를 돌면서 지정한 문자열을 붙여서 리턴하는 구문입니다.아래 코드를 보고 이해해 봅시다.result_script: 이 변수는 문자열들의 리스트를 담고 있습니다. 각 문자열은 스크립트의 한 줄을 나타냅니다.'\n'.join(result_script): 이 부분은 리스트에 있는 모든 문자열을 하나의 문자열로 결합합니다. 문자열들 사이에는 줄바꿈 문자(\n)가 들어갑니다. 결과적으로, 리스트의 각 요소(문자열)가 하나의 큰 문자열로 연결되고 각 요소는 새로운 줄에서 시작합니다.return '\n'.join(result_script): 이 코드는 결합된 문자열을 함수의 결과로 반환합니다. 이는 함수가 호출된 곳에서 해당 문자열을 사용할 수 있게 ..
IT/파이썬 2024. 5. 20.
파이썬 패턴 처리 기능 - 멀티라인 처리 예제
tcl 스크립트를 보다 보면 맨 마지막 "\" 를 입력하여 한줄짜리 명령을 다중 라인으로 처리하는 경우가 있다. 그리고 문법상으로 {, [, ( 이런 오픈 브레이스 이후의 멀티라인도 한 줄로 처리할 수 있도록 하는 것이 필요하다.이런 찾아내서 한줄로 만드는 코드 샘플을 보자.이 코드는 괄호 { } 사이에 있는 단어를 추출하는 기능을 포함하며, 줄 끝에 있는 \는 단순한 줄바꿈으로 처리하여 해당 줄을 다음 줄과 결합하지만, 공백 없이 연결합니다.import redef join_lines(lines): combined_lines = [] open_brackets = {'{': '}'} stack = [] current_line = "" for line in lines: ..
IT/파이썬 2024. 5. 17.
frozenset 의미와 사용 예제
마찬가지로, 클럭 관계를 정의하는 클래스를 제작하면서 나온 설명입니다. frozenset 의 의미와 용법 정도만 알면 큰 도움이 될듯, 원래 쓴 용도는 클럭 쌍이 순서는 의미가 없는 정보를 저장하기 위해서 코드를 생성했는데 frozenset 을 이용해서 찾아봤습니다. 참고하세요.frozenset은 파이썬에서 제공하는 불변(immutable) 집합 자료형입니다. frozenset은 일반적인 set과 동일한 기능을 제공하지만, 한 번 생성된 이후에는 변경할 수 없습니다. 이를 통해 변경되지 않아야 하는 데이터 구조를 표현할 수 있습니다.frozenset의 주요 특징불변성: frozenset은 생성된 이후 요소를 추가하거나 제거할 수 없습니다. 이로 인해 frozenset은 해시 가능하며, 딕셔너리의 키나 다..
IT/파이썬 2024. 5. 17.
@classmethod 사용 예
예제로 JSON 파일에서 어떤 데이터를 읽어와서 객체를 만드는 예제에서 설명을 가져왔습니다. 참고해서 보세요! 왜 사용하는지, 왜 써야 하는지 힌트가 되는 글입니다.import_from_file 메서드는 JSON 파일에서 데이터를 읽어와 ClockRelations 객체를 생성하는 메서드입니다. 이 메서드는 클래스 메서드 (classmethod)로 정의되어 있습니다. 클래스 메서드를 사용하는 이유와 해당 메서드의 작동 방식을 설명하겠습니다.import_from_file 메서드@classmethoddef import_from_file(cls, filename): with open(filename, 'r') as f: data = json.load(f) obj = cls(data['cl..
IT/ASIC | FPGA 2024. 5. 16.
UPF 파일 작성 방법 공부
주의!!! 내용이 실제 업무에 맞지 않을 수 있으므로 아래 내용을 토대로 실무에 적용을 하면 안됩니다. 아무런 책임이 없는 글입니다. 챗GPT는 실수를 허용합니다. ^^;;;UPF 파일을 작성하는 과정은 전적으로 수동으로 수행될 수 있습니다. 일반적으로 설계 엔지니어가 저전력 설계 요구사항을 기반으로 UPF 파일을 작성합니다. UPF 파일은 텍스트 파일 형식으로, 전원 도메인, 전원 스위치, 레벨 시프터, 전원 상태 등을 정의합니다.UPF 파일 작성 단계전원 도메인 정의: 설계의 각 부분이 어떤 전원 도메인에 속하는지 정의합니다.전원 스위치 정의: 전원 스위치를 정의하여 전원 도메인 간의 전원 공급을 제어합니다.레벨 시프터 정의: 서로 다른 전원 도메인 간의 신호 전송을 위해 레벨 시프터를 정의합니다.전..
