Vue lecture

Test du MacBook Pro 2025 : on a mis le nouveau processeur Apple M5 à l’épreuve (tous les benchmarks)

À 1 799 euros ou plus, le nouveau MacBook Pro de 14 pouces, toujours livré avec 512 Go de stockage, 16 Go de RAM et un écran Mini LED, s’impose une nouvelle fois comme un des meilleurs ordinateurs portables du marché. La différence entre la génération M4 et la génération M5 est difficile à percevoir au premier abord : tout se cache dans les performances.

  •  

On a testé le nouveau Vision Pro d’Apple (M5) en longue durée dans un avion : enfin confortable ?

Désormais commercialisé au tarif de 3 699 euros (3 999 euros auparavant), l’Apple Vision Pro deuxième du nom a pour principale nouveauté un accessoire : le « bandeau tissé à sangle double » (Dual Knit Band). Conçu pour mieux répartir le poids, il vise à éliminer l’inconfort du premier modèle, qui avait tant déçu les premiers clients. Le reste est technique, avec une puce M5 capable d’afficher plus de pixels et de réduire la consommation énergétique.

  •  

Valkey 9.0.0 released

✇LWN
Par :jzb

Version 9.0.0 of the Valkey distributed key-value database has been released. Notable features of this release include Multipath TCP (MPTCP) support, new filters for client commands, multi-database support for cluster mode and much more. See the Valkey 9.0.0 RC1 release notes for a full list of new features in this major release.

According to a recent blog post, this release includes major improvements to performance and scaling of Valkey clusters to more than 2,000 nodes and one billion requests per second. Valkey began as a fork of the Redis key-value database in March 2024, but has evolved separately since then.

  •  

Sortie de Cocotb version 2.0.0

Cocotb, le cadriciel libre de vérification matérielle en Python, vient de publier sa version majeure 2.0. Cette sortie marque une étape importante dans l’évolution de ce projet qui permet de tester des circuits numériques décrits en VHDL ou Verilog directement depuis Python, sans avoir à écrire de testbench en HDL.

Pour celles et ceux qui ne connaissent pas encore cocotb, il s’agit d’un outil qui facilite grandement la vie des personnes travaillant sur la conception de circuits intégrés. Plutôt que d’écrire des bancs de test complexes en VHDL ou Verilog, cocotb permet d’utiliser Python et son écosystème riche (NumPy, pytest, etc.) pour vérifier le comportement des circuits.
Cocotb (Coroutines-based Cosimulation Test-Bench) permet d’écrire en python des bancs de test qui vont piloter directement le simulateur HDL via différentes interfaces (VPI, VHPI, FLI). La plupart des simulateurs HDL du marché sont supportés, qu’ils soient libres ou non.

Logo cocotb

Sommaire

Une version majeure synonyme de changements

Comme l’indique le numéro de version, cocotb 2.0 introduit des changements incompatibles avec les versions précédentes. L’équipe de développement a profité de cette version majeure pour nettoyer l’API, supprimer du code obsolète et moderniser l’architecture du projet. Un guide de migration détaillé est disponible pour accompagner la transition.

Principales ruptures de compatibilité

La transition vers cocotb 2.0 nécessite quelques adaptations du code existant :

  • Suppression des coroutines à base de générateurs : La syntaxe yield (avec le décorateur @cocotb.coroutine) a été supprimée. Il faut désormais utiliser exclusivement la syntaxe moderne async/await.

  • Nouvelles conventions de nommage : Les variables d’environnement ont été renommées pour éviter les conflits avec les simulateurs. Par exemple, MODULE devient COCOTB_TEST_MODULES, TOPLEVEL devient COCOTB_TOPLEVEL, etc.

  • Changements dans les types de données : Les objets BinaryValue ont été remplacés par LogicArray, offrant une API plus cohérente et moderne pour manipuler les valeurs logiques.

  • Modifications des déclencheurs : L’objet Join est devenu obsolète au profit d’une utilisation directe des tâches. La syntaxe await task.join() devient simplement await task.

