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 파일 작성 단계전원 도메인 정의: 설계의 각 부분이 어떤 전원 도메인에 속하는지 정의합니다.전원 스위치 정의: 전원 스위치를 정의하여 전원 도메인 간의 전원 공급을 제어합니다.레벨 시프터 정의: 서로 다른 전원 도메인 간의 신호 전송을 위해 레벨 시프터를 정의합니다.전..
IT/ASIC | FPGA 2024. 5. 16.
Netlist vs UPF 포함 Netlist - UPF 파일 소개 및 적용 방법
반도체 설계에서 넷리스트(Netlist)는 전자 회로의 연결 정보를 담고 있는 파일입니다. 넷리스트는 기본적으로 회로의 모든 소자와 그 연결 관계를 나열합니다. UPF(Universal Power Format)가 적용된 넷리스트는 저전력 설계를 위한 전원 관리 정보가 포함된 넷리스트입니다.UPF 파일 소개기본 넷리스트 예제먼저, 기본적인 넷리스트 파일을 살펴보겠습니다. 여기서는 간단한 AND 게이트 회로의 넷리스트를 예로 들겠습니다.기본 넷리스트 (basic_netlist.v)module simple_and ( input a, input b, output c); assign c = a & b;endmodule이 기본 넷리스트는 simple_and 모듈을 정의하고, 입력 a와 b를 논..