XJFlash — Programmation de flash haute vitesse à base de FPGA

XJFlash JTAG Boundary Scan software module

XJFlash est une méthode avancée et innovante de programmation In Situ à grande vitesse de mémoires flash via JTAG. Tous les composants flash série et parallèle sont pris en charge. L’utilisation la plus courante de XJFlash est la programmation du flash SPI/QSPI NOR utilisé pour configurer un FPGA.

Avec XJFlash, vous pouvez utiliser le FPGA sur votre carte pour améliorer la vitesse de programmation flash jusqu’à 50 fois plus que celle possible en utilisant des techniques boundary scan conventionnelles, atteignant souvent la vitesse maximale de la mémoire flash.

Fiche Produit XJFlash  Plus d’informations Evaluation Gratuite

Solutions personnalisées – générées automatiquement

XJFlash vous permet de générer automatiquement des solutions de programmation personnalisées pour les mémoires flash connectés aux FPGA et aux SoC FPGA (tels que Xilinx Zynq® et Intel Cyclone® V) sur votre carte.

Les capacités fonctionnelles du FPGA sont exploitées pour obtenir des vitesses de programmation les plus rapides possibles. XJFlash génère automatiquement un design personnalisé pour chaque combinaison FPGA / flash, vous permettant de bénéficier des meilleurs temps de programmation, sans que vous ayez à effectuer de développement FPGA.*

Si votre mémoire flash est connectée à un FPGA d’Intel (Altera), Xilinx, Microsemi ou Lattice, XJFlash utilise le port JTAG standard du FPGA pour offrir une alternative de programmation In Situ à un programmateur SPI ou un programmateur flash parallèle. XJFlash prend en charge tous les modes SPI (single-bit, dual, quad, QSPI et octal) ainsi que les composants flash NOR parallèles.

*Une version sous licence des outils du fabricant de FPGA concerné sera requise lors de la configuration de XJFlash. Les versions gratuites sont suffisantes pour de nombreux composants.

Intégration des tests

La programmation XJFlash peut être facilement intégrée dans votre système de test XJTAG à l’aide de XJDeveloper. Toute programmation XJFlash peut être exécutée dans le cadre d’un projet de test boundary scan XJRunner.

Programmation flash configurable

Que vous ayez besoin de programmer un seul composant flash ou plusieurs composants connectés en série, pour étendre l’espace d’adressage, ou en parallèle, pour créer un bus de données plus large, vous pouvez utiliser XJFlash pour accélérer vos opérations de programmation.

Développement personnalisé

XJFlash peut également être utilisé pour une programmation autonome, y compris un accès direct aux bus I²C et SPI ou à des protocoles personnalisés tels que Microchip ICSP.

Les connexions requises n’ont pas besoin de provenir d’un FPGA sur la carte cible. À condition que les signaux de protocole soient disponibles sur un en-tête sur cette carte, il devrait être possible d’utiliser XJFlash pour réaliser une programmation rapide dans le cadre d’une solution XJTAG.

Temps de programmation avec XJFlash

Dans la figure ci-dessous, nous montrons un exemple réel de la programmation accélérée avec XJFlash, qui est capable d’aller 50 fois plus vite que ce qui serait considéré comme normal en utilisant JTAG conventionnellement. Avec XJFlash, c’est d’ailleurs souvent le temps de programmation intrinsèque de la flash qui devient la limite de vitesse pour le process global de programmation.

Temps théorique minimum pour le boundary scan conventionnel : 35 minutes.
Durée totale d’exécution de XJFlash : 10,5 s à 32,6 s.

XJFlash programming stages

XJFlash passera automatiquement par quatre étapes chaque fois qu’un composant flash est programmé :

  Initialisation – Le FPGA connecté à la flash est configuré avec l’image XJFlash requise pour la carte cible. Pour l’exemple ci-dessus : temps de 2,1 s.

  Erase – La flash peut être effacée en utilisant l’un des deux algorithmes. L’effacement de base efface simplement tous les blocs dans une plage définie. L’effacement plus intelligent utilisera le fait qu’il est plus rapide de lire la flash que de l’effacer ; en tant que tel, il lit à partir de chaque adresse et ne commence à effacer que si certaines données sont trouvées. Cette étape peut être ignorée si l’on sait que la flash sera toujours vide avant sa programmation.
Exemple de durée ci-dessus : effacement intelligent activé de 0,9 s avec un composant déjà effacé, à 23 s avec un composant entièrement programmé (limité par le temps d’effacement du composant).

  Program – Les données provenant des images cibles sont diffusées dans le FPGA via son port JTAG. Le FPGA programme ensuite ces données dans la ou les flashs connectées. Plusieurs fichiers peuvent être spécifiés et programmés à des décalages définis. Cette étape peut être ignorée si seule la vérification est requise.
