작성
·
1.2K
2
안녕하세요 맛비님
제가 Verilog를 공부하다보니 들은 궁금점이 있어 질문 드립니다
예를들어
우리가 VS를 이용해 C++ 코드를 작성하고 결과를 확인했는데
우리가 원하는 결과가 나오지 않으면 F5를 누른 후 디버그 툴을 활용하여
내가 입력해준 데이터가 어떤 변수에 어떻게 들어가 있는지 다 확인할 수 있습니다
하지만 Verilog의 경우 도대체 어떻게 디버깅을 해야할지 모르겠습니다
Verilog를 이용해 회로를 작성하고 -> 비바도를 이용해 시뮬레이션을 돌려보면
시뮬레이션 자체는 돌아갑니다. 하지만 시뮬레이션의 wave form을 보면 제가 원하는 결과가
전혀 아닙니다.
회로의 어떤 부분이 제 의도와 다르게 연결되어 최종 결과가 달라진 것이라고 볼 수 있는 것인데
이런 경우 어떻게 디버깅 해야할지 모르겠습니다. 시뮬레이션은 테스트벤치에서 입력한 값에 대한 결과만 바로 보여주기 때문에
어디서 어떻게 데이터가 흘러가는지 알기 어렵기 때문입니다
비바도에서 RTL 분석을 해봐도 블록도로만 표현되어 있기에 알기 어려운 것은 마찬가지 입니다.
비바도에서는 어떻게 제가 작성한 하드웨어를 디버깅 할 수 있나요?
두번째, visual studio에서 디버깅을 하듯이 하드웨어를 디버깅 할 수 있는 툴이 있는 것인가요?
현업에서 회로를 작성하면 분명히 지금 제가 작성하는 회로보다 천배 만배는 더 복잡할 것입니다
사람이 하는 일이기 때문에 분명히 오류가 생기고, 이를 수정하는 과정이 필요할 것입니다.
현재 제가 아는 방법으로는 도저히 작성한 회로를 데이터의 흐름에 따라 디버깅 하는 방법을 모르겠습니다.
제가 작성한 회로를 가지고 시뮬레이션을 돌렸는데 원하는 출력이 나오지 않았을 때,
회로를 디버깅하는 방법이 궁금합니다.
답변 1
1
안녕하세요 :)
충분히 궁금하실 부분이라 생각합니다.
아시다시피, HW 이기 때문에, time 과 동시성의 개념이 더 추가 됩니다.
일반적인 sw tool 로 디버깅 하는 process 와는 차이가 있죠.
1. 비바도에서는 어떻게 제가 작성한 하드웨어를 디버깅 할 수 있나요?
Vivado 에서 debugging 이 가능한 "도구" 가 있는지 모르겠습니다. 최소한 제가 아는 범위내에서는 없습니다. 결과가 왜 잘못되었는지, 부분을 찾으면, 이 신호가 왜 이렇게 나왔는지를 따라가야 합니다. 잘못된 신호를 뒤에서 앞으로 거슬러 올라가야 하죠.
원론적이지만, 이 원리로 디버깅을 합니다. 생각보다.. 어렵진 않구요. 경험이 쌓이시면 금방 찾으실꺼에요.
2. visual studio에서 디버깅을 하듯이 하드웨어를 디버깅 할 수 있는 툴이 있는 것인가요?
대표적으로 synopsys 의 verdi, mentor 의 visualizer 라는 tool 이 있습니다.
(제가 알려드린 keyword 로 구글링하시다보면, 더 많은 정보를 얻으실 수 있을거에요.)
위에 적어드린 verdi, visualizer 는 전부 사용 해봤습니다. 개인적으로는 그나마.. verdi 가 편하네요. 유료 Tool 이구요. 현업에 가시면 자연스럽게 궁금증이 해소되실 거에요. (비싸요..?!)
즐공하세요 :)
답변 감사합니다