전체 글 92

Glitch free selection in Clock Mux

Clock Mux의 sel 신호에 Glitch 발생 시 문제점 및 해결 방법Clock Mux(clk_mux)는 두 개 이상의 클럭 신호 중 하나를 선택하는 역할을 합니다. 그러나 sel 신호에 글리치(Glitch)가 발생하면 예기치 않은 클럭 전환, 메타스테빌리티, 타이밍 위반 등의 문제가 발생할 수 있습니다.문제점 (Issues)1. Glitch로 인한 짧은 Clock Pulse 발생sel 신호가 글리치로 인해 빠르게 변하면, Clock Mux의 출력이 순간적으로 잘못된 클럭을 선택할 수 있습니다.이로 인해 짧은 클럭 펄스(Glitch Clock Pulse)가 생성되어, 플립플롭(FF)이 비정상적인 동작을 하거나 타이밍 위반을 유발할 수 있습니다.2. Metastability (메타스테빌리티)sel 신..

Glitch free enable for clock gating

Clock Gating Cell의 Enable이 Glitch하면 발생하는 문제점Clock Gating Cell의 enable 신호에 글리치(Glitch)가 발생하면 심각한 타이밍 문제와 기능적 오류가 발생할 수 있습니다.주요 문제점1. Clock Glitch (잘못된 클럭 펄스)enable 신호가 글리치가 발생하면, 의도하지 않은 짧은 클럭 펄스가 생성될 수 있습니다.이러한 펄스가 플립플롭(FF)으로 전달되면, 데이터 손실 또는 타이밍 위반을 유발할 수 있습니다.2. Metastability & Setup/Hold Time Violationenable 신호가 비동기 신호이거나 클럭 엣지와 정확히 정렬되지 않으면, 클럭 게이팅 셀 내부의 래치가 메타스테이블(Metastable) 상태에 빠질 수 있습니다.결..

특정 커밋 되돌리기

Git에서 특정 커밋만 되돌리는 방법은 git revert 명령어를 사용하면 됩니다. 이 방법은 되돌리고 싶은 커밋의 변경 사항을 무효화하는 새로운 커밋을 생성하므로, 기존의 Git 기록은 유지되고, 협업 중인 동료들에게도 변경 사항이 명확히 전달됩니다.방법 1: 특정 커밋 되돌리기 (Revert)커밋 로그 확인예:a1b2c3d Fix bug in login logicf4e5d6c Add new feature789abcd Update READMEgit log --oneline되돌리고 싶은 커밋의 해시 값 확인위 로그에서 되돌리고 싶은 커밋의 해시 값을 복사합니다. 예: f4e5d6c.git revert 명령 실행예:이 명령은 해당 커밋의 변경 사항을 되돌리는 새로운 커밋을 생성합니다.git revert ..

작업 tools/git 2025.01.16

Verilog/Systemverilog에서 real 과 integer 간 형변환

Verilog에서 real과 integer 형 변환Verilog는 SystemVerilog와 달리 형 변환 연산자가 없기 때문에, Verilog에서 real 타입과 integer 타입 간 변환은 명시적 할당을 통해 수행됩니다.1. real to integer 변환real 값을 integer로 변환할 때 소수점 이하 값이 잘립니다(버림).module real_to_integer; real real_value; integer int_value; initial begin real_value = 1.23; int_value = real_value; // 암시적 변환 $display("Real to Integer: %f -> %d", real_value, in..

git 특정 파일 커밋 로그 출력 방법

Git에서 특정 파일의 커밋 로그를 출력하려면 다음 명령을 사용합니다:git log -- 1. 기본 파일 로그 출력git log -- test.txt이 명령은 test.txt 파일의 변경 이력을 보여줍니다.2. 로그 출력 옵션Git 로그 출력에는 다양한 옵션을 추가하여 결과를 더 세부적으로 확인할 수 있습니다.커밋 이력 간략히 보기git log --oneline -- test.txt각 커밋을 한 줄로 간단히 출력.변경 내용 함께 보기git log -p -- test.txt파일의 각 커밋에서의 변경 내용을 함께 출력.특정 기간 동안의 로그git log --since="2024-01-01" --until="2024-12-31" -- test.txt특정 기간 동안 파일 변경 이력을 출력.파일 이름 변경 추적g..

