IT/Software 2024. 11. 22.
Makefile - 예약 및 특수 변수 정리: 효율적인 Makefile 작성 가이드
Makefile은 빌드 자동화를 위한 강력한 도구이며, Makefile 내에서 사용되는 특수 변수(reserved variables)는 빌드 과정을 동적으로 제어하고 유연하게 만듭니다. 이 글에서는 Makefile에서 자주 사용되는 예약 변수와 특수 변수를 정리하고, 각 변수의 역할과 활용 예제를 제공합니다.예약 변수 총정리변수 이름설명예제$(MAKECMDGOALS)실행 중인 타겟 목록cdc_quick gzip$@현재 타겟 이름gcc -o $@$첫 번째 의존성gcc -c $$^모든 의존성 목록gcc $^ -o program$?수정된 의존성 목록gcc -c $? -o $@$*타겟 이름에서 확장자 제거file.c -> file$(MAKE)현재 Make 명령어$(MAKE) -C subdir$(CURDIR)현재..
IT/Software 2024. 11. 22.
Makefile - target: $(if $(findstring gzip,$(MAKECMDGOALS)),gzip_step)
cdc_quick: $(if $(findstring gzip,$(MAKECMDGOALS)),gzip_step) 이 코드는 Makefile에서 조건부 의존성을 설정하는 방식입니다. 이를 통해 make cdc_quick 명령어가 특정 키워드(gzip)를 포함하는 경우에만 추가적인 의존 타겟(gzip_step)을 실행하도록 만듭니다.1. 구성 요소와 역할1.1 $(MAKECMDGOALS)$(MAKECMDGOALS)는 Make에서 현재 실행 중인 명령어의 타겟 목록을 의미합니다.예: make cdc_quick gzip을 실행하면 $(MAKECMDGOALS)는 cdc_quick gzip 값을 가집니다.예: make cdc_quick만 실행하면 $(MAKECMDGOALS)는 cdc_quick 값만 가집니다.1.2 ..
IT/Software 2024. 11. 22.
Makefile 내에 .PHONY 의미
.PHONY는 가상 타겟(Phony Target)을 선언하기 위해 사용하는 키워드입니다. 이름의 유래와 사용하는 이유를 아래에 설명하겠습니다.1. .PHONY의 의미와 유래"Phony"라는 단어는 영어로 "가짜의" 또는 "허구의"라는 뜻을 가지고 있습니다.Makefile에서 .PHONY는 실제로 존재하지 않는 가상 타겟을 의미하며, 파일 시스템의 상태와 관계없이 항상 실행되도록 만듭니다.이 이름은 make 도구가 초기 설계될 때부터 사용되었으며, 의미를 직관적으로 전달하기 위해 선택된 것으로 보입니다.2. .PHONY가 필요한 이유Makefile은 파일 기반 빌드 시스템으로 설계되었습니다. 이는 타겟 이름과 동일한 파일이 있으면 해당 타겟이 "최신 상태(up-to-date)"라고 간주되고, 다시 실행하지..
IT/ASIC | FPGA 2024. 11. 7.
Chiplet 칩릿 or 칩렛 과 UCIe
Chiplet 개념을 쉽게 설명하려면 다음과 같이 접근할 수 있습니다:"칩렛(Chiplet)은 한 개의 큰 칩을 여러 작은 조각으로 나눈 것을 말합니다. 원래 반도체 칩은 한 개의 실리콘 웨이퍼에 모든 기능을 담았지만, 칩이 복잡해질수록 이런 방식이 비효율적이고 비용이 많이 듭니다. 칩렛은 특정 기능을 독립된 작은 칩으로 만들어, 필요한 기능끼리 조합해 하나의 시스템처럼 동작하게 합니다. 이렇게 하면 개별 칩렛을 따로 개발, 제조, 조립할 수 있어서 비용과 개발 시간을 줄일 수 있습니다. 즉, 여러 작은 칩들이 모여 큰 칩처럼 동작하도록 만드는 방법입니다."이렇게 비유할 수 있습니다:"레고 블록처럼 각 부분이 따로 만들어져 서로 조립되는 구조를 생각하면 됩니다. 필요한 기능만 모아 조립할 수 있으니까 유..
IT/파이썬 2024. 10. 28.
타이밍 기초 - 간단한 제약조건 예제 SDC 구문 예제
SDC에서 제약 조건을 설정하는 주요 명령어와 그 목적을 요약하여 표로 정리하면 다음과 같습니다:제약 조건설명예제 명령어클럭 정의클럭의 주기와 특성을 정의하여 타이밍 분석의 기준을 설정합니다.create_clock -name clk -period 10 [get_ports clk]입출력 지연 설정입력과 출력 신호의 지연 시간을 설정하여 외부 환경과의 타이밍을 맞춥니다.set_input_delay -clock clk 5 [get_ports in]멀티사이클 경로특정 경로가 여러 클럭 사이클에 걸쳐 발생하도록 지정합니다.set_multicycle_path -from A -to B 2False Path특정 경로를 타이밍 분석에서 제외합니다.set_false_path -from A -to B클럭 도메인 그룹서로 다..
IT/ASIC | FPGA 2024. 10. 28.
타이밍 기초 - 디자인 요소 common design objects
Here’s a comprehensive summary of common design objects used in Synopsys Design Constraints (SDC), referencing standard usage in digital design:Design ObjectDescriptionExample CommandClocksDefines timing properties for clock signals.create_clock -name clk -period 10PortsInput/Output ports, typically on the top-level module.set_input_delay -clock clk 5 [get_ports in]PinsSpecific signal locations ..
IT/ASIC | FPGA 2024. 10. 28.
타이밍 기초 - DES0001 vs DES0004 Register clock pin
DES_0001: Register clock pin has no clock signal propagating to it 오류는 레지스터의 클럭 핀에 클럭 신호가 제대로 전달되지 않고 있다는 의미입니다. 이는 클럭 신호 경로가 끊기거나 정의되지 않은 경우에 발생하며, 레지스터가 적절한 클럭에 연결되지 않았을 때 발생하는 일반적인 디자인 오류입니다.DES_0004: Register clock pin pin does not have a clock signal that can sensitize the register 오류는 레지스터 클럭 핀에 신호가 있긴 하지만, 해당 신호가 레지스터를 활성화(sensitize)하지 못하는 상황을 나타냅니다. 이와는 달리 DES_0001 오류는 클럭 신호 자체가 클럭 핀에 전혀..
IT/ASIC | FPGA 2024. 10. 28.
타이밍 기초 - Clock clock1 is missing an asynchronous definition CGR_0004
"Clock clock1 is missing an asynchronous definition" 오류는 clock1과 다른 클럭 도메인 간에 비동기(asynchronous) 관계가 명확히 정의되지 않아서 발생하는 문제입니다. 클럭 도메인 간의 비동기 관계는 각 클럭이 독립적으로 동작함을 의미하며, GCA(Galaxy Clock Analyzer)와 같은 툴에서는 이러한 비동기 관계를 명확히 정의해야 신호 전달에서 메타스태빌리티 및 신호 무결성을 유지할 수 있습니다.원인clock1과 다른 클럭이 비동기적으로 동작하지만, 비동기 관계가 정의되지 않아 툴에서 경고를 발생시키는 경우입니다.클럭 정의 또는 경로 설정에서 비동기 크로싱이 명시되지 않았기 때문에 클럭 도메인 간의 신호 전달이 불안정하다고 판단될 수 있습..
IT/ASIC | FPGA 2024. 10. 28.
반도체 기초 - FMEDA 란?
FMEDA는 "Failure Modes, Effects, and Diagnostic Analysis"의 약자로, 제품이나 시스템의 고장 모드를 분석하고 그에 따른 영향을 평가하며, 진단 커버리지를 검토하는 과정을 의미합니다. 주로 안전이 중요한 산업, 예를 들어 자동차나 항공, 의료기기 분야에서 사용됩니다.FMEDA는 다음과 같은 세 가지 요소를 포함합니다:Failure Modes (고장 모드): 시스템의 각 부품이 어떻게 고장날 수 있는지를 파악합니다.Effects (영향 분석): 각 고장이 시스템에 미치는 영향을 분석합니다.Diagnostic Analysis (진단 분석): 고장 감지를 위한 진단 커버리지와 효과적인 진단 방법을 평가합니다.이 분석을 통해 시스템의 신뢰성을 높이고, 위험 요소를 줄이며..
IT/ASIC | FPGA 2024. 10. 25.
반도체 기초 - LBIST vs SCAN
LBIST와 스캔 테스트는 구조와 구현 방식에서 차이가 있으며, 이를 간단한 예제를 통해 설명해 보겠습니다. 예제 1: LBIST (Logic Built-In Self Test) 구현LBIST는 칩 내부에 자가 테스트 회로를 추가하여, 외부 장비 없이 결함을 검출할 수 있습니다. LBIST는 패턴 생성기와 결과 분석기로 구성됩니다.LBIST 간단한 구조module LBIST ( input clk, // 클럭 신호 input reset, // 초기화 신호 output reg [7:0] result // 테스트 결과); reg [7:0] pattern_gen; // 패턴 생성기 reg [7:0] circuit_under_test;..
IT/ASIC | FPGA 2024. 10. 25.
반도체 기초 - DA, BIST, 테스트 관련
반도체 메모리의 DA (Direct Access) Mode와 BIST (Built-In Self Test) Mode는 둘 다 메모리 테스트를 수행하기 위한 방법이지만, 그 목적과 방식에서 차이가 있습니다. 여기에 BIRA, MBIST, LBIST 등 자주 사용하는 테스트 모드를 간단히 비교하여 설명하겠습니다.1. DA (Direct Access) Mode목적: 메모리 셀에 직접 접근하여 특정 패턴을 쓰고 읽는 방식으로 결함을 진단하기 위해 사용됩니다.특징: 설계자가 원하는 특정 주소나 비트에 데이터를 읽고 쓰며, 수동으로 결함 분석을 수행할 수 있습니다.장점: 특정 셀을 타겟으로 하여 결함 위치를 정확히 파악할 수 있음.단점: 수동 방식이기 때문에 자동화가 어렵고 시간이 오래 걸립니다.2. BIST (B..
IT/ASIC | FPGA 2024. 10. 25.
반도체 기초 - BIRA 테스트
"BIRA"는 Built-In Redundancy Analysis의 약자로, 반도체 메모리 설계에서 결함을 분석하고 보정하는 과정을 의미합니다. 메모리 칩은 제조 과정에서 결함이 발생할 수 있으며, 이러한 결함을 관리하기 위해 리던던시 셀 (예비 셀)이 메모리 구조에 추가됩니다. BIRA는 이러한 결함을 자동으로 분석하고 리던던시 셀을 활용하여 결함을 보정하는 데 사용됩니다.BIRA 테스트 절차결함 검사: 메모리 칩의 각 셀을 테스트하여 결함이 있는 셀을 찾습니다. 이는 주로 BIST (Built-In Self Test)와 같은 방법을 통해 이루어집니다.결함 분석: 결함이 발생한 셀의 위치를 분석하고, 리던던시를 어떻게 활용할지 결정합니다. BIRA 알고리즘은 어떤 리던던시 행(row)이나 열(colum..
IT/ASIC | FPGA 2024. 10. 25.
반도체 기초 - ASCII database db 파일
반도체 메모리 모델에서 ASCII 데이터베이스를 활용하는 예제는 Liberty 파일이나 타이밍 모델 파일에서 흔히 볼 수 있습니다. 여기서는 간단한 예제를 통해 어떻게 ASCII 형식으로 데이터를 저장하고 사용하는지 보여드리겠습니다.예제 1: 간단한 메모리 타이밍 모델 (Liberty File)library(memory_model) { cell(memory_cell) { area : 1.2; pin (CLK) { direction : input; capacitance : 0.05; } pin (Q) { direction : output; function : "D"; ..