वीएचडीएल में एक निचले मॉड्यूल के आंतरिक संकेतों को शीर्ष मॉड्यूल में कैसे लाया जाए?


11

मैं अपने वीएचडीएल स्रोत कोड के आंतरिक संकेतों को अपने टेस्टबेंच में कैसे ला सकता हूं ताकि मैं उन्हें तरंग के रूप में देख सकूं? मैं सक्रिय एचडीएल का उपयोग करता हूं। मैं जानना चाहूंगा कि क्या मेरे उद्देश्य को प्राप्त करने के लिए कोई स्वतंत्र उपकरण है। किसी भी मदद की सराहना की है।

मुझे अब यह त्रुटि मिली।यहाँ छवि विवरण दर्ज करें

मेरा सोर्स कोड है

entity SPI_DAC is
    Port ( 
    -- inputs and oututs
    )
end SPI_DAC;

architecture Behavioral of SPI_DAC is 
    --These are my internal signals 
    signal ch1_byte_data_sent       : STD_LOGIC_VECTOR(23 downto 0)     := x"000000"; 
    signal ch1_byte_cmd_sent        : STD_LOGIC_VECTOR(23 downto 0)     := x"000000";
    --and a few other signals
begin 
    --functionality 
end Behavioral;

मेरा टेस्टबेंच कोड है

entity tb_spi_dac is
end tb_spi_dac;

architecture behavioral of tb_spi_dac is
    component spi_dac
    port(
    --declaration, inputs and outputs
    );
    end component;
begin
    uut: spi_dac port map(
    --map ports
    );
    --stimulus process
end;

जब आप अपना सिमुलेशन शुरू करते हैं तो आपका सिम्युलेटर सभी तत्वों को विस्तृत कर देगा। बाद में यह बाहरी नामों का उपयोग करके आपके द्वारा बनाए गए लिंक की तलाश करता है। मुझे लगता है कि आपका रास्ता गलत है। मैंने पथों के निर्माण पर अधिक विस्तार देने के लिए अपने उत्तर को संपादित किया। आपके डिजाइन के बारे में जानकारी के बिना मैं यह नहीं कह सकता कि आपके रास्ते में क्या गलत है।
थॉमस एस।

जैसा कि मैंने अपने उत्तर में कहा था कि आपको लेबल का उपयोग करना होगा न कि इकाई का नाम। सही रास्ता होना चाहिए .tp_spi_dac.uut.ch1_byte_data_sent
थॉमस एस।

आपके सुझावों ने मेरी समस्या का समाधान किया @ThomasS। आपका बहुत बहुत धन्यवाद! मुझे वीएचडीएल के संस्करण के साथ एक समस्या थी, जिसे मैंने डेविड द्वारा सुझाए गए वीडियो को देखने के बाद हल किया। मुझे पता है कि धन्यवाद लिखना नोटों की सिफारिश नहीं है, लेकिन मेरे संपादन को सही करने के लिए धन्यवाद थॉमस (मैं वास्तव में इस मार्केड फॉर्मेटिंग में भ्रमित था)।
सुहासिनी

जवाबों:


11

VHDL में आप जो देख रहे हैं उसे बाहरी नाम (या श्रेणीबद्ध नाम) कहा जाता है। वे गुंजाइश / पदानुक्रम दृश्यता को दरकिनार करने के लिए उपयोग किया जा सकता है। वाक्य रचना नीचे दिए गए उदाहरण की तरह है।

<<signal path_name : std_logic_vector(7 downto 0)>>

आप बाहरी नामों के साथ स्थिरांक और चर भी एक्सेस कर सकते हैं। हालाँकि आपको बाहरी प्रकार में परिवर्तन करना होगा। आप सीधे पढ़ने / लिखने के लिए बाहरी नामों का उपयोग कर सकते हैं। हालाँकि आपको पठनीयता में सुधार के लिए उपनाम का उपयोग करना चाहिए।

alias signal_name is 
    <<signal path_name : std_logic_vector(7 downto 0)>>;

बाहरी नाम में उस तत्व को पथ समाहित करना है जिसे आप एक्सेस करना चाहते हैं। रास्ता या तो निरपेक्ष या सापेक्ष हो सकता है। आपके पथ के अलग-अलग तत्व डॉट्स द्वारा अलग किए गए हैं। ध्यान दें कि आपको उदाहरण / प्रक्रिया / निकाय / ... के लेबल प्रदान करने हैं और नाम नहीं। निरपेक्ष पथ .अपने शीर्ष स्तर के नाम से शुरू होता है। रिश्तेदार रास्तों के लिए आप ^पदानुक्रम में ऊपर जाने के लिए उपयोग कर सकते हैं । कुछ पैकेज से स्थिरांक / संकेतों का उपयोग करते समय आप @एक पुस्तकालय में जाने के लिए भी उपयोग कर सकते हैं ।

