프로그래밍/베릴로그

Vivado 오류 [synth 8-3352, multiple driven net] 해결

황태건 2023. 10. 10. 16:45

Verilog 수업 실습에서 시뮬레이션에 이상이 없음을 확인하고 합성(synthesis) 및 구현(implementation)을 실시했는데, 합성에서부터 아래와 같은 경고 메세지가 발생하더니 구현에 실패해버렸다.

대충 net이 다중 drive 됐다는 메세지


Xillinx 문의 페이지나 다른 커뮤니티에서는 그 원인을 하나의 포트가 여러 번 연결되었기 때문이라고 했지만 나에게 적용되는 사항은 아니었다.

하는 수 없이 경고가 발생한 위치의 코드를 이리저리 고쳐보던 중 우연히 해결했다. 연결 관계를 나타내는 wire 변수를 모듈 선언부에 작성했기 때문. 아래 이미지 대로 첫 번째 코드에서 두 번째 코드로 바꿔주니 잘 실행되었다.

나 뭐 바뀐 거 없어?


둘의 차이가 뭔지는 잘 모르겠지만;; 혹시 나같은 문제를 겪는 분이 있다면 wire 변수의 선언 위치를 확인해보자.

 

대충 찾아보니 module()에 작성되는 머리부에는 포트 목록만 적어야 하고, 그 밖에 reg나 wire 같은 일종의 지역 변수들은 머리부 다음의 몸체부에서 작성해야 하는 듯