UE SYSTEMC – Cours 4 Prototypage virtuel avec SocLib

Slides:



Advertisements
Présentations similaires
Prmt For imbriqués.
Advertisements

Etude de cas CNES : Modélisation de la partie Commande/Contrôle dun GCU Alexandre Cortier, Eric Morand.
Rappels C.
t(s) U(v) CAN temps ,4v
C++ 6ème cours Patrick Reuter maître de conférences
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
OTB Analog module: Input configuration with TSX PREMIUM (TSXCPP110)
Formation CCNA 07- La commutation LAN. Sommaire 1) Concepts et fonctionnement 2) Commutateurs a - Présentation b - Démarrage c - Configuration de base.
PICDEM.net.
MySQL I / Présentation. II / Administration et Outils.
(Classes prédéfinies – API Java)
Liste générique dans Linux 2.6 Source : Understanding the Linux kernel Chap3 processes p.87.
Points importants de la semaine Les pointeurs. Les chaînes de caractères.
IPv6 pour les Nuls 10 février 2011
Connexion base de données
Système d’Exploitation
Programmation de cartes graphiques
Affichage LCD RS: Register Selection Transfert de données
Common Gateway Interface
Development and certification of Avionics Platforms on Multi-Core processors Marc GATTI – August 29th, 2013.
Cours VHDL Chap 3: sémantique VHDL
Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
2 - Introduction à VHDL-AMS (1 à 23 = 1h45)
Core Module 9 Family and Community Engagement Association des conseils scolaires des écoles publiques de lOntario (ACÉPO) Association franco-ontarienne.
UE SYSTEMC – Cours 3 La bibliothèque SocLib
Approche mémoire partagée Threads – Paradigme de lapproche – Objets exécutés par les processeurs threads vs processus, – un thread possède : Ses registres,
TRAITEMENT DE STRUCTURES
Un mini-compilateur Introduction à la syntaxe
Course Critique Race Condition
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Chapitre 4.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
Programmation Initiation Aux Langages C et C++ (2) Bruno Permanne 2006.
©Frédéric Bastien 2006 Université de Montréal 1 LISATek LISATek pour concevoir des processeurs.
Les enregistrements (struct) suite. Struct Rappel Enregistrement : Suite de données pouvant être de types différents, accessibles via une seule variable.
SVP. Bien lire la description des diapositives 1. 1.Une diapositive sur lidentification de létudiant, de sa recherche ainsi que du domaine dexpertise couvert.
Miguel Garzon CrUise Lab - SITE. Introduction Data Types and Sizes Constants Logic Operators Type conversions Example.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
IFT 6800 Atelier en Technologies d’information
Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:
Introduction au Langage C
1. 2 Toolkits Il existe 4 principales boites à outils (toolkits) graphiques : –Xt / Motif –Gtk –Windows –Qt Seul certaines fonctionnent sur toutes les.
UE SYSTEMC – Cours 5 SystemC + Logiciel embarqué
Les Objets CORBA parallèles Travaux pratiques Lundi 22 mai 2000 ARC « Couplage » Christophe René (IRISA/IFSIC) Eric Lemoine (INSA Lyon)
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes APACHE/VELOCITY.
Modélisation et Simulation de Systèmes sur Puce avec Soclib
1 PtiLoo Compléments de Cours pour réaliser les Extensions version 20/08/ :51 Ajout à faire pour version 20/08/ :51 n "animation" pour.
Copyright © SUPINFO. All rights reserved Module 3 – IP Basics IP adresses, classes and routing Campus-Booster ID : 802.
Branche Développement Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
La notion de type revisitée en POO
Argc et argv Utilisation des paramètres de la ligne de commande.
Les listes de contrôle d’accès
Buffer Overflow When Data Become Instructions Vendredi, 1er mars 2002 : Sart-Tilman.
Les surcharges d'opérateurs
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
8PRO100 Éléments de programmation Les pointeurs de caractères.
Chapitre III Introduction aux objets et aux classes.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
1 LE BUS PCI 8 ième partie: L ’espace de configuration Sommaire - Repère zHuitième partieL ’espace de configuration yQu ’est-ce? yEspace de configuration.
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
UE MAREP Cours 12 : Révisions
UE MAREP Cours 9 : Tableaux
Patricia Renault UPMC 2005/2006
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
UBC104 Embedded Systems Review: Interrupts & Timers.
Codage Indenter le code Limiter la portée des variables Traiter les erreurs en premier Utiliser le switch au delà de 3 tests en cascades Ne jamais utiliser.
Coding party Écrire un programme qui élève un nombre au carré Écrire un programme qui teste si un nombre est pair Écrire un programme qui calcule la factorielle.
Transcription de la présentation:

