در نسخههای جدید KiCad، امکانات پیشرفتهای برای تعریف قوانین طراحی بر اساس ویژگیهای اشیاء (Object Properties) اضافه شده است. این ویژگی به طراحان اجازه میدهد تا با استفاده از برچسبها (Tags) و فیلترها، محدودیتهای دقیقی برای مسیرکشی، فاصلهگذاری، و سایر جنبههای طراحی برد تعیین کنند. در این قسمت از آموزش Kicad، با نحوه تعریف این قوانین، ایجاد فیلتر و اعمال آنها در محیط PCB آشنا میشوید.
خصوصیات زیر در عبارات قانون سفارشی میتوانند مورد آزمایش قرار بگیرند.
این خصوصیات بهتمامی اشیا PCB اعمال میشوند.
خصوصیت | نوع داده | توضیح |
Layer | string | لایه بردی که شی در آن قرار دارد. برای اشیایی که در بیشتر از یکلایه قرار دارند این خصوصیت لایه نخستین را برمیگرداند (برای مثال F.Cu برای اکثر پدها یا ویاها با سوراخهای عبوری). |
Locked | boolean | اگر شی قفل باشد شرط صحیح است. |
Parent | string | شناسه منحصربهفرد شی والد موردنظر ما را برمیگرداند. |
Position_X | dimension | موقعیت مبدأ شی در محور X است. دقت کنید که مرجع یک شی همیشه مشابه با مرکز کادر حصار شی نیست. برای مثال مبدأ یک فوتپرینت موقعیت مختصات (0,0) آن فوتپرینت در ویرایشگر فوتپرینت است؛ اما ممکن است فوتپرینت به نحوی طراحی شده باشد که این موقعیت در مرکز شکل کادر آن نباشد. |
Position_Y | dimension | موقعیت مبدأ شی در محور Y است. دقت کنید که Kicad همیشه از مختصات Y ای استفاده میکند که از بالابهپایین صفحه افزایش مییابد حتی درصورتیکه شما تنظیمات خود را طوری پیکربندی کرده باشید که مختصات Y از پایینبهبالا افزایش یابد. |
Type | string | شامل یکی از موارد زیر میشود: “Bitmap”, “Dimension”, “Footprint”, “Graphic”, “Group”, “Leader”, “Pad”, “Target”, “Text”, “Text Box”, “Track”, “Via”, or “Zone”. |
این خصوصیات به اشیا مسی که میتوانند یک گره اختصاصی (پدها، ویاها، مناطق و ترکها) داشته باشند اعمال میشوند.
خصوصیت | نوع داده | توصیف |
Net | integer | کد گره شی مسی. دقت کنید که کدها نباید وابسته به چیزی باشند تا بتوانند ثابت بمانند. اگر شما نیاز دارید تا به یک شی خاصی در یک قانون ارجاع بدهید، در عوض از Netname استفاده کنید. Net میتواند برای مقایسهکردن گرههای دو شی با بهرهوری بیشتری استفاده بشوند، برای مثال A.Net == B.Net سریعتر از A.NetName == B.NetName است. |
NetClass | string | نام کلاس گره برای شی مسی. نکته: کلاسهای گره باید در پنجره Board Setup قبل از اینکه در قوانین DRC استفاده بشوند، اعلام شوند. |
NetName | string | نام گره برای شی مسی. |
Curve_Points | integer | تعداد نقاط منحنی روی Teardropهای متصل به شی دیگر. |
Enable_Teardrops | boolean | در صورتی که Teardropها برای شی فعال شده باشند، صحیح است. |
Prefer_Zone_Connections | boolean | اگر “Prefer zone connections” برای شی تعیین شده باشد، صحیح است. |
Allow_Teardrops_To_Span_Two_Tracks | boolean | اگر خصوصیت “Allow teardrops to span two tracks” برای شی معین شده باشد، صحیح است. |
Best_Length_Ratio | double | بهترین نسبت طول teardropها بهاندازه شی برای teardropهای متصل به شی است. |
Best_Width_Ratio | double | بهترین نسبت ضخامت teardrop بهاندازه شی برای teardropهای متصل به شی است. |
Max_Length | dimension | حداکثر اندازه طول برای teardropهای متصل به شی است. |
Max_Width | dimension | حداکثر اندازه ضخامت برای teardropهای متصل به شی است. |
Max_Width_Ratio | double | حداکثر نسبت مجاز اندازه شی به ضخامت ترک برای teardropهای متصل به شی است. |
این خصوصیات به فوتپرینتها اعمال میشوند.
خصوصیت | نوع داده | توضیح |
Clearance_Override | dimension | فاصله مس (override) تنظیم شده برای فوتپرینت. |
Do_not_Populate | boolean | اگر مشخصه “Do not populate” معین شده باشد مقدار صحیح را بر می گرداند. |
Exclude_From_Position_Files | boolean | اگر مشخصه “Exclude from position files” معین شده باشد مقدار صحیح را بر می گرداند. |
Exclude_From_Bill_of_Materials | boolean | اگر مشخصه “Exculde from bill of materials” معین شده باشد مقدار صحیح را بر می گرداند. |
Exempt_From_Courtyard_Requirement | boolean | اگر مشخصه “Exempt from courtyard requirement” معین شده باشد مقدار صحیح را بر می گرداند. |
Keywords | string | “Keywords” از فوتپرینت کتابخانه. |
Library_Description | string | اتصال یا لینک به فوتپرینت کتابخانه در فرمت library_name:footprint_name |
Library_Link | string | اتصال یا لینک به فوتپرینت کتابخانه در فرمت library_name:footprint_name |
Not_in_Schematic | boolean | اگر مشخصه “Not in schematic” معین شده باشد مقدار صحیح را بر می گرداند. |
Orientation | double | جهت (چرخش) فوتپرینت به درجه. |
Reference | string | شناسه مرجع فوتپرینت. دقت کنید در حالیکه فوتپرینت یک مشخصه Reference دارد، بخش های زیرین فوتپرینت مثل پدها این مشخصه را ندارند. به منظور بررسی کردن احتمال اینکه آیا یک شی متعلق به فوتپرینت دارای یک مرجع مشخص هست یا نه از تابع memberOfFootprint(‘x’) استفاده کنید. |
Solderpaste_Margin_Override | dimension | مقدار حاشیه solder paste برای فوتپرینت. |
Solderpaste_Margin_Ratio_Override | dimension | نسبت حاشیه solder paste تنظیمی برای فوتپرینت. |
Thermal_Relief_Gap | dimension | فاصله ریلیف حرارتی تنظیمی برای فوتپرینت. |
Thermal_Relief_Width | dimension | ضخامت اتصال ریلیف حرارتی تنظیم شده برای فوتپرینت |
Value | string | محتویات فیلد “Value” فوتپرینت را برمی گرداند. |
Zone_Connection_Style | string | یکی از موارد “Inherited”, “None”, “Thermal reliefs” یا “Solid”. |
این خصوصیات به پدهای فوتپرینت اعمال میشوند.
خصوصیت | نوع داده | توصیف |
Clearance_Override | dimension | فاصله مس override تنظیمی برای پد. |
Fabrication_Property | string | یکی از موارد زیر می باشد: “None”, “BGA pad”, “Fiducial, global to board”, “Fiducial, local to footprint”, “Test point pad”, “Heatsink pad”, “Castellated pad”. |
Hole_Size_X | dimension | اندازه سوراخ مته کاری پد در محور X. |
Hole_Size_Y | dimension | اندازه سوراخ مته کاری پد در محورY. |
Orientation | double | جهت چرخش پد به درجه. |
Pad_Number | string | شماره “Number” یک پد که میتواند یک رشته باشد (برای مثال “A1” در یک BGA). |
Pad_Shape | string | یکی از موارد زیر می باشد: “Circle”, “Rectangle”, “Oval”, “Trapezoid”, “Rounded rectangle”, “Chamfered rectangle”, or “Custom”. |
Pad_To_Die_Length | dimension | خصوصیت “pad to die length“ یک پد که در واقع همان طول اضافه شده به گره پد در هنگام محاسبه طول گره است. |
Pad_Type | string | یکی از موارد زیر است: “Through-hole”, “SMD”, “Edge connector”, or “NPTH, mechanical” |
Pin_Name | string | نام پد (که معمولا نام پین مرتبط با آن در شماتیک است). |
Pin_Type | string | نوع اتصال الکتریکی پد هست (که معمولا از پین مربوطه در شماتیک آن گرفته میشود). این شامل یکی از موارد “Input”, “Output”, “Bidirectional”, “Tri-state”, “Passive”, “Free”, “Unspecified”, “Power input”, “Power output”, “Open collector”, “Open emitter”, or “Unconnected”” میشود. پین های دارای فلگ no-connection دارای یک پیشوند “+no_connect” خواهند بود که به رشته نوع پین اضافه میشود. برای مثال “passive+no_connect” با یک پین پسیو (غیرفعال مثل پایه یک مقاومت) به هماره فلگ no-connection منطبق خواهد شد. به منظور منطبق کردن یک نوع پین چه پین فلگ no-connection داشته باشد و چه نداشته باشد میتوانید از wildcard استفاده کنید: “passive*” پین های پسیو با و بدون فلگ no-connection را مچ و منطبق میکند. |
Corner_Radius_Ratio | double | برای پدهای مستطیلی با گوشه های رند، نسبت شعاع به اندازه مستطیل را برمی گرداند. |
Size_X | dimension | اندازه پد در محور X. |
Size_Y | dimension | اندازه پد در محور Y. |
Soldermask_Margin_Override | dimension | حاشیه لایه محافظ قلع تنظیمی برای پد. |
Solderpaste_Margin_Override | dimension | حاشیه لایه خمیر قلع تنظیمی برای پد. |
Solderpaste_Margin_Ratio_Override | dimension | نسبت حاشیه لایه خمیر قلع تنظیمی برای پد. |
Thermal_Relief_Gap | dimension | گپ یا فاصله ریلیف حرارتی تنظیمی برای پد. |
Thermal_Relief_Spoke_Angle | dimension | زاویه اتصال ریلیف حرارتی تنظیمی برای پد. |
Thermal_Relief_Spoke_Width | dimension | ضخامت اتصال ریلیف حرارتی برای پد. |
Zone_Connection_Style | string | شامل یکی از موارد زیر است: “Inherited”, “None”, “Thermal reliefs” or “Solid” |
این خصوصیات به ترکهای دارای انحنا و ترکهای معمولی اعمال میشود.
خصوصیت | نوع داده | توصیف |
Origin_X | dimension | مختصات x نقطه شروع. |
Origin_Y | dimension | مختصات y نقطه شروع. |
End_X | dimension | مختصات x نقطه پایان. |
End_Y | dimension | مختصات y نقطه پایان. |
Width | dimension | ضخامت ترک یا انحنا. |
این خصوصیات به ویاها اعمال میشود.
خصوصیت | نوع داده | توصیف |
Diameter | dimension | قطر پد ویا. |
Hole | dimension | قطر سوراخ نهایی شده ویا. |
Layer_Bottom | string | آخرین لایه در چیدمان لایه ویا. |
Layer_Top | string | اولین لایه در چیدمان لایه ویا. |
Via_Type | string | یکی از این موارد است: “Through”, “Blind/buried”, “Micro”. |
این خصوصیات به الگوهای تنظیمی اعمال میشوند.
خصوصیت | نوع داده | توصیف |
End_X | dimension | مختصات x نقطه پایان. |
End_Y | dimension | مختصات y نقطه پایان. |
Min_Amplitude | dimension | حداقل دامنه الگوی تنظیم. |
Max_Amplitude | dimension | حداکثر دامنه الگوی تنظیم. |
Tuning_Mode | string | یکی از موارد: “Single track”, “Differential pair”, “Diff pair skew” |
Initial_Side | string | یکی از موارد: “Left”, “Right”, “Default” |
Min_Spacing | dimension | حداقل فاصله الگوی تنظیم. |
Corner_Radius_% | integer | درصد شعاع گوشه الگوی تنظیم. |
Target_Length | dimension | طول هدف برای الگوی تنظیم. |
Target_Skew | dimension | انحراف هدف برای الگوی تنظیم. |
Override_Custom_Rules | boolean | اگر الگوی تنظیم قوانین DRC اختیاری را باطل کند مقدار صحیح را بر میگرداند. |
Single-sided | boolean | اگر الگوی تنظیم یک طرفه باشد مقدار صحیح را بر می گرداند. |
Rounded | boolean | اگر الگوی تنظیم از پیچ و تاب های انحنادار استفاده کند مقدار صحیح را برمی گرداند. |
این خصوصیات به مناطق مسی و غیرمسی و مناطق قانون (قبلا keepouts نامیده می شدند) اعمال میشوند.
خصوصیت | نوع داده | توصیف |
Clearance_Override | dimension | فاصله مسی override تنظیم شده برای منطقه. |
Min_Width | dimension | حداقل ضخامت مجاز مناطق پرشده در منطقه. |
Name | string | نام تعیین شده توسط کاربر (به طور پیشفرض خالی است). |
Pad_Connections | string | یکی از موارد زیر است: “Inherited”, “None”, “Thermal reliefs”, “Solid”, or “Thermal Reliefs for PTH” |
Priority | integer | اولویت سطح منطقه مسی. |
Thermal_Relief_Gap | dimension | گپ یا فاصله ریلیف حرارتی تنظیم شده برای منطقه مسی. |
Thermal_Relief_Width | dimension | ضخامت اتصال ریلیف حرارتی تنظیم شده برای منطقه مسی. |
این خصوصیات به خطوط گرافیکی، انحناها، دوایر، مستطیل و پلیگان ها اعمال میشوند.
Property | Data type | Description |
Angle | dimension | زاویه یک انحنا. |
End_X | dimension | مختصات x نقطه پایانی. |
End_Y | dimension | مختصات Y نقطه پایانی. |
Filled | boolean | اگر شکل پر شده باشد مقدار صحیح را بازمی گرداند. |
Line_Width | dimension | ضخامت اضلاع مختلف شکل است. |
Line_Style | string | یکی از موارد “Solid”, “Dashed”, “Dotted”, “Dash-Dot”, “Dash-Dot-Dot” است. |
Shape | string | یکی از موارد “Segment”, “Rectangle”, “Arc”, “Circle”, “Polygon”, or “Bezier” است. |
Start_X | dimension | نقطه شروع محور x است. |
Start_Y | dimension | نقطه شروع محور Y است. |
این خصوصیات به اشیا متن (فیلدهای فوتپرینت، لیبل های متن آزاد و غیره) اعمال میشوند.
خصوصیت | نوع داده | توصیف |
Bold | boolean | اگر متن Bold باشد مقدار صحیح را بازمی گرداند. |
Height | dimension | ارتفاع یک کاراکتر در یک فونت. |
Horizontal_Justification | string | تراز متن افقی: یکی از موارد “Left”, “Center”, “Right” است. |
Italic | boolean | اگر متن کج یا Italic باشد مقدار صحیح را برمی گرداند. |
Knockout | boolean | اگر برای متن خصوصیت knockout تنظیم شده باشد مقدار صحیح را برمی گرداند. |
Mirrored | boolean | اگر متن آیینه شده باشد مقدار صحیح را برمی گرداند. |
Text | string | محتویات شی متن. |
Thickness | dimension | ضخامت اجزای فونت. |
Width | dimension | ضخامت یک کاراکتر در فونت. |
Vertical_Justification | string | تراز متن عمودی: یکی از “Top”, “Center”, “Bottom” |
Visible | boolean | اگر شی متن قابل مشاهده باشد (نمایش داده شده) مقدار صحیح را برمی گرداند. |
توابع زیر میتوانند روی اشیا در عبارات قانون سفارشی فراخوانی شوند:
Function | Objects | Description |
enclosedByArea(‘x’) | A or B | اگر تمامی شی داخل منطقه قانون یا منطقه مسی باشد مقدار صحیح را برمی گرداند. دقت کنید که enclosedByArea() کندتر از intersectsArea(). است. هر کجا که ممکن است از intersectsArea() استفاده کنید. |
existsOnLayer(‘layer_id’) | A or B | اگر شی روی لایه برد مورد نظر موجود باشد مقدار صحیح را برمی گرداند. layer_id یک رشته متن شامل اسم یک لایه برد است. |
fromTo(‘x’, ‘y’) | A or B | اگر شی روی مسیر مس بین پدهای مورد نظر وجود داشته باشد مقدار صحیح را برمی گرداند. X و Y نام کامل پدها در طراحی هستند مانند ‘R1-Pad1’. |
getField(‘x’) | A or B | مقدار فیلد x در شی را بازمی گرداند. دقت کنید که تنها فوتپرینتها دارای فیلد هستند، بنابراین هیچ فیلدی بازگردانده نمیشود مگر اینکه شی یک فوتپرینت باشد. |
inDiffPair(‘x’) | A or B | اگر شی بخشی از یک زوج تفاضلی باشد و نام پایه زوج با گزاره x همخوانی داشته باشد مقدار صحیح بازگشت داده میشود. برای مثال inDiffPair(‘/USB_’) یا inDiffPair(‘/USB’) هر دو برای اشیایی که در گره های /USB_P و USB_N هستند مقدار صحیح را برمی گردانند. توجه کنید که این در صورتی که گره مورد نظر یک زوج تفاضلی نباشد مقدار غیرصحیح بازگردانده میشود به این معنی که گره مچ شده ای با پلاریته معکوس وجود ندارد. بنابراین روی یک برد با گره نامگذاری شده /USB_P اما بدون گره نامگذاری شده دیگر /USB_N این تابع مقدار غیرصحیح را بازمی گرداند. |
insideArea(‘x’) | A or B | اگر هر بخش شی در داخل منطقه قانون یا منطقه مسی باشد مقدار صحیح بازگشت داده میشود. اسامی منطقه قانون و مسی در پنجره های خصوصیات مربوط به خود میتوانند تنظیم شوند. اگر منطقه مورد نظر یک منطقه مسی پرشده باشد، تابع داخل بودن تمام محیط مس پر شده در منطقه را بررسی میکند و نه داخل بودن شی در کادر منطقه را. فرم منسوخ شده، بجای آن از intersectsArea() استفاده کنید. |
insideCourtyard(‘x’) insideFrontCourtyard(‘x’) insideBackCourtyard(‘x’) | A or B | در صورتی که هر بخشی از شی در داخل حریم فوتپرینت مورد نظر باشد مقدار صحیح را برگشت میدهد. نوع اول هم حریم لایه بالا و هم پایین را بررسی میکند و اگر شی در داخل هرکدام قرار داشته باشد تابع مقدار صحیح را بازگشت میدهد، نوع دوم و سومی حریم روی یک لایه خاص را بررسی میکند. فوتپرینت میتواند توسط شناسه مرجع یا ID کتابخانه در فرمت <footprint_library>:<footprint_name> مشخص گردد. Wildcard های * و? میتوانند در گزاره زیر استفاده بشوند: insideCourtyard(‘R?’) تمامی فوتپرینتها که دارای مرجع R به همراه یک کاراکتر تکی هستند را بررسی میکند درحالیکه insideCourtyard(‘Resistor_SMD:*’) تمامی فوتپرینتها در کتابخانه Resistor_SMD را بررسی میکند. این فرم منسوخ شده، از intersectsCourtyard(), intersectsFrontCourtyard() ,intersectsBackCourtyard() استفاده کنید.
|
intersectsArea(‘x’) | A or B | در صورتی که هر قسمت از شی در داخل منطقه قانون یا پلیگان دارای نام قرار داشته باشد مقدار صحیح بازگشت داده میشود. اسامی منطقه قانون و پلیگان میتوانند در پنجره های خصوصیت خود وارد شوند. در صورتی که منطقه مورد نظر یک پلیگان مسی پر شده باشد، تابع داخل بودن شی را در هر قسمتی از مس پر شده پلیگان بررسی میکند و نه داخل بودن شی در کادر منطقه را. |
intersectsCourtyard(‘x’) intersectsFrontCourtyard(‘x’) intersectsBackCourtyard(‘x’) | A or B | در صورتی که هر بخش از شی در داخل حریم فوتپرینت مورد نظر باشد مقدار صحیح را بازگشت میدهد. اولین نوع حریم و کادر در هر دو لایه بالا و پایین را بررسی میکند و در صورتی که شی در داخل یکی از آنها باشد مقدار صحیح را بازگشت میدهد. نوع دوم و سوم قرار داشتن حریم روی یک لایه مشخص را بررسی میکنند. فوتپرینت میتواند با شناسه مرجع یا ID کتابخانه در فرمت <footprint_library>:<footprint_name> مشخص شود. Wildcard های * و ؟ میتوانند در گزاره insideCourtyard(‘R?’) استفاده بشوند که تمامی فوتپرینتها با مراجعی که دارای R به همراه یک کاراکتر تکی هستند را بررسی میکند در حالیکه insideCourtyard(‘Resistor_SMD:*’) تمامی فوتپرینتها در کتابخانه Resistor_SMD را بررسی میکند. |
isBlindBuriedVia() | A or B | در صورتی که شی یک ویا buried/blind باشد مقدار صحیح را بازگشت میدهد. |
isCoupledDiffPair() | AB | در صورتی که دو شی تحت آزمایش بخشی از زوج تفاضلی مشابه بوده اما با پلاریته های معکوس باشند مقدار صحیح را بازگشت میدهد. برای مثال اگر A در گره /USB+ و B در گره /USB- باشد تابع مقدار صحیح را بازگشت میدهد. |
isMicroVia() | A or B | اگر شی یک میکرو ویا باشد مقدار صحیح را بازگشت میدهد. |
isPlated() | A or B | اگر شی یک سوراخ متالیزه باشد (چه در پد و چه در ویا) مقدار صحیح بازگشت داده میشود. |
memberOf(‘x’) | A or B | در صورتی که شی عضوی از گروه نامگذاری شده x باشد مقدار صحیح بازگشت داده میشود. منسوخ شده، بجای آن از memberOfGroup() استفاده کنید. |
memberOfGroup(‘x’) | A or B | اگر شی یکی از اعضای گروه x باشد مقدار صحیح را بازگشت میدهد. |
memberOfFootprint(‘x’) | A or B | اگر شی عضوی از یک فوتپرینت مفروض باشد مقدار صحیح بازگشت داده میشود. فوتپرینت میتواند به وسیله شناسه مرجع یا ID کتابخانه در فرمت <footprint_library>:<footprint_name> مشخص شود. |
memberOfSheet(‘x’) | A or B | در صورتی که شی عضوی از یک صفحه شماتیک نامگذاری شده x باشد مقدار صحیح بازگشت داده میشود. |
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.