Exemple de temps ci-dessus : 6,2 s (limité par la vitesse de programmation du composant).

  Verify – La vérification vérifie chaque octet dans le flash par rapport au(x) fichier(s) spécifié(s), en veillant à ce qu’il n’y ait pas d’erreur de bit de données. Cette étape peut être contournée si seule une programmation ou un effacement est nécessaire.
Exemple de temps ci-dessus : 1,8 s avec TCK à 10 MHz, réduit à 1,3 s avec TCK à 20 MHz.

Ces exemples de temps sont fournis pour un Spartan-6 XC6SLX9 programmant un fichier de données de 2 Mo dans la mémoire de configuration SPI du FPGA.

Exemples de temps de programmation utilisant un SoC de la série Xilinx Zynq®-7000

Un fichier de 256 Mbits peut être programmé dans une flash SPI NOR et vérifié en environ 46 s, en fonction de la vitesse du TCK et du type de mémoire utilisé* ; 32 Mbits de code prennent un peu plus de 7 s.

32 Mbit
7 s
64 Mbit
13 s
128 Mbit
24 s
256 Mbit
46 s

L’ajout d’un cycle d’effacement initial n’ajoute que 3,1 s pour une flash de 256 Mbit vide, ou 54 s pour une flash pleine. Cela tombe à 0,4 s et entre 6,5 et 9,2 s respectivement pour un composant 32 Mbit.

* TCK = 66 MHz, fichier de données pseudo-aléatoire. La durée varie selon le type de flash.

Exemples de temps de programmation utilisant un SoC de la série Xilinx Zynq® UltraScale+

Un fichier de 256 Mbits peut être programmé dans une flash SPI NOR et vérifié en environ 42 s, en fonction de la vitesse du TCK et du type de mémoire utilisé** ; 32 Mbit de code prend 7 s.

32 Mbit
7 s
64 Mbit
12 s
128 Mbit
22 s
256 Mbit
42 s

L’ajout d’un cycle d’effacement initial n’ajoute que 2 s pour une flash de 256 Mbit vide, ou 57 s pour une flash pleine. Cela tombe à 0,3 s et 6,9 s respectivement pour un composant 32 Mbit.

** TCK = 30 MHz, fichier de données pseudo-aléatoire. La durée varie selon le type de flash.

Quand XJFlash peut-il être utilisé ?

Pour pouvoir utiliser XJFlash, tous les signaux de données, d’adresse et de contrôle des composants flash doivent être connectés à un FPGA sur la carte cible. Il peut s’agir d’une PROM de configuration ou d’un composant flash connecté à n’importe quelle broche d’E/S à usage général. Ces connexions peuvent être directes, indirectes, dédiées ou partagées :

Connexions directes – oui

XJFlash Configuration - Direct Connections to FPGA

XJFlash Configuration - Direct Connections to FPGA SoC

La flash est directement connectée au FPGA. Fonctionne aussi avec un Soc.

Connexions indirectes – oui

XJFlash Configuration - Indirect Connections

Fonctionne si :

  1. Flash connectée au FPGA via un buffer
  2. Certains des signaux d’adresse sont partagés avec les signaux de données et sont verrouillés
  3. Il existe un autre composant configurable, tel qu’un CPLD, entre le FPGA et la flash

Connexions partagées – oui

XJFlash Configuration - Shared Connections

La flash est connectée au FPGA dans l’un des modes décrits ci-dessus, mais ces connexions sont partagées avec un autre composant (tel qu’un processeur).

Aucune connexion – oui (avec des modifications de conception)

XJFlash Configuration - No Connections

Si votre conception contient un FPGA mais la flash n’est connectée dans aucune des configurations décrites, il peut être possible d’utiliser des broches disponibles sur le FPGA pour établir des connexions à la mémoire flash. Ces connexions ne seraient pas utilisées dans le mode mission de la carte mais vous permettraient d’utiliser XJFlash pour accélérer la programmation flash. Si votre FPGA est déjà connecté au même bus d’adresse/de données que la flash, cela peut ne pas nécessiter beaucoup de signaux supplémentaires.

Pas de FPGA – pas directement

XJFlash Configuration - No FPGA

Malheureusement, il n’est pas possible d’utiliser XJFlash s’il n’y a pas de FPGA. Cependant, s’il est possible d’amener les connexions de la flash à un en-tête ou à des points de test sur la carte, la programmation rapide XJFlash peut être utilisée via ces connexions à l’aide d’une carte XJAccelerator.

