Tópicos em System-Level
Design
Transaction Level
Modeling
Sandro Rigo
[email protected]
2o Semestre de 2006
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
1
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
2
Terminologia para Abstração
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
3
Exemplo
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
4
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);
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
5
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 !
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
6
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
7
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
8
Nomenclaturas
• Para evitar conflito com outras
nomenclaturas já existentes, novos
nomes foram criados
– Initiator (≠ Master)
– Target (≠ Slave)
– Put (≠ write)
– Get (≠ read)
– Peek
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
9
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(); }
};
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
10
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;
};
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
11
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;
};
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
12
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;
};
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
13
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.
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
14
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
15
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
16
Canais TLM
RSP transport( const REQ &req ) {
mutex.lock();
master_port->put( req );
rsp = master_port->get();
mutex.unlock();
return rsp;
}
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
17
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
18
Exemplo: O Protocolo TLM de ArchC
• ac_tlm_protocol.H
• ac_tlm_port.H
• ac_tlm_port.cpp
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
19
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
20
API ArchC – Modelo 3 camadas
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
21
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
MO801: Tópicos em Arquitetura e Hardware
http://www.ic.unicamp.br/~sandro
22
Download

tlm