IT/Software 2024. 6. 18.
Marp for VS Code - 커스텀 테마 경로 설정
테마를 만들어도 어디를 경로를 넣어야 하는지 몰라서 못쓴다. 키워드는 VSCode 의 Workspace 설정을 건드려야 한다는 것이었다. Hit F1 and run "Preferences: Open Workspace Settings" 원본 글 : https://github.com/orgs/marp-team/discussions/115#discussioncomment-759004 How to create a theme? · marp-team · Discussion #115I want to create a theme, but after I read the documentation, it's still not clear how to create a theme and use it. Can you give me ..
IT/파이썬 2024. 6. 14.
Pandas - nan 아닌 값이 나오는 위치 찾기
Pandas에서 데이터프레임이나 시리즈 내에서 앞쪽의 NaN 값의 개수를 파악하려면 first_valid_index() 메소드를 사용할 수 있습니다. 이 메소드는 시리즈나 데이터프레임의 컬럼에서 처음으로 유효한 값(즉, NaN이 아닌 값)이 나타나는 위치를 반환합니다. 이를 활용하여 앞쪽에 위치한 NaN의 개수를 계산할 수 있습니다.예제 코드아래 예제는 Pandas 시리즈에서 앞쪽의 NaN 개수를 찾는 방법을 보여줍니다.import pandas as pdimport numpy as np# 예제 데이터 생성data = [np.nan, np.nan, np.nan, 15, 14]series = pd.Series(data)# 첫 번째 유효한 데이터의 인덱스 찾기first_valid_index = series.f..
IT/파이썬 2024. 6. 13.
python-docx - Paragraph 와 Run 이 왜 필요한가?
Paragraph 와 Run 이 왜 필요한가? 계속 궁금했는데, 머 별 내용은 없음 개념적으로 한 문단에서도 다른 스타일을 적용할 수 있고, 하니깐 로직적으로 다른 개념이 필요한듯스타일 바꿀때 마다 문단을 계속 만들수는 없으니깐... python-docx 라이브러리에서 paragraph와 run은 문서 내 텍스트의 구조와 서식을 세밀하게 조절하기 위해 사용됩니다. 이 두 개념이 필요한 이유는 다음과 같습니다:텍스트 구조와 서식의 분리:Paragraph: 문단을 나타내며, 문단 내의 텍스트를 포함합니다. 문단은 주로 한 줄 이상을 가지며, 문단 간의 서식 (예: 단락 간격, 들여쓰기 등)을 설정할 수 있습니다.Run: 문단 내에서의 연속된 텍스트 조각을 나타내며, 특정 서식 (예: 굵게, 기울임, 글꼴, ..
IT/파이썬 2024. 6. 12.
python-docx - tcPr 옵션을 이용해 cell margin 없애기
는 Microsoft Word의 DOCX 파일 형식에서 테이블 셀의 속성을 정의하는 XML 요소입니다. DOCX 파일은 실제로 ZIP 파일 형식으로 압축된 여러 XML 파일로 구성되어 있으며, 이 XML 파일들에서 문서의 내용을 설명합니다.는 "Table Cell Properties"의 약자로, 특정 테이블 셀의 속성을 지정합니다. 이 요소 내에서 다양한 속성을 설정하여 셀의 모양과 동작을 제어할 수 있습니다. 여기에는 셀의 너비, 높이, 테두리 스타일, 셀 병합, 셀 내 텍스트의 방향 등이 포함될 수 있습니다.예를 들어, 다음과 같은 XML 구조에서 요소를 볼 수 있습니다: Cell content 여기서 는 테이블 셀을 나타내고, 그 안의 요..
IT/파이썬 2024. 6. 11.
python-docx - 하이퍼링크 스타일 살리기
Microsoft Word 문서에서 python-docx를 사용하여 테이블의 셀에 하이퍼링크를 추가하는 것은 직접적으로 지원되지 않습니다. 그러나 테이블 셀 내의 문단에 하이퍼링크를 추가하여 비슷한 효과를 낼 수 있습니다. 즉, 셀 안에 문단을 만들고, 그 문단에 하이퍼링크를 추가하는 방법으로 구현할 수 있습니다. 특히 파란색에 밑줄 긋는게 왜이렇게 힘든것인지? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 되는 코드를 싹 적어뒀습니다. 아래는 테이블 셀 내에 하이퍼링크를 추가하는 방법을 보여주는 코드 예시입니다. 이 예시에서는 셀 내의 문단에 하이퍼링크를 추가하고, 해당 하이퍼링크가 문서 내 다른 북마크로 이동하도록 설정합니다.예제: 테이블 셀에 하이퍼링크 추가from docx import Documentfrom docx..
IT/파이썬 2024. 6. 11.
python-docx - 테이블 셀에 단락 서식 적용하기
python-docx 라이브러리에서 테이블 내의 모든 셀에 대해 일관된 단락 서식(예: 줄 간격, 들여쓰기 등)을 적용하는 것은 각 셀의 문단에 개별적으로 설정해야 합니다. python-docx는 테이블의 셀에 대해 공통적으로 서식을 적용할 수 있는 직접적인 방법을 제공하지 않으므로, 모든 셀을 순회하면서 필요한 서식을 설정하는 코드를 작성해야 합니다.아래는 테이블의 모든 셀에 대해 특정 단락 서식을 적용하는 예시입니다. 이 예제에서는 줄 간격과 들여쓰기를 설정합니다.예제: 테이블의 모든 셀에 단락 서식 적용from docx import Documentfrom docx.shared import Ptfrom docx.enum.text import WD_PARAGRAPH_ALIGNMENTdef apply_p..
IT/파이썬 2024. 6. 11.
python-docx - 특정 문단 이후에 문단, 테이블 추가하기
문서에 새로운 요소를 추가하고 참조 문단의 위치를 기억하는 과정을 처리하는 데 있어서, 여러 요소를 일관되게 다룰 수 있도록 코드를 개선하는 것은 중요합니다. 여기에서는 문단과 테이블을 효과적으로 관리하면서 마지막으로 추가된 요소의 위치를 추적하는 방법을 제시하겠습니다.코드 개선 방향insert_paragraph_after 함수는 그 이름과 달리 테이블도 처리할 수 있도록 일반화되어야 합니다. 함수 이름을 insert_element_after로 변경하고, 다양한 요소들을 처리할 수 있도록 수정합니다.함수 내에서 마지막으로 추가된 요소의 타입(문단 또는 테이블)에 따라 상태를 관리할 수 있도록 코드를 수정합니다.개선된 함수def insert_element_after(self, new_element, ref..
IT/Software 2024. 6. 4.
Makefile 의 대입 연산자 - ?= vs =
Makefile에서 ?= 연산자와 = 연산자는 다르게 동작합니다.= 연산자단순 할당 연산자로, 변수를 정의하고 값을 할당합니다. 예를 들어:SIM = icarus이 코드는 항상 SIM 변수를 icarus로 설정합니다.?= 연산자조건부 할당 연산자로, 변수가 이미 정의되지 않았을 때만 값을 할당합니다. 예를 들어:SIM ?= icarus이 코드는 SIM 변수가 아직 정의되지 않았을 때에만 icarus 값을 할당합니다. 만약 SIM 변수가 이미 다른 값으로 설정되어 있다면, ?= 연산자는 아무런 동작도 하지 않습니다.예시다음 예시를 통해 =와 ?=의 차이를 명확히 이해할 수 있습니다:# 예시 Makefile# SIM이 이미 정의되어 있다면, ?=는 아무 동작도 하지 않습니다.SIM ?= icarusall: ..
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..