본문 바로가기

HW

Xilinx HLS tutorial (4) - Port 설정

[HW] - Xilinx HLS tutorial (1) - VIVADO install & Tutorial Data Download

[HW] - Xilinx HLS tutorial (2) - Creating HLS project

[HW] - Xilinx HLS tutorial (3) - Tcl Command Interface 사용하기

 

 

임시 저장한 글이 자꾸 사라지다니...

 

길게 쓸 수 가 없겠습니다. 

 

조금씩만 써서 올리려구요....

 

오늘 내용도 시작해 보겠습니다. 

 

원래는 최적화 관련된 내용을 쭉 적으려고 했는데 

 

port setup에 대한 내용만 적어보겠습니다.


Vivado HLS 2019.2 command prompt 를 여시고

 

lab3 folder로 갑니다. 

 

폴더위치를 모르시거나 다운받지 않으신분은

위에 있는 이전 글을 확인하세요~!

 

 

이제 C:\Vivado_HLS_Tutorial\Introduction\lab3 에서 

 

vivado_hls -f run_hls.tcl을 실행합니다.

 

run_hls.tcl은 아래와 같이 작성되어 있는데

 

 

프로젝트를 열고 

 

top을 설정하고 

file을 추가하고 

solution을 열어서

part 설정하고(어떤 FPGA 칩을 사용하느냐에 따라 다르겠죠?)

clock을 생성 및 설정하고 

 

csim

csynth

cosim

export_design

까지 

 

쭉 수행하도록 되어있습니다. 


하는게 많으니 당연히 시간이 조금 걸립니다!

 

터미널에 뭐가 나오는지 보시면 지난 3개의 글에서 했던 것들이 진행됩니다. 

 

 

이런식으로 마무리가 되었고 이제 

 

같은 terminal에서 

vivado_hls -p fir_prj 를 입력합니다. 

 

그러면

 

이렇게 VIVADO HLS GUI가 실행 됩니다. 

 


이제 lab3를 위한 기본 셋업이 끝났습니다. 

 

본격적인 시작에 앞어서

 

lab3에서 하는걸 알아보면

 

1. High throughput를 가지는 새로운 버전의 설계를 만들어 내기

2. 최종디자인의 input은 valid signal과 함께 받기

3. output data는 output valid signal과 함께 제공되기

4. filter coefficients 값은 FIR design 밖에 있는 single port RAM에 저장되기

 

입니다.


Step 2: Optimize the I/O Interfaces 부분입니다. 

 

이름에 맞게 I/O interface를 최적화 하는 그런 부분인거 같은데요 

여기서 I/O interface를 원하는 protocol에 맞게 설정해 줄수 있는데

 

protocol 설정은 수정하면 최적화 할때 영향을 줄 수 있기 때문에

전체 design cycle에서 가능하면 앞쪽에서 하는 것을 추천한다고 합니다.

 

지금 FIR 설계에서 

 

Port C는 반드시 single RAM에 접근 할 수 있어야 하고 

Port X는 input valid 신호가 있어야 하고 

Port Y는 반드시 output valid 신호가 있어야 합니다!

 

이제 Lab1에서 만들어 놓은 solution1을 유지하고

solution2를 만들어서 

 

interface 설정을 진행해 보겠습니다. 

 

 

새 솔루션을 만들겠습니다. 

 

 

 

바로 Finish 누르고

 

Source에서 fir.c를 더블 클릭하면 오른쪽에 Directive 탭에 저렇게 port들이 나옵니다. 

 

저기서 각 포트를 우클릭해서 설정해주면 됩니다. 

 

 

 

 

위 그림은 y를 클릭했지만

 

c부터 하겠습니다. 

 

Port C는 single port RAM을 해야한다고 했습니다. 

 

 

위와 같이 하면 되겠군요 

 

 

ok를 모두 누르고 나면 저렇게 HLS RESOURCE variable=c core=RAM_1P_B ~~~ 이런식으로 옵션이 붙은게 보입니다. 

 

y랑 x도 이어서 해보죠!

 

 

 

네 이렇게 모든 포트 설정을 완료 했습니다. 

 

x와 y는 valid pin이 존재하도록 해야해서 mode를 ap_vld 로 선택하였습니다. 

 

 

Directive 부분도 보면 옵션이 잘 들어간거 같고 

 

 

 

바로 Run C Synthesis를 눌러줍니다. 

 

 

 

합성이 끝나면 자동으로 나오는 report에 

 

 

 

 

이런식으로 포트가 표시되어 있습니다. 

 

원하는 대로 잘 된거 같습니다!

 

다음 시간에는 동작을 분석하고 optimization option을 적용해보겠습니다.