2011-05-07 12 views

답변

4

블록은 always 블록이 의존하는 모든 와이어를 나열하는 바로 가기입니다. 그 전선은 "감도 목록"입니다. 그것을 사용하는 한 가지 이점은 와이어가 "물리적으로"함께 연결되기 때문에 합성 코드가 민감도 목록 (posedgenegedge 제외)에 넣는 것을 신경 쓰지 않을 것입니다. 시뮬레이터는 목록을 사용하여 블록을 실행할 이벤트를 선택할 수 있습니다. 블록을 변경하고 목록을 업데이트하는 것을 잊어 버리면 시뮬레이션이 실제 합성 된 동작과 다를 수 있습니다.

2

@ 벤 잭슨이 올바르게 대답했습니다. 두 번째 부분에 대한 대답은 가능한 부작용이 없다는 것입니다. 나는 이것을 조합 논리에 권장되는 방법으로 생각한다.

3

SystemVerilog에서 항상 @ * 대신 always_comb begin ... end를 사용하는 것이 좋습니다.

항상 @ *의 큰 단점은 조합 논리 중 일부가 상수와 관련된 경우 항상 @ *가 시간 0에서 트리거되지 않을 수 있으며 트리거하려면 신호 변경이 필요하다는 것입니다. always_comb는 시간 0에서 적어도 한 번 트리거합니다.

always_comb의 또 다른 이점은 인라인 함수 호출이라는 것입니다. 함수를 호출하고 함수 본문이 인수로 전달되지 않은 신호를 참조하면 항상 @ *가 해당 신호에 민감하지 않습니다.