एक निरपेक्ष मार्ग के लिए एक उदाहरण है

.tb_name.instance_label.sub_instance_label.signal_name

संबंधित नामों के साथ testbench से उसी तत्व को एक्सेस करने के लिए जिसका आप उपयोग कर सकते हैं

instance_label.sub_instance_label.signal_name

जब आप कुछ टेस्टबेंच सिग्नल / कंटीन्यू को एक्सेस करना चाहते हैं तो आप उपयोग कर सकते हैं

^.^.constant_name

कॉन्फिग लाइब्रेरी में स्थित एक कॉन्फिगर पैकेज में कुछ अन्य स्थिरांक तक पहुँचने के लिए आप इसका उपयोग कर सकते हैं

@config.pkg_name.other_constant_name

आप अपने सिमुलेटर डिज़ाइन / लाइब्रेरी ब्राउज़र का उपयोग कर सकते हैं जैसे डेविड ने सही पथ नाम खोजने के लिए बताया।

यह सुविधा VHDL-2008 में जोड़ी गई थी, इसलिए इसे उन सभी उपकरणों द्वारा समर्थित किया जाना चाहिए जिनके पास पहले से VHDL-2008 समर्थन है (ActiveHDL मुझे लगता है सहित)। अधिकांश सिमुलेटर डिफ़ॉल्ट रूप से VHDL-2008 का उपयोग नहीं करते हैं लेकिन इसे सक्षम करने के लिए कमांड लाइन तर्क या कॉन्फ़िगरेशन विकल्प प्रदान करते हैं।


आपने जो सुझाव दिया, मैंने उसे आजमाया। alias ch1_byte_data_sent << सिग्नल है ।TB_SPI_DAC.SPI_DAC.ch1_byte_data_sent: STD_LOGIC_VECTOR (23 नीचे 0) >>: = x "000000"; मुझे ऐसा करने पर "पहचानकर्ता या स्ट्रिंग शाब्दिक अपेक्षित" त्रुटि मिलती है। किसी भी विचार मुझे त्रुटि क्यों मिलती है? (पोस्ट के साथ किसी भी गलती के लिए खेद है, मेरी पहली बार यहाँ!)
सुहासिनी

मेरा जवाब पर्याप्त स्पष्ट नहीं हो सकता है। उपयोग करते समय aliasआपको एक नए बयान में असाइनमेंट लिखना होगा। लाभ यह है कि आप लंबे बाहरी नाम के बजाय उपनाम नाम का उपयोग कर सकते हैं।
थॉमस एस।

1

मैं अपने वीएचडीएल स्रोत कोड के आंतरिक संकेतों को अपने टेस्टबेंच में कैसे ला सकता हूं ताकि मैं उन्हें तरंग के रूप में देख सकूं?

एक परीक्षण पीठ का अर्थ है अनुकरण - किसी भी बंदरगाह के बिना एक इकाई आमतौर पर संश्लेषण योग्य नहीं होती है।

जब मैंने एक्टिव-एचडीएल का उपयोग नहीं किया है तो मुझे समझ में आया कि इसमें एक डिज़ाइन ब्राउज़र है जो आपको अपने तरंग प्रदर्शन में संकेतों को लेने के लिए अनुमति देना चाहिए अपने तरंग प्रदर्शन में देखें एल्डेक का संकलन और सिमुलेशन वीडियो (5:02, मिनट: सेकंड)।

और अब मुझे इस बारे में आभास हो गया है कि वीडियो से भ्रम हो सकता है, शायद इस विशेष मामले में।

2:22 पर वीडियो अंत में एक फाइल (मैक्रो) दिखाता है जो सिमुलेशन को नियंत्रित करता है:

2:22 फाइल करें

जहां हम देखते हैं कि डिजाइन के शीर्ष स्तर में प्रत्येक सिग्नल को तरंग कमांड के साथ तरंग प्रदर्शन में जोड़ा गया है। डिजाइन पदानुक्रम में कहीं भी एक संकेत निर्दिष्ट करना संभव होना चाहिए।

मूल विचार बहुत सारे सिमुलेटर हैं जो आपको तरंग प्रदर्शन के लिए सिग्नल (और कुछ चर) को शेड्यूल करने की अनुमति देते हैं।

