tópicos em system-level design
DESCRIPTION
Tópicos em System-Level Design. Transaction Level Modeling. Sandro Rigo [email protected] 2 o Semestre de 2006. Integração de Componentes. Diversos padrões disponíveis Foco em baixo nível AMBA, CoreConnect, Avalon, OCP/IP Úteis para descrição do modelo final - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/1.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
1
Tópicos em System-Level Tópicos em System-Level DesignDesign
Sandro [email protected]
2o Semestre de 2006
Transaction LevelTransaction LevelModelingModeling
![Page 2: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/2.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
2
Integração de Componentes
• Diversos padrões disponíveis– Foco em baixo nível
• AMBA, CoreConnect, Avalon, OCP/IP– Úteis para descrição do modelo final
– Baixo desempenho em simulação
• Transaction Level Model (TLM)– Chamadas de funções
– Interface dos módulos muito bem definida
– Distribuída junto com o SystemC
![Page 3: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/3.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
3
Terminologia para Abstração
![Page 4: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/4.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
4
Exemplo
![Page 5: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/5.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
5
Comentários
• É necessário expor tantos detalhes nessa fase?
• Como simplificar o processo?
• Que tal TLM?
outport.write(A1, D1);
outport.write(A2, D2);
outport.write(A3, D3);
![Page 6: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/6.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
6
Benefícios em Tempo de Projeto
Tempo necessário para escrever o TLM
Verificação do SW começa mais cedo
Verificação do Sistema começa mais cedo
Tempo Total é reduzido !
![Page 7: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/7.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
7
TLM – Motivação
• Adiantar a disponibilidade de uma plataforma para desenvolvimento de software;
• Exploração do projeto como um todo
• Fornecer um modelo completo do sistema para verificação
• Será utlizado o padrão OSCI TLM 1.0
![Page 8: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/8.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
8
Conceitos usados pelo TLM
• Comunicação é modelada separado da funcionalidade
• Foco nas interfaces– Implementação apenas após a definição rígida das interfaces
• Bloqueantes x Não bloqueantes– Métodos bloqueantes podem chamar a função wait()
– SC_THREAD x SC_METHOD
• Unidirecional x Bidirecional– Toda transação pode ser classificada de uma dessas formas ou quebrada
para se enquadrar numa delas
• Transferência de dados é feita através de chamadas de funções
![Page 9: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/9.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
9
Nomenclaturas
• Para evitar conflito com outras nomenclaturas já existentes, novos nomes foram criados– Initiator (≠ Master)
– Target (≠ Slave)
– Put (≠ write)
– Get (≠ read)
– Peek
![Page 10: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/10.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
10
TLM Core Interfaces
// uni-directional blocking interfaces
template < typename T >
class tlm_blocking_get_if : public virtual sc_interface
{
public:
virtual T get( tlm_tag<T> *t = 0 ) = 0;
virtual void get( T &t ) { t = get(); }
};
![Page 11: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/11.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
11
TLM Core Interfaces
// uni-directional blocking interfaces
template < typename T >
class tlm_blocking_put_if : public virtual sc_interface
{
public:
virtual void put( const T &t ) = 0;
};
![Page 12: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/12.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
12
TLM Core Interfaces
// uni-directional non blocking interfaces
template < typename T >
class tlm_nonblocking_get_if : public virtual sc_interface
{
public:
virtual bool nb_get( T &t ) = 0;
virtual bool nb_can_get( tlm_tag<T> *t = 0 ) const = 0;
virtual const sc_event &ok_to_get( tlm_tag<T> *t = 0 ) const = 0;
};
![Page 13: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/13.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
13
TLM Core Interfaces
// uni-directional non blocking interfaces
template < typename T >
class tlm_nonblocking_put_if : public virtual sc_interface
{
public:
virtual bool nb_put( const T &t ) = 0;
virtual bool nb_can_put( tlm_tag<T> *t = 0 ) const = 0;
virtual const sc_event &ok_to_put( tlm_tag<T> *t = 0 ) const = 0;
};
![Page 14: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/14.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
14
TLM Core Interfaces
// bidirectional blocking interfaces
template < typename REQ , typename RSP >
class tlm_transport_if : public virtual sc_interface
{
public:
virtual RSP transport( const REQ & ) = 0;
};
OBS: Pode ser visto como uma união das interfaces bloqueantes de get e put.
![Page 15: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/15.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
15
Canais TLM
• O pacote padrão inclui três canais:
– tlm_fifo<T>: implementa todas as interfaces unidirecionais
– tlm_req_resp_channel<REQ,RSP>: consiste de duas fifos
• intiator-target (master_if):
– fornece put para fila de REQ e get para fila de RSP
• target-initiator(slave_if):
– fornece put para fila de RSP e get para fila de REQ
![Page 16: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/16.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
16
Canais TLM
• O pacote padrão inclui três canais:
– tlm_transport_channel<REQ,RSP>: cada REQ ligado a uma RSP
• exporta as mesmas interfaces que o tlm_req_rsp_channel
• implementa a interface bidirecional de transporte
![Page 17: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/17.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
17
Canais TLM
RSP transport( const REQ &req ) {
mutex.lock();
master_port->put( req );
rsp = master_port->get();
mutex.unlock();
return rsp;
}
![Page 18: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/18.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
18
Exemplo: O Protocolo TLM de ArchC
• Possibilita a conexão dos simuladores gerados por ArchC a módulos externos
• Totalmente baseado no padrão de SystemC v1.0
• Implementa a interface de transporte– bidirecional
– bloqueante
![Page 19: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/19.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
19
Exemplo: O Protocolo TLM de ArchC
• ac_tlm_protocol.H
• ac_tlm_port.H
• ac_tlm_port.cpp
![Page 20: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/20.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
20
Modelagem em três camadas
• Usuário– API de conveniência, específica do protocolo
• Protocolo– Código específico de protocolo
– Faz a ponte entre as camadas de usuário e a de transporte
• Transporte– Usa APIs e modelos genéricos de transporte de dados
– Facilita a interoperabilidade dos modelos
– Trabalho do TLM WG é definir código da camada de transporte
![Page 21: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/21.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
21
API ArchC – Modelo 3 camadas
![Page 22: Tópicos em System-Level Design](https://reader036.vdocuments.com.br/reader036/viewer/2022062408/56813925550346895da0cce5/html5/thumbnails/22.jpg)
MO801: Tópicos em Arquitetura e Hardwarehttp://www.ic.unicamp.br/~sandro
22
Referências
• SystemC from the Ground-up - David C. Black e Jack Donovan, Kluwer Academic Press, 2004
• Transaction Level Modeling in SystemC – Adam Rose, Stuart Swan, John Pierce, Jean-Michel Fernandez, OSCI TLM Working Group
• SystemC Tutorial. Forte Design Systems. http://www.forteds.com