전체 글 75

Verilog: Icarus Verilog, GTKwave

하드웨어 프런트엔드 (Hardware frontend) 설계를 위해서는 HDL 시뮬레이터와 합성 툴이 필요하다. C나 C++, Python과 같은 SW 들은 무료로 사용할 수 있는 Visual Studio, GCC와 같은 컴파일러들이 있지만, 하드웨어 설계 분야는 거의 대부분이 유료의 상용 소프트웨어들이고, 개인이 구매하기엔 소프트웨어 가격이 매우 높다. 주로 사용되는 상용 툴로는 Synopsys사의 VCS, Cadence사의 NCS, Mentor사의 Questa, Modelsim 등이 있다. Doulos가 운영하는 EDA Playground는 회원가입을 하면, Cadence, Synopsys, Mentor의 상용 시뮬레이터를 무료로 사용해 볼 수 있다. 또한, 디자인이 작거나, 약간의 불편함을 감수한다..

Verilog: timescale, delay

timescale timescale은 컴파일러 지시자 중 하나로서, 컴파일러 지시자는 backward quite(`)으로 시작한다 timescale은 합성과 상관없이, 회로를 테스트하기 위한 시뮬레이션에만 영향을 준다. timescale은 시뮬레이션시 기본적인 시간 단위를 결정하는데, 아래와 같이 설정하는경우, 기본 시뮬레이션 단위인 time unit은 1 ns이고, time precision은 1 ps 가 된다. // usage: `timescale [time unit]/[time precision] `timescale 1ns/1ps timescale 관련하여 몇가지 유용한 시스템 함수들을 알아보면, 시스템 함수인 $printtimescale은 time unit과 time precision을 출력할 수..

makefile 사용시 유용한 팁들!

GNU make는 코드를 컴파일하기 위해 만들어진 유틸리티지만, 현재는 많은 파일들과 디렉토리들에서 변경사항을 적용하기 위한 용도로도 많이 사용된다. 따라서, 현재는 개발자 뿐만 아니라, 시스템 관리자에게도 매우 유용한 툴이다. make를 사용하려면 설정 파일이 필요한데, 이 설정 파일이름이 보통 makefile이다. 아무 인자없이 make를 실행하면, GNU make는 현재 작업 디렉토리에서 설정파일 GNUmakefile, Makefile, makefile을 찾는다. 만약 설정 파일에 다른 이름을 사용하고자 한다면 make -f filename을 사용해야 한다. 본 자료는 makefile을 사용할 때 혼동되거나, 자주 사용되는 구문들을 정리해보았다. 오늘 포함할 내용들은 아래와 같다. 변수 선언: =,..

SW 설계/make 2021.10.12

스칼라: Mixins

오늘은 Scala Mixin에 대한 내용을 소개해보려고 합니다. Mixin은 클래스들을 합치는 데 사용되는 trait (속성) 으로서, DRY 한 Scala언어가 되는데 크게 일조하고 있습니다. 소개 가장 쉽게, 혹은 흔하게 사용하는 mixin방법은 4 단계로 진행됩니다. Step 1: 가장 먼저 super class A를 abstract class로 선언합니다. Step 2: 이를 상속한 하위 클래스 B를 일반 클래스로 정의합니다. 이를 위해 부모 클래스인 abstract class에서 선언한 abstract형들을 명시합니다. Step 3: Super class A에 대한 method들을 포함하는 trait C를 정의합니다. Step 4: 최종적으로 사용할 일반 클래스 D는 일반 클래스 B를 상속하고,..

SW 설계/스칼라 2021.10.09

git 커밋: 특정 커밋 돌아가기, 되돌리기, 차이 확인하기, 날짜 바꾸기, 이슈처리

저장소 (Repository) git 은 변경 이력을 관리하는 툴로서, 저장소(Repository)를 사용하여 변경 이력을 관리합니다. 파일들이 변경 이력별로 저장되는데, 두 개의 저장소로 구분되어 저장됩니다. 하나는 원격 저장소 (Remote Repository)로서, 여러 사람이 함께 공유하기 위한 저장소입니다. 다른 하나는 지역 저장소 (Local Repository)로서, 개인 전용입니다. 일반적으로, 개인의 로컬 저장소에서 작업하다가, 공개하고 싶을때 원격 저장소에 업로드하게 됩니다. git commit 명령은 변경 이력이 기록된 인덱스를 로컬 저장소에 저장할 때 사용하고, git push 명령은 로컬 저장소에 저장된 변경 이력을 원격 저장소로 올릴 때 사용합니다. 반대로 git pull 명령은..

작업 tools/git 2021.10.08

git 서브모듈: 추가하기, 변경하기,삭제하기

서브 모듈 추가하기 아래와 같은 2개의 별개 코드를 포함한 프로젝트를 생성하고자 할 경우, shot 프로젝트 stick 코드 band 코드 다른 저장소에 있는paper이라는 프로젝트를 shot 저장소에 서브모듈로 추가하려고 할 경우, 아래와 같이 git submodule add [path]을 사용하여 submodule을 add하면 됩니다. git submodule add https://github.com//paper paper git status를 확인해보면, .gitmodule과 paper폴더가 추가된 것을 확인할 수 있고, .gitmodule 에는 git에서 관리되는 서브모듈에 정보가 들어있고, 아래 내용이 추가됩니다. [submodule "paper"] path = paper url = https:..

작업 tools/git 2021.09.26

git 저장소: 복제하기, 합치기, 변경하기

로컬 저장소 복제하기 git 을 통해 작업하다가 보면, 원격 저장소를 간단하기 관리 하기 위해, 모든 브랜치들의 작업 내역들을 원격 저장소에 저장하지 않고 로컬 저장소에만 저장해서 진행하는 경우가 많습니다. 어떠한 사유로 인해, 로컬 저장소를 내용을 현재까지로 유지한 채, 다른 폴더에서 새롭게 다시 시작하고자 하는 경우에는 원격 저장소에 저장하지 않은 로컬 저장소의 작업 내역까지 복제해야 합니다. 이 경우, 모든 작업내역까지 포함해 복제하는 방법은 새롭게 시작할 원격 저장소를 만들고, mirror 옵션을 사용해 push할 수 있습니다. git remote set-url --push origin git remote -v git push --mirror 예 아래 예에서 https://github.com/te..

작업 tools/git 2021.09.26

git 브랜치: 가져오기, 합치기, 삭제하기

이번에는 git의 브랜치 관련 명령들을 알아보겠습니다. 브랜치는 동일한 소스를 기반에서 다양한 버전을 만들어 낼 수 있는 기능으로, 여러 사람이 동시에 작업을 하거나, 조금씩 다른 버전을 만들어 테스트할 때 매우 유용한 기능입니다. 원격 브랜치 가져오기 원격 저장소의 branch를 로컬 저장소로 가져와야 하는 경우, 원격 저장소를 clone하던지, pull하면 원격 저장소의 branch도 받아질 것 같지만, master 브랜치 하나만 존재합니다. 따라서, 원격 저장소의 특정 branch를 가져오기 위해서는 git checkout -t를 사용해야 합니다. 원격 저장소 갱신 먼저 원격 저장소의 브랜치에 접근하기 위해 원격 저장소를 갱신해줍니다. git remote update 원격 저장소 branch 확인 ..

작업 tools/git 2021.09.26

스칼라: Sealed, Final, Option, Try 클래스

Sealed sealed가 붙은 class는 선언된 파일 안에서만 상속이 가능합니다. sealed 의 자식은 sealed 가 아니므로, 주로 final 과 함께 사용됩니다. sealed의 한 예로, Option은 Some, None의 두 개의 자식이 존재하고, Try는 Success와 Failure의 두개의 자식이 존재합니다. 둘은, sealed로 선언되어 있으므로, 같은 파일 내에서 선언한 Some, None과 Success, Failure만 Option과 Try의 자식이 될 수 있습니다. 또한 이들은 상속할 수 없는 final case class나 object로 선언하여 추가 상속을 막고 있습니다. sealed abstract class Option[+A] extends Product with Ser..

SW 설계/스칼라 2021.09.25

티스토리 검색 최적화, 블랙 키위 사용방법

수익형 블로그는 많은 방문자를 만들어 광고에 많이 노출시켜, 광고를 클릭하게 만드는게 목적입니다. 그럼, 많은 방문자를 만들기 위한 키워드의 기준을 생각해봐야 합니다. 검색량: 해당 키워드를 얼마나 많은 사람들이 검색하는가? 경쟁력: 키워드와 관련된 웹페이지들이 많은가? 꾸준함: 지속적으로 찾는 키워드인가? 블랙키위는 네이버 데이터를 기반으로 키워드를 분석해주는 무료 키워드 분석 사이트입니다. 따라서, 구글이나 다음에서 최적화된 키워드라고 보긴 어렵습니다. 티스토리 블로그의 경우, 네이버 블로그가 아닌 웹사이트에 노출이 됩니다. https://blackkiwi.net/ 블랙키위 - 키워드 검색량 조회, 분석 특정 키워드가 얼마나 검색되는지 알아보세요. blackkiwi.net 블랙 키위는 상당히 많은 데..

티스토리 2021.09.25