Ch1 Seminar/FPGA

[FPGA] VIO를 사용한 pin test

베린이 2024. 1. 24. 14:42
반응형

FPGA 검증을 할 때 여러 디버깅 포인트가 있는데요, 최대한 변수를 줄이는 것이 좋습니다. 가장 먼저 해결할 수 있는 문제는 FPGA 보드의 핀이 정상적으로 작동하냐는 것입니다.

 

시뮬레이션에서는 문제가 없는데 FPGA test에서 문제가 발생하면 진짜 미치고 팔짝 뛰거든요;; 그러면 이것저것 의심하게 되는데 저 같은 경우는 핀 테스트를 가장 먼저 합니다. IO 핀에 core clock 같은 것을 연결해서 bit를 다운로드하자마자 핀 output이 토글 되도록 만듭니다. 그리고 오실로스코프로 찍어서 신호를 확인함으로써 IO 핀에 이상이 없음을 확인할 수 있습니다.

하지만 위의 방법은 FPGA 합성을 해야 하고 그동안 시간이 지체될 수밖에 없습니다.

 

- vio(virtual input/output)를 사용하여 pin test

Vivado에서 프로젝트를 생성하여 바로 FPGA pin test를 할 수 있습니다. 먼저 프로젝트를 생성하고 기본 옵션으로 선택하다가 Part(보드) 선택할 때 test를 진행할 보드를 검색하여 select 합니다.

 

 

프로젝트 생성이 끝나면 왼쪽에 IP INTEGRATOR에서 block design을 생성해 줍니다.

 

 

Block design에는 vio만 넣을 거여서 wrapper로 설정해줘야 합니다. Design을 wrapper로 설정한 다음, diagram에서 +를 누르고 vio를 검색하여 block을 추가합니다.

 

 

VIO를 생성했으면 다음으로는 옵션을 설정해줘야 합니다. probe_in과 probe_out의 개수를 설정해줘야 하는데 probe_in은 0으로, probe_out은 test 하려는 핀의 개수만큼 설정하면 됩니다. 그러면 VIO diagram이 자동으로 바뀝니다.

 

 

VIO 설정이 끝나면 모든 핀을 선택하고 ctrl+t를 누르면 자동으로 pad가 생성됩니다.

 

 

이제 clock 정보를 입력합시다, 자동으로 생성된 clk_0를 더블클릭해서 clock 정보를 입력해 주시면 됩니다. 보드를 켜면 자동으로 들어오는 external clock의 주파수를 입력해 주시면 됩니다. 그 후에 Implementation까지 진행해 주시면 됩니다.

 

- XDC 설정

Implementation이 끝나면 window에서 다음과 같은 메뉴가 활성화됩니다. IO Ports에서 pin constraint를 설정해 주시면 자동으로 xdc 설정이 됩니다. xdc 설정 후 generate bitstream을 진행하면 bit 파일이 생성됩니다.

 

 

위의 xdc 설정 방법은 핀 설정을 시각적으로 쉽게 확인하면서 진행할 수 있다는 장점이 있지만, 설정을 바꾸고 bit 합성을 진행하면 Synthesis부터 다시 시작된다는 단점이 있는데요, 아예 처음부터 xdc 파일을 설정하고 시작하면 더 빨리 합성을 끝낼 수 있습니다. 다음은 xdc 세팅 예시입니다.

set_property PACKAGE_PIN AY14 [get_ports {probe_out0_0[0]}]
set_property PACKAGE_PIN AY15 [get_ports {probe_out1_0[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {probe_out0_0[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {probe_out1_0[0]}]
set_property PACKAGE_PIN AW15 [get_ports {probe_out2_0[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {probe_out2_0[0]}]
set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub]
set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]
set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]
connect_debug_port dbg_hub/clk [get_nets clk]

 

bit 합성이 끝나면 open hardware manager에 들어가 생성된 bit 파일과 vio를 쓰기 위해 만들어진 ltx 파일을 보드에 다운로드합니다.

 

 

그러면 자동으로 vio 창이 뜨는데요, 각 probe를 토글 버튼으로 설정하면 클릭할 때마다 핀의 output이 달라지는 것을 확인할 수 있습니다.

 

'Ch1 Seminar > FPGA' 카테고리의 다른 글

[FPGA] Block memory 사용 방법  (0) 2024.04.19
[FPGA] VCU118 power check  (0) 2024.01.29
[FPGA] DONT_TOUCH  (0) 2024.01.16
[FPGA] DCM 사용 방법  (0) 2024.01.15
[FPGA] ILA 사용법  (3) 2024.01.12