본문 바로가기

전체 글85

[systemC] sc_vector 사용해보기 sc_vector는 signal array 같다고 생각하면 될 것 같은데요 기존에 사용했던 예제에서 아래와 같이 들어오는 신호를 2bit 씩 split 하면서 index하기 편한 array에 할당한다고 치면 이렇게 설계를 하면 됩니다. 여기서 이를 trace하기 위해서는 아래와 같이 g++을 사용할 경우 아래와 같이 trace 해줘야 하네요 (제가 다른 방법을 못 찾을수도...) 이렇게 하게되면 아래와 같이 들어온 신호를 분리시키는 simulation 결과를 얻을 수 있습니다. 2021. 5. 29.
[systemC] template class 사용 module 선언을 하다보면 동일한 기능인데 bit precision만 다른 경우가 있습니다. verilog에서도 module 선언시에 parameter를 활용해서 이를 이용하는데요, SystemC에서도 이렇게 설계가 가능한가 싶어 찾아보니 Template class를 사용하면 되는 것이었습니다. 평소에 C++을 사용하지 않다보니 문법을 찾아서 아래와 같이 설계를 변경해주었습니다. 사용은 기존에 memory를 8bit으로만 고정시켰었는데 이를 16bit으로도 사용하고 싶은 상태라 하면 아래와 같이 됩니다. 선언은 이렇게 해주고 사용하는 곳에서 이렇게 해주면 됩니다. sc_signal 같은 경우는 바로 assign 하고 싶은데 무조건 신호들은 함수안에서 처리해야 하는 것 같습니다. 아직 systemC의 E.. 2021. 5. 27.
[systemC] image filter를 위한 memory write/read 기존 포스팅을 이용해서 image를 load하여 print를 해보았습니다. https://leehc257.tistory.com/80 [systemC] image 입력받기 기존 verilog와 마찬가지로 image를 hex raw data로 변환시켜 입력을 받는 함수를 만들었습니다. 학부 때 이후로 C++을 건드리지 않았더니 문자열, 포인터에서 엄청 고생했습니다..... 우선 기존에 쓰던 l leehc257.tistory.com 이제 de신호에 맞도록 신호를 흘려보면 아래와 같이 coding을 할 수가 있습니다. 이렇게 설계한 code를 simulation을 해보면 아래와 같이 파형이 나오게 되는데 값을 비교해보도록 하겠습니다. 상위 8bit부터 차례대로 R, G, B 순서대로 선언했는데 위의 값과 동일하.. 2021. 5. 23.
[systemC] SC_CTHREAD 사용 기존 포스팅에는 SC_THREAD와 SC_METHOD만 사용했지만, 이번엔 SC_CTHREAD를 사용해보겠습니다. SC_CTHREAD는 SC_THREAD에 clock sensitive list가 추가 되었다고 생각하면 될것 같습니다. 위의 코드를 보면 body 부분의 while과 wait구문만 삭제를 해주면 SC_METHOD로 사용이 가능합니다. 여기서 저 while과 wait를 사용하지 않으면 Thread가 시작되는 시점인, 프로그램이 처음 시작함과 동시에 해당 함수가 실행이 되며, 단위 시간동안 처리하고 대기하는 것이 아닌(wait가 없으면) 모든 구문을 실행하게 됩니다.(이 말은 천천히 생각하면 이해가 되실 겁니다.) 2021. 5. 21.
[systemC] image 입력받기 기존 verilog와 마찬가지로 image를 hex raw data로 변환시켜 입력을 받는 함수를 만들었습니다. 학부 때 이후로 C++을 건드리지 않았더니 문자열, 포인터에서 엄청 고생했습니다..... 우선 기존에 쓰던 lena.hex 파일을 parsing 받는 방식을 아래와 같이 했습니다. 제가 작성한 방식보다 더 좋은 방식을 찾아보려고 했으나, std함수나 vector에 너무 어색해서 아직은 사용은 못했습니다. 그리고 궁금한점은 lena.hex의 총 row는 400개에 RGBhex값을 보면 6개인데 arrays_size가 400*6이 아닌 400*8을 해야되더라구요... \0을 포함하더라고 400*7일것 같은데.... 아래는 최종 R값만 뽑아봤는데 잘 나오는 것을 확인 하였습니다. 이제 기존 de_i.. 2021. 5. 19.
[systemC] display sync signal gen 기존에 포스팅했던 내용을 기반으로 동일한 신호를 systemC를 이용해서 만들어 보겠습니다. https://leehc257.tistory.com/18?category=896295 [verilog] image 입/출력 설계 입력 받은 이미지를 verilog에서 영상 신호에 맞춰 뽑아주는 module을 설계해보려 합니다 1. image RGB channel 우선 우리가 알고 있는 이미지는 각 위치에 R, G, B값을 가지고 있으며 application 마다 다르겠 leehc257.tistory.com 저번에 습득했던 module을 만드는 것을 이해했으면 위의 신호를 만드는 건 문제가 없을 것 같네요 이런 sync_gen module을 만들고 이를 instance로 호출하여 wiring만 아래 처럼 잘해주면 .. 2021. 5. 19.
신경섭의 인생참치 코로나로 인해서 거의 1년반동안 여행 계획이 취소가 되서 아쉬운 마음을 달래러 외식을 했습니다. 제 인생에서 가장 비싼 참치를 먹은 것 같은데, 후회는 절대 안했네요 다음엔 꽃등심이나, 스테이크를 먹으러 가기로 계획했습니다. 2021. 5. 16.
[systemC] module instance(SC_METHOD, SC_THREAD, SC_CTHREAD) 기존 verilog로 설계할 때와 마찬가지로 System 에서도 동일하게 필요한 module 별로 설계하여 필요한 곳에 instance로 삽입이 가능합니다. 아래처럼 clock을 이용하여 reset을 만들어내는 module을 driver, driver에서 생성한 신호를 이용하여 counter를 만들어내는 module을 sync_gen 이라고 하였을때 이 2가지 module을 top module에서 instance로 불러오고 필요한 신호를 assign 해주면 됩니다. 이렇게 설계를 하면 아래와 같은 신호 파형이 나오게 됩니다. 저도 공부중인데 systemC에서는 member function을 constructor에서 호출할 때 SC_METHOD, SC_THREAD, SC_CTHREAD이렇게 3가지로 나누어.. 2021. 5. 16.
Youtube 시작 블로그도 하면서 Youtube도 동시에 같이 진행하려고 합니다. 우선은 공부할 때마다 실시간으로 할 예정이지만, 틈날때마다 아래 컨텐츠를 동영상으로 짤막하게 만들어서 올려보려고 합니다. 1. 사용중인 Vim plugin 사용방법 2. Verilog를 이용한 image filter 설계 방법 3. SystemC를 이용한 image filter 설계 방법(behavioral model) 4. Nvidia AI Accelerator 구조(Nvdla) www.youtube.com/channel/UCoL9EZSHPDMyt0MuvUCOHWA 푸른하늘코더 AI algorithm Hardware study, 코딩영상 ASMR ※ 개인 블로그 : https://leehc257.tistory.com/ www.youtube.. 2021. 5. 12.