Программирование Xilinx В чем разница между VHDL, Verilog и SystemVerilog? Sat, October 05 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

В чем разница между VHDL, Verilog и SystemVerilog? Печать
Добавил(а) microsin   

Разработчики электронной аппаратуры описывают поведение и структуру системы, и разрабатывают схемы с помощью языков HDL (hardware description language, HDL). Наиболее известны сегодня HDL-языки VHDL, Verilog и SystemVerilog. Они отличаются от обычных языков программирования, потому что включают описание времени задержки распространения сигнала, и подразумевают одновременное выполнение некоторых логических процессов. Разработка современных SoC (System on Chip) невозможна без этих трех специализированных языков описания аппаратуры.

Каждый из этих трех HDL имеет свой собственный стиль описания. VHDL и Verilog реализуют абстракции регистр - передача сигнала - логический уровень (register-transfer-level, RTL). Когда эти языки были впервые представлены в конце 1980-х, они считались прорывными технологиями, потому что позволяли инженерам работать на верхнем уровне абстракции с помощью RTL-симуляторов. Ранее была возможность симулировать поведение разработок на уровне схемы или логического элемента.

SystemVerilog был разработан как революционный переход от VHDL и Verilog для поддержки сложности разработок SoC. Он выглядит гибридным расширением Verilog - содержит в себе как HDL-описание аппаратуры, так и объектно-ориентированный подход к программированию. SystemVerilog включает возможности для разработки тестов производительности и формальной проверки на основе набора логических утверждений.

Разработку языка VHDL финансировало Министерство Обороны США, и компания Gateway Design Automation разработала Verilog с поддержкой симулятора. Компания Cadence Design Systems, когда она приобрела компанию Gateway, предоставила Verilog HDL в общее пользование, и он стал индустриальным стандартом.

В начале 1990-х индустрия электроники была подвержена "языковым войнам", и обе конкурирующие фракции VHDL и Verilog боролись друг с другом за место в умах и на рабочих столах инженеров. Оба языка выжили, и сегодня существуют совместно, причем часто в одном проекте.

Компания Co-Design разработала SystemVerilog, известный сначала как SUPERLOG. После того, как компания Synopsys приобрела компанию Co-Design, SUPERLOG/SystemVerilog также был предоставлен в публичный домен.

Все три языка сегодня являются индустриальными стандартами IEEE – VHDL это IEEE 1076-2008, Verilog это IEEE 1364-2005 и SystemVerilog это IEEE 1800-2012.

[Сравнение VHDL, Verilog, SystemVerilog]

VHDL и Verilog считаются обычными языками для разработки цифровых устройств, в то время как SystemVerilog представляет расширенную версию Verilog. Каждый язык имеет свой стиль и индивидуальные характеристики. VHDL унаследовал от языка программирования Ada концепцию и синтаксис, в то время как Verilog ссылается на ранний HDL, который назывался Hilo, и имеет стиль языка программирования C.

В Verilog и VHDL инженеры могут представить необходимую функциональность в виде текста программы. Затем модель симулируется для проверки, что дизайн работает так, как требуется. В модели могут быть подкорректированы любые проблемы, и симуляция проверит эту коррекцию.

VHDL это богатый и строго типизованный и строго детерминистический язык, более подробный в сравнению с Verilog. В результате проекты, написанные на VHDL, считаются само-документированными. Синтаксис сильно отличается от стиля языка C, и инженеры, работающие в VHDL, постоянно сталкиваются с необходимостью явного преобразования из одного типа данных в другой. VHDL часто сразу показывает ошибки, которые пропускает Verilog. VHDL имеет подчеркнуто однозначно недвусмысленную семантику, и поэтому легче переносится между разными системами разработки (в том смысле, что перенос точнее переносит все тонкости работы исходного проекта).

Пример кода VHDL:

reg1: process (rst, clk)
   begin
   if  rst = '1' then
      q_reg <= (others => '0');
      q_i <= (others => '0');
   elsif  rising_edge(clk) then
      if  s_l = '1' then
      q_i(0) <= q_i(7);
      loop1: for i in 6 downto 0 loop
                q_i(i + 1) <= q_i(i);
             end loop loop1;
      q_reg <= y;
      else
      q_i <= q_reg;
      q_reg <= y;
      end if;
   end if;
   end process reg1;

Verilog слабо проверяет типы, и более краткий, с эффективной нотацией. Он также детерминистический. Все типы данных в заранее определены в Verilog, и каждый из них имеет битовое представление. Синтаксис похож на C.

Пример кода Verilog:

always @(posedge CLK or posedge RST)
begin
   if (RST) begin
      q_reg = 0;
      Q = 0;
   end else if (S_L) begin
      Q[7:0] = {Q[6:0],Q[7]}; 
      q_reg = Y;
   end else begin
      Q = q_reg;
      q_reg = Y;
   end
end

SystemVerilog включает ряд расширений Verilog HDL с целью помочь инженерам в разработке и проверки больших и более сложных проектов. Фактически многие наблюдатели в сфере индустрии считают SystemVerilog первым языком типа Hardware Description and Verification Language (HDVL), потому что он объединяет в себе функции VHDL и Verilog, связанные с Hardware Verification Language (HVL) и поддерживает объекты. Похожая эволюция произошла с языком C, когда на основе его был создан C++.

Пример кода на SystemVerilog:

property p_push_error; 
   @ (posedge clk) 
   not (b_if.push && b_if.full && !b_if.pop);
endproperty : p_push_error
 
ap_push_error_1 : assert property (p_push_error);
   property p_pop_error; 
      @ (posedge clk) 
      not (b_if.pop && b_if.empty); 
   endproperty : p_pop_error
   ap_pop_error_1 : assert property (p_pop_error);
 
always_ff @ (posedge clk) begin
   b_if.error <= (b_if.pop && b_if.empty) || (b_if.push && b_if.full && !b_if.pop);

Из-за своей структуры VDHL отлавливает больше ошибок уже на ранних стадиях процесса разработки. С другой стороны Verilog позволяет инженерам быстро описывать модели. SystemVerilog пытается взять лучшие функции из обоих языков, и включает в себя функции HVL для поддержки разработки тестов производительности и техник формальной проверки.

Сегодня "языковые войны" можно считать завершенными, потому что команды инженеров во всем мире эффективно применяют VHDL, Verilog и SystemVerilog для своих разработок SoC. В целом, SystemVerilog может помочь и с разработкой, и с проверкой дизайна, однако он пока не получил самого широкого распространения (в частности, ISE WebPack от компании Xilinx поддерживает только VHDL и Verilog).

[Ссылки]

1. What’s the Difference Between VHDL, Verilog, and SystemVerilog? site:electronicdesign.com.

 
Top of Page