Reprsentation matrielle des oprateurs du langage C pour la synthse haut niveau - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

Reprsentation matrielle des oprateurs du langage C pour la synthse haut niveau

Description:

Contexte de la synth se de haut niveau: Pr sentation de l'outil Ugh ... taille minimale aux op rateurs. Respecter les comportements du C. Conclusion. 15/05/2002 ... – PowerPoint PPT presentation

Number of Views:28
Avg rating:3.0/5.0
Slides: 32
Provided by: wwwasi
Category:

less

Transcript and Presenter's Notes

Title: Reprsentation matrielle des oprateurs du langage C pour la synthse haut niveau


1
Représentation matérielle des opérateurs du
langage C pour la synthèse haut niveau
  • François Donnet, Ivan Augé

2
Plan
  • Contexte de la synthèse de haut niveau
  • Présentation de loutil Ugh
  • Exemple
  • Interface de lentrée C
  • Dimensionnement des opérateurs matériels
  • Donner une taille minimale aux opérateurs
  • Respecter les comportements du C
  • Conclusion

3
Loutil UGH
  • User Guided High level synthesis
  • UGH est un outil de synthèse de comportemental
    haut niveau pour des coprocesseurs de type flôt
    de contrôle.
  • Les entrées sont
  • une description comportementale C avec des
    primitives de communication blocantes
  • un chemin de données simplifié
  • Les sorties sont
  • un modèle VHDL synthétisable
  • un modèle C de simulation cycle précis pour CASS

4
Entrées de Ugh
data-path simplifié
Comportemental C

include ltughc.hgt ugh_inChannel32 PortA,
PortB ugh_outChannel32 PortC uint32 a,b int
ugh_main() while (1) ugh_read( PortA, a
) ugh_read( PortB, b ) while (a !
b) if (a lt b) b b - a else a a -
b ugh_write( PortC, a )
Exemple sur le Pgcd
5
Sorties de Ugh
data-path complet
Machine détats

PortA
PortC
PortB
Exemple sur le Pgcd
6
Interface du coprocesseur
7
Accès aux ports
entity HCF is port ( CK in bit PortA
in bit_vector(31 downto 0) PortA_READ out
bit PortA_ROK in bit PortB in
bit_vector(31 downto 0) PortB_READ out
bit PortB_ROK in bit PortC out
bit_vector(31 downto 0) PortC_WRITE out
bit PortC_WOK int bit) end HCF
include ltughc.hgt ugh_inChannel32 PortA,
PortB ugh_outChannel32 PortC uint32 a,b int
ugh_main() while (1) ugh_read( PortA, a
) ugh_read( PortB, b ) while (a !
b) if (a lt b) b b - a else a a -
b ugh_write( PortC, a )
  • include ltughc.hgt
  • ugh_inChannel32 PortA, PortB
  • ugh_outChannel32 PortC
  • Type de port d entrée de taille xx
  • ugh_inChannelxx
  • Type de port de sortie de taille xx
  • ugh_outChannelxx
  • include ltughc.hgt
  • ugh_inChannel32 PortA, PortB
  • ugh_outChannel32 PortC
  • uint32 a,b
  • Types de variable signée et non-signée de taille
    xx
  • intxx
  • uintxx

Fonctions daccès bloquants aux ports ugh_read(
Port, dest ) ugh_write( Port, source ) int
ugh_main() while (1) ugh_read( PortA, a
) ugh_read( PortB, b ) while (a !
b) if (a lt b) b b - a else a a -
b ugh_write( PortC, a )
8
Taille des opérateurs
9
Minimisation de la taille
0 .. 0 a(15 downto 0) signé ou
non-signé
a(15) .. a(15) a(15 downto 0) signé
  • Limitation aux bits informatifs

a(15 downto 0) signé
a(15 downto 0) non-signé
  • Extension de lopérande si besoin

a(15) .. a(15) a(15 downto 0) signé
0 .. 0 a(15 downto 0) non-signé
10
Importance du signe de lexpression
  • Le signe dune expression dépend du signe de ses
    opérandes et du type dopérateur
  • lopérateur bit à bit donne un résultat
    non-signé si lune ou lautre des opérandes est
    non signée.
  • lopérateur bit à bit donne un résultat
    non-signé si et seulement si les deux opérandes
    sont non-signées.
  • Si les opérandes ne sont pas du même type
  • Conversion de lopérande non-signée en signée
  • a( 15 downto 0 ) non-signé 0 a(15 downto
    0 ) signé

0.0 b(15 downto 0 )
a(15) .. a(15) a(15 downto 0)

a(15 downto 0) b(15 downto 0 )
0.0

non-signé
a(15) .. a(15) a(15 downto 0)
0.0 b(15 downto 0 )

