2012-10-13 12 views
5

मैं वेरिलोग के लिए नया हूं लेकिन वर्षों से सी प्रोग्रामर रहा हूं जो मुझे खतरनाक बनाता है।क्या Verilog में __LINE__ की तरह कुछ है?

मैं कक्षा के लिए कुछ Verilog कर रहा हूँ। मैं अपने सिमुलेशन कोड में सी assert() शैली परीक्षण का उपयोग करना चाहता हूँ। https://en.wikipedia.org/wiki/Assert.h

हम सिस्टम वेरिलोग का उपयोग नहीं कर रहे हैं, इसलिए कोई मानक दावा नहीं है जो मुझे मिल सकता है। मैंने निम्नलिखित मैक्रो को एक साथ जोड़ दिया है।

`define ASSERT_EQUALS(x,y) \ 
    repeat(1)\ 
    begin\ 
     if((x) != (y)) \ 
     begin\ 
      $write("assert failed %d != %d\n", (x), (y));\ 
      $finish;\ 
     end\ 
    end 

    // test the assert(should fail) 
    `ASSERT_EQUALS(t_data_in,16'hfffe) 

जहां तक ​​मैं कह सकता हूं कि लाइन नंबर प्राप्त करने का कोई तरीका नहीं है। तो यदि दावा विफल रहता है, तो मुझे विफलता के स्थान पर वापस लिंक करने का कोई तरीका नहीं मिलता है।

assert failed 65535 != 65534 

क्या वर्तमान लाइन नंबर प्राप्त करने का कोई तरीका है? या Verilog में एक दावा परीक्षण करने के लिए एक बेहतर तरीका है?

धन्यवाद!

+1

'__LINE__ सिस्टम वेरिलोग में पेश किया गया था। – toolic

+0

सिस्टम वेरिलोग भी दावे के लिए मूल समर्थन है। –

+3

Icarus Verilog iverilog संस्करण 1.0 के बाद '__LINE__' और '__FILE__' मैक्रोज़ का समर्थन करता है परीक्षण केस [ivltests/fileline.v] (https://github.com/steveicarus/ivtest/blob/master/ivltests/fileline.v) देखें उपयोग – shuckc

उत्तर

4

यदि यह एक प्रक्रियात्मक संदर्भ है तो आप $finish(1); का उपयोग कर सकते हैं जो स्थान मुद्रित करना चाहिए।

+3

Icarus Verilog में परीक्षण किया गया। $ पैरामीटर() को वह पैरामीटर लागू नहीं किया गया है। हालांकि Xilinx में काम करता है। मैं देखूंगा कि क्या मैं इकरस वेरिलोग के लिए एक फिक्स सबमिट कर सकता हूं। धन्यवाद! –

6

सिस्टम वेरिलोग 200 संकलक निर्देश प्रदान करता है। आईईईई स्टडी 1800-2009 के विनिर्देशन से उद्धरण, धारा 22.13:

`__FILE__ वर्तमान इनपुट फ़ाइल के नाम पर स्ट्रिंग अक्षर के रूप में विस्तारित होता है। यह वह तरीका है जिसके द्वारा एक उपकरण फ़ाइल खोलता है, `include में निर्दिष्ट संक्षिप्त नाम या उपकरण के इनपुट फ़ाइल नाम तर्क के रूप में नहीं। इस पथ नाम का प्रारूप कार्यान्वयन पर निर्भर हो सकता है।

`__LINE__ एक साधारण दशमलव संख्या के रूप में वर्तमान इनपुट लाइन नंबर तक फैलता है।
उदाहरण के लिए:
$display("Internal error: null handle at %s, line %d.", `__FILE__, `__LINE__);

अधिक जानकारी के लिए पूर्ण विनिर्देश का संदर्भ लें।

संबंधित मुद्दे