2014-09-17 5 views
1

Эти языки предоставляют модули, которые по своей сути являются параллельными и могут обрабатывать асинхронные сообщения довольно аккуратно (через порты). Не считая того, что они не могут создавать экземпляры модулей во время выполнения, они квалифицируются как языки программирования на основе актеров?Может ли Verilog/Systemverilog/VHDL считаться акто-ориентированными языками программирования?

Благодаря

EDIT:

Что я действительно ищу, как хорошо семантика языка может быть использована для «модели» актеры, а не как тренажер будет обрабатывать код (из Конечно, все они управляются событиями под ним, а дальше вниз мы заканчиваем транзисторами :-)).

Так что, если я создаю кучу Ip4Routers, как это,

module Ip4Router (
    inout interface_t intrf1, // Port that can atomically send/rcv packets 
    inout interface_t intrf2, ... 
); 
    always @(intrf1) begin // Activity on intrf1 
     if (intrf1.valid & intrf1.ipaddr != myaddr && ...) begin 
      intrf2.valid <= .. // atomically bang data on intrf2 + other stuff 
     end 
    end 
    //... 
endmodule 

module test; 
    interface_t intrf1[1001]; 
    Ip4Router r1(intrf1[0], intrf1[1]) 
    Ip4Router r2...;   // Create and wire up 1000 routers in some topology... 
endmodule 

бы маршрутизаторы право быть (миниатюрные) актеры?

+0

Имейте в виду, что, несмотря на описание параллельного поведения, большинство существующих инструментов, используемых для выполнения этих языков на процессорах, имеют ограниченный (или нулевой) параллелизм. – Chiggs

+1

@nav: В связи с примером в последних изменениях: пакет SystemVerilogCSP в моем ответе дает вам атомарные действия «Отправить/получать», а также действие «Зонд», которое проверяет содержимое сообщения на входном канале, прежде чем совершать действие связи. Итак, да, вы можете очень хорошо моделировать такой пример и даже имитировать его на стандартных симуляторах SystemVerilog. – Ari

+0

Спасибо @Ari .. Это было полезно – nav

ответ

1

Несмотря на то, что эти HDL не разработаны в качестве актер-ориентированных языков, было предпринято множество попыток моделировать абстрактное асинхронное передачу сообщений, используя их. Существуют различные примеры моделирования Communicating Sequential Processes (CSP) в Verilog/SystemVerilog/VHDL/SystemC. Несмотря на то, что они предназначены для разработки аппаратных средств и тестовых сред, с небольшими усилиями они могут быть использованы для «имитации» такого языка моделирования более высокого уровня. Очевидная причина для этого - воспользоваться существующими мощными компиляторами и инструментами моделирования для этого языка, а не создавать еще один новый язык.

Например, «SystemVerilogCSP» моделирует каналы связи с CSP и передачу абстрактных сообщений с использованием интерфейсов SystemVerilog. Хотя каналы связи реализованы с использованием протоколов квитирования, с точки зрения пользователя этого пакета, они являются просто атомарными и блокирующими действиями. См. Рисунок 2 в this paper, в котором два параллельных модуля обмениваются данными посредством блокировки CSP-подобных коммуникационных действий.

Кроме того, Verilog и SystemVerilog могут создавать параллельные потоки, используя конструкции fork-join.

1

Я помню, когда я начинал сначала, я сделал некоторые базовые проектные работы. Я всегда пытался исправить проблемы в своем дизайне, исправляя код, а затем мой наставник сказал мне: «Вы не должны здесь программировать, вы должны описать, какое оборудование собирается синтезировать из этого кода».

Verilog и VHDL являются описания аппаратных средств языков (ЛВП) и при их использовании вы думаете иначе, чем вы, когда вы программируете на другом языке. Я бы не назвал их языками программирования (хотя у них также есть конструкции, которые не предназначены для синтеза, но это предназначено для создания testbenches).

0

№ Семантика выполнения этих языков: Событие управляется. Они используют стратифицированную четную очередь, что затрудняет выполнение на многоядерных или других параллельных архитектурах. Событие - это изменение сигнала или какого-либо абстрактного сообщения, и все события переходят в очередь, которая должна быть распределена (или развернута) для всех процессов, ожидающих события. За один раз выполняется только один процесс.

Хотя вы можете синтезировать эти описания HDL в другой форме, которая может быть ориентирована на актера, фактический источник не может этого не сделать.

Смежные вопросы