IT/ASIC | FPGA 2024. 5. 31.
표준 RTL 코드 스타일 - 기본에서 출발하자
아래 코드를 기본으로 해서 머든 출발해보자. 기본을 지키는게 중요하다!복합 조건에서의 if와 case 혼용 예제 (SystemVerilog 사용, always_ff 블록 내에서)복합 조건이 3가지 이상일 경우, if와 case 문을 혼용하여 가독성을 높이고, 효율적으로 코드를 작성할 수 있습니다. 아래는 always_ff 블록을 사용하여 복합 조건을 처리하는 예제입니다. 이 예제에서는 상태 전이와 출력 로직을 하나의 always_ff 블록에 통합하여 구성합니다.예제: 상태 기계 (State Machine) 구현이 예제는 상태 기계를 구현하면서 입력 신호에 따라 다른 동작을 수행하는 복잡한 조건을 처리합니다. if 문과 case 문을 혼용하여 각 상태에서의 동작을 명확하게 정의합니다.module state..
IT/ASIC | FPGA 2024. 5. 30.
SDC clock group 이해: asynchronous vs exclusive 차이점
SDC는 전자설계자동화(EDA) 도구에서 디지털 회로 설계의 제약 조건을 지정하는 데 널리 사용되는 형식입니다. 클럭 그룹은 서로 다른 클럭 도메인 간의 적절한 타이밍 분석을 보장하기 위해 중요한 역할을 합니다.set_clock_groupsset_clock_groups 명령어set_clock_groups 명령어는 서로 다른 클럭 도메인 간의 관계를 정의하는 데 사용됩니다. 이 명령어는 타이밍 분석 목적으로 클럭 간의 상호 작용을 지정하는 데 사용되며, 관계는 동기(synchronous), 비동기(asynchronous), 또는 배타적(exclusive)일 수 있습니다.명령어 형식set_clock_groups -asynchronous -group {클럭1 클럭2} -group {클럭3 클럭4}주요 옵션-a..
IT/ASIC | FPGA 2024. 5. 29.
UVM Configuration Database (uvm_config_db) 사용 예제
Universal Verification Methodology(UVM)는 다양한 컴포넌트 간의 설정 매개변수를 설정하고 가져오는 유연하고 강력한 구성 메커니즘을 제공합니다. 이 가이드에서는 uvm_config_db를 사용하여 설정 매개변수를 설정하고 가져오는 방법을 예제와 함께 설명합니다.uvm_config_db란 무엇인가?uvm_config_db는 UVM에서 설정 정보를 중앙 집중식으로 관리할 수 있도록 하는 클래스입니다. 이를 통해 테스트벤치의 다양한 부분이 직접 연결 없이 설정 정보를 공유할 수 있어 모듈화와 재사용성을 높일 수 있습니다.uvm_config_db 사용 방법uvm_config_db를 사용하여 설정 매개변수를 설정(set)하고 가져오는(get) 방법을 알아보겠습니다.설정 매개변수 설정 ..
IT/ASIC | FPGA 2024. 5. 29.
UVM Error 메시지 출력 - report_phase() in uvm_test
UVM Error 메시지 출력해보기가 너무 어렵다. 실제 에러 내용을 출력하도록 예제 코드를 생성해 봤다.uvm_report_cb::add 메소드는 uvm_report_catcher 타입의 객체를 콜백으로 요구합니다.리포트 클래스 생성클래스 생성: my_custom_reporter가 uvm_report_catcher를 상속받도록 클래스를 생성합니다. uvm_report_catcher는 uvm_report_object의 특수한 서브클래스로, 에러 메시지를 잡아내고 수정할 수 있는 메소드를 제공합니다.콜백 등록 수정: uvm_report_cb::add 메소드 사용을 올바르게 수정하여 적합한 타입을 전달합니다.클래스 정의 및 사용 예시아래는 my_custom_reporter를 uvm_report_catcher..
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/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/ASIC | FPGA 2024. 5. 22.
SystemVerilog에서 패키지를 사용하는 장점
SystemVerilog에서 패키지를 사용하는 것은 매우 중요한 설계 및 조직 전략이며, 패키지를 사용하지 않을 때와 비교해 여러 장점이 있습니다. 아래에서는 패키지를 사용하는 것과 사용하지 않는 것의 차이점 및 패키지 사용의 주요 이점을 설명합니다.패키지를 사용하는 것과 사용하지 않는 것의 차이네임스페이스 관리: 패키지 사용: 패키지는 데이터 타입, 서브루틴, 파라미터 등을 포함할 수 있는 컨테이너 역할을 하며, 네임스페이스를 제공합니다. 이를 통해 다른 패키지나 모듈에서 동일한 이름을 사용하더라도 충돌 없이 관리할 수 있습니다.패키지 미사용: 이름 충돌의 가능성이 높아지고, 글로벌 스코프에서 모든 정의를 관리해야 하므로 복잡성이 증가할 수 있습니다.코드의 재사용성 및 모듈화: 패키지 사용: 관련된 기..
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를 논..
IT/ASIC | FPGA 2024. 5. 14.
SDC 작성 하는 방법 - 글 정리중
SDC(Synopsys Design Constraints)에 대해 이해하고 작성해보기 글을 완성해보자.---title: "Synopsys Design Constraints (SDC) 이해하기"date: 2024-05-14author: "작성자 이름"categories: ["반도체 설계", "SDC", "EDA"]tags: ["SDC", "칩 설계", "전자설계자동화(EDA)"]---Synopsys Design Constraints (SDC) 이해하기이 블로그 포스트에서는 Synopsys Design Constraints(SDC)에 대해 탐구하고, SDC의 중요성과 효과적인 사용 방법을 알아보겠습니다.소개Synopsys Design Constraints(SDC)는 반도체 설계에서 중요한 역할을 하는 파일 ..