mixed signal simulation flow on cadence

11
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

Upload: ayssar-serhan

Post on 28-Nov-2014

545 views

Category:

Documents


8 download

DESCRIPTION

 

TRANSCRIPT

Page 1: mixed signal simulation flow on cadence

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

Page 2: mixed signal simulation flow on cadence

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);

Page 3: mixed signal simulation flow on cadence

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;

Page 4: mixed signal simulation flow on cadence

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.

Page 5: mixed signal simulation flow on cadence

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.

Page 6: mixed signal simulation flow on cadence

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

Page 7: mixed signal simulation flow on cadence

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.

Page 8: mixed signal simulation flow on cadence

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

Page 9: mixed signal simulation flow on cadence

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

Page 10: mixed signal simulation flow on cadence

Ayssar SERHAN, Laurant Aubard, Jean-Michel Fournier Projet SEI 2eme année INPG-Phelma- 2013 | 10

\

Page 11: mixed signal simulation flow on cadence

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