Ansys is committed to setting today's students up for success, by providing free simulation engineering software to students.
Ansys is committed to setting today's students up for success, by providing free simulation engineering software to students.
Ansys is committed to setting today's students up for success, by providing free simulation engineering software to students.
For United States and Canada
+1 844.462.6797
레지스터 전송 수준(RTL) 설계는 디지털 회로의 설계 프로세스에서 필수적인 단계입니다. 회로의 물리적 레이아웃을 지정하기 전에 추상적인 수준에서 디지털 설계의 논리적 기능을 정의하고 최적화합니다. 엔지니어는 VHDL 또는 Verilog와 같은 하드웨어 기술 언어(HDL)를 사용하여 설계에서 원하는 고도의 동작을 소프트웨어 코드로 변환합니다.
RTL 수준에서 모델링할 수 있는 최초의 HDL은 1980년대에 개발되었으며 엔지니어가 전자 회로의 데이터 흐름을 모델링할 수 있는 완전한 설계 시스템으로 발전했습니다.
설계가 점점 더 방대해지고 복잡해지며 제조 기술이 논리 연산 및 수치 연산을 수행하는 새로운 방식을 지원함에 따라 RTL 설계 방법도 그에 보조를 맞춰 발전했습니다. 시간이 지나면서 RTL 설계는 시스템 사양과 회로 설계 단계를 연결하는 디지털 설계 프로세스의 필수 단계가 되었습니다.
RTL 기술의 추상적 특성은 설계 프로세스의 보다 복잡하고 시간이 많이 소요되는 단계를 파고들기 전에 신속한 연구와 빠른 설계 반복을 통해 허용 가능하고 최적화된 설계를 얻을 수 있도록 합니다.
RTL 설계는 집적 회로 설계 주기의 핵심 부분으로, 엔지니어가 물리적 구성 요소와 이러한 구성 요소의 연결 방식에 대해 걱정하기 전에 레지스터, 연산자 및 데이터 흐름 단계에서 설계를 최적화할 수 있습니다. 이 문서에서는 몇 가지 기본 사항을 다루며 RTL 설계가 디지털 회로 설계에 적합한 위치를 설명하고 RTL 설계 흐름에 대해 설명합니다. 그런 다음, RTL 설계가 FPGA(필드 프로그래머블 게이트 어레이) 및 ASIC(응용 분야별 집적 회로) 칩 설계에 어떻게 부합하는지 보여주고 RTL 설계의 미래가 어떤 모습일지 알아봅니다.
"레지스터 전송"이라는 문구는 언어가 레지스터 간의 데이터 흐름을 설명하는 방법과 데이터에 논리 연산 및 수치 연산을 적용하는 방법을 나타냅니다. 엔지니어는 RTL 설계를 사용하여 기능 블록을 설명함으로써 특정 기능을 실행하는 데 사용되는 개별 구성 요소의 동작을 정의할 수 있습니다. 각 기능 블록에는 순차 회로라고 하는 블록 내 레지스터와 기능 블록에 대한 논리 연산을 포함하는 조합 회로가 기술되어 있습니다. 또한 HDL을 사용하여 기능 블록이 연결되어 회로를 통한 데이터 흐름을 정의하는 방식을 설명합니다.
RTL 설계의 힘은 복잡한 시스템을 HDL 코드로 표현되는 비교적 단순한 블록으로 분할하는 방법에 있습니다. 다음은 RTL 설계가 사용되는 방식을 이해하는 데 중요한 몇 가지 기본 사항입니다.
레지스터
RTL 설계에서는 설정된 양의 데이터를 저장할 수 있는 하드웨어 요소를 레지스터라고 부릅니다. 이러한 레지스터는 일반적으로 D 플립 플롭으로 구현됩니다. 레지스터의 값은 논리 연산에 대한 입력으로 읽거나 연산의 출력으로 설정할 수 있습니다. 레지스터 간의 데이터 흐름 및 연산에 의해 데이터가 변경되는 방식을 특성화하는 것이 RTL 설계의 기본 목적입니다.
하드웨어 설명 언어(HDL)
RTL 설계에서 가장 중요한 부분은 회로의 동작을 기술하는 코드입니다. HDL은 프로그래밍 언어와 매우 유사한 사양 언어이며 변수, 함수 호출, if-then-else 및 CASE와 같은 논리 구문, 부울 구문, 수학 함수가 있습니다. 그러나 HDL은 전자 회로(대개는 집적 회로)의 동작과 구조를 기술하기 위해 특별히 설계되었습니다. HDL이 프로그래밍 언어와 구별되는 점 한 가지는 시간 개념이 언어 내에 포함되어 있으므로 회로의 클록에 의해 연산이 트리거될 수 있다는 것입니다.
이 작업은 이 VHDL에서와 마찬가지로 회로의 디지털 클록 값을 정의하는 변수를 사용하여 수행됩니다. 다음은 클록 값인 clk가 낮은 상태에서 높은 상태(상승 에지)로 이동하는 경우 출력(Q)이 입력 값(D)으로 설정된 인버터의 간단한 예입니다.
D <= not Q;
process(clk)
begin
if rising_edge(clk) then
Q <= D;
end if;
end process;
가장 일반적으로 사용되는 HDL인 초고속 집적 회로 하드웨어 기술 언어(VHDL)는 C 언어처럼 보이지 않는 구문이 있는 상세하고 강력하게 타입화된 언어이며, 보다 복잡한 시스템 설계를 설명하기 위해 선호되는 HDL입니다.
또 다른 일반적인 HDL은 Verilog 또는 그 상위 세트인 SystemVerilog입니다. 보다 간결하고, 약하게 타입화되었으며, 유연하고, C 코드와 비슷한 구문을 사용합니다. 쉽게 배우고 기술할 수 있기 때문에 엔지니어는 처음 시작할 때 또는 회로가 복잡하지 않을 때 선호합니다. IEEE는 Verilog와 VHDL을 모두 산업 표준으로 규정합니다.
다음은 두 언어로 된 AND 게이트의 간단한 예입니다. AND 게이트에는 두 개의 입력과 하나의 출력이 있습니다. 입력이 모두 1인 경우 출력은 1입니다. 입력이 서로 다르거나 둘 모두 0으로 설정된 경우 출력은 0입니다.
VHDL은 다음과 같이 AND 게이트를 기술합니다.
entity my_and is -- First, you define the entity
port (
inp1: in std_logic; -- The first port
inp2: in std_logic; -- The second port
rst: out std_logic -- The output port
);
end my_and;
architecture blk of my_and is -- Next, define the architecture
begin
process(inp1, inp2) -- With the inputs, do the following
Begin
-- Use a simple if-then-else statement
if((inp1=’1’) and inp1=’1’))then
rst <= ’1’;
else
rst <= ’0’;
End if;
end process
end blk;
AND 게이트에 대한 Verilog는 다음과 같습니다.
module my_and(inp1,inp2,rst); // define the module call
input inp1, inp2; // define inputs and output
output rst;
assign rst = inp1 & inp2; // use the & (and) operator
endmodule
논리에서는 두 입력 포트에서 값을 취하고 두 포트가 모두 1인 경우 출력을 1로 설정합니다. 이것은 간단한 예이지만 이러한 유형의 코드는 시스템의 모든 엔티티를 나타낼 수 있으며, 그런 다음 결합하여 전체 디지털 회로를 정의할 수 있습니다. 일반적인 기본 빌딩 블록에는 가산기(adder), 곱셈기(multiplier), 카운터(counter), 메모리(memory) 및 상태 머신(state machine)이 포함됩니다. 설계 엔지니어가 시스템을 정의하면 코드가 컴파일러로 전송됩니다. 오류 없이 컴파일되면 엔지니어는 결과를 사용하여 시스템을 테스트할 수 있습니다.
논리 연산
RTL 설계에는 두 가지 유형의 연산이 있습니다. 첫째, 논리 연산은 레지스터에 저장된 데이터의 비트 단위 평가 및 수정을 수행합니다. AND, OR, NOT, XOR, shift와 같은 논리 연산은 HDL에서 논리적 동작을 정의하여 생성됩니다. 위의 예는 VHDL 및 Verilog에서 AND가 어떻게 표현될 수 있는지 보여줍니다. 논리 연산은 하드웨어의 논리 게이트를 나타냅니다.
산술 연산
RTL 설계의 두 번째 연산 유형은 산술 연산입니다. 레지스터의 데이터를 가져와 더하기, 빼기, 곱하기 및 나누기를 수행합니다. 이들은 HDL에서 표준 수학 연산자로 표현됩니다. 예를 들어, VHDL에서 두 개의 숫자를 더하는 경우 다음 행을 사용합니다.
rst <= inp1 + inp2;
— 여기서 inp1과 inp2는 두 입력 레지스터이고 rst는 출력 레지스터에 할당됩니다. RTL의 산술 연산은 가산기(adder), 감산기(subtractor), 곱셈기(multiplier) 및 분주기(divider)와 같은 전용 물리적 요소를 나타냅니다.
동기식 및 비동기식 작업
RTL 설계는 동기 또는 비동기 방식으로 데이터 흐름을 나타낼 수 있습니다. 동기식의 경우 함수에 대한 시스템 클록 입력에 의해 루틴이 실행되거나 트리거됩니다. 비동기식의 경우 하나 이상의 입력 포트의 값이 특정 방식으로 변경될 때 루틴이 실행됩니다. 이는 클록 입력 또는 클록 외 입력의 입력 값을 검사하여 if-문을 통해 변경되었는지 확인하는 방식으로 구현됩니다.
최신 집적 회로(IC) 설계 흐름에는 장치가 수행해야 하는 작업에 대한 사양을 가져와 패키지형 반도체 칩으로 변환하는 작업이 포함됩니다. RTL 설계가 제공하는 추상화 수준을 통해 엔지니어는 물리적으로 설계를 구현하는 방법에 대한 세부 사항을 고려할 필요 없이 시스템의 상위 수준 기능에 집중할 수 있습니다.
IC 설계 흐름의 첫 번째 단계는 시스템 사양과 아키텍처 설계를 정의하는 것입니다. 이 정보는 HDL 코드로 변환됩니다. 그런 다음, 엔지니어는 해당 코드를 사용하여 기능 및 논리적 설계를 정의합니다. 이 작업이 완료되면 설계가 넷리스트(netlist)로 변환되며, 이 넷리스트(netlist)를 사용하여 회로 설계를 생성한 다음, 나머지 설계 프로세스가 수행됩니다.
RTL 설계를 사용한 추상적인 표현은 가능한 한 설계 프로세스 초기(즉, 물리적 설계, 물리적 설계의 검증 또는 하드웨어의 실제 제작에 시간과 비용을 소비하기 전)에 수행됩니다. RTL 설계 단계를 프로세스에 맞추려면 시작 시 시스템 사양 간의 적절한 통합이 필요합니다. 또한 RTL 설계가 완료되면 레지스터, 연산 및 데이터 흐름을 실제 회로로 변환하는 강력한 도구가 필요합니다.
RTL 설계 흐름의 목표는 집적 회로(일반적으로 FPGA 또는 ASIC 장치)의 기능을 정의하고 최적화하는 것입니다. 설계 엔지니어는 RTL 설계 흐름을 사용하여 먼저 장치의 논리 및 흐름을 정의하고 시스템을 테스트 및 최적화한 다음, RTL 정의를 넷리스트(netlist)로 변환합니다. 다음 5단계는 일반적인 RTL 설계 방법론을 정의합니다.
1. 고수준 합성
흐름의 첫 번째 작업은 가능한 한 적은 편집을 통해 장치의 사양을 HDL 코드로 변환하는 것입니다. 대부분의 경우 엔지니어는 C 또는 C++와 같은 표준 프로그래밍 언어로 장치의 원하는 동작을 표현합니다. 그런 다음, 소프트웨어 툴이 소프트웨어 모델의 알고리즘을 선택한 사양 언어로 상세하게 기술합니다. 단순한 설계에서는 이 단계를 건너뛸 수 있지만, 보다 복잡한 설계의 경우 이를 통해 시간과 노력을 크게 줄일 수 있습니다.
2. RTL 코딩
그 다음, 엔지니어가 코드를 생성하거나 상세 기술합니다. 설계자는 특정 레지스터의 세부 정보, 필요한 연산 및 데이터 흐름 방식을 파악합니다. 이 단계에서 한 가지 중요한 부분은 일반적인 연산과 시스템의 특정 부분을 설명하는 모듈을 사용하는 것입니다. 모듈을 생성한 후에는 해당하는 경우 재사용할 수 있으므로 전체 설계의 복잡성이 크게 단순화됩니다.
3. PPA(성능, 전력 및 면적) 최적화
코딩이 완료되면 최적화 프로세스가 시작됩니다. 이 단계의 목표는 성능을 개선하고 전력 소비를 최소화하며 설계의 물리적 크기를 줄이는 것입니다.
타이밍 및 논리 시뮬레이션
시뮬레이션 툴을 사용하여 타이밍 분석을 수행하고 시스템 전체의 레지스터 값을 추적합니다. Register-Transfer 수준에서 설계를 점검하여 회로 전반에 타이밍 문제가 없는지, 연산이 예상 출력을 생성하는지 확인합니다. 여기서 설계 팀은 가능하면 설계 프로세스 초기에 시스템의 전력 글리치를 포함한 모든 문제를 디버깅합니다.
전력 추정
시스템의 각 장치는 일정 양의 전력을 소비하므로 설계 엔지니어는 전력 분배에 대해 이해하고 전력 소비를 최소화하기 위해 설계에서 얼마나 많은 전력이 소비되고 있는지 파악하고 설계를 반복해야 합니다. 많은 선도적인 반도체 설계 회사가 Register-Transfer 수준에서 전력을 분석 및 프로파일링하고 전력 소비를 줄이는 데 Ansys PowerArtist™ 소프트웨어를 사용합니다. 설계 팀이 전력을 상세 분석하고, 전력 비효율적인 RTL 코드를 식별하고, 설계에서 낭비되는 모든 불필요한 동작에 태그를 지정할 수 있는 빠른 처리 속도를 제공합니다.
면적 최소화
집적 회로의 모든 구성 요소는 해당 구성 요소 간의 라우팅과 마찬가지로 물리적 공간을 차지합니다. RTL 설계 프로세스에서 구성 요소의 물리적 크기를 고려하지 않지만 구성 요소의 수와 구성 요소 간의 연결 복잡성은 파악합니다.
4. 검증
설계가 최적화되면 검증을 통해 사양이 모두 충족되는지 확인해야 합니다. 이는 설계 프로세스에서 매우 중요한 부분이며 설계를 다음 단계로 진행하기 전에 모든 설계 요구 사항을 점검해야 합니다. 이 작업은 RTL 시뮬레이션 또는 공식적인 검증을 통해 수행됩니다.
RTL 시뮬레이션: 설계를 동적으로 검증하기 위해 다양한 소프트웨어 툴이 사용됩니다. 입력 벡터가 적용되고 결과 출력 벡터를 예상 결과와 비교합니다. 입력과 출력은 일반적으로 파형으로 표시되므로 설계 엔지니어가 시스템의 동작을 시각적으로 검사할 수 있습니다.
공식적인 검증: 이 단계는 자동화를 통해 일련의 동작 기대치를 시스템의 전체 작동 공간을 탐색하는 수학적 알고리즘으로 변환하는 정적 검증 프로세스입니다. 그런 다음, 결과를 수학적으로 평가하여 정확성을 검증합니다.
5. RTL 합성
시스템 설계가 완전히 검증되면 RTL 설계의 HDL 코드 표현을 게이트 수준 넷리스트(netlist)로 변환하는 데 RTL 합성이 사용됩니다. 이는 EDA(전자 설계 자동화) 툴에서 결과 도면을 물리적 레이아웃으로 변환하는 툴의 프런트 엔드입니다. Synopsys와 같은 회사는 EDA 플랫폼에 다양한 합성 툴을 구축했습니다.
집적 회로는 두 가지 클래스로 나눌 수 있습니다. 응용 분야별 집적 회로(ASIC)는 특정 응용 분야 또는 작업에 적합하도록 맞춤 설계됩니다. 구축된 후에는 칩의 논리를 변경할 수 없습니다. ASIC 칩의 예로는 메모리 모듈, 디지털 음성 레코더, 최적화된 신호 프로세서, 마이크로프로세서, CPU(중앙 처리 장치)가 있으며 I/O, CPU, 메모리 등을 포함하는 시스템 온 칩(SoC)만큼 복잡한 예도 있습니다.
필드 프로그래머블 게이트 어레이(FPGA) 칩은 제조 후 다시 프로그래밍할 수 있는 반도체 칩입니다. 칩의 형상에 논리가 내장되는 대신, FPGA에는 프로그래밍 가능한 연결 그리드로 연결된 논리 블록 어레이가 있습니다.
RTL 설계는 두 설계 흐름의 첫 번째 부분에서 동일한 역할을 합니다. RTL 합성이 완료되면 엔지니어는 ASIC 설계 흐름에서 물리적 회로를 계획하고 배치해야 하며 이것을 평면 배치(floorplanning)라고 부릅니다. FPGA 설계에서는 RTL 코드를 넷리스트(netlist)로 직접 변환하여 어떤 논리 블록을 사용할 수 있는지 파악하고 배치 및 라우팅 단계에서 해당 블록을 구성합니다.
디지털 시스템의 원하는 동작을 표현하기 위한 하드웨어 기술 언어의 사용은 1970년대와 1980년대에 시작되었습니다. 초고밀도 집적 회로(VLSI)가 인기를 얻고 IC 설계의 추가 개발에 보조를 맞추면서 상당한 호응을 얻었습니다. 집적 회로의 피처 크기가 계속 축소되고 클록 속도가 계속 증가하고 더 많은 기능이 하나의 칩에 통합됨에 따라 설계 엔지니어는 점점 더 많은 과제에 직면하게 되었습니다.
설계가 복잡해지는 속도는 느려지지 않으며 RTL 툴은 이러한 과제에 지속적으로 직면하고 있습니다. 설계자가 차세대 집적 회로를 정의하는 데 사용할 툴 제품군을 개발하는 회사는 RTL 설계 흐름의 사용 편의성, 역량 및 기능을 개선하기 위해 몇 가지 중점 영역에 집중하게 되며, 해당 중점 영역은 다음과 같습니다.
전력 관리는 전체 집적 회로 설계 프로세스에서 가장 큰 과제 중 하나이며, RTL 최적화는 시스템에서 전력을 소비하는 전압 강하를 이해하고 관리할 수 있는 최적의 위치입니다. 더 많은 옵션, 더 큰 가시성 및 높은 속도를 제공하는 PowerArtist 소프트웨어와 같은 툴의 향상된 기능은 팀이 이러한 과제를 해결하는 데 도움이 됩니다.
설계, 시뮬레이션, 검증 및 사인오프에 사용할 수 있는 툴의 수가 증가함에 따라 기존 툴의 기능도 증가하게 됩니다. 이러한 툴을 제공하는 기업과 IEEE같은 산업 조직은 표준을 업데이트 및 개선하고 애플리케이션 간의 흐름을 최대한 원활하게 할 수 있는 툴을 제공함으로써 보조를 맞추어야 합니다.
집적 회로 설계 프로세스에 사용되는 많은 툴은 특히 물리적 회로의 레이아웃에서 프로세스 단계를 가속화하기 위해 머신 러닝(ML) 및 전문가 시스템 형태를 사용했습니다. 이는 개선된 ML 알고리즘과 생성형 인공 지능(AI) 툴을 사용하여 가장 가능성이 높은 다음 단계 또는 문제에 대한 해결책을 제안하는 것으로 계속될 것입니다.
RTL 분야의 공급업체는 엔지니어가 높은 수준의 시스템 사양을 더 빠른 속도의 고수준 하드웨어 언어로 변환하고 최적의 구성에 가까운 설계를 구현할 수 있는 능력을 향상시키기 위해 최선을 다하고 있습니다.
RTL 기술의 게이트를 RTL 합성 단계에서 실제 트랜지스터로 변환하면 생산성과 최적화가 크게 향상될 수 있습니다. 물리적 형상이 설계에 적용되면 회로 레이아웃의 다운스트림 프로세스를 단순화하는 정보에 입각한 결정을 내릴 수 있습니다.
여러분의 질문에 답변해 드리기 위해 최선을 다하겠습니다. Ansys 담당 엽업이 곧 연락을 드릴 것입니다.