อ่าน 4 นาที
แบบฟอร์มระดับกลางของ Caltech
ไฟล์ Caltech Intermediate Form ( CIF ) เป็น รูปแบบไฟล์ สำหรับอธิบาย วงจรรวม (Integrated Circuit หรือ IC) CIF มีชุดกราฟิกพื้นฐานจำนวนจำกัด...
แบบฟอร์มระดับกลางของ Caltech
| แบบฟอร์มระดับกลางของ Caltech | |
|---|---|
| นามสกุลไฟล์ | .cif |
| ประเภทของรูปแบบ | รูปแบบไฟล์EDA |
ไฟล์ Caltech Intermediate Form ( CIF ) เป็นรูปแบบไฟล์สำหรับอธิบายวงจรรวม (Integrated Circuit หรือ IC) CIF มีชุดกราฟิกพื้นฐานจำนวนจำกัด ซึ่งมีประโยชน์สำหรับการอธิบายรูปร่างสองมิติบนชั้นต่างๆ ของชิป รูปแบบนี้อนุญาตให้มีการอธิบายแบบลำดับชั้น ทำให้การแสดงผลกระชับ นอกจากนี้ยังเป็นรูปแบบข้อความ ที่กระชับแต่ สามารถอ่านได้ง่ายสำหรับมนุษย์
CIF ถูกสร้างขึ้นโดยIvan Sutherlandและ Ron Ayres ในปี 1976 โดยมีการปรับปรุงโดยCarlo H. Séquin , Douglas Fairbairn และ Stephen Trimberger ข้อกำหนดที่เป็นลายลักษณ์อักษรได้รับการปรับปรุงในภายหลังโดยRobert SproullและRichard Lyonและแก้ไขโดย Stephen Trimberger [ 1 ]
ภาพรวม
แต่ละคำสั่งในไฟล์ CIF ประกอบด้วยคำหลักหรือตัวอักษร ตามด้วยพารามิเตอร์ และปิดท้ายด้วยเครื่องหมายเซมิโคลอน ต้องเว้นวรรคระหว่างพารามิเตอร์ แต่ไม่มีข้อจำกัดเกี่ยวกับจำนวนคำสั่งต่อบรรทัด หรือจำนวนคำสั่งในคอลัมน์ใด ๆ ของฟิลด์ สามารถแทรกความคิดเห็นได้ทุกที่โดยการใส่ไว้ในวงเล็บ
คำสั่งในไฟล์ CIF มีเพียงไม่กี่คำสั่ง และแบ่งออกเป็นสองประเภทหลักๆ คือ คำสั่งเกี่ยวกับรูปทรงเรขาคณิต หรือ คำสั่งควบคุม คำสั่งเกี่ยวกับรูปทรงเรขาคณิต ได้แก่LAYERการสลับเลเยอร์มาสก์BOXการวาดสี่เหลี่ยมWIREการวาดเส้นทางROUNDFLASHการวาดวงกลม การPOLYGONวาดรูปทรงใดๆ และCALLการวาดซับรูทีนของคำสั่งรูปทรงเรขาคณิตอื่นๆ ส่วนคำสั่งควบคุม ได้แก่DSการเริ่มต้นการกำหนดซับรูทีนDFการสิ้นสุดการกำหนดซับรูทีนDDการลบการกำหนดซับรูทีน0ไป9จนถึงการเพิ่มข้อมูลเพิ่มเติมที่ผู้ใช้กำหนด และENDการสิ้นสุดไฟล์ CIF คำหลักเหล่านี้มักจะย่อเหลือเพียงหนึ่งหรือสองตัวตัวอักษรที่ไม่ซ้ำกัน
เรขาคณิต
คำLAYERสั่ง (หรือตัวอักษรL) จะกำหนดเลเยอร์มาสก์ที่จะใช้สำหรับรูปทรงเรขาคณิตทั้งหมดที่ตามมาจนกว่าจะมีคำสั่งดังกล่าวอีกครั้ง ตามหลังคำLAYERหลักจะมีพารามิเตอร์ชื่อเลเยอร์เพียงตัวเดียว ตัวอย่างเช่น คำสั่ง:
แอล ซีซี;
กำหนดให้เลเยอร์นี้เป็นหน้าตัดสัมผัส CMOS (ดูรูป B.1 สำหรับชื่อเลเยอร์ MOS ทั่วไปบางส่วน)
NM | โลหะ nMOS |
NP | nMOS โพลีซิลิคอน |
ND | การแพร่กระจาย nMOS |
NC | หน้าสัมผัส nMOS |
NI | การฝัง nMOS |
NB | nMOS ฝังอยู่ |
NG | nMOS โอเวอร์กลาส |
CMF | CMOS โลหะ 1 |
CMS | CMOS โลหะ 2 |
CPG | โพลีซิลิคอน CMOS |
CAA | CMOS แอคทีฟ |
CSG | เลือก CMOS |
CWG | CMOS ที่ดี |
CC | หน้าสัมผัส CMOS |
CVA | CMOS ผ่านทาง |
COG | เซ็นเซอร์ CMOS เหนือกระจก |
| รูปที่ B.1ชื่อเลเยอร์ CIF สำหรับกระบวนการ MOS | |
คำBOXสั่ง (หรือตัวอักษรB) เป็นวิธีที่ใช้กันมากที่สุดในการระบุรูปทรงเรขาคณิต โดยจะอธิบายรูปสี่เหลี่ยมผืนผ้าด้วยการระบุความยาว ความกว้าง ตำแหน่งจุดศูนย์กลาง และการหมุน (ถ้ามี) รูปแบบมีดังนี้:
ความยาว B ความกว้าง xpos ypos [การหมุน] ;
หากไม่มีช่องกำหนดการหมุน ตัวเลขทั้งสี่จะระบุกล่องที่มีจุดศูนย์กลางอยู่ที่ ( xpos , ypos ) และมีความยาวตามแกน x และความกว้างตามแกน y ตัวเลขทั้งหมดใน CIF เป็นจำนวนเต็มที่อ้างอิงถึงระยะทางในหน่วยเซนติไมครอน เว้นแต่จะมีการระบุการปรับขนาดด้วยซับรูทีน (อธิบายในภายหลัง) ช่อง กำหนดการหมุน ที่เป็นตัวเลือก จะมีตัวเลขสองตัวที่กำหนดจุดปลายของเวกเตอร์โดยเริ่มต้นที่จุดกำเนิด ค่าเริ่มต้นของช่องนี้คือ (1, 0) ซึ่งเป็นเวกเตอร์ที่ชี้ไปทางขวา ดังนั้นข้อกำหนดการหมุนจึง10 5กำหนดการหมุนทวนเข็มนาฬิกา 26.6 องศาจากแนวตั้งฉาก ในทำนองเดียวกัน10 -10จะหมุนตามเข็มนาฬิกา 45 องศา โปรดทราบว่าขนาดของเวกเตอร์การหมุนนี้ไม่มีความหมาย

