2017-01-30 4 views
2

J'ai intégré la prochaine (à juste titre de travail) environnement Tableau de bord/Moniteur:Specman UVM Tableau de bord des questions de base

// Scoreboard : like uvm_scoreboard 
    scbd_port packet_add : add packet_s; 
    scbd_port packet_match : match packet_s; 

Mon flux ADD:

// Monitor: 
    expected_packet_o : out interface_port of tlm_analysis of packet_s is instance; 

    connect_ports() is also { 
     expected_packet_o.connect(Scoreboard.packet_add); 
    }; 

    add_to_Scoreboard() is { 
     // ... collecting packet logic ... 
     // Actually adding the packet to SB: 
     expected_packet_o$write(expected_packet); 
    }; 

Mon flux MATCH:

// Monitor: 
    collect_DUT_output() is { 
     // ... receiving packet logic ... 
     Scoreboard.match_in_scbd(received_packet); 
    }; 

Mes questions sont: est-ce la bonne façon d'utiliser les ports Scram UVM de Specman? Pourquoi n'ai-je pas pu ajouter le paquet attendu directement via packet_add, quelque chose comme ceci: Scoreboard.packet_add$.write(expected_packet)? La seule façon que j'ai trouvé pour ajouter un paquet à Scoreboard est de connecter un autre port TLM à packet_add, comme il est écrit dans le code. Existe-t-il une méthode d'ajout comme match_in_scbd dans le flux de correspondance?

Merci pour toutes précisions sur Specman Tableau de bord ajouter et flux match de

Répondre

0

penser de cette façon, le port GGP est juste un emballage de fantaisie de « pointeur de fonction » (comme en C++) qui pointe vers la méthode mise en œuvre . Rien ne vous empêche d'appeler directement la méthode implémentée de l'instance de l'instance de tableau de bord. Le seul problème est que vous devez savoir quelle instance du tableau de bord appeler dans l'appelant.