Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 1
Interface avec Design Visi...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 2
if shift = '1' then
S <= I...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 3
-- concurrent process of c...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 4
-- case 3
wait for 10 ns;
...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 5
Pour lancer le bach taper ...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 6
2- Chargment pour l’Elabor...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 7
Pour visualiser votre circ...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 8
Interface avec cadence
Dan...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 9
Une fenêtre s’ouvre automa...
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 10
Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 11
Vérification de l’environ...
Prochain SlideShare
Chargement dans…5
×

mixed signal simulation flow on cadence

816 vues

Publié le

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
816
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

mixed signal simulation flow on cadence

  1. 1. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 1 Interface avec Design Vision Dans ce tutorial nous expliquerons en détails le flow de conception pour signaux mixtes. Tout d’abord, pour faire des simulations mixtes nous avons besoin de deux types d’outils : 1- un outil de compilation et de simulation des circuits numériques décrits en code VHDL ou Verilog (modelsim). 2- Un outil de synthèse (Design Vision) qui génère du code « synthétisé et mappé », c'est-à-dire qui interconnecte des composants qui existent dans une technologie donnée ; ici AMS C35D4. 3- Un outil de simulation qui supporte les deux types de simulation analogique et numérique (Cadence). Nous commençons d’abord par la partie numérique. Après avoir décrit un circuit en VHDL (voir exemple ci-dessous), il faut compiler ce code et vérifier qu’il ne contient pas de fautes de syntaxe. Une fois le code compilé, il est prêt à être simulé à l’aide d’un « test bench ». Ce dernier sert à générer à l’entrée du circuit les signaux appropriés qui permettent de vérifier son bon fonctionnement. Le code VHDL qui suit est un exemple de code prêt à être compilé, il s’agit d’un registre à décalage dont les entrées sont I, clock, shift et la sortie le signal Q ; (pour traiter l’exemple, copier-coller le code dans votre fenêtre de travail sur Modelsim). library ieee ; use ieee.std_logic_1164.all; --------------------------------------------------- entity shift_reg is port( I: in std_logic; clock: in std_logic; shift: in std_logic; Q: out std_logic ); end shift_reg; --------------------------------------------------- architecture behv of shift_reg is -- initialize the declared signal signal S: std_logic_vector(2 downto 0):="111"; begin process(I, clock, shift, S) begin -- everything happens upon the clock changing if clock'event and clock='1' then
  2. 2. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 2 if shift = '1' then S <= I & S(2 downto 1); end if; end if; end process; -- concurrent assignment Q <= S(0); end behv; BENCH Après l’étape de compilation du code, il faut générer du code (Test Bench) pour le tester (prendre le code ci-dessous pour notre exemple). C’est un code VHDL non synthétisable qui ne contient pas d’entrées ni de sorties, mais seulement des signaux internes qui vont être utilisés comme entrée/sortie du circuit sous test (code précédent). Compiler ce Test Bench, puis lancer une simulation. Vous devez choisir de simuler ce Test Bench qui lui-même fera appel au code du circuit (registre à décalage ici) précédent. library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity shifter_TB is -- entity declaration end shifter_TB; architecture TB of shifter_TB is component shift_reg port( I: in std_logic; clock: in std_logic; shift: in std_logic; Q: out std_logic ); end component; signal T_I: std_logic; signal T_clock: std_logic; signal T_shift: std_logic; signal T_Q: std_logic; begin U_shifter: shift_reg port map (T_I, T_clock, T_shift, T_Q);
  3. 3. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 3 -- concurrent process of clock process begin T_clock <= '0'; wait for 5 ns; T_clock <= '1'; wait for 5 ns; end process; -- concurrent process of test process variable err_cnt: integer := 0; begin T_shift <= '1'; -- start shifting T_I <= '0'; wait for 20 ns; T_I <= '1'; -- 1st/2nd bit input wait for 20 ns; T_I <= '0'; -- 3rd bit input wait for 10 ns; T_I <= '1'; -- 4th bit input wait; end process; process variable err_cnt: integer :=0; begin -- case 1 wait for 30 ns; assert(T_Q='0') report "Test1 Failed !" severity error; if (T_Q/='0') then err_cnt:=err_cnt+1; end if; -- case 2 wait for 10 ns; assert(T_Q='0') report "Test2 Failed !" severity error; if (T_Q/='0') then err_cnt:=err_cnt+1; end if;
  4. 4. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 4 -- case 3 wait for 10 ns; assert(T_Q='1') report "Test3 Failed !" severity error; if (T_Q/='1') then err_cnt:=err_cnt+1; end if; -- case 4 wait for 10 ns; assert(T_Q='1') report "Test4 Failed !" severity error; if (T_Q/='1') then err_cnt:=err_cnt+1; end if; -- summary of all the tests if (err_cnt=0) then assert (false) report "Testbench of Shifter completed successfully!" severity note; else assert (true) report "Something wrong, try again!" severity error; end if; wait; end process; end TB; ---------------------------------------------------------------- configuration CFG_TB of shifter_TB is for TB end for; end CFG_TB; Une fois le circuit validé, passer à l’étape de synthèse. Synthèse Dans ce tutorial, nous allons utiliser l’outil Design_Vision du Synopsys. Sur votre compte, un répertoire nommé projet_vhdl contient le fichier bach qui doit être lancé afin de configurer l’environnement.
  5. 5. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 5 Pour lancer le bach taper : . ./.bashrc_mg_synop puis taper « enter » Une fois le bach exécuté, lancer l’outil de synthèse en tapant : design_vesion & ; une fenêtre s’ouvre. NOTE: rester toujours dans le répertoire projet_vhdl. Pour vérifier que les configurations son bien prises en compte, vous pouvez aller dans File-> setup , et vous devez obtenir une fenêtre qui correspond à l’image suivante : Comme on peut le constater, la technologie retenue ici est la technologie 0.35µm de chez AMS. Après avoir vérifié le bon chargement des configurations, passer à l’étape de synthèse. La première chose à faire alors est le chargement du fichier VHDL qui contient le code (attention, PAS le bench). Le chargement se fait en deux étapes: 1- Une étape de chargement pour l’analyse 2- Une étape de chargement pour l’élaboration 1- Chargement pour l’analyse. Allez dans File-> analyze, puis Add pour choisir votre fichier VHDL, le format VHDL, puis OK.
  6. 6. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 6 2- Chargment pour l’Elaboration. Aller dans File->Elaborate, puis choisir la librairie WORK , puis l’architecture qui correspond à votre code dans le menu Design. Vous devez vérifier dans les deux étapes précédentes qu’il n’y a pas de messages d’erreurs. Après élaboration du circuit, il faut le synthétiser (créer un circuit à base d’éléments de la technologie 0.35um), en faisant une compilation et un mapping. Pour faire la compilation et le mapping il suffit d’aller dans Design-> compile Desing, puis de vérifier que la configuration correspond bien à ce qui est décrit dans l’image suivante (configuration par défaut) ; puis appuyer sur OK. 1 2 3 1 2
  7. 7. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 7 Pour visualiser votre circuit au niveau blocks, le sélectionner dans Logical Hierarchy puis appuyer sur le bouton noir symbolisé par une porte logique. Pour pouvoir importer le fichier dans CADENCE, il faut tout d’abord le sauvegarder (Save as) au format verilog (Cadence utilise par défaut verilog et non vhdl). NOTE : le circuit doit être sauvegardé avec un nom différent de celui du fichier VHDL d’origine. Bien choisir le format Verilog en précisant l’extension « .v » (“nom_modifier.v”) dans File name.
  8. 8. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 8 Interface avec cadence Dans cette partie, nous expliquons les étapes d’importation du fichier VHDL synthétisé en verilog dans cadence. Notre but final est de simuler le circuit décrit en VHDL mais utilisant des composants réels de la librairie CORELIB. Après avoir lancé Cadence (aller dans le répertoire de travail de Cadence : ams_cds_s35, dans ce répertoire : sourcer éventuellement le fichier bash si cette opération ne se fait pas automatiquement), il faut lancer un outil intégré dans Cadence : Dans la fenêtre CIW de Cadence, aller dans File-> Import -> Verilog
  9. 9. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 9 Une fenêtre s’ouvre automatiquement. Il faut remplir cette fenêtre avec les mêmes informations que celles données sur la capture d’écran qui suit (avec bien entendu votre propre nom de fichier verilog : NOM.v !). 1 2 3
  10. 10. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 10
  11. 11. Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 11 Vérification de l’environnement de simulation Bien vérifier que toutes les vues qui existent pour les composants sont bien chargées dans le Switch View List Sélectionner un composant puis appuyer sur e pour voir la liste des vues disponibles Lancez ADE, et puis allez dans Setup-> environement

×