Эти языки предоставляют модули, которые по своей сути являются параллельными и могут обрабатывать асинхронные сообщения довольно аккуратно (через порты). Не считая того, что они не могут создавать экземпляры модулей во время выполнения, они квалифицируются как языки программирования на основе актеров?Может ли 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
бы маршрутизаторы право быть (миниатюрные) актеры?
Имейте в виду, что, несмотря на описание параллельного поведения, большинство существующих инструментов, используемых для выполнения этих языков на процессорах, имеют ограниченный (или нулевой) параллелизм. – Chiggs
@nav: В связи с примером в последних изменениях: пакет SystemVerilogCSP в моем ответе дает вам атомарные действия «Отправить/получать», а также действие «Зонд», которое проверяет содержимое сообщения на входном канале, прежде чем совершать действие связи. Итак, да, вы можете очень хорошо моделировать такой пример и даже имитировать его на стандартных симуляторах SystemVerilog. – Ari
Спасибо @Ari .. Это было полезно – nav