본문 바로가기

Programming

(17)
[C언어] assign 연산자의 return 값을 활용한 string copy 함수 만들기 assign 연산자는 variable 에 값을 assign 할 뿐만 아니라 값을 return 한다. assing 연산자가 return한느 값은 바로 assign 한 값이다. (Rvalue, Right-Hand Side Value) 따라서 문자열 복사 ( string copy ) 함수를 C언어에서 다음처럼 구현할 수 있음. #include void str_copy(char* s, char*d){ while((*d++=*s++)!=0); } void main(void) { char a[5]; char b[5] = "ABCD"; str_copy(a, b); printf("%s\n%s\n", a, b); } 1) str_copy 함수는 source 문자열과 destination 문자열의 시작 주소를 s랑 d라는..
[C언어/파이썬] Insertion Sort Algorithm C와 Python으로 구현해보기 - 배열 맨 처음 정렬된 부분에 정렬되지 않은 다음 항목들을 반복적으로 삽입하는 방식이다. - 즉 미리 정렬된 리스트에 새 항목을 추가할 때 좋은 정렬 알고리즘이다. - 데이터의 크기가 작고 리스트가 이미 정렬되어있으면 다른 merge sort 나 quick sort 같은 고급 알고리즘보다 성능이 좋음 - 최선의 경우 시간복잡도 O(n) - 평균과 최악의 경우 시간복잡도 O(n^2) 1. insertion sort ( 삽입 정렬 ) 알고리즘 process index 0 1 2 3 4 5 11 3 28 43 9 4 를 정렬한다고 가정 outer loop i : 0 ~ 5 0 번부터 5번 인덱스 i 가 차례로 리스트에 추가된다고 가정한다. 인덱스 i 가 추가될 때에는 0~ i-1 까지는 정렬되어 있다고 가정..
[문제해결 알고리즘] BFS :: 연습문제 :: 미로탈출 로봇 대회(정올) :: C언어 0. 문제 설명 정올에서 미로탈출 로봇 대회를 개최하였다. 대회에 사용되는 미로는 가로(X), 세로(Y) 100이하의 크기이며, 미로를 한 칸 이동하는 데는 1초가 걸린다. 대회에 참가중인 민성이는 자신의 로봇이 가장 빨리 미로를 탈출하기 위해 미로의 모양을 입력받아서 도착점까지 가장 빠른 길을 찾으려고 한다. 프로그램을 작성하여 민성이를 도와주자. 입력 형식 첫줄에 미로의 크기 X, Y(1≤X, Y≤100)가 주어진다. 둘째 줄에 출발점 x, y 좌표와 도착점 x, y 좌표가 공백으로 구분하여 주어진다. 셋째 줄부터 미로의 정보가 길은 0, 벽은 1로 공백이 없이 들어온다. 출력 형식 첫줄에 출발점에서 도착점까지 가장 빠른 시간을 출력한다. 입력 예시 8 7 1 2 7 5 11111111 0000011..
[문제해결 알고리즘] BFS :: 너비우선탐색의 개념 0. BFS란? i. Breadth-First Search, 너비 우선 탐색을 말한다. 모든 경로를 탐색할건데, 각 경로를 깊게 방문하지 않고 넓게 방문할거라는 느낌만 우선 가져보자~ ii. 모든 경우의 수를 다 훑는 알고리즘이다. ( 정답을 찾을때까지 ) 모든 경우의 수를 다 탐색하는 알고리즘에는 DFS 와 BFS 가 있다. 깊이 우선 탐색(Depth-First Search)는 한 경로에 대한 탐색을 우선 완료한 다음 다른 경로를 탐색하지만, 너비 우선 탐색은 경로상 어느 정점(node)에서 다음에 방문할 수 있는 모든 경우의 노드를 전부 방문하고, 그 다음 단계로 넘어간다. (따라서 내가 이해한 바로는 몇번째 방문할 노드인지에 따라 각 노드에 Hierarchy(계층 수준)이 부여되기도 한다.) 그리고..
UVM TLM 인터페이스 export, port, imp port 차이점 UVM TLM 포트 종류 UVM TLM Export UVM TLM Port UVM TLM Imp Port 1. UVM TLM Export UVM TLM Export는 child component에서 Parent component로 트랜잭션을 포워딩하는 포트이다. 그러니까, component a 안에 child component b 가 있고, 그 안에서 child component c가 인스턴스화되었다고 할 때, c에서 만든 트랜잭션이 b를 지나 a를 지나 a 바깥에 있는 어떤 컴포넌트 d랑 통신하고자 할때! a->b->c를 잇는 것이 uvm tlm export이다. child 컴포넌트에서 만들어진 트랜잭션을, 최종 통신을 위해 제일 상위의 부모 컴포넌트로 보내게 해주는 것이 TLM Export! TLM ..
UVM TLM port interface 관련 메소드들 put .put(trans)을 호출함으로써, 다른 component로 transaction을 전송한다. put() 메소드는 blocking이므로, transaction이 성공적으로 보내지기 전까지는 함수가 return되지 않는다. ==> 동작을 멈추고 기다린다는 뜻. 시뮬레이션 타임 소모. get .get(trans)을 호출함으로써, 다른 component로부터 transaction을 회수한다. get() 메소드는 blocking 이므로, transaction을 성공적으로 가져오기 전까지는 함수가 return되지 않는다. ==> 동작을 멈추고 기다린다는 뜻. 시뮬레이션 타임 소모. 예를들면 상대방으로부터 패킷을 받을때까지 1초..2초...3초... 이렇게 기다려. get() method call cons..
UVM TLM에 대해서 알아봅시다! TLM이 뭐지..?? 이 개념을 알기까지 넘 오래 걸렸다... Transaction이 뭔지 제대로 설명해주는 문서도 없어! 죄다 영어야!! RTL로 작성된 Design에서.. rtl이 주고받는 signal은 클록에 맞춰서 drive/load 된다. 이에 대비되는 개념으로 transaction은 검증 컴포넌트 간 주고 받는 아이템으로, DUT의 signal과 달리 timing을 신경 쓸 필요가 없다. 검증시 input에게 줄 stimuli의 내용과 규칙 등을 signal보단 좀더 추상적인 레벨에서 나타낸 것이다. timing에 맞춰야하고 더 엄격하게 작성되는 하드웨어 수준에서의 signal을, 검증 컴포넌트끼리 통신할 때까지 갖고갈 필요는 없기 때문에, signal보단 추상적인 개념인 transaction..
항상 헷갈리는 시스템베릴로그 $cast - Up-Casting과 Down-Casting SystemVerilog $cast는 봐도 봐도 헷갈림 ㅠ Down - Casting down casting : child class handle은 parent class 핸들로 copy 될 수 있다. 왜 down casting이냐면, child-class는 parent class에는없는 child class 고유의 속성들도 갖고 있기 때문이다. ( 이하 P 와 C ) P class 핸들로 C class handle을 복사하면, C class에만 있던 클래스 멤버들은 P class 핸들로는 접근할 수 없게 된다. P class 핸들은 P class member 들만 접근 가능하다. 따라서 down-casting이라고 한다. ==> 축소 개념 여기서 알아둬야 할 것은, P class가 여전히 C class..