설계 추상화 수준
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 3번째.
디지털 설계에서, 우리는 동일한 회로를 다양한 수준의 세부 사항으로 설명할 수 있습니다. Verilog는 이러한 추상화 단계 중 어느 단계에서든 회로를 설명할 수 있는 언어입니다. 그것이 바로 Verilog가 강력한 이유입니다!
다음은 각 레벨입니다:
레벨 1: 동작(Behavioral)
이 레벨은 회로가 어떻게 동작하는지가 아니라 무엇을 수행하는지를 설명합니다. "카운트 업" 또는 "두 수 더하기"와 같은 기능이나 동작에 초점을 맞춥니다.
카운팅이나 더하기가 어떻게 일어나는지에 대한 내부적인 세부 사항은 표시되지 않습니다. 이 수준은 인간의 사고와 가장 유사하며 작성하기가 더 쉽습니다.
레벨 2: RTL
이 레벨은 데이터가 레지스터 사이에서 어떻게 이동하는지, 그리고 해당 데이터에 어떤 연산이 일어나는지를 보여줍니다. 데이터 경로를 확인할 수 있습니다: 데이터는 레지스터에서 가산기로 이동한 다음, 다시 레지스터로 돌아갑니다.
이것은 이해하기 쉬우면서도 하드웨어를 제작할 수 있을 만큼 충분히 상세하여, 대부분의 디지털 디자이너들이 작업하는 수준입니다.
레벨 3: 게이트 레벨
이 레벨은 AND, OR, XOR와 같은 기본 논리 게이트를 사용하여 회로를 설명합니다. 모든 연결이 명시적으로 표시됩니다.
이 수준은 매우 상세하며 수작업으로 작성하기 어렵습니다. 이는 보통 수동으로 작성되지 않고, 상위 수준의 설명으로부터 도구에 의해 생성됩니다.
중요한 이유
- **상위 레벨(Higher level)** = 작성하기 쉽고, 제어력이 낮음
- **하위 레벨(Lower level)** = 작성하기 어렵고, 제어력이 높음
- **RTL**은 대부분의 설계 작업에 가장 적합한 지점입니다
챌린지
할 일:
- 이 코드를 실행하고 동일한 작업이 세 가지 서로 다른 수준에서 어떻게 설명되는지 확인하세요:
치트 시트
Verilog는 다양한 추상화 단계(abstraction levels)로 회로를 기술할 수 있습니다:
- 동작 수준 (Behavioral) – 회로가 무엇을 하는지 기술합니다 (예: "두 숫자를 더함"). 작성이 가장 쉽지만, 제어력이 가장 낮습니다.
- RTL (Register Transfer Level, 레지스터 전송 수준) – 데이터가 레지스터 사이에서 어떻게 이동하고 어떤 연산이 발생하는지 기술합니다. 대부분의 디지털 설계 작업에서 표준이 되는 단계입니다.
- 게이트 수준 (Gate Level) – 명시적인 논리 게이트(AND, OR, XOR)를 사용하여 회로를 기술합니다. 가장 상세하며 작성이 가장 어렵습니다. 보통 툴에 의해 생성됩니다.
트레이드오프(Trade-off): 높은 수준 = 작성하기 쉬움, 제어력 낮음. 낮은 수준 = 작성하기 어려움, 제어력 높음. RTL이 가장 적절한 지점(sweet spot)입니다.
직접 해보기
module abstraction_demo;
initial begin
$display("=== Design Abstraction Levels ===");
$display("");
$display("Level 1 (Behavioral):");
$display(" 'Add a and b' - no details how");
$display("");
$display("Level 2 (RTL):");
$display(" 'On clock edge, result <= a + b' - shows data flow");
$display("");
$display("Level 3 (Gate Level):");
$display(" 'XOR gates for sum, AND gates for carry' - actual gates");
$display("");
$finish;
end
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.