Уровень регистровых передач¶
Уровень регистровых передач (RTL, от англ. Register Transfer Level) — это один из уровней абстракции при проектировании цифровых интегральных схем, в первую очередь — специализированных интегральных схем (ASIC) и программируемых логических интегральных схем (ПЛИС, FPGA). На этом уровне поведение цифрового устройства описывается как последовательность операций передачи данных между регистрами, выполняемых под управлением тактовых сигналов и комбинационной логики. RTL является промежуточным звеном между поведенческим (алгоритмическим) описанием и физическим (транзисторным) уровнем, обеспечивая баланс между абстракцией и детализацией, достаточный для синтеза схемы.
¶Основные понятия
¶Регистр
Регистр — это набор триггеров (D-триггеров), объединённых общим тактовым сигналом. Каждый триггер хранит один бит данных. Регистры являются синхронными элементами, то есть их состояние изменяется только по фронту (переднему или заднему) тактового сигнала. В RTL-модели регистры представляют собой память, состояние которой обновляется в каждом такте.
¶Комбинационная логика
Комбинационная логика — это набор логических элементов (И, ИЛИ, НЕ, мультиплексоры, сумматоры и т.д.), выходы которых зависят только от текущих значений входов и не имеют памяти. В RTL-модели комбинационная логика вычисляет новые значения для регистров на основе текущих значений регистров и внешних входов.
¶Тактовый сигнал
Тактовый сигнал (clock) — это периодический сигнал, синхронизирующий работу всех регистров в схеме. Все операции передачи данных происходят по фронту тактового сигнала, что обеспечивает детерминированное поведение схемы.
¶Операция передачи данных
Основная единица поведения на RTL — это операция вида R1 <= R2 + R3, которая означает, что в следующем такте значение регистра R1 станет равным сумме значений регистров R2 и R3. Символ <= (или := в некоторых языках) обозначает неблокирующее присваивание, которое выполняется одновременно для всех регистров в конце такта.
¶История
Методология RTL начала формироваться в 1960-х годах с развитием цифровых вычислительных машин. Первые описания на уровне регистровых передач использовались для документирования архитектуры процессоров. В 1970-х годах появились первые языки описания аппаратуры (HDL), такие как Verilog (1984) и VHDL (1987), которые предоставили формальные средства для RTL-моделирования. С развитием инструментов синтеза в 1990-х годах RTL стал стандартным входным форматом для автоматизированного проектирования (EDA). Сегодня RTL является основным уровнем, на котором работают разработчики цифровых схем, поскольку он позволяет эффективно описывать сложные алгоритмы, сохраняя возможность синтеза в конкретную аппаратуру.
¶Языки описания
¶Verilog
Verilog — один из двух основных языков HDL. RTL-описание в Verilog обычно использует блоки always @(posedge clk) для синхронных процессов и операторы assign для комбинационной логики. Пример RTL-описания счетчика на Verilog: ``verilog module counter( input clk, input reset, output reg [3:0] count ); always @(posedge clk or posedge reset) begin if (reset) count <= 4'b0000; else count <= count + 1; end endmodule ``
¶VHDL
VHDL (VHSIC Hardware Description Language) — второй основной язык. RTL-описание в VHDL использует процессы (process) с чувствительностью к тактовому сигналу. Пример аналогичного счетчика на VHDL: ```vhdl entity counter is port ( clk : in std_logic; reset : in std_logic; count : out std_logic_vector(3 downto 0) ); end entity;
architecture rtl of counter is signal count_reg : unsigned(3 downto 0) := (others => '0'); begin process(clk, reset) begin if reset = '1' then count_reg <= (others => '0'); elsif rising_edge(clk) then count_reg <= count_reg + 1; end if; end process; count <= std_logic_vector(count_reg); end architecture; ```
¶SystemVerilog
SystemVerilog — расширение Verilog, поддерживающее более высокие уровни абстракции, включая интерфейсы, утверждения (assertions) и объектно-ориентированные конструкции. Для RTL-описания используется подмножество, совместимое с синтезом.
¶Процесс проектирования
¶Спецификация
На начальном этапе разрабатывается функциональная спецификация устройства, определяющая его поведение, интерфейсы и временные характеристики.
¶Разработка RTL-кода
Инженер-разработчик пишет RTL-описание на одном из языков HDL, используя структурный или поведенческий стиль. Код должен быть синтезируемым, то есть соответствовать ограничениям инструментов синтеза.
¶Верификация
RTL-модель проверяется на соответствие спецификации с помощью симуляции (тестбенчей) и формальной верификации. Верификация может занимать до 70% времени проектирования.
¶Синтез
Инструмент синтеза (например, Synopsys Design Compiler, Cadence Genus) преобразует RTL-описание в список соединений (netlist) на уровне логических вентилей и триггеров. Синтез учитывает технологическую библиотеку целевого кристалла и ограничения по частоте, площади и энергопотреблению.
¶Физическое проектирование
После синтеза выполняется размещение (placement) и трассировка (routing) элементов на кристалле, затем — верификация временных характеристик (timing closure).
¶Классификация RTL-стилей
¶Структурный стиль
Описание схемы в виде иерархии модулей, соединённых проводами. Близок к принципиальной схеме, но на уровне регистров. Используется для крупных блоков, где важна топология.
¶Поведенческий стиль
Описание алгоритма работы с помощью условных операторов (if, case) и циклов (for, while). Более абстрактный, но требует осторожности для обеспечения синтезируемости.
¶Потоковый стиль (Dataflow)
Описание комбинационной логики с помощью непрерывных присваиваний (assign в Verilog, concurrent signal assignment в VHDL). Используется для комбинационных схем.
¶Применение
RTL является основой для проектирования:
- Микропроцессоров и микроконтроллеров — от простых 8-битных ядер до сложных многопроцессорных систем.
- Цифровых сигнальных процессоров (DSP) — реализация фильтров, БПФ, кодеков.
- Сетевых устройств — коммутаторы, маршрутизаторы, сетевые адаптеры.
- Графических ускорителей — блоки растеризации, шейдеры.
- Периферийных интерфейсов — USB, PCIe, Ethernet, HDMI.
- Систем на кристалле (SoC) — интеграция процессорного ядра, памяти, периферии в одном кристалле.
¶Преимущества и недостатки
¶Преимущества
- Абстракция — позволяет описывать сложные алгоритмы без деталей физической реализации.
- Синтезируемость — RTL-код может быть автоматически преобразован в физическую схему.
- Переносимость — RTL-описание может быть синтезировано для разных технологических процессов (например, 28 нм, 7 нм) и разных производителей (TSMC, Intel, Samsung).
- Верифицируемость — RTL-модель может быть симулирована и формально проверена.
¶Недостатки
- Сложность — для больших проектов RTL-код становится громоздким и трудно поддерживаемым.
- Время проектирования — разработка RTL требует высокой квалификации и занимает много времени по сравнению с поведенческими уровнями (например, HLS — высокоуровневый синтез).
- Ограничения синтеза — не все конструкции HDL синтезируемы, что требует от разработчика знания ограничений инструментов.
¶Связь с другими уровнями абстракции
- Поведенческий уровень (High-Level Synthesis, HLS) — описание на C/C++/SystemC, автоматически преобразуемое в RTL. HLS позволяет ускорить проектирование, но даёт меньший контроль над архитектурой.
- Логический уровень (Gate Level) — список соединений из вентилей и триггеров, полученный после синтеза RTL. На этом уровне выполняется оптимизация и верификация временных характеристик.
- Транзисторный уровень — физическая реализация вентилей на транзисторах, используемая для аналоговых и смешанных схем, а также для критичных по скорости блоков (например, ячейки памяти).
¶Инструменты
Основные инструменты для работы с RTL:
- Симуляторы: ModelSim (Siemens EDA), VCS (Synopsys), Xsim (Xilinx), Icarus Verilog (открытый).
- Синтезаторы: Synopsys Design Compiler, Cadence Genus, Yosys (открытый, для ПЛИС).
- Средства верификации: формальные верификаторы (Synopsys VC Formal, Cadence JasperGold), UVM-библиотеки.
- Среды разработки: Vivado (Xilinx), Quartus (Intel), Libero (Microchip).
¶Интересные факты
- Термин «Register Transfer Level» был введён в 1960-х годах американским учёным Джоном фон Нейманом (John von Neumann) при описании архитектуры EDVAC.
- Первый коммерческий синтезатор RTL был выпущен компанией Synopsys в 1987 году.
- В современных проектах RTL-код может содержать миллионы строк, а для его верификации используются облачные вычислительные кластеры.
- Язык Verilog изначально был разработан как язык моделирования, а не синтеза, и синтезируемое подмножество было определено позже.
¶Критика
Основная критика RTL связана с его низкой производительностью разработки по сравнению с HLS. Сложность RTL-кода ведёт к ошибкам, которые трудно отлаживать. Кроме того, RTL-описание жёстко привязано к тактовой частоте, что затрудняет перенос на другие технологии. Некоторые исследователи предлагают переходить на более высокие уровни абстракции, такие как SystemC или Chisel (язык на основе Scala), однако RTL остаётся доминирующим в промышленности благодаря зрелости инструментов и предсказуемости результатов.
¶Источники
- Thomas, D. E., Moorby, P. R. — The Verilog Hardware Description Language. — Springer, 2008.
- Ashenden, P. J. — The Designer's Guide to VHDL. — Morgan Kaufmann, 2008.
- Gajski, D. D., Dutt, N. D., Wu, A. C.-H., Lin, S. Y.-L. — High-Level Synthesis: Introduction to Chip and System Design. — Springer, 1992.
- Synopsys Design Compiler User Guide — Synopsys, 2023.
- Xilinx Vivado Design Suite User Guide — AMD, 2024.
- IEEE Standard 1364-2005 — Verilog Hardware Description Language.
- IEEE Standard 1076-2019 — VHDL Language Reference Manual.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


