RTL과 행동 verilog의 차이점


10

누군가 RTL과 행동 Verilog 코드의 차이점이 무엇인지 말해 줄 수 있습니까? 이 두 레벨에서 디자인 사이에 명확한 경계가 있습니까?

답변:


5

행동 코드는 더 높은 수준이며 일반적으로 합성 할 수 없습니다. 루프, 지연 및 "초기"문과 같은 구문은 동작입니다.

RTL 코드는 하위 수준이며 합성됩니다. 회로를 상호 연결된 레지스터와 해당 레지스터 사이의 신호에 대해 수행되는 작업의 조합으로 정의합니다.

Yahoo Answers에서 가져 왔으며 Google에서 즉시 발견되었습니다!


1
반복 횟수가 제한되어 있으면 루프를 rtl 코드에서 사용할 수 있습니다. 일부 도구는 전원 차단 조건을 지정하기 위해 초기화 블록 사용을 지원합니다.
피터 그린

이 질문 / 응답은 실제로 Google이받은 첫 번째 응답입니다.
Drewster

3

"레지스터 전송 레벨"코드는 레지스터와 조합 로직으로 기술 된 코드로, 이들 사이에 있으며 합성 툴의 입력으로 사용됩니다. 코드는 언어의 합성 가능한 부분 집합 [1]을 고수한다. 명시적인 지연은 없으며 모든 타이밍은 클럭 에지와 관련이 있습니다. 레벨 트리거 래치를 나타내는 구조는 일반적으로 피해야합니다. 레지스터는 일반적으로 타이밍 분석기에 세부 정보를 제공 할 수있는 소수의 클럭에서 클럭킹됩니다. 조합 로직은 일반적으로 단일 클럭 사이클 내에 정착하여 복잡성을 제한 할 것으로 예상된다 [2]. 게이트 레벨 모델보다 높은 레벨이지만 모든 클록 사이클에서 모든 레지스터의 값을 여전히 정의합니다.

"행동 적"코드는 일반적으로 시뮬레이션에 사용하기 위해 더 높은 수준에서 동작을 설명하는 코드이지만 신디사이저화할 수는 없습니다. 시뮬레이션에서 설계를 둘러싼 환경을 설명하는 데 사용될 수 있습니다. 개별 모듈의 자세한 RTL 설계를 수행하기 전에 전체 설계를 구현하기위한 설계의 초기 단계로 사용될 수 있습니다.

[1] 허용되는 정확한 부분 집합은 합성 도구마다 다릅니다.
[2] 시뮬레이션보다 단일 사이클 내에 정착하지 않으면 synthisis는 다른 결과를 낼 수 있으며 타이밍 분석기는 명시 적으로 지시하지 않는 한 위반을 표시합니다.


2

보다 일반적인 정의.

동작 코드 : 정의에 따라 디지털 구성 요소의 동작을 정의합니다. 실제 HW (합성)로 구현되는 방법에 대한 정보는 제공하지 않습니다. 필요한 동작을 수행하기 위해 레지스터와 게이트가 어떻게 구현 될지는 정보를 제공하지 않습니다. C로 알고리즘이나 FSM을 작성하는 것과 비슷합니다.

RTL :보다 정확한 형태의 디지털 구성 요소입니다. 코드가 실제 HW (합성 후)로 구현되는 방법에 대한 정보를 제공합니다. 또한 레지스터와 게이트간에 데이터가 전송되는 방법에 대한 정보를 제공합니다.


1

같은 언어이지만 다른 스타일이 사용됩니다. 경험을 통해 신속하게 구분할 수 있습니다. 각각의 특징은 다음과 같습니다.

동작 Verilog 코드는 일반적으로 initial begin블록 내에서 위에서 아래로 실행되는 순차 컴퓨터 프로그램처럼 보입니다 . 출력이 콘솔과 같은 시뮬레이터 시설이 될 수 있기 때문에 당신은 최고 수준의 행동 모듈에 정의 된 입력 / 출력 포트가없는 찾을 수 있습니다 $display()또는 파일 시스템 $open또는 파형 댐퍼와 $dumpfile$dumpvars. 긴 시뮬레이션 시간 대기 #4000및 작업 호출 등을 사용하여 구현 된 명령문 사이의 지연을 살펴보십시오 wishbone_master.checked_read(addr, value). 이러한 더 높은 수준의 구성의 경우 합성 된 기술과 동등한 것이 무엇인지 명확하지 않습니다.

연결 용 포트가 없으면 모듈에 부작용이없고 제거 할 수 있으므로 합성 용 Verilog에는 항상 입력 / 출력 포트가 있습니다 [1]. 지연은 아마도 특정 클럭의 사이클을 계산하여 구현 될 것입니다. 예를 들어 일부 Verilog 시스템 기능 $clog2(PARAMETER)은 합성 코드에서 허용 될 수 있으므로 존재 여부 $function가 보장되지는 않습니다. 합성 코드는 각각 민감도 목록이있는 많은 독립적 인 '프로세스'를 구성하는 경향이 있습니다. 일부 기술은 initial begin메모리 초기화를위한 블록을 허용 하므로 다시 보장 할 수는 없습니다.

궁극적으로 디자이너는 작성한 코드의 목적을 알고 있으며 합성 툴셋이나 시뮬레이터에서 적절하게 호출합니다.

[1] JTAG와 같은 내부 칩 설비에 백도어 연결을 할 수있는 특정 IP 블록을 제외하고

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.