2016-09-26 6 views
0

Verilog를 이해하는 데 익숙하지 않은 이유는이 언어가 합성 측면에서 생각해야하기 때문입니다. Verilog 구문을 이해하는 데 도움이 필요합니다.

것을 나는 발견 된 일부 프로그램하는 동안 :

begin 
buf_inm[row][col] =temp_data; 
     #1 mux_data=buf_inm[row][col]; 
end 

변수의 할당의 측면에서

begin 
buf_inm[row][col] =temp_data; 
     mux_data=buf_inm[row][col]; 
end 

보다 정확한 결과를 제공합니다.

아무도이 두 가지의 차이점을 설명 할 수 있습니까?

다른 상위 레벨 언어에서는 구문 2 (지연없이)가 올바른 할당을 제공합니다. 감사 하라구요

, 진심으로

너의을 R. Ganesan.

+1

@ R Ganesan : 기대와 tb에 관한 더 많은 정보를 제공하십시오. –

+0

주변 코드 및 테스트 벤치에 관한 추가 정보가 필요합니다. –

답변

0

우선 # 1은 시뮬레이션에서 사용할 수있는 1 시간 스케일 지연이지만 합성 할 수 없습니다. "정확한 결과를 주었다"라고 말하면, 결과를 설명하면 도움이 될 수 있지만, 2 차원 벡터에 무언가를 지정했다면 max_data에 할당하고 mux_data가 무엇인지 예상하고 있습니다. 임시 데이터가있었습니다. 이전 데이터가 유지됩니까? 정의되지 않았습니까?

즉, 차이점은 합성 할 수없는 할당 대 비 sythesizeble 것입니다. 첫 번째 경우에는 시간 단위로 구분 된 두 가지 상태 변경 사항이 표시되어야합니다. 두 번째 경우는 블로킹이기 때문에 양쪽 값이 0 시간에 업데이트되고, 위에서 아래로 쓰여진 순서대로 표시되어야합니다. 당신이 그것을 보지 않는다면, 다른 것들이 잠재적으로 여기에있을 것입니다. 어떤 도구를 사용하고 있습니까? 도구 버전? 어쩌면 전체 코드와 테스트 벤치를 공유하여 결과가 예상치 못한 이유를 알 수 있습니다.

관련 문제