Alternativement, il peut être possible d’accélérer la programmation flash en utilisant l’interface de débogage sur un processeur – veuillez nous contacter pour voir si vous pouvez utiliser cette approche sur votre carte.

Compatibilité

  • Intel (Altera) – Arria GX, Arria II GX, Arria II GZ, Arria V, Arria V GZ, Arria 10, Cyclone, Cyclone II, Cyclone III, Cyclone III LS, Cyclone IV E, Cyclone IV GX, Cyclone V, Stratix, Stratix GX, Stratix II, Stratix II GX, Stratix III, Stratix IV, Stratix V, Stratix 10
  • Lattice – MachXO2, LatticeECP3, LatticeXP2
  • Microsemi – IGLOO2, ProASIC3, ProASIC3E, ProASIC3L, SmartFusion2
  • Xilinx – Artix-7, Kintex-7, Kintex UltraScale, Kintex UltraScale+, Spartan-3, Spartan-3A, Spartan-3E, Spartan-6, Spartan-7, Virtex-II, Virtex-II Pro, Virtex-4, Virtex-5, Virtex-6, Virtex-7, Virtex UltraScale, Virtex UltraScale+, Zynq-7000, Zynq UltraScale+

Cette liste ne cesse de s’allonger – contactez-nous pour les derniers détails.

Toutes les marques déposées sont la propriété de leurs propriétaires respectifs.

Configuration recommandée

  • Processeurs Intel® Core i3, i5, i7 ou équivalent (toutes générations)
  • Microsoft® Windows® 8, Windows 8.1, Windows 10 (1607) et versions ultérieures, ou Windows 11 (32 ou 64 bit)
  • 4 Go de RAM

Frequently asked questions

General

How can XJFlash be 50 times faster than programming with conventional boundary scan?

With conventional boundary scan each signal change requires one complete test vector to be scanned through the JTAG chain. XJFlash configures the FPGA with a programming algorithm so it can change these signals at its operating clock speed. JTAG is still used to stream the data to be programmed into the FPGA but the control of the signals on the board is done by the FPGA.

I use a fast flash programmer already, why should I consider using XJFlash?

XJFlash makes use of the FPGA resources already designed into the board. This means it is possible to use a single JTAG tool to boundary scan test the board and program it in one step, making it faster than swapping between tools on the production line. Furthermore, using in-system programming removes the need to pre-program flash devices, allowing the latest flash image to always be used and allowing the same tools to be used during development, production, and repair.

Technical questions

What flash devices are supported?

XJFlash has built-in support for a wide range of parallel and serial NOR flash devices. Support for NAND devices is also available.

What FPGAs are supported?

XJFlash can be used on a wide range of FPGAs from Intel (formerly Altera), Lattice, Microsemi (formerly Actel), and Xilinx.

What Xilinx Zynq SoCs are supported?

XJFlash provides NOR flash programming of memories connected to Xilinx Zynq-7000 and Zynq-UltraScale+ SoCs. This includes the following families: Xilinx XC7Z007S, XC7Z010, XC7Z012S, XC7Z014S, XC7Z015, XC7Z020, XC7Z030, XC7Z-35, XC7Z045, XC7Z100, XCZU2, XCZU3, XCZU4, XCZU5, XCZU6, XCZU7, XCZU9, XCZU11, XCZU15, XCZU17, XCZU17, XCZU19. New parts are always being added, so please contact us if your device isn’t listed.

What if I want to program a type of device that's not listed?

The range of devices programmable using XJFlash is continuing to grow, so if you want to program a device that is not currently listed then let us know.

Can I use XJFlash on boards I’ve already designed?

Yes. XJFlash transfers all data from the PC to the board via the FPGA’s JTAG port, which is commonly brought to a header on the board for use during development. Therefore, provided this has been done and the flash to be programmed is accessible from the FPGA, XJFlash can be used.

My flash is not connected directly to the FPGA on my board, might I still be able to use XJFlash?

Yes. XJFlash can easily be customised to support scenarios where the FPGA is not directly connected to the flash to be programmed. For example, the signals could go through buffers, latches, a CPLD or other forms of logic, and XJFlash can still be used. Furthermore, even if some of the signals have to be serialised to get them between the FPGA and a CPLD, XJFlash can be used.

Not all the signals on my flash are accessible from the FPGA, surely that makes it impossible to use XJFlash?

This all depends on the type of flash to be programmed and which signals are accessible. XJFlash is designed to allow the FPGA to be included in a JTAG chain with other devices, which means some signals can be controlled using boundary scan from other devices whilst XJFlash runs on the FPGA. Contact us to find out if XJFlash can work in your case.

