본문 바로가기

전체 글85

[verilog] system function list verilog에는 다양한 system function 들이 있습니다 그 중에서 주로 사용하는 function들을 정리합니다 $monitor : 신호의 값이 변할때 마다 출력 $display : 호출 될 때 마다 출력 $strobe : 같은 시간에 모든 할당문이 끝난 후에 출력 $time : 64bit simulation 시간 $stime : 32bit simulation 시간 $realtime : 현재의 시간을 실수로 리턴 $reset : simiulation time을 0으로 만듬 $stop : simulation을 잠시 멈추고, interactive mode로 변경 $finish : simulation 종료 $readmemb : 파일을 읽어서 메모리에 할당 $writememb : 메모리를 파일로 wr.. 2021. 2. 6.
[python] 정규표현식 사용 파이썬에서는 정규표현식을 지원하기 위해 re(regular expression라는 모듈을 지원합니다 1. 사용법 import re ptn = re.compile('정규표현식') detect_string = ptn.search("target_string").group() detect_string = ptn.match("target_string") detect_string = ptn.findall("target_string") 위와 같이 search 또는 match라는 방법으로 사용하면 된다 2. 메타문자 정규표현식에는 메타문자가 사용되는데 해당 방식을 찾기 위해서는 \을 앞에 써주어야 한다 메타 문자 설명 [] 문자열 클래스 - 문자열 범위 지정 . \n을 제외한 모든 문자와 match * 0회 이상 반복.. 2021. 2. 6.
[c++] #ifdef, #ifndef, #if, #elif 최근 C++를 다루게 되면서 코드를 보다보면 제목에 써있는 전처리기를 많이 보게 되어서 정리를 하려 합니다. 1. 설명 조건부 컴파일을 할 수 있는 지시어로 #ifdef는 코드 이전에 define이 되어 있었는지를 check, #ifndef는 코드 이전에 define이 되어있지 않는지를 check, #if는 일반 if~else문과 같지만 컴파일을 구분하여 돌릴수 있는 지시어 2. 사용 예시 #define DEBUG int main(){ #ifdef DEBUG print("defined\n"); #endif #ifndef DEBUG print("not defined\n"); #endif return 0; } 위와 같은 코드에서는 #ifndef 구문은 컴파일 조차 시도되지 않습니다 #ifdef, #ifnde.. 2021. 2. 6.
[systemverilog] enum 사용법 열거된 값의 집합을 정의하는 enum은 가질 수 있는 값을 알려주는 변수입니다. 1. 사용법 enum {RED, YELLOW, GREEN} light; // int type RED = 0, YELLOW = 1, GREEN = 2 위에서 light라는 값은 0, 1, 2라는 값을 RED, YELLOW, GREEN 이라는 표현을 통해 가질 수 있습니다. 다른 값을 할당을 하지는 못합니다 아래와 같이 default 값을 선언해줄수도 있습니다. enum {RED=3, YELLOW=9, GREEN} light; // int type RED = 3, YELLOW = 9, GREEN = 10 여기서 주의 할점은 default로 선언되지 않은 값은 이전값의 1을 더해주는 방식으로 할당이 되는데 아래와 같이 숫자가 중복.. 2021. 2. 2.
[linux] time 명령어 사용법(real, user, sys) linux환경에서 명령어 및 프로그램 수행에 대한 자세한 시간을 알려주는 명령어 입니다. 사용법은 사용하려는 명령어 앞에 time 만 붙여주면 됩니다. 1. 사용 화면 2. 설명 real : 총 수행 시간 user : cpu가 사용자 영역에서 보낸시간 sys : 시스템 호출 실행에 걸린 시간 2021. 2. 2.
[make] PHONY 사용법 makefile을 사용하는 방법은 터미널에서 아래와 같이 make target절을 입력하면 된다 하지만 아래와 같이 makefile을 작성하면 아래와 같은 문제가 발생한다 이유는 현재 디렉토리에 clean이라는 파일로 인해 target절로 선언되어있는 clean을 실행하지 못하게 된다 이럴 때 아래와 같이 선언하면 clean이라는 target은 무조건 실행이 가능하게 된다 2021. 2. 2.
[verilog] >>, >>>, <<, <<< 연산자 verilog에서 사용하는 shift 연산자는 크게 >>, >>, >> 2; //c == 5'b11101 d = a >>, 2021. 1. 31.
[verilog] generate 사용하기 RTL 설계하다보면 동일 block을 여러번 instance 할 경우가 생깁니다 이때 1~2개만 추가하는거면 모르겠지만 수십개를 추가하기에는 너무 효율이 좋지않아 gererate라는 keyword를 사용하여 설계를 한다고 합니다(저도 최근 공부하면서 알게됬네요) 참고한 사이트는 아래와 같습니다 www.chipverify.com/verilog/verilog-generate-block Verilog generate block A generate block allows to multiply module instances or perform conditional instantiation of any module. It provides the ability for the design to be built base.. 2021. 1. 31.
[systemverilog] automatic keyword 예전 블로그에서 automatic이 뭔지 몰라 정리를 했었던 적이 있습니다 blog.naver.com/ddacksal/222029970829 [Day 49] systemverilog 공부 - 8 (automatic, static, initialize, datatype) 새로 산 책에 제목에 있는 부분들이 정리가 어느정도는 되어있어서​나중에 다시 봤을때를 위해 정리를 해... blog.naver.com 이번에 다시 정리하면서 머리속에 넣어두려고 합니다. 해당 keyworkd는 verilog에서도 있었던 것 같은데, 정확히 찾아볼 시간이 없어서 우선 어떻게 사용하는지 정리를 합니다 일반적으로 verilog나 systemverilog에서 그냥 task를 사용하면 default static속성을 가지고 있습니다.. 2021. 1. 31.