คำWIREสั่ง (หรือตัวอักษรW) ใช้ในการสร้างเส้นทางที่เชื่อมระหว่างชุดจุด เส้นทางนี้สามารถมีความกว้างที่ไม่เป็นศูนย์และมีมุมโค้งมนได้ หลังจากWIREคำหลักจะเป็นค่าความกว้าง ตามด้วยคู่พิกัดจำนวนเท่าใดก็ได้ที่อธิบายจุดปลาย รูปที่ B.2 แสดงตัวอย่างสายไฟ โปรดสังเกตว่าจุดปลายและการโค้งมนของมุมนั้นได้รับการจัดการโดยปริยายแล้ว
คำROUNDFLASHสั่ง (หรือตัวอักษรR) จะวาดวงกลมที่เติมสี โดยกำหนดเส้นผ่านศูนย์กลางและพิกัดจุดศูนย์กลาง ตัวอย่างเช่น คำสั่ง:
R 20 30 40;
จะวาดวงกลมที่มีรัศมี 10 (เส้นผ่านศูนย์กลาง 20) โดยมีจุดศูนย์กลางอยู่ที่ (30, 40)

คำPOLYGONสั่ง (หรือตัวอักษรP) จะรับชุดคู่พิกัดและวาดรูปหลายเหลี่ยมที่เติมสีจากพิกัดเหล่านั้น เนื่องจากรูปหลายเหลี่ยมที่เติมสีต้องเป็นรูปปิด จุดพิกัดแรกและจุดพิกัดสุดท้ายจึงเชื่อมต่อกันโดยปริยายและไม่จำเป็นต้องเป็นจุดเดียวกัน รูปหลายเหลี่ยมสามารถมีความซับซ้อนได้ตามต้องการ รวมถึงความเว้าและการตัดกันเอง รูปที่ B.3 แสดงตัวอย่างคำสั่งรูปหลายเหลี่ยม
ลำดับชั้น
คำCALLสั่ง (หรือตัวอักษรC) เรียกใช้ชุดคำสั่งอื่นๆ ที่ถูกจัดกลุ่มไว้ด้วยDSกันDFซับรูทีนทั้งหมดจะได้รับหมายเลขเมื่อมีการกำหนด และหมายเลขเหล่านี้จะถูกใช้ในCALLเพื่อระบุซับรูทีนเหล่านั้น ตัวอย่างเช่น หากLAYERคำสั่ง และBOXคำสั่ง ถูกจัดกลุ่มไว้ในซับรูทีนที่ 4 คำสั่งนั้นจะเป็นดังนี้:
ซี 4;
จะทำให้กล่องถูกวาดลงบนเลเยอร์นั้น
นอกจากการเรียกใช้ซับรูทีนโดยตรงแล้วCALLคำสั่งยังสามารถรวมการแปลงเพื่อส่งผลต่อรูปทรงเรขาคณิตภายในซับรูทีนได้ การแปลงสามแบบที่สามารถใช้กับซับรูทีนใน CIF ได้แก่ การเลื่อน การหมุน และการสะท้อน การเลื่อนระบุโดยใช้ตัวอักษรTตามด้วยค่าชดเชย x, y ค่าชดเชยเหล่านี้จะถูกเพิ่มเข้าไปในพิกัดทั้งหมดในซับรูทีน เพื่อเลื่อนกราฟิกไปทั่วมาสก์ การหมุนระบุโดยใช้ตัวอักษรRตามด้วยจุดปลายเวกเตอร์ x, y ซึ่งคล้ายกับข้อกำหนดการหมุนในBOXคำสั่ง กำหนดเส้นไปยังจุดกำเนิด เส้นที่ไม่หมุนจะมีจุดปลาย (1, 0) ซึ่งชี้ไปทางขวา การสะท้อนมีสองรูปแบบ ได้แก่MXการสะท้อนในแกน x และMYการสะท้อนในแกน y การสะท้อนอาจทำให้สับสนเล็กน้อย เพราะMXทำให้พิกัด x กลายเป็นค่าลบ ซึ่งมีผลเป็นการสะท้อนรอบแกน y