Is this limited to only programming FPGA configuration devices?

No. Due to XJFlash’s ability to create custom FPGA images for each board design, it is not restricted to only programming the configuration device.

I’m not an FPGA developer, will this be too complicated for me?

No. Although XJFlash requires a custom FPGA image for each design of board, this is an automated process controlled by XJFlash. This requires the relevant FPGA vendor’s tools to be installed on the PC used to develop the tests, but you won’t have to use them yourself.

Will I have to buy extra FPGA tools to be able to use XJFlash?

This depends on the FPGA being used. Many FPGAs are supported by free versions of the various vendors’ own tools. For these FPGAs no additional products would need to be purchased. For larger FPGAs, contact your FPGA developers, or contact us.

Can I simultaneously program multiple PCBs, each with their own flash devices?

Yes – because XJFlash can be added to a sequence of production tests, concurrent programming can be implemented in exactly the same way as concurrent boundary scan testing.

Can I use XJFlash both in high-volume and low-volume/high-mix production situations?

Yes – because XJFlash can be incorporated in your production tests and it uses the FPGA built on to the board, there are very few time overheads and no hardware modifications required when switching between different board designs.

This can’t be faster than the FPGA vendor’s programming tool, can it?

XJFlash has been found to be faster than many commonly used flash programming tools, so why not try it and see for yourself? Contact us.

Do you support fast Flash programming attached to microprocessors, CPUs, DSPs?

Yes – please contact us for more details.

What are the recommended system requirements to run XJFlash?

  • Intel® Core i3, i5, i7 processor or equivalent (any generation)
  • Microsoft® Windows® 8, Windows 8.1, Windows 10 1607 and later, or Windows 11 (32 or 64 bit)
  • 4 GB of RAM

Free evaluation / Licensing

What are the differences between the trial version and the purchased product?

There is no difference between the functionality of the purchased product and the free evaluation version. We provide full technical support by telephone and email, to help with the set-up or troubleshoot any issues during your trial. You will also have access to XJTAG’s device test libraries and latest software upgrades, during your 30-day evaluation period.

Can I convert my trial version to a purchased product?

Yes. If you already have XJFlash for evaluation, you can continue using it without interruption by purchasing the full licence. Contact your XJTAG distributor to make a purchase and have your licence extended.

Do I need to purchase an XJFlash licence for each XJRunner I want to use?

No. An XJFlash licence is required to create the programming configuration for a particular board, after which that configuration can be used with any XJRunner on the same board.


Ce que disent nos clients…

Pour un composant de 128 Mbits, XJFlash peut réduire le temps de programmation total à moins de 20 secondes, avec un temps de cycle d’écriture moyen inférieur à 2 µs.

Jeff Bader, Directeur principal du marketing, Micron Technology

Lire l’étude de cas complète »

Nous avons réalisé des gains de temps extrêmement précieux, en réduisant le temps de programmation de grands FPGA de plusieurs minutes à seulement 35 secondes.

Chris Beynon, CTO, Active Silicon

Lire l’étude de cas complète »

Fast flash programming using JTAG webinar
  • Programmation flash haute vitesse
  • Mise à niveau rapide du firmware
Avantages clés
  • Réduit les temps de programmation flash
  • Prise en charge de SPI, QSPI, composants flash NOR parallèles
  • Prise en charge des composants flash NAND disponibles sur demande
  • Raccourcit les cycles de développement
  • Pas besoin d’équipement supplémentaire
  • Peut être utilisé pour une mise à niveau rapide du firmware
  • Aucun développement FPGA requis

Options de licence flexibles

Etes-vous prêt à commencer? Essayez les outils XJTAG

computer

Voir XJTAG à l’oeuvre

Notre équipe d'experts vous montrera comment diagnostiquer les défauts sur votre carte électronique, comment réduire le temps de développement des tests et le temps de réparation grâce aux outils XJTAG.

Demandez une démo

contact us icon

Une question? Contactez-nous!

Nous sommes là pour vous aider.
Envoyez-nous un message et un de nos spécialistes vous répondra dans les plus brefs délais.

Contactez-nous

workstation

Recevez une configuration de test gratuite pour une de vos cartes

Évaluez le système XJTAG avec toutes ses fonctionnalités pendant 30 jours et nous vous proposons de configurer gratuitement les tests pour votre première carte.
Aucune obligation d'achat.

Commencez dès maintenant

Rejoignez de nombreuses entreprises, leaders mondiaux dans leurs domaines,
qui utilisent déjà le système Boundary Scan XJTAG