نموذج كالتيك المتوسط

صيغة كالتك الوسيطة ( CIF ) هي صيغة ملفات لوصف الدوائر المتكاملة . توفر CIF مجموعة محدودة من العناصر الرسومية الأساسية المفيدة لوصف الأشكال ثنائية الأبعاد على الطبقات المختلفة للشريحة. تسمح هذه الصيغة بالوصف الهرمي، مما يجعل التمثيل موجزًا. إضافةً إلى ذلك، فهي صيغة نصية مختصرة ولكنها سهلة القراءة .

تم إنشاء معيار CIF بواسطة إيفان ساذرلاند ورون آيرز في عام 1976، مع تحسينات من كارلو إتش. سيكوين ، ودوغلاس فيربيرن، وستيفن تريمبرغر. وقد تم تحديث المواصفات المكتوبة لاحقًا بواسطة روبرت سبرول وريتشارد ليون، ومراجعتها بواسطة ستيفن تريمبرغر. [ 1 ]

ملخص

تتألف كل عبارة في CIF من كلمة مفتاحية أو حرف متبوعًا بمعاملات، وتنتهي بفاصلة منقوطة. يجب فصل المعاملات بمسافات، ولكن لا توجد قيود على عدد العبارات في السطر الواحد أو على أعمدة أي حقل. يمكن إدراج التعليقات في أي مكان بوضعها بين قوسين.

لا يوجد سوى عدد قليل من عبارات CIF، وهي تنقسم إلى فئتين رئيسيتين: عبارات هندسية وعبارات تحكم. تشمل العبارات الهندسية ما يلي: LAYERتبديل طبقات القناع، BOXرسم مستطيل، WIREرسم مسار، ROUNDFLASHرسم دائرة، POLYGONرسم أي شكل، ورسم روتين CALLفرعي ضمن عبارات هندسية أخرى. أما عبارات التحكم فتشمل: DSبدء تعريف روتين فرعي، إنهاء تعريف روتين فرعي، DFحذف DDتعريف الروتينات الفرعية، 0إضافة 9معلومات إضافية يحددها المستخدم، ENDوإنهاء ملف CIF. عادةً ما تُختصر جميع هذه الكلمات المفتاحية إلى حرف أو حرفين فريدين.

الهندسة

يُحدد هذا LAYERالأمر (أو الحرف L) طبقة القناع التي ستُستخدم لجميع الأشكال الهندسية اللاحقة حتى صدور الأمر التالي. يلي الكلمة LAYERالمفتاحية مُعامل واحد هو اسم الطبقة. على سبيل المثال، الأمر:

 L CC; 

يحدد الطبقة لتكون قطع اتصال CMOS (انظر الشكل B.1 لبعض أسماء طبقات MOS النموذجية).

NMمعدن NMOS
NPالسيليكون متعدد التبلور nMOS
NDانتشار nMOS
NCجهة اتصال nMOS
NIزرعة nMOS
NBدفن نموس
NGغطاء زجاجي لترانزستور NMOS
CMFمعدن CMOS 1
CMSمعدن CMOS 2
CPGبولي سيليكون CMOS
CAACMOS نشط
CSGتحديد CMOS
CWGبئر CMOS
CCتلامس CMOS
CVACMOS عبر
COGغطاء زجاجي لتقنية CMOS
الشكل ب.1 أسماء طبقات CIF لعمليات MOS.

تُعدّ العبارة BOX(أو الحرف B) الطريقة الأكثر شيوعًا لتحديد الأشكال الهندسية. فهي تصف المستطيل بتحديد طوله وعرضه وموقع مركزه، مع إمكانية تدويره. ويكون تنسيقها كما يلي:

 B الطول العرض الموضع السيني الموضع الصادي [الدوران] ؛ 

بدون حقل الدوران، تُحدد الأرقام الأربعة مربعًا مركزه عند ( xpos , ypos ) وعرضه ( x) وارتفاعه (y). جميع الأرقام في CIF أعداد صحيحة تُشير إلى سنتيمترات المسافة، ما لم يتم تحديد مقياس روتيني فرعي (موصوف لاحقًا). يحتوي حقل الدوران الاختياري على رقمين يُحددان نقطة نهاية متجه تبدأ من نقطة الأصل. القيمة الافتراضية لهذا الحقل هي (1, 0)، وهو متجه مُتجه نحو اليمين. بالتالي، 10 5يُحدد شرط الدوران دورانًا عكس عقارب الساعة بمقدار 26.6 درجة من العمودي. وبالمثل، 10 -10سيدور في اتجاه عقارب الساعة بمقدار 45 درجة. لاحظ أن مقدار متجه الدوران هذا ليس له أي دلالة.

الشكل ب.2: مثال على عبارة "wire" في CIF. العبارة هي: W25 100 200 100 100 200 200 300 200؛

تُستخدم العبارة WIRE(أو الحرف W) لإنشاء مسار يمتد بين مجموعة من النقاط. يمكن أن يكون للمسار عرض غير صفري وزوايا مستديرة. بعد الكلمة WIREالمفتاحية، تأتي قيمة العرض، ثم عدد غير محدد من أزواج الإحداثيات التي تصف نقاط النهاية. يوضح الشكل B.2 مثالًا على سلك. لاحظ أن تقريب نقاط النهاية والزوايا يتم ضمنيًا.