สามารถใช้การแปลงรูปทรงได้หลายวิธีกับวัตถุ และลำดับที่ระบุไว้คือลำดับที่จะใช้ในการแปลงรูปทรงนั้น รูปที่ B.4 แสดงตัวอย่างบางส่วนที่แสดงให้เห็นถึงความสำคัญของการจัดลำดับการแปลงรูปทรง (โปรดสังเกตว่ารูปที่ B.4c และ B.4d ให้ผลลัพธ์ที่แตกต่างกันเมื่อจัดเรียงการแปลงรูปทรงใหม่)
การกำหนดซับรูทีนเพื่อใช้ในCALLคำสั่งนั้นค่อนข้างง่าย คำสั่งที่จะบรรจุจะอยู่ระหว่าง คำสั่ง DS(definition start) และDF(definition finish) อาร์กิวเมนต์ของDSคำสั่งคือหมายเลขซับรูทีนและตัวคูณขนาดของซับรูทีน ไม่มีอาร์กิวเมนต์สำหรับDFคำสั่ง ตัวคูณขนาดสำหรับซับรูทีนประกอบด้วยตัวเศษตามด้วยตัวส่วนที่จะนำไปใช้กับค่าทั้งหมดภายในซับรูทีน การปรับขนาดนี้ช่วยให้สามารถแสดงตัวเลขขนาดใหญ่ด้วยจำนวนหลักที่น้อยลงและช่วยให้ปรับขนาดการออกแบบได้ง่าย ตัวคูณขนาดไม่สามารถเปลี่ยนแปลงได้สำหรับการเรียกใช้ซับรูทีนแต่ละครั้ง เนื่องจากมันถูกนำไปใช้กับคำจำกัดความแล้ว ตัวอย่างเช่น ซับรูทีนในรูปที่ B.4 สามารถอธิบายอย่างเป็นทางการได้ดังนี้:
DS 10 20 2; B10 20 5 5; W1 5 5 10 15; ดีเอฟ;
โปรดทราบว่าตัวคูณมาตราส่วนคือ 20/2 ซึ่งช่วยให้สามารถตัดเลขศูนย์ต่อท้ายออกจากค่าทั้งหมดภายในรูทีนย่อยได้
ในซับรูทีน CIF อนุญาตให้มีระดับลำดับชั้นที่กำหนดเองได้ การอ้างอิงไปข้างหน้าก็อนุญาตเช่นกัน โดยมีเงื่อนไขว่าต้องกำหนดซับรูทีนนั้นก่อนที่จะใช้งาน ดังนั้นลำดับจึงเป็นดังนี้:
DS 10; ... ซี 11; ดีเอฟ; DS 11; ... ดีเอฟ; ซี 10;
ถูกต้องตามกฎหมาย แต่ลำดับขั้นตอนคือ:
ซี 11; DS 11; ... ดีเอฟ;
ไม่ใช่ เพราะการเรียกใช้งานซับรูทีน 11 จริงๆ นั้นเกิดขึ้นหลังจากที่ได้นิยามซับรูทีนนั้นแล้วในตัวอย่างแรก
ควบคุม
สามารถเขียนทับซับรูทีนในไฟล์ CIF ได้โดยการลบแล้วกำหนดใหม่DDคำสั่ง (delete definition) รับพารามิเตอร์เพียงตัวเดียวและลบซับรูทีนทุกตัวที่มีหมายเลขมากกว่าหรือเท่ากับค่านี้ คำสั่งนี้มีประโยชน์เมื่อรวมไฟล์ CIF หลายไฟล์เข้าด้วยกัน เนื่องจากสามารถกำหนด เรียกใช้ และลบดีไซน์ได้โดยไม่ทำให้เกิดปัญหาการตั้งชื่อซ้ำซ้อน อย่างไรก็ตาม ไม่แนะนำให้ใช้ในระบบ CAD ทั่วไป
การขยายรูปแบบ CIF สามารถทำได้โดยใช้คำสั่งเชิงตัวเลข0ผ่านทาง9. แม้ว่าจะไม่ได้เป็นส่วนหนึ่งของ CIF อย่างเป็นทางการ แต่ก็มีธรรมเนียมปฏิบัติบางอย่างที่พัฒนาขึ้นสำหรับการใช้ส่วนขยายเหล่านี้ (ดูรูป B.5)
0Nชื่อเลเยอร์ XY; | กำหนดชื่อโหนดบนเลเยอร์และตำแหน่งที่ระบุ |
0Vx1 y1 x2 y2 ... xn yn; | วาดเวกเตอร์ |
2A"ข้อความ" Txy; | วางข้อความไว้เหนือตำแหน่งที่ระบุ |
2B"ข้อความ" Txy; | วางข้อความไว้ด้านล่างตำแหน่งที่กำหนด |
2C"ข้อความ" Txy; | จัดวางข้อความให้อยู่ตรงกลาง ณ ตำแหน่งที่กำหนด |
2L"ข้อความ" Txy; | วางข้อความไว้ทางด้านซ้ายของตำแหน่งที่ระบุ |
2R"ข้อความ" Txy; | วางข้อความไว้ทางด้านขวาของตำแหน่งที่ระบุ |
4Alowx lowy highx highy; | ประกาศขอบเขตเซลล์ |
4Bชื่ออินสแตนซ์; | แนบชื่ออินสแตนซ์ไปยังเซลล์ |
4Nชื่อสัญญาณ xy; | ระบุสัญญาณ ณ ตำแหน่งหนึ่ง |
9ชื่อเซลล์; | ประกาศชื่อเซลล์ |
91ชื่ออินสแตนซ์; | แนบชื่ออินสแตนซ์ไปยังเซลล์ |
94ป้ายกำกับ xy; | ติดฉลากในตำแหน่งที่กำหนด |
95ความยาวฉลาก ความกว้าง xy; | ติดฉลากในบริเวณที่กำหนด |
| รูปที่ B.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 ::= sInteger 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 ใดๆ ยกเว้น "(" หรือ ")"
ดูเพิ่มเติม
- รูปแบบสตรีม GDS II
- OASIS (มาตรฐานการแลกเปลี่ยนระบบงานศิลปะแบบเปิด)
- EDIFเป็นรูปแบบไฟล์ที่ไม่ขึ้นกับผู้ผลิตรายใด สร้างขึ้นในยุค 90
ลิงก์ภายนอก
- คู่มือคอมพิวเตอร์ช่วยในการออกแบบ VLSI - ภาคผนวก B: รูปแบบระดับกลางของ Caltech โดย Steven M. Rubin
- คู่มือเบื้องต้นของ CIF
- Hon, Robert W. และ Sequin, Carlo H., "คู่มือการใช้งาน LSI" ฉบับที่ 2, เอกสารทางเทคนิคของศูนย์วิจัยซีร็อกซ์ พาโล อัลโต หมายเลข SSL-79-7, มกราคม 1980
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ แบบฟอร์มระดับกลางของ Caltech
ไฟล์ Caltech Intermediate Form ( CIF ) เป็น รูปแบบไฟล์ สำหรับอธิบาย วงจรรวม (Integrated Circuit หรือ IC) CIF มีชุดกราฟิกพื้นฐานจำนวนจำกัด...
ภาพรวม
แต่ละคำสั่งในไฟล์ CIF ประกอบด้วยคำหลักหรือตัวอักษร ตามด้วยพารามิเตอร์ และปิดท้ายด้วยเครื่องหมายเซมิโคลอน ต้องเว้นวรรคระหว่างพารามิเตอร์ แต่ไม่มีข้อจำกัดเกี่ยวกับจำนวนคำสั่งต่อบรรทัด หรือจำนวนคำสั่งในคอลัมน์ใด ๆ ของฟิลด์...
เรขาคณิต
คำ LAYER สั่ง (หรือตัวอักษร L ) จะกำหนดเลเยอร์มาสก์ที่จะใช้สำหรับรูปทรงเรขาคณิตทั้งหมดที่ตามมาจนกว่าจะมีคำสั่งดังกล่าวอีกครั้ง ตามหลังคำ LAYER หลักจะมีพารามิเตอร์ชื่อเลเยอร์เพียงตัวเดียว ตัวอย่างเช่น คำสั่ง:
ลำดับชั้น
คำ CALL สั่ง (หรือตัวอักษร C ) เรียกใช้ชุดคำสั่งอื่นๆ ที่ถูกจัดกลุ่มไว้ด้วย DS กัน DF ซับรูทีนทั้งหมดจะได้รับหมายเลขเมื่อมีการกำหนด และหมายเลขเหล่านี้จะถูกใช้ใน CALL เพื่อระบุซับรูทีนเหล่านั้น ตัวอย่างเช่น หาก LAYER คำสั่ง และ BOX คำสั่ง...