UE SYSTEMC – Cours 4 Prototypage virtuel avec SocLib Francois.pecheux@lip6.fr Julien.denoulet@lip6.fr

Lien VCI, commandes Initiateur Cible I T CMDVAL command valid (1) CMDACK command ack (1) ADDRESS (32) WDATA write data (32=8*4) BE byte enable (4) CMD vci command (2) CONTIG (1) CONS (1) EOP end of packet (1) PLEN packet length in bytes (N) SRCID source ident (S bits) TRDID thread ident (T bits) PKTID packet ident (P bits)

Lien VCI, réponses Initiateur Cible I T RSPVAL response valid (1) RSPACK response ack (1) RDATA read data (32) RERROR response error (E bits)) REOP response end of packet (1) RSRCID response source ident (S bits) RTRDID response thread ident (T bits) RPKTID response packet ident (P bits)

1 lien, deux réseaux, CMD et RSP Initiateur Cible RSPVAL response valid (1) RSPACK response ack (1) RDATA read data (32) RERROR response error (E bits)) REOP response end of packet (1) RSRCID response source ident (S bits) RTRDID response thread ident (T bits) RPKTID response packet ident (P bits) I T CMDVAL command valid (1) CMDACK command ack (1) ADDRESS (32) WDATA write data (32=8*4) BE byte enable (4) CMD vci command (2) CONTIG (1) CONS (1) EOP end of packet (1) PLEN packet length in bytes (N) SRCID source ident (S bits) TRDID thread ident (T bits) PKTID packet ident (P bits) CMD RSP

soclib_vci_simpleram.h (1) https://www-asim.lip6.fr/trac/sesi-systemc/attachment/wiki/cours3/ template < int ADDRSIZE, int CELLSIZE, int ERRSIZE, int PLENSIZE, int CLENSIZE, int SRCIDSIZE, int TRDIDSIZE, int PKTIDSIZE > struct SOCLIB_VCI_SIMPLERAM : sc_module { sc_in<bool> CLK; sc_in<bool> RESETN; ADVANCED_VCI_TARGET<ADDRSIZE, CELLSIZE, ERRSIZE, PLENSIZE, CLENSIZE, SRCIDSIZE, TRDIDSIZE, PKTIDSIZE > VCI_TARGET; const char *NAME; sc_register<int> TARGET_FSM,DT,REG_EOP,WRITE_COUNTER,READ_COUNTER; sc_register<int> WRITE_COUNTER_INIT,READ_COUNTER_INIT; int mem[1024]; enum{ TARGET_IDLE = 0, TARGET_WRITE_WAIT, TARGET_WRITE, TARGET_READ_WAIT, TARGET_READ, }; SC_HAS_PROCESS (SOCLIB_VCI_SIMPLERAM);

soclib_vci_simpleram.h (2) sc_module_name insname // nom de l'instance ) { SC_METHOD (transition); sensitive << CLK.pos(); SC_METHOD (genMoore); sensitive << CLK.neg(); mem[0x00 >> 2]=0x20010010; // addi $1,$0, 0x10 mem[0x04 >> 2]=0x20020014; // addi $2,$0, 0x14 mem[0x08 >> 2]=0x8c220000; // lw $2,0($1) = 0x11223344 mem[0x0C >> 2]=0x8c230004; // lw $3,4($1) = 0x55667788 mem[0x10 >> 2]=0x11223344; mem[0x14 >> 2]=0x55667788; WRITE_COUNTER_INIT=3; READ_COUNTER_INIT=3; }