Les nouveautés marquantes

Amélioration des performances

La nouvelle version apporte des gains de performance significatifs, notamment grâce à l’implémentation en C++ d’un générateur d’horloge (GpiClock). Cette optimisation réduit les échanges entre Python et l’interface GPI, permettant des simulations plus rapides, particulièrement pour les designs utilisant de nombreuses horloges.

Prise en charge étendue des simulateurs

Cocotb 2.0 élargit sa prise en charge des simulateurs commerciaux et libres :

  • DSim (Siemens) est maintenant officiellement géré
  • Questa bénéficie d’un nouveau flux de compilation qisqrun utilisant le Questa Information System pour de meilleures performances
  • NVC, le simulateur VHDL libre, est désormais géré
  • Verilator (version 5.036 minimum) avec le flag --timing est maintenant pleinement fonctionnel

Gestion améliorée des tâches

L’API de gestion des tâches a été modernisée pour s’aligner sur celle d’asyncio` :

# Nouvelle fonction pour démarrer une tâche
cocotb.start_soon(ma_coroutine())

# Nouveau déclencheur pour attendre la fin d’une tâche
await task.complete  # au lieu de await Join(task)

# Annulation de tâches
task.cancel()  # au lieu de task.kill()

# Variables locales aux tâches
task.locals.ma_variable = valeur

Nouvelles fonctionnalités pour les signaux

Cocotb 2.0 enrichit les possibilités d’interaction avec les signaux HDL :

  • Dépôts sans délai : La classe Immediate permet d’effectuer des assignations immédiates
  • Nouvelle méthode set() : Une alternative à la propriété value avec un typage plus strict
  • Gestion étendue des actions : Force, Freeze, Release et Deposit pour un contrôle fin des signaux
# Différents types d’assignations
dut.signal.set(42)                    # Assignation normale
dut.signal.set(42, Immediate())       # Assignation immédiate
dut.signal.set(42, Force())           # Forcer une valeur
dut.signal.set(Release())             # Libérer un signal forcé

Améliorations du typage

Cocotb 2.0 intègre maintenant mypy dans son processus de CI, garantissant une meilleure qualité du typage. Les utilisateurs bénéficient ainsi d’une meilleure expérience avec les IDE modernes et les vérificateurs de types.

Décorateur @cocotb.parametrize

Un nouveau décorateur simplifie la création de tests paramétrés, offrant une alternative plus moderne à TestFactory :

@cocotb.parametrize(
    width=[8, 16, 32],
    signed=[True, False]
)
@cocotb.test()
async def test_additionneur(dut, width, signed):
    # Test avec différentes combinaisons de paramètres
    pass

Gestion du logging améliorée

Le système de logging a été revu pour être moins intrusif :

  • Nouvelle variable COCOTB_LOG_PREFIX pour personnaliser le préfixe des logs
  • Séparation des niveaux de log pour GPI avec GPI_LOG_LEVEL
  • Meilleure gestion de la capture des warnings Python
  • Timestamps de simulation accessibles dans les LogRecord

Nouvelles structures de données

La version 2.0 enrichit considérablement le module cocotb.types :

  • LogicArray : Représentation des tableaux de valeurs logiques avec gestion des états X, Z, etc.
  • Logic : Valeur logique unique avec gestion des 9 états VHDL
  • Méthodes de conversion : to_signed(), to_unsigned(), to_bytes(), from_bytes() pour faciliter les conversions
from cocotb.types import LogicArray, Range

# Création d’un tableau logique
data = LogicArray("10XZ01", Range(5, "downto", 0))

# Conversions
valeur_entier = data.to_unsigned(resolve=True)
octets = data.to_bytes()

Améliorations de l’écosystème

Flux de test en Python

Le flux de test Python (Python Test Runner), introduit expérimentalement en version 1.8, est maintenant mature et constitue l’alternative recommandée au système de Makefile traditionnel. Il permet une intégration plus naturelle avec pytest et simplifie la configuration des simulations.

Queues asyncio

Cocotb 2.0 introduit des files d’attente compatibles avec asyncio (Queue, PriorityQueue, LifoQueue), facilitant la communication entre coroutines.

Gestion des packages SystemVerilog

L’accès aux packages SystemVerilog est maintenant possible via cocotb.packages, permettant d’interagir avec les définitions globales du design.

Considérations sur l’adoption

Cette version majeure représente un investissement conséquent de l’équipe de développement. Pour les utilisatrices et utilisateurs existants, la migration nécessitera quelques ajustements, mais les bénéfices en termes de maintenabilité et de performances en valent la peine.

Le projet cocotb, développé principalement par la communauté et utilisé dans l’industrie comme dans l’enseignement, continue de démontrer la pertinence de l’approche Python pour la vérification matérielle. Cette version 2.0 consolide les bases pour les évolutions futures.

Pour les personnes qui débutent avec cocotb, c’est le moment idéal pour se lancer : la documentation a été revue, les exemples mis à jour, et l’API est désormais plus cohérente.

Remerciements et perspectives

Cette version est le fruit du travail de nombreuses personnes contributrices. Le projet est hébergé sur GitHub et accepte volontiers les contributions, qu’il s’agisse de code, de documentation ou de retours d’expérience.

Les prochaines versions devraient continuer à améliorer les performances, étendre la prise en charge des simulateurs et enrichir l’écosystème de bibliothèques de vérification. La communauté cocotb est active et accueillante, n’hésitez pas à la rejoindre !

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Après la collision avec un avion Boeing en vol, voilà comment le ballon fautif va changer

avion ballon

WindBorne Systems n'a pas traîné. Alors qu'un de ses ballons météo a été impliqué dans un choc aérien avec un avion Boeing en plein vol, la société a annoncé plusieurs changements, dont certains sont déjà appliqués. D'autres sont en cours d'évaluation... y compris la forme d'un sachet de sable. Explications.

  •  

[$] Git considers SHA-256, Rust, LLMs, and more

✇LWN
Par :corbet
The Git source-code management system is a foundational tool upon which much of the free-software community is based. For many people, Git simply works, though perhaps in quirky ways, so the activity of its development community may not often appear on their radar. There is a lot happening in the Git world at the moment, though, as the project works toward a 3.0 release sometime in 2026. Topics of interest in the Git community include the SHA-256 transition, the introduction of code written in Rust, and how the project should view contributions created with the assistance of large language models.
  •  

DigiKam 8.8.0 released

✇LWN
Par :corbet
Version 8.8.0 of the digiKam photo-management system has been released. "This version delivers significant improvements in performance, stability, and user experience, with a particular focus on image processing, color management, and workflow efficiency". Changes include an import/export feature for tag hierarchies, focus-point visualization for some camera models, automatic use of the monitor color profile, and a background-blur tool.
  •  

Security updates for Tuesday

✇LWN
Par :corbet
Security updates have been issued by AlmaLinux (.NET 8.0, firefox, kernel, kernel-rt, libssh, and perl-JSON-XS), Debian (ark and libphp-adodb), Fedora (chromium and gi-docgen), Mageia (quictls), Oracle (.NET 8.0, .NET 9.0, firefox, httpd, kernel, libsoup3, libssh, microcode_ctl, and webkit2gtk3), SUSE (go1.24, go1.25, krb5, python-ldap, and webkit2gtk3), and Ubuntu (gst-plugins-base1.0, linux, linux-aws, linux-gcp, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-ibm-5.15, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-nvidia, linux-oracle, linux-oracle-5.15, linux-xilinx-zynqmp, linux-fips, linux-aws-fips, linux-azure-fips, linux-gcp-fips, linux-intel-iot-realtime, linux-realtime, and python-ldap).
  •