यह लघु वीडियो केवल सहायक पदानुक्रम स्तरों के लिए संकेत नहीं दिखाता है। (एक छोटी वीडियो प्रस्तुति में बहुत कुछ भरा हुआ है)।

मैं जानना चाहूंगा कि क्या मेरे उद्देश्य को प्राप्त करने के लिए कोई स्वतंत्र उपकरण है।

जैसा कि आपके उद्देश्य के ऊपर उल्लेख किया गया है कि वे तरंग संकेतों के रूप में आंतरिक संकेतों को देखते हैं।

अब बुरी खबरों के लिए - सिम्युलेटर सुविधाओं या इंटरफेस के लिए कोई मानकीकरण नहीं है, तरंग डंप आदि के लिए समय-निर्धारण संकेत हैं। ये सभी कार्यान्वयन परिभाषित हैं।

इसकी बहुत गारंटी है कि आप किसी डिज़ाइन के पदानुक्रम में किसी भी जगह सिग्नल को डंप कर सकते हैं तरंग या किसी भी कार्यान्वयन के साथ तरंग डंप फ़ाइल, जो अनुकरण करता है, ऐसा करने के लिए विधि को परिभाषित किया गया है।

अच्छी खबर यह है कि वे एक दूसरे से अवधारणाओं को कॉपी करते हैं जैसे कि फाइलें, जो आप पोर्टेबिलिटी के लिए प्रोग्रामेटिक रूप से उत्पन्न कर सकते हैं, एक सामान्य डेटाबेस का उपयोग करके कई कार्यान्वयन प्लेटफार्मों पर कार्यात्मक सत्यापन का वर्णन करते हुए, सिंटैक्स और शब्दार्थ में अंतर पर काबू पा सकते हैं। प्रोग्रामेटिक रूप से टूल को इनवाइट करने के लिए कमांड लाइन इंटरफेस सिंटैक्स में भी अंतर हो सकता है।

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


0

आंतरिक संकेतों को देखने के लिए xilinx जैसे उपकरण विकल्प हैं।

सरल उपकरण-स्वतंत्र विधि उत्पादन लाइनों को अलग करने और आंतरिक संकेतों को इन लाइनों से जोड़ने की घोषणा कर रही है।


मैं अपने इनपुट और आउटपुट पोर्ट के साथ पदक की इच्छा नहीं करता हूं; इसलिए कोई नई उत्पादन लाइनें घोषित नहीं कर सकता। मैंने अपने टेस्टबेंच में संकेतों की घोषणा की, लेकिन वेवफॉर्म पर कोई भी आउटपुट देखने में असमर्थ है (केवल फंक्शनलिटी को लागू किए बिना मेरे शून्य के प्रारंभिक मूल्य को दिखाता है)। क्या इसे करने का कोई और तरीका है?
सुहासिनी

0

यदि आपने टेस्टबेंच में संकेतों की घोषणा की है, लेकिन किसी आउटपुट को देखने में असमर्थ हैं, तो आपको इंस्टेंटेशन स्टेटमेंट में समस्या हो सकती है, जहां आप परीक्षण किए जाने के लिए इकाई को तत्काल भेज देते हैं। जाँचें कि क्या आपने एक इकाई तात्कालिकता बयान या घटक तात्कालिकता का उपयोग करके इसे तुरंत सही किया है। सुनिश्चित करें कि आपके testbench में सिग्नल परीक्षण के तहत इकाई से जुड़े हैं। यदि वह समस्या का समाधान नहीं करता है, तो testbench कोड पोस्ट करें ताकि हम मदद कर सकें।


थॉमस ने जो कहा, वह मेरी समस्या को बिल्कुल संबोधित करता है। मैंने पहले बताई गई त्रुटि को हल कर दिया, जो कि LHDice के iCEcube2 डिजाइन सॉफ्टवेयर के साथ प्रदान किए गए Active-HDL में VHDL 1993 में डिफ़ॉल्ट होने के कारण उत्पन्न हुई थी। जब मैं सिमुलेशन को शुरू करने की कोशिश करता हूं तो मुझे एक घातक विस्तार त्रुटि का सामना करना पड़ता है। मैं यह जानने की कोशिश कर रहा हूं कि ऐसा क्यों होता है, मुझे उम्मीद है कि यह एक सीमित लाइसेंस मुद्दा नहीं है।
सुहासिनी

क्या आप हमें वह संदेश दिखा सकते हैं?
रिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.