[go: up one dir, main page]

FR3038188A1 - Systeme de verification de l’integrite d’une communication entre deux circuits - Google Patents

Systeme de verification de l’integrite d’une communication entre deux circuits Download PDF

Info

Publication number
FR3038188A1
FR3038188A1 FR1556064A FR1556064A FR3038188A1 FR 3038188 A1 FR3038188 A1 FR 3038188A1 FR 1556064 A FR1556064 A FR 1556064A FR 1556064 A FR1556064 A FR 1556064A FR 3038188 A1 FR3038188 A1 FR 3038188A1
Authority
FR
France
Prior art keywords
signature
bit
transaction
circuit
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1556064A
Other languages
English (en)
Other versions
FR3038188B1 (fr
Inventor
Gilles Ries
Abdelaziz Goulahsen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Grenoble 2 SAS
Original Assignee
STMicroelectronics Grenoble 2 SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Grenoble 2 SAS filed Critical STMicroelectronics Grenoble 2 SAS
Priority to FR1556064A priority Critical patent/FR3038188B1/fr
Priority to US14/949,378 priority patent/US10114687B2/en
Publication of FR3038188A1 publication Critical patent/FR3038188A1/fr
Application granted granted Critical
Publication of FR3038188B1 publication Critical patent/FR3038188B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31703Comparison aspects, e.g. signature analysis, comparators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Biomedical Technology (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

L'invention est relative à un procédé de vérification de l'intégrité d'une communication entre un circuit maître (SoC) et un circuit esclave (DDR), comprenant les étapes consistant à envoyer des transactions du circuit maître au circuit esclave ; mettre à jour une première signature cyclique multi-bits (20) à partir de chaque transaction telle que présente dans le circuit maître ; mettre à jour une deuxième signature cyclique multi-bits (22), de même nature que la première, à partir de chaque transaction telle que reçue dans le circuit esclave; et comparer un seul bit (S) de la deuxième signature cyclique à un bit de même position de la première signature cyclique.

Description

SYSTEME DE VERIFICATION DE L'INTEGRITE D'UNE COMMUNICATION ENTRE DEUX CIRCUITS Domaine technique L'invention est relative de façon générale à la vérification de l'intégrité d'une 5 communication entre deux circuits, et plus particulièrement à la vérification de l'intégrité des données lues et écrites par un bus dans une mémoire de type DDR. Arrière-plan La figure 1 est un schéma de principe d'un système mettant en oeuvre une mémoire de type DDR (de l'anglais « Double Data Rate »). La mémoire DDR est reliée à un circuit, 10 par exemple un système-sur-puce SoC, par un bus mémoire normalisé B. Le circuit SoC et la mémoire DDR sont chacun connectés au bus B par une interface d'adresses A, une interface de données D, et une interface de commande CTRL. Dans la mémoire DDR, les interfaces permettent d'accéder à un plan mémoire MEM qui peut être associé à un circuit de correction d'erreurs ECC. L'interface d'adresses A 15 est conçue pour recevoir des adresses à sens unique par le bus B, adresses qui peuvent servir à sélectionner des cellules mémoire aussi bien en mode lecture qu'en mode écriture. L'interface de données D est bidirectionnelle - elle reçoit du bus B des données à écrire dans la mémoire et les produit par un canal W, et elle reçoit sur un canal R des données lues dans la mémoire et les transmet sur le bus. Les écritures et 20 lectures dans la mémoire DDR n'étant pas concurrentes, les données peuvent transiter par les mêmes lignes du bus B. L'interface de commande CTRL véhicule divers signaux entrants et sortants par des canaux respectifs W et R. De plus amples informations sur les interfaces des mémoires DDR peuvent être trouvées dans les normes JEDEC. 25 Les interfaces A, D et CTRL du côté du circuit SoC ont des fonctions symétriques aux interfaces de la mémoire. Dans des applications de sécurité, on souhaite garantir l'intégrité des données échangées avec une mémoire. Pour cela on a souvent recours à des solutions de redondance qui peuvent considérablement augmenter la surface silicium des circuits. Lorsqu'on utilise 30 des composants normalisés, tels que des mémoires DDR, la redondance est souvent obtenue en doublant le nombre de mémoires pour stocker les données avec une copie. 3038188 2 Résumé On prévoit de façon générale un procédé de vérification de l'intégrité d'une communication entre un circuit maître et un circuit esclave, comprenant les étapes consistant à envoyer des transactions du circuit maître au circuit esclave ; mettre à jour une première signature cyclique multi-bits à partir de chaque transaction telle que présente dans le circuit maître ; mettre à jour une deuxième signature cyclique multibits, de même nature que la première, à partir de chaque transaction telle que reçue dans le circuit esclave; et comparer un seul bit de la deuxième signature cyclique à un bit de même position de la première signature cyclique.
Le procédé peut comprendre les étapes consistant à envoyer les transactions sur un bus entre le circuit maître et le circuit esclave ; stocker chaque transaction dans une mémoire FIFO ayant une profondeur correspondant au retard introduit par le bus ; mettre à jour la première signature cyclique à partir de la sortie de la mémoire FIFO ; et transmettre au circuit maître le bit de signature à comparer sur une ligne du bus.
Le circuit esclave peut être une mémoire de type DDR et le bit de signature à comparer être transmis par une ligne DMI du bus mémoire. Les première et deuxième signatures cycliques peuvent être basées également sur les données lues dans la mémoire DDR. Le procédé peut comprendre, pour chacun des circuits maître et esclave, les étapes consistant à diviser les informations de chaque transaction en plusieurs groupes ; associer à chaque groupe un générateur respectif de code de contrôle de redondance cyclique ; à chaque transaction, générer en parallèle les codes CRC ; et produire le bit à comparer par une opération OU exclusif combinant un seul bit de chaque code CRC. Les bits combinés des codes CRC peuvent être des bits de poids faible.
On prévoit également une mémoire de type DDR comprenant une interface de bus et un circuit de calcul de signature cyclique multi-bits connecté pour recevoir des états de l'interface de bus, et pour fournir un seul bit de la signature sur une ligne du bus. La ligne de bus sur laquelle est fourni le bit de signature peut être une ligne DMI. Description sommaire des dessins Des modes de réalisation seront exposés dans la description suivante, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : 3038188 3 - la figure 1, précédemment décrite, est un schéma de principe d'un système mettant en oeuvre une mémoire de type DDR ; - la figure 2 est un schéma de principe d'un système mettant en oeuvre une mémoire de type DDR et intégrant un mode de réalisation de circuit de 5 vérification d'intégrité des informations échangées avec la mémoire ; - la figure 3 est un chronogramme illustrant le fonctionnement du circuit de vérification d'intégrité dans le cadre d'un exemple d'échange d'informations ; et - la figure 4 représente schématiquement un mode de réalisation de générateur de code CRC utilisable dans le système de la figure 2.
10 Description de modes de réalisation Dans certaines applications, il n'est pas nécessaire de détecter un défaut d'intégrité de données à l'instant même où il se produit. Il suffit souvent que le défaut d'intégrité soit détecté dans un certain délai après son occurrence. Le délai dépend du degré de risque que peut engendrer le défaut.
15 En partant de cette contrainte relâchée, on propose ci-après une technique de vérification d'intégrité de données particulièrement simple. La technique sera décrite à titre d'exemple dans le cadre des échanges de données avec une mémoire DDR, mais elle pourra être utilisée de façon plus générale pour vérifier l'intégrité d'une communication entre deux circuits.
20 La figure 2 représente un système mettant en oeuvre une mémoire DDR, similaire à celui de la figure 1. Pour vérifier l'intégrité des communications par le bus B, un générateur de signature 20 est connecté dans le circuit SoC, ou circuit maître, pour calculer une signature sur chaque transaction que le circuit SoC envoie sur le bus B. Un deuxième générateur de signature 22 est connecté dans la mémoire DDR, ou circuit 25 esclave, pour calculer une signature de même nature que celle du générateur 20, sur chaque transaction telle que reçue par la mémoire sur le bus B. Les générateurs 20 et 22 peuvent être cadencés par une horloge 2CK qui est à une fréquence double de la fréquence de la mémoire DDR. En effet, une mémoire DDR traite une transaction à chaque front de son horloge, c'est-à-dire deux fois par période.
30 On pourrait, pour vérifier l'intégrité de la communication, comparer les signatures 20 et 22 à chaque transaction. On vérifie ainsi que la transaction reçue par la mémoire DDR 3038188 4 est bien la transaction envoyée par le circuit SoC. En cas d'inégalité, une erreur a pu être injectée sur les lignes du bus, cela de façon accidentelle ou malveillante. Pour effectuer une telle comparaison, il faudrait transmettre l'intégralité de la signature 22 au circuit SoC, ce qui n'est pas une solution réaliste.
5 En fait, les générateurs 20 et 22 sont conçus pour calculer une signature cyclique, c'est-à-dire une signature récursive qui est mise à jour à chaque transaction et qui préserve un historique des transactions précédentes. La signature peut être un code de redondance cyclique ou CRC. En outre, comme cela est représenté, un seul bit S de la signature 22 est transmis de la mémoire DDR au circuit SoC pour être comparé en 24 au bit de 10 même position de la signature 20. Si la comparaison échoue, le comparateur 24 active un signal d'erreur ERR. Les signatures 20 et 22 peuvent être réinitialisées par un signal RST, une seule fois à la mise sous tension du système, ou bien de temps à autre pendant des périodes d'inactivité sur le bus B. Avec cette configuration, dès qu'une erreur est introduite dans une transaction, les 15 signatures 20 et 22 se mettent à diverger rapidement au cours des transactions suivantes. Certes, les deux bits qu'on a choisi de comparer ne diffèrent pas forcément dès l'occurrence de l'erreur, mais ils ont une probabilité croissante de différer au cours des transactions suivantes. Cette probabilité tend vers 1 de façon géométrique selon la relation 1-2', où n est le nombre de transactions à partir de celle où l'erreur s'est 20 produite. Ainsi, au bout de 30 transactions, on a une chance sur un milliard de ne pas détecter l'erreur. A la cadence des transactions dans une mémoire DDR, c'est-à-dire à plus de 1 GHz, on est certain de détecter l'erreur en moins de 30 ns, ce qui est amplement suffisant dans de nombreuses applications de sécurité. La position dans les signatures des bits (S) que l'on choisit de comparer importe peu.
25 De préférence, on choisit une position où les signatures varient le plus rapidement, généralement du côté des poids faibles dans une signature de type CRC. Le fait qu'il n'y ait qu'un seul bit à communiquer entre les circuits permet de facilement envisager la transmission de ce bit par une ligne dédiée du bus, ou bien d'utiliser une ligne existante d'un bus normalisé. Dans certains bus normalisés, des lignes spécifiques 30 peuvent être libres ou avoir une fonction choisie parmi plusieurs. Dans un bus de mémoire DDR, parmi les lignes de commande CTRL, deux lignes appelées DMI (de l'anglais « Data Mask Invert ») du canal R sont attribuées aux deux moitiés des lignes de données en mode lecture de la mémoire. En pratique, le bus de 3038188 5 données comprend seize lignes et véhicule deux octets auxquels sont attribués respectivement les deux bits DMI. Lorsqu'un octet à transmettre comprend plus de 1 que de 0, il est inversé à la transmission. La ligne DMI correspondante sert à signaler cette inversion par un 1. En agissant ainsi systématiquement sur les deux octets des 5 lignes de données, on parvient à diminuer la consommation de courant liée à la transmission des données de 40 % en moyenne. Deux lignes DMI homologues, du canal W, jouent un rôle symétrique en mode écriture dans la mémoire. La mémoire DDR peut être conçue pour que la fonction de l'une des lignes DMI du canal R soit « surchargée » avec la fonction de transmission du bit de signature S. En 10 d'autres termes, l'utilisateur pourra configurer la fonction qu'il souhaite pour la ligne surchargée : soit il la configure pour avoir la fonction DMI classique, soit il la configure pour transmettre le bit de signature S. Le choix de la fonction de transmission du bit S se fait alors au détriment de la fonction DMI pour l'un des octets de données. Cependant, la fonction de la ligne DMI restante 15 peut être modifiée pour qu'elle s'étende aux deux octets des lignes de données. En d'autres termes, les deux octets sont inversés simultanément avant d'être transmis lorsqu'ils incluent ensemble plus de huit bits à 1. Cette façon de procéder est à peine moins efficace que l'utilisation de deux lignes DMI - elle permet une diminution de consommation moyenne de l'ordre de 36 % contre 40 %.
20 Dans de nombreuses applications, les générateurs de signature 20 et 22 pourraient être connectés pour tenir compte des seules lignes de données D, seize lignes dans ce cas. Toutefois, pour détecter toutes les possibilités d'erreur, les générateurs de signature sont de préférence connectés pour tenir compte de toutes les lignes qui ont une influence sur les données, à savoir les lignes d'adresses A, les lignes de données D, et les lignes DMI 25 parmi les lignes de commande CTRL. Comme cela est représenté, les générateurs de signature peuvent être connectés à ces lignes par les entrées et sorties des interfaces A, D, et CTRL, du côté opposé aux lignes du bus B, où les signaux sont propres. La ligne servant à transmettre le bit de signature S, le cas échéant une des lignes DMI, peut également être comptabilisée dans les calculs de signature.
30 En outre, le générateur de signature 22, dans la mémoire DDR, peut être conçu pour tenir compte d'un signal d'erreur produit par le circuit de correction d'erreurs ECC, comme cela est représenté. Le circuit ECC est destiné à détecter et corriger automatiquement des erreurs internes du plan mémoire MEM. S'il ne parvient pas à 3038188 6 corriger une erreur, il produit un signal d'erreur qui peut être pris en compte dans certains systèmes. Dans le cas présent, il est opportun qu'un tel signal du circuit ECC participe à la vérification de l'intégrité des données. Alors, du côté du circuit SoC, le générateur 20 5 reçoit à la même position une valeur constante ECCOK correspondant à une absence d' erreur. Les interfaces de bus A, D, et CTRL, du fait qu'elles sont en général conçues pour synchroniser les signaux du bus B sur des horloges CK internes aux circuits, introduisent un retard d'au moins un cycle d'horloge. Ainsi, une transaction présentée 10 au bus dans le circuit SoC met au moins deux cycles pour parvenir à la mémoire DDR. Pour que les générateurs 20 et 22 calculent une signature sur les mêmes valeurs, les entrées du générateur 20 peuvent être retardées par une mémoire FIFO 26 dont la profondeur correspond à la durée de traversée du bus B. Plus spécifiquement, seuls les signaux partants sont retardés (adresses A, données en écriture D(W), et lignes de 15 commande CTRL(W) en écriture). Les signaux entrants ne sont pas retardés (données en lecture D(W) et lignes de commande CTRL(R) en lecture). La figure 3 est un chronogramme illustrant le fonctionnement du circuit de la figure 2 dans le cadre d'un exemple d'une lecture suivie d'une écriture. Les transactions relatives à la lecture sont représentées dans des rectangles grisés, et les transactions 20 relatives à l'écriture sont représentées dans des rectangles blancs. Les transactions sont représentées dans différentes colonnes correspondant à des éléments de système différents indiqués en haut de colonne, et dans différentes rangées correspondant à des temps croissant de haut en bas. A un cycle tO, le circuit SoC présente la transaction de lecture aux interfaces de bus. La 25 transaction contient l'adresse de lecture A0, aucune donnée D, et aucun signal de commande CTRL (du moins aucun signal DMI pris en compte dans la calcul de signature). La transaction est notée (A0, 0, 0), reflétant les états des lignes A, D et CTRL. A un cycle tl, la transaction (A0, 0, 0) est poussée dans la mémoire FIFO (FIFO IN) et 30 est présentée en parallèle sur le bus. Le circuit SoC présente la transaction d'écriture, contenant une adresse Al et des données DW1. La transaction est notée (Al, DW1, CW1), où CW1 désigne l'état des lignes de commande CTRL du canal d'écriture W, notamment des lignes DMI.
3038188 7 A un cycle t2, la transaction de lecture (A0, 0, 0) arrive dans la mémoire DDR, où elle provoque la recherche des données et est présentée au générateur de signature 22. La transaction d'écriture (Al, DW1, CW1) est poussée dans la mémoire FIFO et apparaît en parallèle sur le bus.
5 A un cycle t3, dans la mémoire DDR, la signature 22 est mise à jour par la transaction de lecture (A0, 0, 0). La valeur de la signature est notée SIGO-DDR. En même temps, la mémoire présente les données demandées par la transaction (A0, 0, 0) sur l'interface de bus dans une transaction de réponse notée (DRO, CR0) - données DRO sur le canal R de l'interface D, signaux de commande CR0 sur le canal R de l'interface CTRL. Enfin, la 10 transaction d'écriture (Al, DW1, CW1) arrive dans la mémoire. Les transactions (Al, DW1, CW1) et (DRO, CR0) sont présentées au générateur de signature 22. A un cycle t4, le bit à comparer de la signature SIGO-DDR, noté SO, est présenté sur le bus, en même temps que la transaction de réponse (DRO, CR0). Dans la mémoire DDR, la signature 22 est mise à jour par les transactions (Al, DW1, CW1) et (DRO, CR0). La 15 nouvelle valeur de la signature est notée SIG1-DDR. Du côté du circuit SoC, la transaction (A0, 0, 0) est extraite de la mémoire FIFO et présentée au générateur de signature 20. A un cycle t5, le bit à comparer de la signature SIG1-DDR, noté Si, est présenté sur le bus. Dans le circuit SoC, le générateur 20 produit la signature SIGO-SoC mise à jour par 20 la transaction présentée au cycle précédent, à savoir la transaction (A0, 0, 0) extraite de la mémoire FIFO. Le bit SO arrive dans le circuit SoC et est comparé au bit de même position de la signature SIGO-SoC. Une inégalité indique qu'un défaut d'intégrité s'est produit dans la transaction (A0, 0, 0) ou dans au moins une des transactions précédentes. Dans le même cycle, la transaction (Al, DW1, CW1) est extraite de la 25 mémoire FIFO et présentée au générateur de signature 20 avec la transaction (DRO, CR0) qui arrive dans le circuit SoC. A un cycle t6, la signature 22 est mise à jour dans le circuit SoC par les transactions (Al, DW1, CW1) et (DRO, CR0) et prend une valeur notée SIG1-SoC. Le bit Si arrive dans le circuit SoC et est comparé au bit de même position de la signature SIG1-SoC.
30 Ce chronogramme montre que certaines signatures sont calculées sur des valeurs mélangeant des transactions, comme les signatures SIG1-SoC et SIG1-DDR. Ce qui importe est que chaque transaction participe à une signature, de façon isolée ou avec 3038188 8 une autre transaction, et que les signatures des deux côtés du bus soient calculées sur les mêmes valeurs. La mémoire FIFO a ici une profondeur de deux cycles, correspondant au nombre de cycles nécessaires pour qu'une transaction traverse le bus dans l'exemple considéré.
5 Comme on l'a précédemment indiqué, les générateurs de signature 20 et 22 peuvent être des générateurs de codes CRC. Dans la présente application, on peut être amené à calculer un code CRC sur les lignes d'adresses A (au minimum 6 lignes pour un module de mémoire DDR élémentaire), 16 lignes de données en écriture (W), 16 lignes de données en lecture (R), quatre lignes DMI (en écriture et lecture), et finalement le bit 10 d'état du circuit ECC, soit un total de 43 bits. (Bien que le bus ne comporte que 16 lignes de données, les données y circulent au double de la fréquence d'horloge, de sorte que l'on traite 32 bits de données à la fréquence d'horloge.) En principe, un générateur de code CRC opère sur des bits fournis en série. La fréquence d'une mémoire DDR pouvant dépasser 1 GHz, il faudrait que le générateur 15 de code CRC fonctionne à près de 43 GHz, ce qui est difficile à réaliser avec les technologies actuelles. Un générateur de code CRC peut être conçu pour traiter plusieurs bits en parallèle, mais compte tenu de la complexité et des difficultés au niveau des chemins critiques que cela entraîne, cette solution est limitée en pratique à une dizaine de bits. La fréquence de fonctionnement du générateur serait encore trop 20 élevée. La figure 4 représente schématiquement un mode de réalisation de générateur de code CRC utilisable dans la présente application. Les bits sur lesquels on souhaite calculer les signatures, 43 dans le présent exemple, sont séparés en plusieurs groupes, ici cinq groupes de 8, 8, 9, 9, et 9 bits, respectivement. Chaque groupe de bits est fourni à un 25 générateur de code CRC parallèle indépendant, adapté au nombre de bits du groupe (huit ou neuf). Une porte OU exclusif XOR reçoit un bit de chaque code CRC pour fournir le bit à comparer S. La position du bit de chaque code CRC peut être arbitraire. De préférence on choisit une position dont la valeur est susceptible de changer rapidement, donc plutôt dans les poids faibles LSB.
30 La nature des codes CRC est choisie, de préférence, pour fournir une distance de Hamming relativement élevée, par exemple un code CRC de 32 bits.

