इंटरफेस को जोड़ने की कोशिश कर रहे मेरे एनवी वर्ग के निर्माण समारोह के अंदर:

   virtual my_if  my_vif;

   for (int i = 0; i<32; i++) begin
     _agent[i]._vif = my_vif._if[i];
   end

My_if के अंदर:

  interface my_if();
      if     _if[32]();
  endinterface :my_if

सिमुलेशन चलाते समय मुझे यह त्रुटि मिलती है:

Error-[MFNF] Member not found
my_env.sv, 229 "this.my_vif." 
Could not find member '_if' in interface 'my_if', at "my_if.sv", 1.

_if अगले संकेतों के साथ एक इंटरफ़ेस भी है:

interface if(); 
 logic                   clk;
 logic                   rstn;
 logic [101:0] requests;
 logic [63:0]  dataOut;
endinterface :if

बात यह है कि सब कुछ ठीक काम करता है जब इंटरफ़ेस _if my_if इंटरफ़ेस के अंतर्गत लपेटा नहीं गया था।

-1
user1980750 12 सितंबर 2019, 16:30

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि आप सरणी इंस्टेंस का उपयोग करके इंटरफ़ेस में कुछ डिज़ाइन तत्व _if को 32 बार इंस्टेंट करने का प्रयास कर रहे हैं।

array instances generate ब्लॉक से संबंधित हैं। परिणामस्वरूप उन्हें अनुक्रमित करने का एकमात्र तरीका इसे अन्य generate ब्लॉक से करना है। आप इसे करने के लिए अनुक्रमण के साथ लूप के लिए सरल का उपयोग नहीं कर सकते।

जनरेट ब्लॉक आरटीएल डिज़ाइन का एक हिस्सा हैं और सामान्य तौर पर परीक्षण बेंच के लिए बहुत सीमित प्रयोज्यता है, विशेष रूप से एक agent के रूप में गतिशील संरचनाओं के साथ।

जिस तरह से आप इसे लागू करना चाहते हैं, आपको उस पर फिर से विचार करने की आवश्यकता है।

1
Serge 12 सितंबर 2019, 21:54