Category Archives: Uncategorized

Courte introduction pratique à FPGA, Verilog et Verilator et quelques mots à propos de SystemVerilog

→ English version here

Attention, Je suis un débutant de moins d’un mois en Verilog, Verilator et FPGA, que j’ai étudié comme un loisir, si il y a des erreurs je les corrigerais. Vous pouvez me contacter sur le Fediverse.

Sommaire


* Introduction
** Process complet dans le monde réel
** Choses à connaître et comprendre
** Comment se programme un FPGA
* Verilog
** Valeurs
** Types
** Portes
** Modules
** Exemple simple, écrire une porte « et »
** Blocs initial et always
* Exemple simple en Verilator
** Effectuer le test avec Verilator
** Tracer l’exemple avec GTKWave
** À propos des exemples de Verilator
** Exemple pratique de base avec Verilator
* Pour aller plus loin

Le texte mis en gras ici, est utilisé afin d’aider à lire en diagonale.

Introduction

Je continue de descendre dans les couches avec le mode des FPGA (en anglais, « Field Processors Gateway Array », il existe différentes traductions). Ce sont des circuits itnégrés programmables, permettant de réaliser des circuilts logiques comme des processeurs. Ils sont notamment utilisés pour développer et tester des processeurs. Lorsque le processeur est validé en FPGA, ils peuvent être produit en ASIC (en anglais : « Application-specific integrated circuit »), processeur finaux, avec circuits cablés en durs et n’étant plus modifiables, tels qu’on les trouves dans les ordinateurs et périphériques informatiques de tous les jours. Les FPGA sont également utilisés tels quels dans différentes applications industrielles (avionique, traitement audio, vidéo, etc…) pour leur parallélisme et rapidité supérieure à un ASIC comportant un processeur général interprétent un logiciel, dans ces domaines et la possibilité de les mettre à jour facilement en cas de problème. Ce billet est une petite intrduction aux FPGA, au langage HDL (en anglais : « Hardware description language », signifiant, « langage de description de matériel ») standard IEEE, appelé Verilog, et la façon de le tester avec un logiciel libre à sources ouvertes (FOSS), le simulateur Verilator. Si vous désirez utiliser VHDL, GHDL est un simulateur libre équivalant VHDL.

Continue reading

Linux syscall and RISC-V assembly

Sample of RISC-V assembly code

Syscall in Linux kernel, is an interface to access to kernel basic functions. They are described in section 2 of man pages. The introduction is in man 2 syscall (indirect system call), and the list of functions are described in man 2 syscalls. Update: System Calls in lectures of official Linux kernel documentation including « Linux system calls implementation », « VDSO and virtual syscalls » and « Accessing user space from system calls »

This article follow previous one about RISC-V overall progress and available tools to play with, I will try to make a short article here about Linux syscall usage and the RISC-V assembly case.

Table of Content

* Description section of the man page
* Getting the list of function and how to access them
* Passing parameters
* Function number and registers of return values
* Return values and error code
* Compiling and executing on virtual environment
* Update: Bronzebeard assembler and its baremetal environment for real hardware

Continue reading

Bugs in firefox 52=>53 on ArchLinuxARM 32 bits (ARMv7h) and how to still use it

Firefox 53 currently doesn’t compile on ARMv7h, so only firefox 52 works on ALARM/armv7h, but as the 52 package is no more in git current version, ALARM compiling sysyem doesn’t compile it with updated dependencies (ICU moved from 58 to 59 and hunspell updated too. I didn’t managed to compile firefox-esr.

I compiled former version of this too libs to be able to make firefox 52 works again.
You can find both icu-58 and hunspell 1.5.4 packages here. PLEASE DON’T INSTALL THEM, you can reinstall firefox package itself if needed with pacman -U firefox-52.0.2-1-armv7h.pkg.tar.xz
instead unarc them in a directory like this :

cd /tmp
mkdir unarc; cd unarc
wget https://popolon.org/depots/ArchLinuxARM/firefox/52/hunspell-1.5.4-1-armv7h.pkg.tar.xz
wget https://popolon.org/depots/ArchLinuxARM/firefox/52/icu-58.2-1-armv7h.pkg.tar.xz
tar xf hunspell-1.5.4-1-armv7h.pkg.tar.xz # lot of errors with SCHILY.fflags will be displayed
tar xf icu-58.2-1-armv7h.pkg.tar.xz # lot of errors with SCHILY.fflags will be displayed
cd usr/lib
sudo rsync -a libhunspell-1.5.so* libicu.so.58* /usr/lib/
sudo rsync -a icu/58.2 /usr/lib/icu/
ldconfig

That’s done. You can now type firefox to launch it :)