Claims (6)

  1. REVENDICATIONS1. Procédé de vérification de l'intégrité d'une communication entre un circuit maître (SoC) et un circuit esclave (DDR), comprenant les étapes suivantes : - envoyer des transactions du circuit maître au circuit esclave - mettre à jour une première signature cyclique multi-bits (20) à partir de chaque transaction telle que présente dans le circuit maître ; - mettre à jour une deuxième signature cyclique multi-bits (22), de même nature que la première, à partir de chaque transaction telle que reçue dans le circuit esclave; et - comparer un seul bit (S) de la deuxième signature cyclique à un bit de même position de la première signature cyclique.
  2. 2. Procédé selon la revendication 1, comprenant les étapes suivantes : - envoyer les transactions sur un bus (B) entre le circuit maître et le circuit esclave ; - stocker chaque transaction dans une mémoire FIFO ayant une profondeur correspondant au retard introduit par le bus ; - mettre à jour la première signature cyclique (20) à partir de la sortie de la mémoire FIFO ; et - transmettre au circuit maître le bit de signature à comparer sur une ligne du bus.
  3. 3. Procédé selon la revendication 2, dans lequel le circuit esclave est une mémoire de type DDR et le bit de signature à comparer est transmis par une ligne DMI du bus mémoire.
  4. 4. Procédé selon la revendication 3, dans lequel les première et deuxième signatures cycliques sont basées également sur les données lues dans la mémoire DDR.
  5. 5. Procédé selon la revendication 1, comprenant les étapes suivantes pour chacun des circuits maître et esclave : - diviser les informations de chaque transaction en plusieurs groupes ; 3038188 10 Io associer à chaque groupe un générateur respectif de code de contrôle de redondance cyclique (CRC) ; à chaque transaction, générer en parallèle les codes CRC ; et * produire le bit à comparer par une opération OU exclusif combinant un seul 5 bit de chaque code CRC.
  6. 6. Procédé selon la revendication 5, dans lequel les bits combinés des codes CRC sont des bits de poids faible.
