Uma Linguagem de Especificação de Sistemas SDL Uma Linguagem de Especificação de Sistemas Luís Henrique Leal Ries ries@inf.pucrs.br
Sumário Introdução e Histórico Componentes (sistemas, blocos, processos) MSC (Message Sequence Chart) Editores SDL (Cinderella, Tau) Co-Síntese (Archimate) Comparações com outras linguagens Conclusões
Introdução Definição: É uma linguagem formal orientada a objetos que serve para especificar o comportamento de sistemas de tempo real. Vantagens: sintaxes gráficas (.GR) e textuais (.PR), definição de tipos de dados, reutilização do código, simulações em alto nível, geração de códigos em alto e baixo nível, concorrência, fácil especificação da comunicação de processos. Desvantagens: Dificuldade de criação, manipulação e visualização, quando a complexidade espacial for enorme para a representação gráfica.
Histórico 1972- Início da criação da linguagem pela CCITT (Comité Consultatif International Telegraphique e Telephonique). 1976 - especificação de um único processo 1982 - inter-comunicação de processos. 1988 - recebeu técnica de definição formal. 1992 - Adição de conceitos de Orientação a Objetos. 1996 - Revisão e clareza da linguagem. 2000 - Conceitos novos como utilização de UML.
Sumário Componentes(sistemas,blocos,processos) Introdução e Histórico MSC (Message Sequence Chart) Editores (Cinderella, Tau) Co-Síntese (Archimate) Comparações com outras linguagens Conclusões
Componentes Estrutura: system, block, process e procedure. Dados: Tipos abstratos de dados, Pacotes. Comunicação: sinais e canais (rotas de sinais).
Componentes - Hierarquia Árvore hierárquica da estrutura de SDL System Package Block Process Procedure
Componentes - System No sistema se insere a especificação do circuito através dos blocos e da comunicação entre este e com o ambiente.
Componentes - Blocks A função do bloco é fazer a comunicação interna dos sinais. Os objetivos dos blocos são: reduzir a complexidade através da estruturação hierárquica e permitir a inserção de rotas de sinais entre blocos e com outros níveis de hierarquia.
Componentes - Process O processo especifica um comportamento concorrente do programa, ou seja, é nele que são descritos a recepção e envio de sinais e a relação e operações entre estes sinais.
Componentes - Process (Comandos Internos) Recebe sinais de dentro de um process Envia sinais de dentro de um process Comentário Estado ou Próximo Estado Stop - para a execução Start - Inicio do Process Texto ou especificação de sinais Task - Utilizado para fazer cálculos, declarações Decisão Salvar um sinal
Componentes - Procedure O procedimento é uma chamada de uma subrotina que contém a descrição de uma função que será utilizada em um processo.
A função do Package é permitir Componentes - Package A função do Package é permitir que o projetista defina Procedures, sinais, tipos de dados, variáveis, constantes, etc Note que para usar um Package em um dos componentes precisa-se usar o “Use Package”
Componentes - Sinais e Canais (Comunicação) Canais - responsáveis pela comunicação dos sinais (enviar e/ou receber) entre dois ou mais processos, blocos ou sistemas.
Sumário Introdução e Histórico Componentes (sistemas, blocos, processos) MSC (Message Sequence Chart) Editores (Cinderella, Tau) Co-Síntese (Archimate) Comparações com outras linguagens Conclusões
MSC MSC (Message Sequence Chart Language) é uma forma gráfica que serve para representar os sinais enviados e recebidos pelos componentes (processos, blocos).
Sumário Editores (Cinderella, Tau) Introdução e Histórico Componentes (sistemas, blocos, processos) Formas MSC Editores (Cinderella, Tau) Archimate - uma ferramenta de Co-Síntese Comparações com outras linguagens Conclusões
Editores Estes editores são ferramentas utilizadas para a descrição gráfica e textual dos sistemas computacionais. Todas estas ferramentas permitem a simulação concorrente da especificação e permitem a visualização da mesma no formato MSC. São eles: Tau SDL (Telelogic) Cinderella SDL
Editores - Tau SDL Vantagens: Mais conhecido e utilizado Maior compatibilidade para a ferramenta de co-síntese Validator - uma simulação avançada e uma análise da implementação MSC de alto nível - MSC em forma de árvore Gera uma representação UML do sistema computacional
Tau SDL - Ambiente de edição
Tau SDL - Simulador
Tau SDL - Validator
Editores - Cinderella SDL Vantagens: Mais facilidade de programação Mais facilidade de simulação Gera uma representação UML Geração de arquivos para outros editores
Cinderella SDL - Ambiente de Edição
Sumário Introdução e Histórico Co-Síntese (Archimate) Componentes (sistemas, blocos, processos) Formas MSC Editores (Cinderella, Tau) Co-Síntese (Archimate) Comparações com outras linguagens Conclusões
Co-Síntese - Archimate Archimate é uma ferramenta de síntese específica para codesign, pois gera Hw e Sw a partir de uma especificação SDL. Gera arquivos C (C++), VHDL(Verilog). Fornece ambiente de co-simulação Não suporta todas as construções da linguagem (ex. Save)
Archimate - Ferramenta de Síntese Etapas da geração de Hw/Sw: Descrição em alto nível (SDL) Particionamento estrutural Síntese da Comunicação Síntese de SW Síntese de HW Interface Hardware Gerado Software Gerado
Archimate - Etapas da Geração de HW/SW Especificação em alto nível (SDL) código gerado e provavelmente testado Particionamento estrutural redefine a estrutura do sistema, selecionando manualmente quais serão os blocos em Hw e Sw Síntese da comunicação transforma canais abstratos para canais concretos que implementam os protocolos especificados pelo projetista.
Archimate - Síntese de Hardware Cria o clock e o reset Gera VHDL (ou Verilog) Síntese lógica e física Gera interface entre Hw e Sw
Archimate - Síntese de Software Gera um arquivo C/C++ Compila-o Mapeia a síntese para um mP Específico (IBM Power PC 603e, Motorola MC68040, Motorola M68000 e STMicroelectronics ST10)
Archimate - Ambiente de Síntese Bloco SW Blocos HW Bloco Clock Bloco compilado SW
Sumário Introdução e Histórico Comparações com outras linguagens Componentes (sistemas, blocos, processos) Formas MSC Editores (Cinderella, Tau) Co-Síntese (Archimate) Comparações com outras linguagens Conclusões
SDL - Comparações com outras Linguagens Características VHDL C SDL Tipo de Especificação Idealizada para a Linguagem Poder de Abstração Facilidade de Alteração e Manutenção Poder de Documentação Público Alvo Descrição de Sinais e Variáveis Suporte à Concorrência Descrição Hierárquica Suporte à Descrição Síncrona Suporte a Descrição de Sistemas de Telecomunicação em Baixo Nível Suporte a Descrição de Sistemas de Telecomunicação Interativos Sistemas Assíncronos Alto Média Pouco Sim Alta Baixo Excelente Hardware Médio Software Variável* Muito Não Baixa * O nível pode ser alto (bons programadores) ou baixo (maus programadores)
Sumário Conclusões Introdução e Histórico Componentes (sistemas, blocos, processos) Formas MSC Editores (Cinderella, Tau) Co-Síntese (Archimate) Comparações com outras linguagens Conclusões
Conclusões SDL é uma excelente linguagem para especificar a comunicação assíncrona entre processos Tem um grande potencial para a especificação completa de Sist. de Telecomunicações Interativos Possui boas e diferentes formas de representar sua linguagem É uma linguagem pouco usada atualmente, mas com grandes chances de entrar no mercado futuramente Existe incompatibilidade entre seus editores tanto na representação gráfica quanto na textual.