작성
·
1.2K
1
답변 1
1
안녕하세요.
일단 일반적인 이야기를 먼저 시작하겠습니다.
Sub module 단위의 입출력을 기준으로 Debugging 을 합니다.
현업에서는 각 sub module 의 input, output 의 결과를 file dump 받을 수 있도록 코딩합니다. 그래야 어느지점이 문제인지 금방 파악 하겠죠. (평소에는 off 시켜놓고, 결과가 이상함을 발견하면, dump 합니다. run time 이 오래걸리니까..)
그 후에 sub module 을 찾아내면 지점을 Debugging 하겠죠.
그 다음, Wire, port name 이 변경되어서 불편하다 의 답변이구요.
post synth 를 debugging 하는 case 는 흔치않아서, 다음과 같이 해보실래요?
(안될 수 있습니다.)
vivado 에는 don't touch 라는 attribute 가 있습니다.
예를들어,
(* dont_touch = “true” *) wire [31:0] temp;
이렇게 하게 되면, 합성 후 Netlist 에서 변수가 살아있을 것? 같아요.
don't touch 자체가 optimize 를 안하겠다 이구요.
opt 로 인해서 name 이 변경되었을 가능성이 굉장히! 높아보입니다.
안되면.. 저도 잘.. ㅎㅎ
즐공하세요 :)
말씀해주신 (* dont_touch = “true” *) 키워드로 합성 후 변수 살아있는것 확인했습니다.!
근데 다른 부분변화 없이 저 키워드만 넣고 결과를 확인했느데 결과가 제가 생각하던 옳게 변했습니다..
어떤식으로 이해해야할까요? 감사합니다!
Q. Post Syntehsis Timing Simulation 에서 디버깅을 잘 안하신 다는건 에러 발생할 일이 거의 없다는 말씀이신 건가요? ,,, 보통 이런경우 RTL 설계를 바꾸기도 하나요?
A.
이미 Timing Met 을 확인한 상태이기 때문에, 발생할 확률이 극히 드물죠..?
IP 설계 회사에서는 Post synthesis Timing Simulation 를 스킵하기도 했어요. (디자인이 크면, 너무 오래걸려서 검증하기 너무 힘들어요.) FPGA 에 일단 올리고 문제있는 case 는 시간이 오래걸리지만 돌려봐요. (극히 드물다..)
Q. 근데 다른 부분변화 없이 저 키워드만 넣고 결과를 확인했느데 결과가 제가 생각하던 옳게 변했습니다..
A. 어허...... tool 에서 optimize 를 하는 과정에서 문제가 있다, 라고 생각할 수 밖에 없는 상황인데요...?
don't touch 넣기 전에의 post synthesis 의 결과에서
Timing Report 에서 문제가 없는지 꼭 Check 해보세요.
Violation 없이 Met 한거는 맞죠..?
Post Syntehsis Timing Simulation 에서 디버깅을 잘 안하신 다는건 에러 발생할 일이 거의 없다는 말씀이신 건가요? ,,, 보통 이런경우 RTL 설계를 바꾸기도 하나요?