FR1556064A 2015-06-29 2015-06-29 Systeme de verification de l’integrite d’une communication entre deux circuits Expired - Fee Related FR3038188B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1556064A FR3038188B1 (fr) 2015-06-29 2015-06-29 Systeme de verification de l’integrite d’une communication entre deux circuits
US14/949,378 US10114687B2 (en) 2015-06-29 2015-11-23 System for checking the integrity of a communication between two circuits

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1556064A FR3038188B1 (fr) 2015-06-29 2015-06-29 Systeme de verification de l’integrite d’une communication entre deux circuits

Publications (2)

Publication Number Publication Date
FR3038188A1 true FR3038188A1 (fr) 2016-12-30
FR3038188B1 FR3038188B1 (fr) 2017-08-11

Family

ID=55129947

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1556064A Expired - Fee Related FR3038188B1 (fr) 2015-06-29 2015-06-29 Systeme de verification de l’integrite d’une communication entre deux circuits

Country Status (2)

Country Link
US (1) US10114687B2 (fr)
FR (1) FR3038188B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020169902A1 (fr) * 2019-02-22 2020-08-27 Stmicroelectronics (Grenoble 2) Sas Transmission de donnees liees sur bus i2c

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112016006791B4 (de) * 2016-06-07 2020-02-06 Mitsubishi Electric Corporation Datenverarbeitungsvorrichtung, Datenverarbeitungsverfahren und Datenverarbeitungsprogramm
US10652024B2 (en) * 2017-04-05 2020-05-12 Ciena Corporation Digital signature systems and methods for network path trace
GB2574614B (en) * 2018-06-12 2020-10-07 Advanced Risc Mach Ltd Error detection in an interconnection network for an integrated circuit
US11687273B2 (en) * 2021-09-29 2023-06-27 Micron Technology, Inc. Memory controller for managing data and error information

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090183051A1 (en) * 2008-01-14 2009-07-16 Qimonda Ag Memory System with Cyclic Redundancy Check
US20090187794A1 (en) * 2008-01-22 2009-07-23 International Business Machines Corporation System and method for providing a memory device having a shared error feedback pin
US20090235113A1 (en) * 2006-05-18 2009-09-17 Rambus Inc. Memory error detection
US20130117641A1 (en) * 2009-12-09 2013-05-09 Kuljit S. Bains Method and system for error management in a memory device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604754A (en) * 1995-02-27 1997-02-18 International Business Machines Corporation Validating the synchronization of lock step operated circuits
US7295882B2 (en) * 2002-06-27 2007-11-13 International Business Machines Corporation Method and apparatus for audible error code detection and identification
US7904775B2 (en) * 2004-04-21 2011-03-08 Stmicroelectronics Sa Microprocessor comprising signature means for detecting an attack by error injection
GB0427540D0 (en) * 2004-12-15 2005-01-19 Ibm A system for maintaining data
US8892963B2 (en) * 2005-11-10 2014-11-18 Advanced Micro Devices, Inc. Error detection in high-speed asymmetric interfaces utilizing dedicated interface lines
US7949931B2 (en) * 2007-01-02 2011-05-24 International Business Machines Corporation Systems and methods for error detection in a memory system
EP2381265B1 (fr) * 2010-04-20 2013-09-11 STMicroelectronics Srl Système pour réaliser un test des circuits numériques
US8560899B2 (en) * 2010-07-30 2013-10-15 Infineon Technologies Ag Safe memory storage by internal operation verification

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090235113A1 (en) * 2006-05-18 2009-09-17 Rambus Inc. Memory error detection
US20090183051A1 (en) * 2008-01-14 2009-07-16 Qimonda Ag Memory System with Cyclic Redundancy Check
US20090187794A1 (en) * 2008-01-22 2009-07-23 International Business Machines Corporation System and method for providing a memory device having a shared error feedback pin
US20130117641A1 (en) * 2009-12-09 2013-05-09 Kuljit S. Bains Method and system for error management in a memory device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020169902A1 (fr) * 2019-02-22 2020-08-27 Stmicroelectronics (Grenoble 2) Sas Transmission de donnees liees sur bus i2c
FR3093198A1 (fr) * 2019-02-22 2020-08-28 Stmicroelectronics (Grenoble 2) Sas Transmission de données liées sur bus I2C
CN113474762A (zh) * 2019-02-22 2021-10-01 意法半导体(格勒诺布尔2)公司 在i2c总线之上的链接数据的传输
CN113474762B (zh) * 2019-02-22 2025-02-28 意法半导体(格勒诺布尔2)公司 在i2c总线之上的链接数据的传输

