[VHDL]Erreur Post Layout
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

[VHDL]Erreur Post Layout



  1. #1
    invite8242384e

    [VHDL]Erreur Post Layout


    ------

    Bonjour,

    j'implémente en ce moment un microprocesseur sur un FPGA et je veux passer au placement et routage. J'utilise le logiciel Libéro IDE v7.3 d'Actel (pas très connu je vous l'accorde).

    Bref, je fais le placement et le routage et tout va bien. Jusqu'au moment où je veux faire des tests temporels avec des contraintes.

    A ce moment, je lance la simulation et j'ai modelsim qui s'ouvre et qui me dit cette erreur
    # ** Error: (vsim-SDF-3250) C:/Actelprj/IP****/designer/impl1/IP****_ba.sdf(0): Failed to find INSTANCE '/IP****_0'.

    Voilà, j'ai vu quelques forums qui en parlait mais j'ai pas tellement compris, donc si quelqu'un à la solution, je suis preneur.

    Merci

    A+

    -----
    Dernière modification par HULK28 ; 04/08/2007 à 10h00. Motif: Modif à la demande de Dussao par MP

  2. #2
    jiherve

    Re : [VHDL]Erreur Post Layout

    Bonsoir
    As tu fait génerer le VHO par ton compilo?

    IP****_0 existe t il dans la library work(implicite celle là,une autre c'est possible mais de façon explicite).
    Avec un chouilla de code source : instanciation de l'IP cela serait plus facile.
    JR
    Dernière modification par HULK28 ; 04/08/2007 à 10h01. Motif: Modif à la demande de Dussao

  3. #3
    invite8242384e

    Re : [VHDL]Erreur Post Layout

    Bonjour JR,

    merci beaucoup de m'avoir répondu.

    En ce qui concerne le .VHO, je crois savoir que c'est par Quartus qu'il est généré. Libéro ne génère pas de fichier de la sorte.

    Sinon, je te l'accorde j'ai pas donné beaucoup d'explication sur l'IP. Donc je vais me lancer , pour le code je vais raccourcir énormément (il fait 4000 lignes) je vais juste te donner l'image de l'instanciation.

    Alors déjà voilà un screen du logiciel libéro :



    Donc le bloc synthesys génère les fichiers .edn, .sdc, .vhd, .adb à partir de mon fichier IP6800.vhd. Donc de là je peux effectuer des simulation post-synthesis. Jusque là tout va bien.

    Le bloc Place&Route génère les fichiers IP****_ba.sdf et IP****_ba.vhd.
    Là encore tout s'est bien passé jusqu'à ce que je fasse ma simulation en temporel et que j'obtiennes le message d'erreur en question.

    En ce qui concerne le fichier IP****_0, apparement il serait généré à cause de ca :



    mais ca reste la grande question ... c'est à ce moment où je m'embrouille un peu.

    Maintenant je passe à l'instanciation de l'IP.

    Code:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_arith.all;
    use ieee.std_logic_unsigned.all;
    
    --*****************************--
    --*****************************--
    --** Déclaration de l'entité **--
    --*****************************--
    --*****************************--
    
    entity IP**** is
        port(
             -- entrées
             clk1:      in std_logic;                       -- horloge 1
             clk2:      in std_logic;                       -- horloge 2
             reset:     in std_logic;                       -- Démarre ou redémarre l'IP6800
             dbe:       in std_logic;                       -- Rend disponible les données sur le bus de données
             halt:      in std_logic;                       -- Active ou désactive le séquencement de l'IP6800
             irq:       in std_logic;                       -- Active la séquence d'interruption masquable
             nmi:       in std_logic;                       -- Active la séquence d'interruption non masquable
             data_in:   in std_logic_vector (7 downto 0);         
    
             --entrée/sortie
             --data:      inout std_logic_vector (7 downto 0);-- bus d'adresses (bidirectionnel)
    
             -- sorties
             rw:        out std_logic;                      -- Signal aux dispositifs externes s'il est en lecture ou écriture
             vma:       out std_logic;                      -- Signal aux dispositifs externes d'une adresse valide dans le bus d'adresses
             address:   out std_logic_vector (15 downto 0); -- Transfert les données de et à la mémoire ainsi qu'aux dispositifs périphériques
             data_out:  out std_logic_vector (7 downto 0)
             
             -- tests temporaires
             --test_acca: out std_logic_vector (7 downto 0);
             --test_accb: out std_logic_vector (7 downto 0);
             --test_cc:   out std_logic_vector (7 downto 0);
             --test_sp:   out std_logic_vector (15 downto 0);
             --test_ix:   out std_logic_vector (15 downto 0)
             );
    end IP****;
    
    
    
    --************************************--
    --************************************--
    --** Déclaration de l'architechture **--
    --************************************--
    --************************************--
    
    architecture IP****_arch of IP**** is
    
    
    --**********************************--
    -- déclaration des signaux internes --
    --**********************************--
    
    -- 1 bit
    signal nmi_req: std_logic;
    signal .... blablabla
    
    
    --***********************************************************--
    -- déclaration des états des signaux de contrôle des process --
    --***********************************************************--
    
    type acca_type is (reset_acca, load_lo_acca, load_hi_acca, pull_acca, latch_acca);
    type accb_type is (reset_accb, load_lo_accb, load_hi_accb .... blablabla
    
    
    --*************************************************--
    -- déclaration des signaux de contrôle des process --
    --*************************************************--
    
    signal acca_ctrl :  acca_type;
    signal accb_ctrl :  acc.... blablabla
    
    
    
    --*************************************************--
    -- déclaration des bits du condition code register --
    --*************************************************--
    
    constant SBIT : integer.... blablabla
    
    
    --******************************************--
    -- déclaration des instructions de l'IP**** -- 197 instructions
    --******************************************--
    
    --------------------------------------------
    -- opérations implicites (inherent - inh) -- 51 instructions
    --------------------------------------------
    constant NOP_INH  : std_logic_vector := "00000001"; -- (x01) non opération
    constant TAP_INH  : std_logic_vector := "000.... gros blablabla (197 instructions)
    
    
    begin
    
    
    -- **********************************************************************************************--
    --                            Bus d'adresses - Process ADDR_MUX                                  --
    --                                                                                               --
    --   But : Process utilisé pour contrôler les interfaces de sortie suivantes : ADDR, R/W et VMA  --
    -- **********************************************************************************************--
    
        addr_mux: process(clk1)
        begin
           ...
        end process addr_mux;
    
    
    -- **********************************************************************************************--
    --                            Bus de données - Process DATA_MUX                                  --
    --                                                                                               --
    --   But :                                                                                       --
    -- **********************************************************************************************--
    
        data_mux: process(clk1)
        begin
           ...
        end process data_mux;
            
    
    
    -- **********************************************************************************************--
    --                           Compteur Programme - Process PC_MUX                                 --
    --                                                                                               --
    --   But : contrôle le registre  " pc " qui contient l'adresse courante du programme exécuter    --
    -- **********************************************************************************************--
    
        pc_mux: process(clk2, pc_ctrl, pc, data_in, ea)
        	...
        end process pc_mux;
    
    
    -- **********************************************************************************************--
    --                      Contrôle d'adresse courante - Process EA_MUX                             --
    --                                                                                               --
    --                      But : contrôle le pointeur d'adresse interne                             --
    -- **********************************************************************************************--
    
        ea_mux: process(clk2, ea_ctrl, ea, out_alu, data_in, accb, xreg)
        	...
        end process ea_mux;
    
    
    -- **********************************************************************************************--
    --                              Accumuteur A - Process ACCA_MUX                                  --
    --                                                                                               --
    --                  But : process controlant le registre de travail ACCA                         --
    -- **********************************************************************************************--
    
        acca_mux : process(clk2, out_alu, data_in)
        	...
        end process acca_mux;
    
     
    ET AINSI DE SUITE POUR TOUS LES AUTRES REGISTRES
    
    
    
    -- **********************************************************************************************--
    --                                        STATE SEQUENCER                                        --
    --                                                                                               --
    --            But : exécute les différents opérations liées à chaque état de l'IP****            --
    -- **********************************************************************************************--
    
        process( state )
        begin
        	case state is
                
             
    	 .... MACHINE D'ETAT QUI GERE TOUTES LES INSTRUCTIONS
    
    
            end case;
        end process;
    
    
    -- **********************************************************************************************--
    --                              STATE MACHINE - Process CHANGE_STATE                             --
    --                                                                                               --
    --  But : process mettant à jour le nouvel état du séquenceur à chaque front descendant de clk2  --
    -- **********************************************************************************************--
    
        change_state: process(clk2)
        begin
            -- si front descendant de clk2
            if clk2'event and clk2 = '0' then
                if reset = '0' then             -- si reset = 0            
                    state <= reset_state;       -- prochain état -> état de reset
                elsif halt = '0' then           -- si halt = 0
                    state <= state;             -- l'IP6800 reste dans le même état
                else                            -- sinon
                    state <= next_state;        -- l'IP6800 passe à l'état suivant
                end if;
            end if;
        end process change_state;
    
    
    end architecture IP****_arch;
    Dernière petite explication que je n'ai pas comprise. J'ai trouvé dans les doc d'Actel une "réponse" à mon problème mais qui n'explique pas grand chose ... enfin de ce que j'ai compris.

    Mistaking a Component or Module Name for an Instance
    Label
    Another common error is to specify the component or module name rather than the instance
    label. For example, the following invocation is wrong for the above testbenches:
    vsim -sdfmax /testbench/myasic=myasic.sdf testbench
    This results in the following error message:
    ** Error (vsim-SDF-3250) myasic.sdf(0):
    Failed to find INSTANCE ’/testbench/myasic’.
    Voilà en espérant que j'ai été assez clair.

    Merci et bonne journée.

    A+
    Dernière modification par HULK28 ; 04/08/2007 à 10h03. Motif: Modif à la demande Dussao

Discussions similaires

  1. différence FPGA post layout et réalité
    Par invite0f39f32f dans le forum Électronique
    Réponses: 0
    Dernier message: 02/04/2007, 09h56
  2. Layout / OrCAD
    Par invitee5fedd72 dans le forum Électronique
    Réponses: 5
    Dernier message: 28/05/2006, 21h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.