ترسم العبارة ROUNDFLASH(أو الحرف R) دائرةً مُظللة، بمعلومية القطر وإحداثيات المركز. على سبيل المثال، العبارة:

 R 20 30 40; 

سوف نرسم دائرة نصف قطرها 10 (قطرها 20)، مركزها عند (30، 40).

الشكل ب.3: مثال على عبارة "مضلع" في CIF. العبارة هي: P 150 100 200 200 200 300 100 300 100 200؛

تأخذ العبارة POLYGON(أو الحرف P) سلسلة من أزواج الإحداثيات وترسم منها مضلعًا مملوءًا. ولأن المضلعات المملوءة يجب أن تكون مغلقة، فإن أول وآخر نقطة إحداثية متصلة ضمنيًا، وليس بالضرورة أن تكونا متطابقتين. يمكن أن تكون المضلعات معقدة كيفما شاءت، بما في ذلك التقعر والتقاطع الذاتي. يوضح الشكل B.3 عبارة مضلع.

تَسَلسُل

يستدعي هذا CALLالبيان (أو الحرف C) مجموعة من البيانات الأخرى التي تم تجميعها مع DS`and` DF. تُعطى جميع الإجراءات الفرعية أرقامًا عند تعريفها، وتُستخدم هذه الأرقام في `and` CALLلتمييزها. على سبيل المثال، إذا تم تجميع LAYERبيان `and` وبيان BOX`and` في الإجراء الفرعي 4، فإن البيان `and`:

 ج 4؛ 

سيؤدي ذلك إلى رسم المربع على تلك الطبقة.

بالإضافة إلى استدعاء الروتين الفرعي، CALLيمكن أن تتضمن العبارة تحويلات للتأثير على الشكل الهندسي داخله. يمكن تطبيق ثلاثة تحويلات على الروتين الفرعي في CIF: الإزاحة، والدوران، والانعكاس. تُحدد الإزاحة بالحرف Tمتبوعًا بإزاحة x وy. تُضاف هذه الإزاحات إلى جميع الإحداثيات في الروتين الفرعي، لنقل رسوماته عبر القناع. يُحدد الدوران بالحرف متبوعًا بنقطة Rنهاية متجه x وy، والتي تُحدد، كما هو الحال في عبارة الدوران BOX، خطًا إلى نقطة الأصل. للخط غير المُدار نقطة النهاية (1، 0)، والتي تُشير إلى اليمين. يتوفر الانعكاس بصورتين: MXالانعكاس حول المحور x MYوالانعكاس حول المحور y. قد يكون الانعكاس مُربكًا بعض الشيء، لأنه MXيُسبب عكسًا لإحداثي x، مما يُؤدي فعليًا إلى انعكاس حول المحور y.

الشكل ب.4: تحويلات استدعاء CIF: (أ) الروتين الفرعي 10: BOX 100 200 50 50؛ WIRE 10 50 50 100 150؛ (ب) الاستدعاء: C 10 T -50 0 MX MY؛ (ج) الاستدعاء: C 10 R 0 -1 MX؛ (د) الاستدعاء: C 10 MX R 0 -1؛

يمكن تطبيق أي عدد من التحويلات على كائن ما، والترتيب المذكور هو التسلسل الذي سيتم استخدامه لتطبيقها. يوضح الشكل B.4 بعض الأمثلة، مبيناً أهمية ترتيب التحويلات (لاحظ أن الشكلين B.4c وB.4d ينتجان نتائج مختلفة عند إعادة ترتيب التحويلات).

يُعدّ تعريف الإجراءات الفرعية لاستخدامها في CALLعبارة أمرًا بسيطًا للغاية. تُحاط العبارات المراد تجميعها بعبارتي DS(بداية التعريف) و DF(نهاية التعريف). وسيطات العبارة DSهي رقم الإجراء الفرعي ومعامل قياسه. لا توجد وسائط لعبارة (بداية التعريف ) DF. يتكون معامل قياس الإجراء الفرعي من بسط متبوع بمقام، ويُطبّق على جميع القيم داخل الإجراء الفرعي. يسمح هذا القياس بالتعبير عن الأعداد الكبيرة بعدد أقل من الأرقام، كما يُسهّل إعادة قياس التصميم. لا يمكن تغيير معامل القياس مع كل استدعاء للإجراء الفرعي لأنه يُطبّق على التعريف. على سبيل المثال، يمكن وصف الإجراء الفرعي في الشكل B.4 رسميًا كما يلي:

 DS 10 20 2; B10 20 5 5; W1 5 5 10 15; DF؛ 

لاحظ أن عامل المقياس هو 20/2، مما يسمح بإسقاط الصفر اللاحق من جميع القيم داخل الروتين الفرعي.