Also Published As

Publication number Publication date
FR3038188B1 (fr) 2017-08-11
US10114687B2 (en) 2018-10-30
US20160378580A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
FR3038188A1 (fr) Systeme de verification de l’integrite d’une communication entre deux circuits
FR2827684A1 (fr) Controleur de memoire presentant une capacite d'ecriture 1x/mx
FR2687879A1 (fr) Tampon d'elasticite pour la synchronisation d'information/d'horloge et systeme de transmission de donnees utilisant un tel tampon.
FR2487561A1 (fr) Systeme de memoire dynamique
FR2487548A1 (fr) Systeme de memoire avec dispositif de diagnostic
FR2900749A1 (fr) Procede et dispositif de securisation de la memoire d'un calculateur a l'encontre des erreurs dues aux radiations
FR2737637A1 (fr) Matrice de commutation entre deux groupes de multiplex
FR3043477A1 (fr) Procede de synchronisation de convertisseurs de donnees par un signal transmis de proche en proche
EP1573541A2 (fr) Procede de memorisation de donnees avec correction d'erreur
FR2473753A1 (fr) Dispositif pour fournir des groupes de donnees corriges a un circuit de destination
FR2849228A1 (fr) Dispositif de transfert de donnees entre deux sous-systemes asynchrones disposant d'une memoire tampon
EP0020185B1 (fr) Procédé et dispositif d'addition, de manière parallèle-série d'un grand nombre de mots
EP4020475A1 (fr) Module mémoire adapté à mettre en oeuvre des fonctions de calcul
EP1417582A2 (fr) Ensemble de circuits electroniques comportant des moyens de decontamination de parties contaminees par des erreurs
EP0094040A2 (fr) Système de transmission synchrone de données à l'aide d'une porteuse modulée d'amplitude d'enveloppe constante
EP0344052B1 (fr) Mémoire modulaire
EP0635786B1 (fr) Dispositif de stockage de données
EP0400734B1 (fr) Dispositif de retard d'un signal numérique programmable et application à un dispositif de code correcteur d'erreurs
FR2717921A1 (fr) Dispositif de gestion de conflit d'accès entre un CPU et des mémoires.
EP3716523A1 (fr) Procédé de synchronisation de données numériques envoyées en série
EP0169089B1 (fr) Dispositif élémentaire de traitement de données
FR2808903A1 (fr) Systeme d'acces memoire
EP2215552A1 (fr) Circuit comportant une machine microprogrammee pour traiter les entrees ou les sorties d'un processeur afin de les faire entrer ou sortir du circuit selon n'importe quel protocole de communication
FR2887052A1 (fr) Architecture radar generique
EP1503288B1 (fr) Cellule de détection d'erreurs pour processeur intégré

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20161230

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

ST Notification of lapse

Effective date: 20210205