IT/ASIC | FPGA 2024. 12. 18.
WaveDrom - waveform 그리는 스마트 툴
WaveDrom: 웨이브폼을 그리는 스마트 툴디지털 시스템을 설계하거나 프로토콜을 다룰 때, 웨이브폼은 신호의 타이밍과 동작을 표현하는 데 중요한 역할을 합니다. 디버깅이나 문서화를 하더라도 명확한 웨이브폼은 큰 차이를 만들어냅니다. 하지만 이걸 수작업으로 그리는 건? 시간도 많이 걸리고, 실수할 가능성도 큽니다.이런 문제를 해결할 수 있는 스마트한 도구가 바로 WaveDrom입니다.WaveDrom이란?WaveDrom은 텍스트 기반으로 간단히 웨이브폼을 그릴 수 있는 오픈소스 도구입니다. JSON 형식으로 신호를 정의하면, WaveDrom이 이를 자동으로 시각화해줍니다. 사용자는 복잡한 그래픽 툴에 의존할 필요 없이, 간단히 코드 몇 줄로 정확하고 깔끔한 웨이브폼을 생성할 수 있습니다.WaveDrom의 ..
IT/파이썬 2024. 12. 16.
Microsoft MarkItDown - 파일 및 오피스 문서를 Markdown으로 변환
살짝 돌려봤는데 잘되네.원하는 파일명 쓰고, 저장해서 활용해 보세요. GitHub - microsoft/markitdown: Python tool for converting files and office documents to Markdown. GitHub - microsoft/markitdown: Python tool for converting files and office documents to Markdown.Python tool for converting files and office documents to Markdown. - microsoft/markitdowngithub.com 간단하게 아래와 같이 install 하고 사용하면 됨.pip install markitdown 파일로 저장하기 예제..
IT/리눅스 2024. 12. 5.
특정 이름의 폴더만 빼고 복사 하고 싶을 때 - rsync
find와 cp 명령어를 조합해서 특정 폴더를 제외하고 원본 디렉터리 구조의 일부만 유지하려면 --parents 옵션 대신 rsync 또는 find와 함께 상대 경로를 활용해야 합니다.방법 1: rsync 사용rsync는 기본적으로 디렉터리 구조를 유지하며 복사를 수행하므로 가장 간단한 방법입니다.rsync -av --exclude='csrc' --exclude='simv.daidir' /home/RTL/ ./RTL/옵션 설명:-a: 원본 파일의 권한과 시간 정보를 유지.-v: 진행 상황을 출력.--exclude='csrc': 이름이 csrc인 폴더 제외.--exclude='simv.daidir': 이름이 simv.daidir인 폴더 제외./home/RTL/: 원본 디렉터리../RTL/: 현재 경로에 R..
IT/리눅스 2024. 11. 28.
현재 Shell 정보 확인하기
현재 bash 인지 csh 인지 자꾸 헷갈리네. 현재 쉘 정보를 보고 싶다면, 아래 3가지 방법으로 /home> echo $SHELL /bin/csh/home> echo $0csh/home> ps PID TTY TIME CMD 5150 pts/397 00:00:00 csh17956 pts/397 00:00:00 ps https://hianna.tistory.com/870 [Linux] 현재 Shell 확인하기Linux에서 현재 이용중인 Shell을 확인하는 방법은 여러 가지가 있다. 그 중 몇가지를 정리해보았다. 1. echo $SHELL $SHELL 변수는 default shell에 대한 정보를 가지고 있다. 2. echo $0 이 명령어는 현재 실행hianna.tistor..
IT/Software 2024. 11. 26.
리그레션 테스트 - Regression test 의미
리그레션이라는 단어가 들려서 조사해본다. 그냥 이전 테스트 작업을 다시 하면서 꼭 리그레션 테스트라고 얘기들 하는 것 같아서 자세한 의미를 찾아봤다. 퇴행 퇴보의 의미는 아닌것이겠지...당연히반대말은 progression 이네 ^^; ‘리그레션 테스트’를 정의소프트웨어의 개선(Progression) 을 보증하기 위해서는 테스트 대상이 ‘퇴보(Regression) 하지 않음’ 을 확인 할 필요가 있고, 그 목적에 따라 수행하는 테스트가 바로 리그레션 테스트 입니다. 리그레션 여부를 점검하는것이죠!https://kyhwan91.medium.com/regression-test%EB%8A%94-%EC%99%9C-regression-%EC%9D%B4%EC%A7%80-%ED%9A%8C%EA%B7%80-%ED%87%..
IT/Software 2024. 11. 22.
Makefile - 쉘 조건문 내에서 make 다른 타겟 호출 방법
쉘 조건문 내에서 $(if $(findstring gzip,$(MAKECMDGOALS)),gzip_step)처럼 다른 타겟을 호출하는 것은 직접적으로는 불가능합니다. 쉘 조건문([ -n "" ])은 Makefile의 실행 단계에서 동작하며, 이 단계에서는 Makefile 자체의 타겟 호출(예: make target)을 수행할 수 없습니다. 하지만 우회 방법을 통해 쉘 조건문을 사용해 다른 타겟을 호출하는 효과를 낼 수 있습니다.우회 방법 1: $(MAKE)를 사용한 재귀 호출$(MAKE) 변수는 현재 실행 중인 make 명령을 나타냅니다. 이를 활용해 쉘 조건문 내부에서 다른 타겟을 호출할 수 있습니다.예제cdc_quick: @echo "Running cdc_quick..." @[ "$(fin..
IT/Software 2024. 11. 22.
Makefile - -@[ -n "$(wildcard reports/*)" ]의 상세 설명
이 코드는 Makefile에서 디렉토리 내 파일이 존재하는지 확인하기 위해 사용되는 구문입니다. 이를 세부적으로 나누어 설명하겠습니다.1. 구문 전체-@[ -n "$(wildcard reports/*)" ]구성 요소:-@: -: 명령어 실행 중 오류가 발생해도 Makefile 실행을 중단하지 않도록 설정.@: 해당 명령어를 터미널에 출력하지 않음.[ -n "$(wildcard reports/*)" ]:[와 ]: 조건식을 작성하는 데 사용되는 POSIX 표준 구문.-n: 문자열이 비어 있지 않음을 확인하는 테스트 옵션.$(wildcard reports/*): reports/ 디렉토리에서 파일 목록을 가져오는 Makefile 함수.2. $(wildcard reports/*)설명:Makefile의 wildca..
IT/Software 2024. 11. 22.
Makefile - `gzip`을 유연하게 다루는 방법: `@`와 `-` 옵션의 역할
Makefile은 빌드 자동화를 위한 강력한 도구이며, gzip 같은 명령을 포함할 때도 유용하게 사용할 수 있습니다. 하지만 명령어 실행 중 오류가 발생하거나, 실행 로그를 깔끔하게 관리해야 할 때 어떻게 처리해야 할까요? 이 글에서는 Makefile에서 @와 - 옵션을 활용해 gzip 명령을 유연하고 깔끔하게 다루는 방법을 소개합니다.1. gzip 명령어와 Makefile 기본 구성아래는 Makefile에서 특정 디렉토리(reports와 logs)의 파일을 압축하는 예제입니다:gzip_step: @echo "Running gzip_step..." -@\gzip -f reports/* -@\gzip -f logs/*이 간단한 코드로 두 가지 작업을 수행합니다:reports와 logs 디..
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클럭 도메인 그룹서로 다..