Kicad از متغیرهای متن پشتیبانی میکند. این قابلیت به شما اجازه میدهد تا نام متغیر را با یکرشته متن تعریف شده جایگزین کنید. این جایگزینی هر جایی که نام متغیر در داخل متن جایگزینی متغیر $ {VARIABLENAME} استفاده شود اتفاق میافتد.
شما میتوانید متغیرهای متن پروژه را در پنجرههای board setup و شماتیک تعریف کنید. متغیرهای متن پروژه برای کل پروژه تعریف شدهاند؛ بنابراین متغیر متن پروژهای که در ویرایشگر شماتیک تعریف شده است میتواند در ویرایشگر برد نیز استفاده شود.
تعدادی متغیرهای متن سیستمی نیز وجود دارد. متغیرهای متن سیستمی میتوانند در برخی از محتویات متن موجود بوده و در برخی دیگر موجود نباشند. متغیرهای زیر میتوانند در متن PCB، متن فوتپرینت، فیلدهای فوتپرینت و فیلدهای صفحه ترسیم استفاده بشوند. تعدادی از متغیرها نیز وجود دارند که میتوانند در ویرایشگر شماتیک استفاده شوند.
نام متغیر | توضیح |
COMMENT1 – COMMENT9 | محتویات فیلد Comment<n> صفحه ترسیم |
COMPANY | محتویات فیلد Company صفحه ترسیم |
CURRENT_DATE | تاریخ امروز به فرمت ISO |
FILENAME | نام فایل برد به همراه یک پسوند فایل |
FILEPATH | مسیر کامل فایل برد به همراه یک پسوند |
ISSUE_DATE | محتویات فیلد Issue Date صفحه ترسیم |
KICAD_VERSION | ورژن کنونی Kicad. این متغیر تنها در فیلدهای صفحه ترسیم موجود هست. |
LAYER | لایه شی. در فیلدهای فوتپرینت این لایه فوتپرینت والد (parent) است. در فیلدهای صفحه ترسیم این مورد به لایه ترسیم مقرر میشود. |
PAPER | اندازه صفحه برگه کنونی. این متغیر تنها در فیلدهای صفحه ترسیم موجود هست. |
PROJECTNAME | نام پروژه بدون یک پسوند فایل |
REVISION | محتویات فیلد Revision برگه ترسیم |
TITLE | محتویات فیلد Title برگه ترسیم |
<variablename> | محتویات متغیر متن پروژه <variablename>. |
<fieldname> | محتویات فیلد فوتپرینت <fieldname>. فیلدها تنها میتوانند از داخل شی والد (parent) خود در دسترس قرار بگیرند بنابراین فیلدهای فوتپرینت میتوانند از دیگر فیلدها یا متن داخل فوتپرینت در دسترس باشند. هر دو فیلدهای فوتپرینت داخلی و فیلدهای تعریفی کاربر از سمبل مربوطه در دسترس هستند. فیلدهای فوتپرینت داخلی از تمامی حروف بزرگ استفاده میکنند. برای مثال برای دسترسی به یک مقدار فوتپرینت از ${VALUE} استفاده کنید. فیلدهای فوتپرینت داخلی موارد زیر هستند: FOOTPRINT_LIBRARY, FOOTPRINT_NAME, LAYER, NET_CLASS(<pad_number>), NET_NAME(<pad_number>), PIN_NAME(<pad_number>), REFERENCE, SHORT_NET_NAME(<pad_number>), VALUE. |
<refdes>:<fieldname> | محتویات فیلد <fieldname> در <refdes> فوتپرینت. هر دو فیلدهای تعریفی کاربر و فوتپرینت داخلی از سمبل مربوطه موجود هستند. فیلدهای فوتپرینت داخلی از لغات بزرگ استفاده میکنند. برای مثال به منظور دسترسی به مقدار U1 از ${U1:VALUE} استفاده کنید. فیلدهای فوتپرینت داخلی موارد زیر هستند: FOOTPRINT_LIBRARY, FOOTPRINT_NAME, LAYER, NET_CLASS(<pad_number>), NET_NAME(<pad_number>), PIN_NAME(<pad_number>), REFERENCE, SHORT_NET_NAME(<pad_number>), VALUE. |
سیستم قانون طراحی سفارشی Kicad امکان ایجاد قوانین طراحی که نسبت به قوانین کلی و عمومی در صفحه Constraints پنجره Board Setup مشخصتر هستند را فراهم میکند. قوانین طراحی سفارشی کاربردهای وسیعی دارند؛ اما در کل آنها بهمنظور اعمال قوانین خاصی به یک قسمت برد مثل یک گره خاص یا کلاس گره، یک منطقه خاص و یا یک فوتپرینت خاص استفاده میشوند.
قوانین طراحی در یک فایل جداگانه با پسوند Kicad_dru ذخیره میشوند. زمانی که شما شروع به اضافهکردن قوانین سفارشی به یک پروژه میکنید این فایل به شکل خودکار به یک پروژه اضافه میشود. اگر شما در حال استفادهکردن از قوانین سفارشی در طراحی خود هستید، زمانی که بکآپ میگیرید یا به یک سیستم کنترل ورژن کامیت میکنید (نرمافزار Git) از ذخیرهشدن فایل kicad_dru به همراه kicad_pcb و kicad_pro اطمینان حاصل کنید.
ویرایشگر قوانین سفارشی در پنجره Board Setup قرار دارد و یک ویرایشگر متن را برای واردکردن قوانین طراحی، یک بررسیکننده متن را برای امتحانکردن درستی قوانین سفارشی خودتان و نشاندادن هر خطایی به همراه یک پنجره کمکی متن که شامل مرجعی سریع به زبان قوانین سفارشی و برخی از قوانین نمونه است را برای شما فراهم میکند.
ویرایشگر قوانین سفارشی تکمیلسازی خودکار حساس به متن را نیز فراهم میآورد تا خصوصیات و لغات کلیدی معتبر را به شما پیشنهاد بدهد. منوی پیشنهاد تکمیلسازی به شکل خودکار ظاهر میشود هرچند که به شکل دستی با فشردن کلید Ctrl+Space نیز میتواند باز شود.
استفاده از دکمه Check rule syntax پس از ویرایش قوانین سفارشی برای اطمینان حاصلکردن از اینکه هیچ خطایی در متن وجود ندارد میتواند مفید باشد. در صورت وجود هر خطایی در قوانین سفارشی، اجرای بررسیکننده قانون طراحی با مشکل روبرو خواهد شد.
زبان قانون سفارشی در KiCad مبتنی بر عبارات S است و امکان تعریف قوانین طراحی پیشرفتهای را فراهم میکند که با محدودیتهای داخلی پیشفرض قابل بیان نیستند. هر قانون شامل یک condition (برای تعیین موارد تطابق) و یک constraint (برای اعمال محدودیت) است.
قواعد نگارشی این زبان شامل موارد زیر است:
از پرانتزها برای تعریف ساختار استفاده میشود که باید بهدرستی جفت باشند.
کلمات کلیدی و مقادیر با فاصله (space، تب، یا newline) از هم جدا میشوند.
رشتههای بدون فاصله میتوانند بدون نقلقول نوشته شوند؛ اما رشتههای دارای فاصله باید با “ یا ‘ محصور شوند.
نقلقولهای تودرتو با ترکیب ” و ‘ قابل استفاده هستند.
استفاده از خطوط جدید بین بندها ضروری نیست اما برای خوانایی توصیه میشود.
در مستندات، مقادیر داخل < >
اجباری و مقادیر داخل [ ]
اختیاری یا وابسته به شرایط هستند.
فایل Custom Rules باید با یک هدر ورژن که ورژن زبان قوانین را تعریف میکند شروع شود. از Kicad 8.0 ورژن 1. است. متن هدر ورژن (version <number>) می باشد. بنابراین در Kicad 8.0 هدر باید بخواند:
1 | (Version 1) |
پس از هدر نسخه، میتوانید هر تعداد قانون دلخواه وارد کنید. ارزیابی قوانین بهصورت معکوس انجام میشود؛ یعنی آخرین قانون نوشتهشده، ابتدا بررسی میشود. زمانی که یک قانون با اشیای مورد آزمایش مطابقت پیدا کند، دیگر قوانین بررسی نمیشوند. بنابراین، باید قوانین خاصتر را بعد از قوانین عمومیتر در فایل قرار دهید تا اولویت بالاتری داشته باشند.
مثال: اگر قانونی برای فاصله ترکها در گره HV دارید و قانونی دیگر برای همه اشیای داخل یک منطقه، قانون مربوط به HV باید پایینتر (یعنی بعدتر) نوشته شود تا اول بررسی شود.
هر قانون شامل موارد زیر است:
یک نام (برای نمایش در گزارش DRC)
یک یا چند بند constraint (برای تعریف محدودیت)
بند condition (اختیاری، برای تعیین هدف قانون)
بند layer (اختیاری، برای مشخصکردن لایهها)
بند severity (اختیاری، برای تعیین شدت خطا)
1 2 3 4 5 6 7 8 9 | (rule <name> [(severity <severity>)] [(layer <layer_name>)] [(condition <expression>)] (constraint <constraint_type> [constraint_arguments])) |
فایل قوانین سفارشی ممکن است شامل کامنتها برای توصیف قوانین باشند. کامنتها بهوسیله هر خط که با کاراکتر # شروع میشوند (شامل فاصله نمیشود) نشان داده میشوند. شما میتوانید ctrl + / را برای کامنت کردن و یا از کامنت برداشتهشدن خطوط به شکل خودکار فشار دهید.
1 2 3 | # Clearance for 400V nets to anything else (rule HV (condition "A.NetClass == 'HV'") (constraint clearance (min 1.5mm))) |
بند layer تعیین میکند که قانون بر روی چه لایهای عمل میکند. درحالیکه لایه اشیا میتوانند در بند condition همانطور که در زیر توضیح داده شده آزمایش شوند، استفاده از بند layer بهرهوری بیشتری دارد.
مقدار در بند layer میتواند نام هر لایه بردی باشد، لغات کلیدی میانبر outer برای تطابقدادن لایههای مسی بالا و پایین (F.Cu و B.Cu) و inner برای تطابقدادن هر لایه مسی داخلی است.
اگر بند layer حذف شود قانون بهتمامی لایهها اعمال خواهد شد.
تعدادی مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # Do not allow footprints on back layer (no condition clause means this rule always applies) (rule "Top side footprints only" (layer B.Cu) (constraint disallow footprint)) # This rule does the same thing, but is less efficient (rule "Top side footprints only" (condition "A.Layer == 'B.Cu'") (constraint disallow footprint)) # Larger clearance on outer layers (inner layer clearance set by board minimum clearance) (rule "clearance_outer" (layer outer) (constraint clearance (min 0.25mm))) |
بند severity هر موقع قانون نقض شود، شدت نقض DRC را تعیین میکند.
مقادیر ممکن error , warning, ignore و exclusion هستند. قوانین نادیده گرفته شده توسط مسیریاب تعاملی نظارت نمیشوند و نقض قوانین در پنجره DRC نشان داده نمیشوند اگرچه قوانین نادیده گرفته شده برای منطبق کردن ارزیابی میشوند و بنابراین هنوز میتوانند قوانین قبلی را باطل کنند. قوانین Errors, warnings و excluded همگی توسط مسیریاب تعاملی نظارت میشوند و نقض قوانین زمانی که فیلترهای مناسب انتخاب شده باشند در پنجره DRC نمایش داده میشوند.
بند condition مشخص میکند که یک قانون طراحی به کدام هدف یا اشیا اعمال شود. اگر قانون بند condition نداشته باشد، بدون قید به همه اشیا اعمال میشود. شرطها به صورت رشتهای (درون کوتیشن) نوشته میشوند و هنگام بررسی جفت اشیا توسط بررسیکننده قوانین طراحی، ارزیابی میگردند.
در شرایط، اشیای در حال بررسی با نمادهای A و B شناخته میشوند و ترتیب آنها اهمیتی ندارد. شرط باید به یک مقدار بولین (true یا false) ختم شود. اگر نتیجه true باشد، قانون روی آن جفت شی اعمال میشود.
هر شی دارای ویژگیها (properties) و توابع (functions) خاصی است که میتوان در شرطها استفاده کرد. قالب نوشتار به شکل <object>.<property>
یا <object>.<function>(arguments)
است.
خصوصیات و توابع شی با استفاده از بولین و عملگرهای تناسبی برای استنتاج به یک عبارت بولین، مقایسه میشوند. از عملگرهای زیر پشتیبانی میشود:
== | مساوی با |
!= | مساوی نیست با |
>, >= | بزرگتر یا بزرگتر مساوی |
<, <= | کوچکتر یا کوچکتر مساوی |
&& | و |
|| | یا |
! | نفی (تکی) |
برای مثال A.NetClass == ‘HV’ تنها به مواردی اعمال میشود که بخشی از کلاس گره “HV” هستند و A.NetClass != B.NetClass به مواردی اعمال میشود که در کلاسهای گره متفاوتی هستند. پرانتزها میتوانند برای شفافکردن ترتیب عملیات ها در عبارات پیچیده استفاده بشوند؛ اما وجودشان الزامی نیست. تمامی عملگرهای بولین دارای اولیت مشابهی هستند و به ترتیب چپ به راست ارزیابی میشوند.
برخی از خصوصیات نمایانگر یک اندازهگیری فیزیکی مثل اندازه، زاویه، طول، موقعیت و غیره هستند. در این خصوصیات unit suffixes (پسوندهای واحد) در زبان قوانین سفارشی میتوانند برای مشخصکردن اینکه چه واحدهایی در حال استفادهشدن هستند، مورداستفاده قرار بگیرند. اگر هیچ پسوند واحدی استفاده نشود ارائه (شکل نمایش) داخلی آن خصوصیت در عوض آن استفاده خواهد شد (نانومتر برای فاصلهها و درجه برای زاویهها). از پسوندهای زیر پشتیبانی میشود:
mm | Millimeters |
mil, th | Thousandths of an inch (mils) |
in, “ | Inches |
deg | Degrees |
rad | Radians |
شروط عددی میتوانند از عبارات ریاضی ساده استفاده کنند برای مثال (condition “A.Hole_Size_X == 1.0mm + 0.1mm”).
بند constraint در قوانین طراحی، رفتار اعمال محدودیت بر اشیایی که با شرایط خاصی مطابقت دارند را تعریف میکند. هر محدودیت شامل یک نوع (constraint type) و یک یا چند گزاره است که رفتار آن را مشخص میکنند. یک قانون ممکن است چندین محدودیت داشته باشد (مثل فاصلهی مجاز یا ضخامت ترک).
محدودیتها معمولاً شامل مقادیر حداقل (min)، حداکثر (max) و بهینه (opt) هستند. مقادیر min و max برای بررسیهای DRC به کار میروند و مقدار opt برای ارائه مقدار پیشفرض مناسب در برخی ابزارها (مثل مسیریاب زوج تفاضلی) استفاده میشود. تا زمانی که مقدار بین min و max باشد، خطایی تولید نمیشود.
این مقادیر بهصورت (min <مقدار>)، (opt <مقدار>)، و (max <مقدار>) تعریف میشوند. همچنین میتوان از عبارات سادهی ریاضی در تعیین مقدار عددی محدودیتها استفاده کرد، مانند:
1 | (constraint clearance (min 0.5mm + 0.1mm)) |
نوع محدودیت | نوع گزاره (Argument) | توصیف |
---|---|---|
annular_width | min/opt/max | ضخامت حلقه ویاها را بررسی میکند. |
assertion | boolean expression | صحیح بودن عبارت بولین را بررسی میکند. اگر عبارت صحیح نباشد یک خطای DRC تولید خواهد شد. این عبارت میتواند از هر خصوصیت لیست شده در بخش Object Properties استفاده کند. |
clearance | min | فاصله الکتریکی بین اشیا مسی با گرههای متفاوت را مشخص میکند. (اگر دوست دارید فاصله بین اشیا را سوای نوع گره مشخص کنید، physical_clearance را ببینید.) بهمنظور مجاز کردن اشیا مسی برای هم مرز شدن و برخورد داشتن، یک محدودیت فاصله با مقداری کمتر از صفر وارد کنید (مثلاً -1 ). |
connection_width | min | ضخامت اتصالات بین پدها و مناطق را بررسی میکند. برای هر اتصال پدی که باریکتر از مقدار min باشد یک خطا تولید خواهد شد. |
courtyard_clearance | min | فاصله بین حریم فوتپرینت را بررسی کرده و درصورتیکه فاصله دو حریم کمتر از مقدار min باشد یک خطای ارور تولید خواهد شد. اگر فوتپرینتی دارای یکشکل حریم نباشد هیچ خطایی از این محدودیت تولید نخواهد شد. بهمنظور مجاز کردن حریم اشیا برای هم مرز شدن یا برخورد یک محدودیت courtyard_clearance با مقدار min کمتر از صفر (برای مثال -1) ایجاد کنید. |
diff_pair_gap | min/opt/max | فاصله بین ترکهای کوپل یا مزدوج شده در یک زوج تفاضلی را بررسی میکند. ترکهای کوپل شده بخشهایی هستند که با همدیگر موازی هستند. فاصله زوج تفاضلی روی قسمتهای کوپل نشده یک زوج تفاضلی (برای مثال پایه گیری از یک قطعه) تست و امتحان نمیشود. |
diff_pair_uncoupled | max | فاصلهای که در آن یک زوج تفاضلی از دیگر پلاریته ترک در جفت کوپل نشده کشیده میشود (برای مثال جایی که جفت از یک قطعه پایه گیری میشود یا هنگامی که در عبور از شی دیگری مثل یک ویا کوپلاژ خود را از دست میدهد.) |
disallow |
| عدم مجاز بودن یک یا چند شی که با فاصله از هم جدا میشوند را تعیین میکند. برای مثال (constraint disallow track) یا (constraint disallow track via pad). اگر یک شی از این نوع با شرط قانون منطبق شود، یک خطای DRC تولید خواهد شد. این محدودیت بهمانند قانون keepout منطقه است با این تفاوت که میتواند برای محدودیتهای keepout مشخصتری استفاده شود. |
edge_clearance | min/opt/max | فاصله بین اشیا و لبه برد را بررسی میکند. این مورد میتواند بهعنوان “تلرانس ساخت” متصور شود؛ زیرا که لبه برد شامل تمام آیتمهای گرافیکی روی لایه Edge.Cuts و نیز هر سوراخ پد بیضی گون خواهد بود. بهمنظور مجاز دانستن هم مرزی و برخورد با لبه برد، محدودیت edge_clearance با مقدار min کمتر از صفر ایجاد کنید. |
hole_clearance | min | فاصله بین یک سوراخ پد یا ویا و اشیا مسی با یک گره متفاوت را بررسی میکند. فاصله از قطر سوراخ اندازهگیری میشود و نه مرکز آن. |
hole_size | min/max | اندازه (قطر) یک سوراخ در پد یا ویا را بررسی میکند. برای سوراخهای بیضی گون، قطر کوچکتر (minor) در برابر مقدار min (اگر وارد شده باشد) امتحان خواهد شد و قطر بزرگتر (major) در برابر مقدار max امتحان خواهد شد (اگر معین شده باشد). |
hole_to_hole | min | فاصله بین سوراخهای پد که به شکل مکانیکی سوراخکاری شدند و ویاها را بررسی میکند. این فاصله بین قطرهای سوراخ اندازهگیری میشود و نه بین مرکز آنها. این محدودیت تنها برای محافظت از مته هست. فاصله بین ویاهای میکرو سوراخ شده با لیزر و دیگر سوراخهای متهکاری شده غیرمکانیکی بررسی نشده و فاصله بین اشکال بیضی گون و دیگر سوراخهای متهکاری شده با روش غیرمکانیکی نیز بررسی نمیشوند. |
length | min/max | طول مسیر کشیده شده کل برای گرههایی که منطبق با شرط قانون هستند را بررسی میکند. درصورتیکه هر گره از مقدار min کمتر بوده و از مقدار max بیشتر باشد یک خطای ارور تولید میشود. این محدودیت یک طول هدف را نیز معین میکند که توسط ابزار تنظیم طول برای هر گرهای که این قانون روی آن منطبق باشد قابل تنظیم است. |
min_resolved_spokes | 0, 1, 2, 3, 4 | حداقل تعداد اتصالات یک پد (اسپوکها) را بررسی میکند. اگر تعداد اسپوکهای متصل به یک پد کمتر از مقدار تعیین شده باشد، خطا ایجاد میشود. |
physical_clearance | min | فاصله بین دو شیء روی هر لایه، حتی غیرمسی، را بررسی میکند. این تست عمومیتر است اما نسبت به تست clearance کندتر است. |
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.