يُسمح بأي عمق هرمي في الإجراءات الفرعية لـ CIF. يُسمح بالمراجع الأمامية بشرط تعريف الإجراء الفرعي قبل استخدامه. وبالتالي، يكون التسلسل كالتالي:

 DS 10؛ ... ج 11؛ DF؛ DS 11؛ ... DF؛ ج 10؛ 

قانوني، لكن التسلسل:

 ج 11؛ DS 11؛ ... DF؛ 

ليس كذلك. والسبب في ذلك هو أن الاستدعاء الفعلي للروتين الفرعي 11 لا يحدث إلا بعد تعريفه في المثال الأول.

يتحكم

يمكن استبدال الإجراءات الفرعية في ملفات CIF بحذفها ثم إعادة تعريفها. DDتأخذ العبارة (حذف التعريف) مُعاملًا واحدًا وتحذف كل إجراء فرعي يحمل رقمًا أكبر من أو يساوي هذا المُعامل. تُفيد هذه العبارة عند دمج ملفات CIF متعددة، إذ يُمكن تعريف التصاميم واستدعاؤها وحذفها دون حدوث تعارضات في التسمية. مع ذلك، لا يُنصح باستخدامها بشكل عام في أنظمة التصميم بمساعدة الحاسوب (CAD).

يمكن إجراء امتدادات لـ CIF باستخدام العبارات الرقمية 0من خلال 9. على الرغم من أنها ليست جزءًا رسميًا من CIF، فقد تطورت بعض الاتفاقيات لاستخدام هذه الامتدادات (انظر الشكل B.5).

0Nاسم طبقة xy;قم بتعيين عقدة مسماة على الطبقة والموضع المحددين.
0Vx1 y1 x2 y2 ... xn yn;ارسم المتجهات
2A"msg" Txy;ضع الرسالة فوق الموقع المحدد
2B"msg" Txy;ضع الرسالة أسفل الموقع المحدد
2C"msg" Txy;ضع الرسالة في منتصف الموقع المحدد
2L"msg" Txy;ضع الرسالة على يسار الموقع المحدد
2R"msg" Txy;ضع الرسالة على يمين الموقع المحدد
4Aمنخفض منخفض مرتفع مرتفع;تحديد حدود الخلية
4Bاسم المثيل;قم بإرفاق اسم المثيل بالخلية
4Nاسم الإشارة xy;يُحدد موقع الإشارة
9اسم الخلية;تعريف اسم الخلية
91اسم المثيل;قم بإرفاق اسم المثيل بالخلية
94label xy;ضع الملصق في الموقع المحدد
95طول الملصق وعرضه ومحوره السيني;ضع الملصق في المنطقة المحددة
الشكل ب.5: امتدادات المستخدم النموذجية لـ CIF.

العبارة الأخيرة في ملف CIF هي ENDالعبارة (أو الحرف E). لا تأخذ هذه العبارة أي معلمات، وعادةً لا تتضمن فاصلة منقوطة.

قواعد اللغة BNF

فيما يلي قواعد اللغة الخاصة بتنسيق CIF حيث يمثل cifFile عقدة قواعد اللغة ذات المستوى الأعلى.

cifFile ::= (blank* command? semi)* endCommand blank* command ::= primCommand | defDeleteCommand | defStartCommand semi (blank* primCommand? semi)* defFinishCommand primCommand ::= polygonCommand | boxCommand | roundFlashCommand | wireCommand | layerCommand | callCommand | userExtensionCommand | commentCommand polygonCommand ::= "P" path boxCommand ::= "B" integer sep integer sep point (sep point)? roundFlashCommand ::= "R" integer sep point wireCommand ::= "W" integer sep path layerCommand ::= "L" blank* shortname defStartCommand ::= "D" blank* "S" integer (sep integer sep integer)? defFinishCommand ::= "D" blank* "F" defDeleteCommand ::= "D" blank* "D" integer callCommand ::= "C" integer transformation userExtensionCommand ::= digit userText commentCommand ::= "(" commentText ")" endCommand ::= "E" transformation ::= (blank* ("T" point |"M" blank* "X" |"M" blank* "Y" |"R" point)*)* path ::= point (sep point)* point ::= sep sInteger sInteger ::= sep* "-"? integerD integer ::= sep* integerD integerD ::= digit+ shortname ::= cc? c? c? c ::= digit | upperChar userText ::= userChar* commentText ::= commentChar* | commentText "(" commentText ")" commentText semi ::= blank* ";" blank* sep ::= upperChar | blank digit ::= "0" | "1" | ... | "9" upperChar ::= "A" | "B" | ... | "Z" blank ::= أي حرف ASCII باستثناء digit، upperChar، "-"، "("، ")"، أو ";" userChar ::= أي حرف ASCII باستثناء ";" commentChar ::= أي حرف ASCII باستثناء "(" أو ")"

انظر أيضاً

مراجع

  1. سبراول، روبرت؛ ليون، ريتشارد؛ تريمبرجر، ستيفن (11 فبراير 2025). نموذج كالتك الوسيط لوصف تخطيط الدوائر المتكاملة واسعة النطاق (تقرير فني). معهد كاليفورنيا للتكنولوجيا. TR 2686. تاريخ الاسترجاع: 17 سبتمبر 2025 .