SIMULATION과 보드 동작간 괴리가 생길 때 어떻게 디버깅을 할까?
ISSP와 SIGNALTAP두 가지 IP로 DEBUGING이 가능하다
ISSP
장점 : PC MEMORY를 가지고 디버깅 내부 메모리 소모를 별로 하지 않는다
단점 : 느림, 부정확(단순 SIGNAL, SW, LED 상태만 디버깅하는데 쓰임)
SIGNALTAP
장점 : 정확하고 / 빠름
LOGIC Aralyser를 가지고 있다.
Main clk기준으로 정확하게 probe를 한다.
+출력이 가능하다.
단점 : FPGA에 Logic이라던지, memory 소모를 한다.
resource 소모를 한다.
FPGA 개발 시 70~80% 정도만 디자인을 채워라 하는데
그 이유는 SIMULATION 시 오류가 났을 때 Probe를 할 수 없기 때문에 그 이유다.
ISSP 방식부터 진행했다.
Input은 Source
Output은 prove
Pin_map하면 동작을 할 것이다.
Pin_map을 하기위해
INPUT과 OUTPUT을 간단히 작성 후 진행했다.
*포트 리스트가 없다면?
직접적으로 ip catalog를 사용하여 넣어 줘보자.
첫단에 말한것 처럼
Prove : ouptput
source : intput
으로 설정해주면된다.
INPUT이 두 개니까 SOURCE부분에 2
PROVE는 1로 해주면 된다.
Generate HDL 누른 후
생성완료
FINISH를 누르면
안내문구가 뜬다.
QIP를 넣으라고 안내문구가 뜸
QIP를 찾아서 등록해주면 된다.
생성하게 되면 해당 폴더 내 ISSP 폴더가 생성 된 후 그 폴더에 있다.
등록한 뒤 핀 맵 설정을 위해
컴파일을 해준다.
PIN_MAP 설정
설정 한 뒤 보드 동작을 위해 Assembler을 통해 sof파일 생성 한 뒤 보드에 파일을 등록한다.
inst파일을 찾은 뒤 instantation 해준다
빈칸을 채워준다.
#보드동작후 돌려야함!!!!
Z control을 하기 위해 툴 하나를 띄우면 된다.
두 번째 거를 클릭
꺼졌을 때
SIZE를 128BIT로 바꾼 뒤 값 조정
Z값 추가
KEY INPUT 없이, 디버깅이 가능하다.
ISSP를 사용하여 마우스로 Control 되는 모습.
Signaltap
얘는 ISSP와 달리 clk이 있어야한다.
이제 Signaltap을 통해 검증해보자.
TOOLS – signal tap logic analyzer
Data sampling ?
Ex) 433 중간에 값을 캡쳐해서 안정적인 signal을 사용
들어간 뒤 filter를 Pre-synthesis로 하면 ip가 나옴
오른쪽클릭해서 add_node 한 뒤
Add_node에서 clk빼고 추가하고 insert해주자.
추가되었다.
Rising / faling edge 지정
홈에서
Faling_edge 했을 때
보드 동작
LOGIC_LE
확실히 LOGIC이 많이 커진것을 확인할 수 있다.
따라서 이러한 경우를 위해 FPGA제작 시 80%정도만 채워 제작하는것이다.