IT/ASIC | FPGA 2024. 10. 25.
반도체 기초 - nominal, 코너, 조건관련 용어
다른 조건을 표현할 때는 보통 온도, 전압, 공정 변동 등을 기준으로 다양한 코너 (corner) 조건을 설정하여 사용합니다. 주로 쓰이는 조건 표현법은 다음과 같습니다: rc nominal에서 nominal은 특정 조건하에서의 대표적인, 즉 기준 또는 표준 조건을 나타냅니다. 일반적으로 반도체 설계에서 nominal은 온도, 전압, 공정 등의 변수가 일반적인 (대표적인) 상태일 때의 시뮬레이션을 의미합니다. 이를 통해 일반적인 동작 특성을 평가하게 됩니다.rc nominal의 경우, 저항 (R)과 캐패시턴스 (C) 값이 이 표준 조건에 맞춰진 값으로 설정되어 있어, 설계가 기대한 성능대로 동작하는지 확인하기 위해 사용됩니다. Process Corners: 제조 공정의 변동에 따른 조건을 설정하는 것으로..
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 ..