signe
a(15 downto 0) b(15 downto 0 )

signé
11
Les opérateurs arithmétiques
ab a-b
-a
Opérandes non-signées
Opérandes signées
12
Les comparateurs
altb i.e signe de a-b
altb i.e signe de !( b - a )
Opérandes non-signées
Opérandes signées
13
Divergence du C sur certains opérateurs
Les normes de conversion du C influencent le
résultat
Mais...
14
Conclusion
  • UGH a été testé sur un décodeur MPEG2 VLD
  • avec une description comportementale C et un
    chemin de données
  • production dun module de simulaton CASS
  • Passage de lentrée C en SystemC
  • changement de linterface types des ports
  • changement des fonctions daccés
  • éventuellement, changement des types des
    variables internes

15
Environnement système du coprocesseur
R3000
Processor
ICache
DCache
Bus
PI-BUS
Controller
unit
M/S Interface
RAM
Coprocessor
16
UGH Structure
Depend de loutil
de synthèse
Cell
Library
Draft
Behavioral
Data-Path
VHDL
Synthesis
Timing
Characterization
Annotations
CK
VHDL
Data-Path
UGH-FGS
UGH-CGS
VHDL
FSM/C
VCC
TSS
VHDL
Simulation
Whitebox C
FSM/F
Model
Model
17
Exemple sur le Pgcd
Entrée C de Ugh
  • entity HCF is
  • port (
  • CK in bit
  • PortA in bit_vector(31 downto 0)
  • PortA_READ out bit
  • PortA_ROK in bit
  • PortB in bit_vector(31 downto 0)
  • PortB_READ out bit
  • PortB_ROK in bit
  • PortC out bit_vector(31 downto 0)
  • PortC_WRITE out bit
  • PortC_WOK int bit)
  • end HCF

include ltughc.hgt ugh_inChannel32 PortA,
PortB ugh_outChannel32 PortC uint32 a,b int
ugh_main() while (1) ugh_read( PortA, a
) ugh_read( PortB, b ) while (a !
b) if (a lt b) b b - a else a a -
b ugh_write( PortC, a )
18
Exemple sur le Pgcd
Entrée du chemin de données simplifié
model Hcf(sofifo PortC sififo PortA, PortB
) DFF a, b SUB subst subst.A a.Q,
b.Q subst.B a.Q, b.Q a.D subst.S,
PortA b.D subst.S, PortB PortC subst.S
19
Variables internes
  • Types de variable signée et non-signée de taille
    xx
  • intxx
  • uintxx
  • Tableau RAM, ROM ou RF
  • si plusieurs dimensions, agrégation en une seule
    dimension
  • intxx yy définit yy mots de xx bits

20
Effets de bord
  • Dans une expression
  • a i a i i i 1
  • a ( i b ) i b a i
  • Dans un test
  • if ( a i )
  • if ( a (i b) )
  • Dans une expression conditionnelle
  • a ( i b ) ?
  • a ? i b

Interdits
Interdits
21
Branchement cablé
  • if ( test wired ) a b
  • else a c
  • if ( test ) a b
  • else a c

fsm
fsm
1
0
22
Implémentation des opérateurs du C
  • Opérateurs C directement transposables en
    matériel

23
Inégalités
a lt b
a - b lt 0 perte des flags de carry et
doverflow
  • a - b
  • a et b sont signés OV xor NG
  • a et b sont non signés CY
  • sinon règles de conversion du C

OV
NG
A
NG
CY
a
B
b
24
Opérateurs booléens du C
  • Ramener à des opérateurs bit-à-bit
  • a b
  • ( a ! 0 ) ( b ! 0 )
  • Perte de la préemptivité pour les opérateurs
    binaires
  • - Evaluation systématique de la deuxième
    opérande
  • Simultanéité des évaluations des deux
    opérandes

Opérandes du sur 32 bits
Opérandes du sur 1 bit
25
Importance du signe
31
0
Résultat signé
a
(int20) ( (int16) a )
int16
  • (int16) a

a
0
15
15
0
31
0
Résultat non-signé
a
a
0x0000FFFF a
(int20) ( 0x0000FFFF a )
FFFF
int20
a
0000 a
15
0
0
15
19
26
Sélections de bits
Le Cast
31
0
15
0
a
b
int16
  • ( int16 ) a

( int20 ) b
int20
a
b(15) b
0
15
0
15
19
Le Mask
31
0
31
0
a
a
  • 0xFFFF0000 a

0x0000FFFF a
FFFF
FFFF
0000
a
a
0
16
31
0
15
27
Les opérateurs logiques
a
n
n
a
28
Les décaleurs
29
Taille du résultat
30
Contraintes de taille sur les entrées
31
Dépassement de capacité en C
Write a Comment
User Comments (0)
About PowerShow.com