**مائی ایچ ڈی ایل** (انگریزی: MyHDL)  ایک پائیتھن پر مبنی ہارڈویئر ڈسکرپشن لینگویج ہے۔ 

اس زبان کی کچھ خصوصیات یہ ہیں: 

* اس سے وی ایچ ڈی ایل اور ویری لاگ دونوں زبانوں میں کوڈ تیار کیا جا سکتا ہے۔
* اس سے ٹیسٹ بینچ بھی تیار کیے جا سکتے ہیں  جسمیں ٹیسٹ ویکٹر وی ایچ ڈی ایل اور ویری لاگ میں ہو سکتے ہیں۔
* سگنلوں کی ایک فہرست کو یہ منتقل کر سکتی ہے۔
* آؤٹ پُٹ جانچ کو بھی باز تشکیل (کنورٹ) کر سکتی ہے۔
* یہ ویری لاگ کے ساتھ اس جیسا ماحول پیدا کر سکتی ہے۔
* اس میں ایک ترقی یافتہ ڈیٹاٹائپ نظام ہے جو روایتی ڈیٹا کی اقسام سے الگ ہے۔ مائی ایچ ڈی ایل کا مترجم آلہ از خود تبدیلی کے لیے درکار عملی احکام لکھ دیتا ہے، اگر مقصدزبان کو اس کی ضرورت درکار ہو۔

مائی ایچ ڈی ایل کو جان ڈے کالووے نے تیار کیا۔

تبدیلی کی مثالیں
----------------

یہاں پر آپ کچھ مثالیں دیکھ سکتے ہیں کہ کیسے مائی ایچ ڈی ایل ڈیزائنوں سے وی ایچ ڈیل یا ویری منتقلی ممکن ہے۔

**ایک چھوٹا جوڑنے والا ڈیزائن**

یہ مثال ایک چھوٹے جوڑنے والے ڈیزائن (small combinatorial design) کی ہے، جو بطور خاص تثنیہ (binary) سے خاکستری کوڈ (Gray code) تبدیلی کا کام کرتا ہے:

```
def bin2gray(B, G, width):

 """ Gray encoder.

 B -- input intbv signal, binary encoded
 G -- output intbv signal, gray encoded
 width -- bit width

 """

    @always\_comb
    def logic():
        Bext = intbv(0)[width+1:]
        Bext[:] = B
        for i in range(width):
            G.next[i] = Bext[i+1] ^ Bext[i]

    return logic

```

  

آپ کے صورت حال (instance) بنا سکتے ہیں اور ویری لاگ اور وی ایچ ڈی ایل میں اس طرح تبدیل کر سکتے ہیں:

```
width = 8

B = Signal(intbv(0)[width:])
G = Signal(intbv(0)[width:])

bin2gray\_inst = toVerilog(bin2gray, B, G, width)
bin2gray\_inst = toVHDL(bin2gray, B, G, width)

```

دستیاب ہونے والا ویری لاگ کوڈ اس طرح دکھے گا:

```
module bin2gray (
 B,
 G
);

input [7:0] B;
output [7:0] G;
reg [7:0] G;

always @(B) begin: BIN2GRAY\_LOGIC
 integer i;
 reg [9-1:0] Bext;
 Bext = 9'h0;
 Bext = B;
 for (i=0; i<8; i=i+1) begin
 G[i] <= (Bext[(i + 1)] ^ Bext[i]);
 end
end

endmodule

```

دستیاب ہونے والا وی ایچ ڈی ایل کوڈ اس طرح دکھے گا:

```
library IEEE;
use IEEE.std\_logic\_1164.all;
use IEEE.numeric\_std.all;
use std.textio.all;

use work.pck\_myhdl\_06.all;

entity bin2gray is
 port (
 B: in unsigned(7 downto 0);
 G: out unsigned(7 downto 0)
 );
end entity bin2gray;

architecture MyHDL of bin2gray is

begin

BIN2GRAY\_LOGIC: process (B) is
 variable Bext: unsigned(8 downto 0);
begin
 Bext := to\_unsigned(0, 9);
 Bext := resize(B, 9);
 for i in 0 to 8-1 loop
 G(i) <= (Bext((i + 1)) xor Bext(i));
 end loop;
end process BIN2GRAY\_LOGIC;

end architecture MyHDL;

```

مزید دیکھیے
-----------

* مفت ای ڈی اے سافٹ ویئر کا موازنہ
* ای ڈی اے سافٹ ویئر کا موازنہ
* الیکٹرانک ڈیزائن آٹومیشن (ای ڈی اے)

حوالہ جات
---------

1. ↑
2. ↑  "Archived copy"۔ 19 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 مئی 2013
3. ↑  "آرکائیو کاپی"۔ 16 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 دسمبر 2018  الوسيط `|url-status=` تم تجاهله (معاونت)
4. ↑  "آرکائیو کاپی"۔ 16 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 دسمبر 2018  الوسيط `|url-status=` تم تجاهله (معاونت)
5. ↑  "آرکائیو کاپی"۔ 16 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 دسمبر 2018  الوسيط `|url-status=` تم تجاهله (معاونت)
6. ↑  "Archived copy"۔ 17 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 مئی 2013
7. ↑
8. ↑  "Archived copy"۔ 17 اگست 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 مئی 2013