작성
·
13
0
안녕하세요 🙂
[1. 질문 챕터] : testbench 작성 - answer.txt 155ns~156ns 부분
[2. 질문 내용] :
155ns 부분에 원래 13이 찍혀야 하는 거 아닌가요?! 근데 시간은 1ns delay되어서 156ns로 찍혀있고 출력은 14(1110)으로 나와있는게 왜 그런지 궁금합니다.
[3. 시도했던 내용, 그렇게 생각하는 이유] :
155시점에서 expected_count가 13일 때, if 조건문이 먼저 걸려서 #1 force에 걸려있는 지연 때문에 뒤에 있는 task 호출이 밀렸나? 생각이 들어서 task 호출을 if 조건보다 앞에 작성하고 다시 build를 돌려도 실행 결과는 #1 지연된 14가 출력되었습니다,,
답변 2
0
안녕하세요 어진님 혹시 어떻게 고치셨을까요?
제가 아래와 같이 한줄을 추가해서
결과를 보니
155ns에는 13으로 찍히고있습니다.
어느 부분에 코드를 넣으셨을까요?
코드 수정해주신 부분을 공유해주시면 확인해보겠습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 어진님.
현재 testbench 작성 중 155ns와 156ns 사이의 타이밍 이슈에 관련하여 궁금하신 점이 있으시군요. Verilog HDL에서의 시뮬레이션 타이밍과 관련된 문제는 크게 두 가지 이유에서 발생할 수 있습니다. 이는 종종 신호의 전파 지연과 코드 내 설정된 지연에 관련된 문제 때문입니다.
지연이 있는 경우:
#1
과 같은 지연은 즉각적으로 신호를 변경하지 않고, 지연을 적용한 후에 신호가 변경되도록 합니다. 그래서 해당 지점에서, 지연의 영향을 받는 statement는 후순위로 실행이 될 가능성이 있습니다.조건문과 타이밍의 문제:
if
조건문과 같이, 조건에 맞춰 특정 동작이 지연없이 즉각적으로 적용될 것으로 예상하는 경우에는 코드의 순서와 논리가 제대로 검토되어야 합니다. 이는 하드웨어 설계에서는 대개 발생하지 않는 것으로, 논리적 오류가 발생할 수 있습니다.변수의 변환 시간:
always
, initial
) 사용 시 주의점을 통해 동일한 문제가 발생한 사례를 참고하면 좋을 것 같습니다.#
지연의 사용과 주의점에 대한 예시 설명만약, 여전히 타이밍 이슈가 해결되지 않는다면 질문글에 시뮬레이션 파형 이미지와 코드를 조금 더 구체적으로 설명해 주시면 더 정확하고 실질적인 도움을 드리겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.