# Substituer des librairies

Supposons que nous ayons deux circuits Logisim censés faire la même chose. En tant qu'instructeur, vous avez peut-être demandé aux élèves de terminer une tâche: vous avez un fichier contenant votre solution et vous avez plusieurs fichiers d'élèves contenant leur travail. La tâche consistait à créer un additionneur à deux bits.

J'imagine que nous avons deux fichiers, nommés `master.circ` et `query.circ`. Chaque fichier contient un circuit nommé Adder2 (il est important que le nom du circuit à tester soit exactement le même), dont l'apparence est la suivante.

`Adder2 dans master.circ` | `Adder2 dans query.circ`

Comme vous pouvez le constater, le circuit maître utilise l'additionneur intégré de Logisim, tandis que le circuit de requête utilise un demi-additionneur et un additionneur complet, eux-mêmes composés de portes logiques. Aux fins de notre exemple, le circuit de requête a une erreur stupide: le report carry du demi-additionneur n'est pas connecté à l'additionneur complet.

Nous construisons notre circuit de test dans un fichier différent `test.circ`. Ensuite, nous chargeons `master.circ` en tant que bibliothèque Logisim à l'aide du menu | Projet |→| Charger une Lirairie |→ | Bibliothèque Logisim | , et nous insérons son additionneur 2 bits en tant que sous-circuit. Nous pourrions exécuter ce circuit directement pour vérifier que le résultat souhaité correspond à solution parfaite.

> `java -jar logisim-evolution.jar test.circ -tty table`

Mais nous voulons exécuter le circuit en utilisant `query.circ` plutôt que `master.circ` comme bibliothèque chargée. Une approche naïve serait d'ouvrir Logisim et de charger adder-query.circ à la place de adder-master.circ ou encore vous pouvez simplement supprimer le fichier `master.circ` et renommer `query.circ` pour qu'il s'appelle `master.circ` . Ces deux approches fonctionnent, mais demandent beaucoup de manipulation pour tester les devoirs d'une classe par exemple. Heureusement Logisim inclut une option pratique -sub qui remplace temporairement un fichier par un autre pendant cette session; sans apporter de modifications sur le disque.

> `java -jar logisim-evolution.jar test.circ -tty table -sub master.circ query.circ`

Le fichier de sortie qui sera généré de cette façon est présenté ci-dessous. Il est bien sûr différent de ce que nous avons vu dans la section précédente , car la librairie commune aux circuits `adder2` a été remplacée dans le circuit de test par celle de `query.circ` erronée.

>     00      00      0E0
>     01      00      0E1
>     10      00      EE0
>     11      00      EE1
>     00      01      0E1
>     01      01      0E0
>     10      01      EE1
>     11      01      EE0
>     00      10      EE0
>     01      10      EE1
>     10      10      1E0
>     11      10      1E1
>     00      11      EE1
>     01      11      EE0
>     10      11      1E1
>     11      11      1E0

Suite: Autres options de vérifications.