soclib_vci_simpleram.h (3) void transition() { … switch(TARGET_FSM) { case TARGET_IDLE : if(VCI_TARGET.CMDVAL == true) { REG_EOP=VCI_TARGET.EOP; if (VCI_TARGET.CMD.read() == VCI_CMD_WRITE) { int addr=(int)VCI_TARGET.ADDRESS.read(); int wdata=(int)VCI_TARGET.WDATA.read(); mem[addr>>2]=wdata; TARGET_FSM = TARGET_WRITE_WAIT; WRITE_COUNTER = WRITE_COUNTER_INIT; } else { DT = mem[addr>>2]; TARGET_FSM = TARGET_READ_WAIT; READ_COUNTER = READ_COUNTER_INIT; } break; case TARGET_WRITE_WAIT : WRITE_COUNTER=WRITE_COUNTER-1; if (WRITE_COUNTER==1) TARGET_FSM=TARGET_WRITE; case TARGET_READ_WAIT : READ_COUNTER=READ_COUNTER-1; if (READ_COUNTER==1) TARGET_FSM=TARGET_READ; case TARGET_READ : case TARGET_WRITE : if(VCI_TARGET.RSPACK == true) TARGET_FSM = TARGET_IDLE; } // end switch TARGET FSM

soclib_vci_simpleram.h (4) void genMoore() { switch (TARGET_FSM) case TARGET_IDLE: VCI_TARGET.CMDACK = true; VCI_TARGET.RSPVAL = false; break; case TARGET_WRITE_WAIT: VCI_TARGET.CMDACK = false; case TARGET_READ_WAIT: case TARGET_WRITE: VCI_TARGET.RSPVAL = true; VCI_TARGET.RDATA = 0; VCI_TARGET.RERROR = 0; VCI_TARGET.REOP = REG_EOP; case TARGET_READ: VCI_TARGET.RDATA = (sc_uint<32>) DT; } soclib_vci_simpleram.h (4)

soclib_vci_simpleram.h ISS MINIMIPS avec VCI ISS = Instruction Set Simulator 1 1 soclib_vci_iss.h soclib_vci_simpleram.h CLK CLK 1 NRESET INITIATEUR CIBLE

soclib_vci_iss.h https://www-asim.lip6.fr/trac/sesi-systemc/attachment/wiki/cours3/ RSP_LOAD REQ_LOAD CMDACK=1 RSPVAL=1 CMDACK=0 RSPVAL=0 REQ_IFETCH CMDACK=1 RSP_IFETCH RSPVAL=1 DECODE & EXEC CMDACK=0 RSPVAL=0

system.cpp (1) https://www-asim.lip6.fr/trac/sesi-systemc/attachment/wiki/cours3/ #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include <signal.h> #include "shared/soclib_mapping_table.h" #include "shared/soclib_vci_interfaces.h" #include "soclib_vci_simpleram.h" #include "soclib_vci_iss.h" #define CELLSIZE 4 // Data are 4 cells(=8bits) wide=32 bits #define ERRSIZE 1 // Error size is 1 bit #define PLENSIZE 1 // #define CLENSIZE 1 // #define TRDIDSIZE 1 // TRDID unused #define PKTIDSIZE 1 // PKTID unused too #define ADDRSIZE 32 #define SRCIDSIZE 8

system.cpp (2) Déclaration des signaux Déclaration des instances int sc_main (int argc, char *argv[]) { sc_clock signal_clk ("signal_clk"); sc_signal < bool > signal_resetn ("signal_resetn"); ADVANCED_VCI_SIGNALS <VCI_PARAM> link ("link"); SOCLIB_VCI_ISS < VCI_PARAM > i0 ("i0"); SOCLIB_VCI_SIMPLERAM < VCI_PARAM > t0 ("t0"); i0.CLK(signal_clk); i0.RESETN(signal_resetn); i0.VCI_INITIATOR(link); t0.CLK(signal_clk); t0.RESETN(signal_resetn); t0.VCI_TARGET(link); sc_start(sc_core::sc_time(0, SC_NS)); signal_resetn = false; sc_start(sc_core::sc_time(1, SC_NS)); signal_resetn = true; sc_start(); return EXIT_SUCCESS; }; Déclaration des signaux Déclaration des instances Netlist Reset et lancement de la simulation

soclib_vci_simpleram.h Interconnect Deux réseaux disjoints, le réseau des requêtes (command) et le réseau des réponses (response) command soclib_vci_iss.h soclib_vci_local_ crossbar_simple.h soclib_vci_simpleram.h response INITIATEUR INTERCONNECT CIBLE

1 initiateur, 1 Interconnect, 2 cibles Vcilink2 et vcilink3 soclib_vci_iss.h soclib_vci_local_ crossbar_simple.h soclib_vci_simpleram.h CIBLE 0 soclib_vci_simpleram.h CIBLE 1 INITIATEUR INTERCONNECT

2 initiateurs, 1 Interconnect, 1 cible soclib_vci_iss.h soclib_vci_local_ crossbar_simple.h soclib_vci_simpleram.h INITIATEUR 0 soclib_vci_iss.h INITIATEUR 1 INTERCONNECT CIBLE

Routage des commandes Décodage sur certains bits du champ VCI ADDRESS Décodage sur 8 bits dans cet exemple reset 0xBFC00000 = 1011 1111 1100 0000 0000 0000 0000 0000 text 0x04C00000 = 0000 0100 1100 0000 0000 0000 0000 0000 soclib_vci_iss.h soclib_vci_local_ crossbar_simple.h soclib_vci_simpleram.h (code de reset) CIBLE 0 soclib_vci_simpleram.h (code de l’application) CIBLE 1 INITIATEUR INTERCONNECT

soclib_vci_simpleram.h Routage des réponses Décodage sur les bits du champ VCI SRCID Chaque initiateur dispose d’un identifiant unique qu’il envoie avec sa commande. La cible et l’interconnect des réponses gère ce SRCID et savent ainsi à quel initiateur communiquer la réponse (SRCID joue le rôle d’adresse pour les réponses). soclib_vci_iss.h soclib_vci_local_ crossbar_simple.h soclib_vci_simpleram.h INITIATEUR 0 soclib_vci_iss.h INITIATEUR 1 INTERCONNECT CIBLE

Notion de segment mémoire Un segment dans SocLib c’est: Un nom (chaîne de caractères), ex. « reset » Une adresse de base (sur 32 bits), ex. 0xBFC00000 Une taille (en octets), ex. 0x1000 Un index VCI, ex. 1 Des attributs de cachabilité, ex. UNCACHED L’ensemble des segments forme la table des segments, ou mapping table (table de correspondance des adresses, des cibles VCI et des bancs mémoire)

Soclib_vci_iss Soclib_vci_iss Soclib_vci_iss Soclib_vci_iss VCI/OCP Interconnect Timer Ram Tty Embedded application

1 2 Soclib_vci_iss Soclib_vci_iss Soclib_vci_iss Soclib_vci_iss 1 2 3 1 2 3 VciVgmn VciTimer 1 VciRam VciMultiTty 2 timer BASE=0xB0200000 SIZE=0x00000100 U reset BASE=0xBFC00000 SIZE=0x00010000 C tty BASE=0xC0200000 SIZE=0x00000040 U text BASE=0x00400000 SIZE=0x00050000 C excep BASE=0x80000000 SIZE=0x00010000 C data BASE=0x10000000 SIZE=0x00020000 C

Décodage d’adresses et masque de cachabilité 0xFF reset 0xBFC00000 = 1011 1111 1100 0000 0000 0000 0000 0000 text 0x00400000 = 0000 0000 0100 0000 0000 0000 0000 0000 excep 0x80000000 = 1000 0000 0000 0000 0000 0000 0000 0000 data 0x10000000 = 0001 0000 0000 0000 0000 0000 0000 0000 timer 0xB0200000 = 1011 0000 0010 0000 0000 0000 0000 0000 tty 0xC0200000 = 1100 0000 0010 0000 0000 0000 0000 0000 mask 0x00300000 = 0000 0000 0011 0000 0000 0000 0000 0000 0xC0 2 = tty U 0xBF 0 = reset C 0xB0 1 = timer U 0x80 0 = excep C 8 bits for target decoding 2 bits for cacheability 0x10 0 = data C 0x00 0 = text C Platform address space = Mapping table

SOCLIB_VCI_LOCAL_CROSSBAR_SIMPLE Init 0 Init 1 Init 2 SOCLIB_VCI_LOCAL_CROSSBAR_SIMPLE Target 0 Target 1

T0 T1 T2 I0 I1 FSM(I0) cmdval eop cmdval eop cmdval eop false index false index allocated I0 I1 cmdval

soclib_vci_local_crossbar_simple.h (1) https://www-asim.lip6.fr/trac/sesi-systemc/attachment/wiki/cours3/ template<int NB_INIT, int NB_TARGET, VCI_PARAM_DECLAR> struct SOCLIB_VCI_LOCAL_CROSSBAR_SIMPLE : sc_module{ const char *NAME; // instance name int *GLOBAL_ROUTING_TABLE; int *LOCAL_ROUTING_TABLE; int GLOBAL_ADDR_OFFSET, GLOBAL_ADDR_MASK, GLOBAL_ADDR; int LOCAL_ADDR_OFFSET, LOCAL_ADDR_MASK; int GLOBAL_ID_OFFSET, GLOBAL_ID_MASK, GLOBAL_ID; int LOCAL_ID_OFFSET, LOCAL_ID_MASK; #define GLOBAL_ADDR_OF(x) (((x)>>GLOBAL_ADDR_OFFSET)&GLOBAL_ADDR_MASK) #define LOCAL_ADDR_OF(x) (((x)>>LOCAL_ADDR_OFFSET)&LOCAL_ADDR_MASK) #define GLOBAL_ID_OF(x) (((x)>>GLOBAL_ID_OFFSET)&GLOBAL_ID_MASK) #define LOCAL_ID_OF(x) (((x)>>LOCAL_ID_OFFSET)&LOCAL_ID_MASK) ADVANCED_VCI_TARGET<VCI_PARAM> TLOC_VCI[NB_INIT]; ADVANCED_VCI_INITIATOR<VCI_PARAM> ILOC_VCI[NB_TARGET]; // TLOC FSMs sc_signal<bool> TLOC_ALLOCATED[NB_INIT]; // state of the local target ports sc_signal<int> TLOC_INDEX[NB_INIT]; // ILOC FSMs sc_signal<bool> ILOC_ALLOCATED[NB_TARGET]; // state of the local initiator ports sc_signal<int> ILOC_INDEX[NB_TARGET];

soclib_vci_local_crossbar_simple.h (2) SOCLIB_VCI_LOCAL_CROSSBAR_SIMPLE ( sc_module_name insname, int *indexes, SOCLIB_MAPPING_TABLE mapping_table) { SC_METHOD(transition); sensitive_pos << CLK; SC_METHOD(genMealy); sensitive_neg << CLK; for (int i = 0 ; i < NB_TARGET ; i++) { sensitive << ILOC_VCI[i].CMDACK << ILOC_VCI[i].RSPVAL; sensitive << ILOC_VCI[i].RDATA << ILOC_VCI[i].REOP; sensitive << ILOC_VCI[i].RERROR << ILOC_VCI[i].RTRDID; sensitive << ILOC_VCI[i].RPKTID << ILOC_VCI[i].RSRCID; } for (int i = 0 ; i < NB_INIT ; i++) { sensitive << TLOC_VCI[i].RSPACK; sensitive << TLOC_VCI[i].CMDVAL; .. sensitive << TLOC_VCI[i].SRCID;

soclib_vci_local_crossbar_simple.h (3) // Loop on the ILOC FSMs for(int i = 0 ; i < NB_TARGET ; i++) { if(ILOC_ALLOCATED[i] == false) { // local initiator port not allocated for(int t = 0 ; t < NB_INIT ; t++) { int u = (t + ILOC_INDEX[i] + 1) % NB_INIT; if(TLOC_VCI[u].CMDVAL == true) { unsigned int address = TLOC_VCI[u].ADDRESS.read(); int index = ROUTING_TABLE[LOCAL_ADDR_OF(address)]; if (index == i) { ILOC_ALLOCATED[i] = true; ILOC_INDEX[i] = u; break; } } // end for t } else { // local initiator port allocated if((TLOC_VCI[ILOC_INDEX[i]].CMDVAL == true) && (ILOC_VCI[i].CMDACK == true) &&(TLOC_VCI[ILOC_INDEX[i]].EOP == true)) { ILOC_ALLOCATED[i] = false;} } // end for i PRIORITE TOURNANTE

void genMealy() { // VCI local target ports for (int i=0 ; i<NB_INIT ; i++) { if (TLOC_ALLOCATED[i] == true) { // allocated int k = TLOC_INDEX[i]; TLOC_VCI[i].RSPVAL = ILOC_VCI[k].RSPVAL.read(); TLOC_VCI[i].RERROR = ILOC_VCI[k].RERROR.read(); TLOC_VCI[i].REOP = ILOC_VCI[k].REOP.read(); TLOC_VCI[i].RTRDID = ILOC_VCI[k].RTRDID.read(); TLOC_VCI[i].RPKTID = ILOC_VCI[k].RPKTID.read(); TLOC_VCI[i].RSRCID = ILOC_VCI[k].RSRCID.read(); TLOC_VCI[i].RDATA = ILOC_VCI[k].RDATA.read(); } else { // not allocated TLOC_VCI[i].RSPVAL = false; TLOC_VCI[i].RERROR = 0; TLOC_VCI[i].REOP = false; TLOC_VCI[i].RTRDID = 0; TLOC_VCI[i].RPKTID = 0; TLOC_VCI[i].RSRCID = 0; TLOC_VCI[i].RDATA = 0; } }//endfor

Conclusion sur « old » SocLib Un mot de commande envoyé, un mot de réponse reçu, sous-optimal Beaucoup de code identique, pas de factorisation Initiateur Cible CMDVAL command valid (1) CMDACK command ack (1) ADDRESS (32) WDATA write data (32=8*4) BE byte enable (4) CMD vci command (2) CONTIG (1) CONS (1) EOP end of packet (1) PLEN packet length in bytes (N) SRCID source ident (S bits) TRDID thread ident (T bits) PKTID packet ident (P bits) T I Réécriture Totale 1 mot Initiateur Cible RSPVAL response valid (1) RSPACK response ack (1) RDATA read data (32) RERROR response error (E bits)) REOP response end of packet (1) RSRCID response source ident (S bits) RTRDID response thread ident (T bits) RPKTID response packet ident (P bits) I T 1 mot

www.soclib.fr Ecriture N mots, 1 mot de réponse Lecture 1 mot, N mots de réponse Factorisation du code Le code actuel est l’aboutissement de 7 ans d’essais, d’erreurs, de mises au point… Méta-outils pour manipuler les fichiers .cpp, .h, etc pour compiler les plateformes

L’arborescence SoCLib

soclib/utils Modèles & plateformes Applis & config

soclib/utils/bin Commande pour compiler les plateformes Ajouter soclib/utils/bin au PATH

soclib/soclib/platform/topcells L’endroit où se trouvent les exemples de soclib (notamment tutorial0)

soclib/soclib/platform/topcells/tutorial0 Méta-données pour la compilation La topcell Pour la table des segments Répertoire où se trouve Le soft (appli embarquée)

Exemple de plateforme trop compliquée 2.4 GHz communication channel MIPS RX TX MIPS RX TX Cache ICU Timer Serdes Cache ICU Timer Serdes … Interconnect Interconnect RAM Seismic sensor I2C Ctrl RAM Seismic sensor I2C Ctrl Node 0 Node 3 SOFT SOFT Seismic perturbation generator N2 N3 Digital, BCA, SocLib Analog, SystemC-AMS TDF, RF Analog, SystemC-AMS TDF, Physics, ΣΔ (xe,ye) Analog, SystemC-AMS ELN, Electrical, Bus N0 N1 Embedded software

Plateforme simplifiée MIPS MIPS Cache ICU Timer Serdes Cache ICU Timer Serdes … Interconnect Interconnect RAM TTY RAM TTY Node 0 Node 1 SOFT SOFT ICU : Interrupt Controller Unit SERDES : Serialiseur, Déserialiseur

Description du SERDES

typedef soclib::caba::VciParams<4,6,32,1,1,1,8,1,1,1> vci_param; VciVgmn soclib::caba::VciSignals<vci_param> signal_vci_vcitimer("signal_vci_vcitimer"); VciTimer timer BASE=0xB0200000 SIZE=0x00000100 U typedef soclib::caba::VciParams<4,6,32,1,1,1,8,1,1,1> vci_param; trdid_size = 1 bit wrplen_size = 1 bit pktid_size = 1 bit srcid_size = 8 bits plen_size = 64 words cell_size = 4 * 8 = 32 bits addr_size = 32 bits rerror_size = 1 bit clen_size = 1 bit rflag_size = 1 bit

Building the embedded application MIPS32 *.s mipsel-soclib-elf-unknown-gcc mipsel-soclib-elf-unknown-as Application binary composed of sections Section reset (0xBFC00000) *.o ldscript Section excep (0x80000000) mipsel-soclib-elf-unknown-ld Section text (0x00400000) bin.soft (elf format) Section data (0x10000000)