작업 tools/git 2025.01.09

git commit 병합하기

git에서 여러 개의 커밋을 합치는 방법은 squash 또는 rebase를 사용하는 것입니다. 아래는 구체적인 단계별 방법입니다.방법 1: Merge Commit합치고자 하는 커밋들이 다른 브랜치에 있을 때는, 병합 커밋 (Merge Commit)을 사용할 수 있습니다:git merge --squash git commit -m "Combined commit from branch"방법 2: Git Interactive Rebase (git rebase -i)합치고자 하는 커밋이 현재 브랜치에 있을때는 rebase 와 squash 을 사용할 수 있습니다.기준 커밋 선택변경하려는 커밋 범위에서 기준 커밋을 선택합니다. 예를 들어, 마지막 3개의 커밋을 합치려면:git rebase -i HEAD~3Interac..

작업 tools/git 2025.01.08

매직라인과 쉐뱅

개요#!/usr/bin/env python3 과 같이 #!로 시작하는 magic line 혹은 shebang은 스크립트 파일의 첫 번째 줄에 표시하여, 스크립트를 실행할 때 어떤 인터프리터를 사용할지 명시하는 역할을 합니다. 매직 라인을 사용하면 코드의 이식성을 크게 높일 수 있는 장점이 있습니다.#!/usr/bin/env python3 를 예로 들어서 자세히 설명하겠습니다.1. 매직 라인 (Magic Line) or 쉐뱅(Shebang)의 역할쉐뱅은 스크립트 파일의 첫 번째 줄에 나타나며, 파일을 실행할 때 사용할 인터프리터를 지정합니다.형식:#!/경로/인터프리터#와 !로 시작하며, 이를 쉐뱅(shebang) 또는 매직 라인 (magic line)이라고 부릅니다.쉐뱅 라인이 없으면 파일을 실행할 때 사..

리눅스 2024.12.21

git을 사용하여 특정 commit 간 변경된 파일만 추출하기

Git을 사용하여 특정 커밋 간 변경된 파일만 추출하는 방법을 소개합니다.1. 변경 사항 목록 추출특정 커밋 간에 변경된 파일 목록을 텍스트 파일로 저장하려면 다음 명령어를 사용합니다:git diff --name-only [Start Commit] [End Commit] > [File Name].txt[Start Commit]: 시작 커밋 해시 (또는 HEAD^).[End Commit]: 끝나는 커밋 해시 (또는 HEAD).[File Name].txt: 변경된 파일 목록을 저장할 텍스트 파일 이름.예제:git diff --name-only HEAD^ HEAD > changes.txt결과:changes.txt 파일에 변경된 파일 이름이 라인 단위로 기록됩니다.2. 변경된 파일 추출 (압축 파일로 저장)변경..

작업 tools/git 2024.12.20

makefile에서 조건문과 변수할당 방법

이 Makefile의 코드에서 조건문과 변수 할당의 동작을 해석해보겠습니다:코드 설명ifeq (${ON},1) A = ON=1endififeq (${ON},1):변수 ON의 값이 1인지 비교합니다.ON이 1일 경우, 조건이 참이 되어 블록 내부의 코드가 실행됩니다.A = ON=1:조건이 참일 때 변수 A에 문자열 ON=1을 할당합니다. 여기서 주의할 점은 참조변수 ${ON} 이 아닌 ON이므로 문자열 ON=1이 들어간다.Makefile에서 변수의 값은 지연 평가되므로, 변수 할당은 조건이 참인 경우에만 발생합니다.상황별 동작ON = 1인 경우:변수 A는 문자열 ON=1을 가지게 됩니다.A = ON=1ON != 1 또는 정의되지 않은 경우:조건이 거짓이므로 A는 아무 값도 할당받지 않습니다.확인용 전..

SW 설계/make 2024.12.20