Créer des partitions disque alignées pour améliorer les performances, et réduit l’usure des SSD

Aligner les partitions d’un disque sur ses cylindres, c’est, sachant que les données les plus fréquentes tiennent sur un cylindre :

* Éviter de lire deux cylindres lorsqu’un seul est utile => gain de temps à la lecture, réduction de l’utilisation inutile des caches, gain de bande passante.
* Éviter d’écrire deux cylindres lorsqu’un seul est suffisant => gain de temps, réduction de l’utilisation inutile des caches, gain de bande passante et moins d’usure
* Pour la raison précédente, permet de prolonger grandement la vie d’un SSD (le nombre de cycle est limité sur un SLC, encore plus sur un MLC, et beaucoup plus sur un TLC, mais le prix de ce dernier est le plus bas au Go).

Un moyen simple de savoir si vos partitions sont alignés sur les cylindres

Lancer cfdisk sur le disque qui doit être optimisé (remplacez /dev/sda, par le disque à optimiser : /dev/sdb, /dev/sdc…) :

cfdisk /dev/sda

Si vous voyez une astérisque (ou étoile) tout à fait à droite, la partition n’est pas alignée sur les cylindres. Dans mon cas, ce SSD est à refaire complètement (sauf sda3) :

                           cfdisk (util-linux 2.20.1)

                           Unité disque : /dev/sda
                   Taille : 240057409536 octets,  240.0 Go
          Têtes : 255   Secteurs par piste : 63  Cylindres : 29185

    Nom         Ind.       Partition  S. Fic.          [Étiq.]        Taille (Mo
)------------------------------------------------------------------------------
                            Pri/Log   Espace libre                         1,05*
    sda1        Amorçage    Primaire  ext4                             51158,98*
                            Pri/Log   Espace libre                         1,22*
    sda2        Amorçage    Primaire  ext4                             53686,01*
                            Pri/Log   Espace libre                         0,41*
    sda3                    Primaire  ext4                            135207,16
                            Pri/Log   Espace libre                         2,62*





     [   Aide   ]  [ Nouvelle ]  [ Afficher ]  [ Quitter  ]  [ Unités  ]
     [ Écrire  ]

           Créer une nouvelle partition à partir de l'espace libre

Comment crée une seule partition, utilisant tout le disque, et bien alignée

Grâce à des anciens mode de fonctionnement de fdisk. J’ai trouvé l’astuce sur une doc d’ubuntu.

Remplacer /dev/sdX par le disque sur lequel vous désirez créer la partition alignée :

fdisk /dev/sdX
c
u
p
n
[touche entrée]
[touche entrée]
[touche entrée]
[touche entrée]
w

Et voilà, vous verrez le beau résultat sur cfdisk

Pour créer plusieurs partitions alignées : Choisissez les bonnes options où j'ai mis quatre fois [touche entrée] et recommencer n à chaque partition.

Problème de date avec WordPress + qTranslate résolu

J’ai trouvé ici la solution pour le problème de dates mal affichées, lors de l’utilisation de WordPress avec qTranslate, un greffon pour l’utilisation des billets en plusieurs langues.

* Avant : %A %e %B %Y
* Après : jeudi 1 août 2013

Il semble y avoir encore un problème avec le chinois qui est affiché en anglais.

Il faut donc remplacer le double % dans le fichier wp-content/plugins/qtranslate-*/qtranslate_utils.php

$strftime_parameters[] = '%%';

par un simple %

$strftime_parameters[] = '%';