IT/파이썬 2024. 10. 4.
디렉토리, 파일 목록 가져오기 - dir, ls, glob
파이썬으로 파일을 다루려면 파일 리스트를 통해 파일을 하나씩 가져오는 기능이 필수적이다. 이럴때 사용되는 라이브러리가 히glob 이다. 간단한 예제를 보면 쉽게 이해할 수 있다. https://wikidocs.net/83 6.3 파일을 입맛대로(pickle, glob, os.path)파일을 입맛대로 요리할 수 있도록 여러 가지 비법을 전수해 드리지요. ## pickle 먼저 조금 복잡한 자료를 파일에 쓰고 읽는 방법부터 알아봅시다. 이럴 때는 `pick…wikidocs.net다음은 glob과 함께 os.path 모듈을 사용한 예제입니다.from glob import globfrom os.path import isdirfor x in glob('*'): if isdir(x): ..
IT/파이썬 2024. 10. 4.
문자열 표현시 r'' 의 비밀
r"C:/DIR" 이런 문자열을 본적이 있다. r은 무엇일까? 원시 문자열(Raw String)원시 문자열은 백슬래시를 해석하지 않는 문자열 리터럴이다. 소문자 "r"을 앞에 붙여 원시 문자열임을 나타낸다.>>> rs = r'c:\newdata\test' # 원시(백슬래시를 해석하지 않음)>>> rs'c:\\newdata\\test'문자열은 입력한 그대로의 리터럴 텍스트다. 백슬래시가 특별히 중요할 때 이것을 사용하면 편리하다. 예: 파일명, 정규 표현식(regular expression) 등
IT/파이썬 2024. 10. 4.
파일 경로 정리하기 - \, /, ./, .. 문자열 처리 등
os.path.normpath(path) 를 이용해서 파일 처리를 하자.그럼 왠만한 경로는 일단 정제가 된다. os.path.normpath(path)중복된 구분자와 상위 수준 참조를 접어 경로명을 정규화합니다. 그래서 A//B, A/B/, A/./B 및 A/foo/../B가 모두 A/B가 됩니다. 이 문자열 조작은 심볼릭 링크가 포함된 경로의 의미를 변경할 수 있습니다. 윈도우에서는, 슬래시를 역 슬래시로 변환합니다. 대소 문자를 정규화하려면, normcase()를 사용하십시오.버전 3.6에서 변경: 경로류 객체를 받아들입니다. https://yeo0.github.io/pg/2018/11/21/%ED%8C%8C%EC%9D%B4%EC%8D%AC-os.path-%EB%AA%A8%EB%93%88/path에..
IT/ASIC | FPGA 2024. 9. 20.
DC 합성시에 로직 그대로 두기 - preserve 방법, 최적화 방지
합성시에 set_dont_touch 옵션을 주자. 아래처럼. set_dont_touch [get_cells -hierarchical *dont_touch_*] 그리고는, 디자인 할때 dont_touch 가 들어간 모듈명, 인스턴스 명을 만들면 저절로 유지가 된다.아래 예제 처럼.SDFCNQD4 dont_touch_sync_flop0 ( .SI(1'b0), .SE(1'b0), .CP(clkdst), .CDN(resetb_in), .D(1'b1), .Q(resetb_dly[0])); 이 모든 자료는 여기에서 참고했으니 꼭 원본글로 방문해 보시길.How to preserve hand-instantiated cells | KNOW-HOW (raytroop.github.io) Ho..
IT/ASIC | FPGA 2024. 9. 12.
tcl - foreach를 이용하여 리스트 요소 제거하기
foreach를 사용하여 리스트에서 특정 요소들을 하나씩 체크하면서 제거하는 방식은 다음과 같습니다:# 원래 클록 그룹 리스트set sync_clock_group {clk1 clk2 clk3}set elements_to_remove {clk2 clk3}# 새 리스트 생성set modified_clock_group {}# 리스트를 순회하며 요소를 제거foreach clk $sync_clock_group { if { [lsearch $elements_to_remove $clk] == -1 } { lappend modified_clock_group $clk }}# 결과 출력puts "Modified clock group: $modified_clock_group"설명:foreach clk..
IT/ASIC | FPGA 2024. 9. 12.
tcl - 리스트 확장 기능으로 리스트 요소 제거하기
{*}$elements_to_remove는 Tcl에서 리스트 확장(list expansion) 기능을 활용한 표현입니다. 이는 Tcl 8.5 이상에서 지원되며, 리스트의 요소들을 개별적인 인자로 분리해서 처리하고자 할 때 사용됩니다.구체적인 설명:$elements_to_remove: 이 변수는 리스트를 담고 있습니다. 예를 들어, 리스트 {clk2 clk3}가 들어 있습니다.{*}: 이 연산자는 리스트 확장(list expansion)을 의미합니다. 리스트 안에 있는 각 요소를 개별적인 인자로 확장하는 역할을 합니다.리스트 확장({*})의 역할:보통 Tcl에서 리스트는 하나의 단일 인자로 처리됩니다. 하지만 특정 상황에서는 리스트 내의 각각의 요소를 개별 인자로 넘기고 싶을 때가 있습니다. 그런 경우에 ..
IT/ASIC | FPGA 2024. 9. 4.
RTL 파일리스트 만들기 - find 활용
특정 디렉토리 아래에 있는 RTL 파일들의 리스트를 만들때, 아래 구문을 활용해 보세요.편리하게 쫙 나열됩니다. 일단 전체를 만든다음 이후에 필요없는 파일은 정리하면 되겠죠find RTL -type f -regex ".*\.\(v\|sv\|vh\)" > file_list.f 이 명령어는 최종적으로 .v, .sv, .vh 파일을 모두 한 번에 찾을 수 있는 간결한 방식입니다. -regex를 사용하여 파일 확장자들을 묶어서 처리하므로, 더욱 깔끔하고 효율적입니다. 결과는 이렇게 나오겠죠.RTL/module1/design.vRTL/module1/testbench.svRTL/module2/include.vhRTL/module3/submodule/design.svRTL/module3/submodule/defs.v..
IT/리눅스 2024. 8. 28.
vi - gf 로 파일열기시 환경변수 있어도 가능하게
vi에서 'gf'를 치면 cursor가 가리키고 있는 file로 jump를 하게된다.이 기능은 보통 debugging시 log 파일에서 error 또는 warning message가 떴을 때 사용하게 된다.https://sunshowers.tistory.com/80 문제점은 이러한 gf이 기능을 쓸 때, 대상 파일 경로 안에 ${project_name}과 같이환경 변수(environment variable)이 포함되어 있으면 사용할 수 없다는 점이다. 이런 메세지에서 gf를 쓰면vi는 '${project_name}/temp.txt' 라는 file을 찾을 수 없다고 message를 띄운다. 이러한 문제점은 .vimrc에서 file이름 구분법을 설정함으로써 해결할 수 있다. set isfname+=$,{,}..
IT/리눅스 2024. 8. 28.
윈도우에서 리눅스로 파일 이동시 ^M 문자 제거 방법
텍스트 파일에 포함된 도스 스타일의 줄 끝 문자(^M, 즉 carriage return, \r)를 제거하려면 여러 가지 방법을 사용할 수 있습니다. 주로 이 문제는 Windows에서 작성된 파일을 Unix/Linux 시스템에서 열 때 발생합니다. Unix/Linux는 줄 끝을 나타내는 데 개행 문자(\n)만 사용하지만, Windows는 carriage return과 개행(\r\n)을 함께 사용하기 때문입니다.다음은 ^M 문자를 제거하는 방법들입니다:1. dos2unix 명령어 사용가장 간단한 방법은 dos2unix 유틸리티를 사용하는 것입니다. 이 도구는 파일에서 Windows 스타일의 줄 끝을 Unix 스타일로 변환해줍니다.dos2unix filenamefilename: 변환할 파일의 이름입니다.이 명..
IT/Git, GitHub 2024. 8. 23.
.gitignore 작성시 패턴 입력 예제
.gitignore 파일에서 특정 패턴을 포함하는 여러 디렉토리와 파일을 간단하게 무시하려면 와일드카드(*)와 재귀 패턴(**)을 사용할 수 있습니다. 주어진 디렉토리 구조에서 공통된 패턴을 활용하여 다음과 같이 .gitignore 파일을 작성할 수 있습니다:SYN/**/reportsSYN/**/netlistSYN/**/work이렇게 하면 SYN 아래에 있는 모든 서브디렉토리에서 reports, netlist, work 디렉토리가 무시됩니다. 이 규칙은 SYN 디렉토리 내의 모든 하위 경로에 대해 적용되므로, 예를 들어 SYN/CPU/reports뿐만 아니라 SYN/SAFE/reports도 무시됩니다. 만약 특정 디렉토리에만 적용되도록 하려면 경로를 더 구체적으로 작성해야 합니다. 하지만 위의 방식으로 ..
IT/ASIC | FPGA 2024. 8. 19.
Verilog-mode - Lisp 함수 예약어 (vl-width, vl-dir, ...)
앞서 사용한 vl-width 같이 미리 지정된 함수 예약어 리스트만 따로 쭉 뽑아 봤다. 물론 홈페이지에 다 있지만, 찾을 때 편리하게 :) There are special variables defined that are useful in these Lisp functions: vl-name Name portion of the input/output port. vl-bits Bus bits portion of the input/output port (`[2:0]'). vl-mbits Multidimensional array bits for port (`[2:0][3:0]'). vl-width Width of ..
IT/ASIC | FPGA 2024. 8. 19.
Verilog-mode - 안쓰는 output port 처리
그냥 비워둬도 되지만, unused__module__시그널명 이런형태로 변수를 만들어 두고 싶다면, 아래와 같이 지정하면 된다. How do I use AUTOINST to tie off unused ports?Configure your lint program to ignore signals with a certain naming, such as those with unused in the name, then use AUTO_TEMPLATE to make a unique name for each port./* InstModule AUTO_TEMPLATE ( .out_signal (unused__@"vl-cell-name"__@"vl-name"[]), // [] is dropped for sin..