Символы (УГО) и схема созданы в PowerLogic. При этом стандартные земля и питание определены как Signal Pins, и на схеме эти пины не появятся. А по ГОСТу их надо показать, например, в виде таблицы.
Как это сделать ?
(Можно просто нарисовать таблицу и вписать ручками, но слишком велика вероятность ошибок, хочется это получить от PowerLogic)
Я в DxDesigner для этих целей включаю видимость значения атрибутов "SIGNAL" (описывающих подключение выводов земли, питания). Оно не совсем то, о чём Вы спрашиваете, но частично проблему решает.
Спасибо, не знаю, есть ли такая возможность в PowerLogic.
Если прописать выводы земли и питания в явном виде (т.е. если отказаться от Signal Pins), повысится вероятность ошибочного подключения этих выводов.
А можно ли получить репорт о Signal Pins ?
Цитата(Jul @ Oct 24 2006, 05:49)

Символы (УГО) и схема созданы в PowerLogic. При этом стандартные земля и питание определены как Signal Pins, и на схеме эти пины не появятся. А по ГОСТу их надо показать, например, в виде таблицы.
Как это сделать ?
(Можно просто нарисовать таблицу и вписать ручками, но слишком велика вероятность ошибок, хочется это получить от PowerLogic)
В принципе можно написать макрос для этого.
Но можно поступить и просто:
-открыть файл нетлиста, в нем практически в самом начале расписана каждая цепь, например для схемы из примеров PREVIEW:
*NET*
*SIGNAL*
GNDJ1.1 J1.2 R5.2 Q1.3 C8.2
C9.2 C2.2 C3.2 C4.2 C5.2
C6.2 C7.2 C1.2 C10.2 D2.K
D1.K U1.14 U2.14 U4.8 U5.7
U7.10 U6.7 Y1.2 U3.8 *SIGNAL*
+5VR1.2 J1.26 R2.2 Q1.2 C9.1
C2.1 C3.1 C4.1 C5.1 C6.1
C7.1 C1.1 R7.1 C10.1 U1.28
U2.28 U4.16 U5.14 U7.20 U6.14
Y1.4 U3.16 Т.е практически таблица с номерами компонентов и выводов подключенных к земле и питанию. Нужно только скопировать это в файл и форматировать, затем разместить в схему.
Спасибо, Александр, но способ через нетлист совсем не годится.
Потому как сигнальные выводы микросхем, резисторы-конденсаторы на схеме подключаются в явном виде, и их указывать в таблице не надо.
А вот Signal Pins - т.е. стандартные выводы земли и питания - подключаются неявно, через назначение Edit_Electrical, на схеме они не появляются. Вот их-то и надо прописать в таблице. А в списке цепей я никаким образом не могу разделить контакты подключенные разными способами.
Подскажите, как выделить контакты, прописанные в Signal Pins ?
Jul,
Вот скрипт, который находит сигнальные пины, но может формат отчета не совсем тот:
Dim signal As String
Sub Main
report = DefaultFilePath & "\report.rep"
Open report For Output As #1
Print #1, "Signal Pins for "; ActiveDocument; " on "; Date
sep = Chr(9)
item = 1
For Each comp In ActiveDocument.Components
For Each Pin In comp.Pins
signal = SigName(Pin)
If signal <> "" Then
Print #1, item;
Print #1, sep; Pin.Name;
Print #1, sep; comp.PartType;
Print #1, sep; signal;
Print #1
item = item + 1
End If
Next
Next
Close #1
Shell "notepad " & report, 1
End Sub
Function SigName (pin As Object) As String
Dim Gate As Object
Dim Net As Object
Dim Name As String
Name = ""
If Pin.Gate Is Nothing Then
If Pin.Net Is Nothing Then
Name = ""
Else
Name = Pin.Net.Name
End If
End If
SigName = Name
End Function
З.Ы. Автоматизация не имеет метода для выдачи сигнальных пинов, но вот цепи определяет как для явно подключенных выводов, так и для Signal Pins. Остается отфильтровать выводы, попадающие в гейты. В итоге получаем, что вывод, не попавший в гейт, но принадлежащий цепи -- это и есть Signal Pin.
Вот отчет для тестовой схемы:
Signal Pins for previewchange.sch on 11/08/06
1 U1.14 87C256 GND
2 U1.28 87C256 +5V
3 U2.14 87C256 GND
4 U2.28 87C256 +5V
5 U3.8 AM100415 GND
6 U3.16 AM100415 +5V
7 U4.8 AM100415 GND
8 U4.16 AM100415 +5V
9 U5.7 CD4001B GND
10 U5.14 CD4001B +5V
11 U6.7 CD4069 GND
12 U6.14 CD4069 +5V
13 U7.10 PAL16R8 GND
14 U7.20 PAL16R8 +5V
15 Y1.2 24-576MHZ GND
16 Y1.4 24-576MHZ +5V
Спасибо, Fellow, именно это мне и нужно !!!
И формат вполне читаемый.
helge12
Nov 10 2006, 10:16
Jul попробуй вот этот скрипт.
'This script add SignalPins tab.
'It will create reports in Text format.
'For better look, turn off 'Word Wrap' item in the Edit menu of Notepad and use Courier or any other fixed width font.
'Arrays of column name and widths. You can modify them to rename, shrink, or expand columns
Const Columns = Array("Поз.", "Вывод", "Цепь")
Const Widths = Array( 8, 6, 6, 22)
Sub Main
fname = ActiveDocument
If fname = "" Then
fname = "Untitled"
End If
report = DefaultFilePath & "\" & "Part Report1.rep"
Open report For Output As #1
'Output report header
Print #1, "Part Report for "; fname
Print #1
StatusBarText = "Generating report..."
'Output table header
CurCol = 0
For i = 0 to UBound(Columns)
OutCell Columns(i)
Next
Print #1
'Output table rows
For Each part in ActiveDocument.Components
CurCol = 0
If GetSignalPins(part).Count = 0 Then GoTo LL
For Each aPin In GetSignalPins(part)
CurCol = 1
OutCell2 part.Name
OutCell1 aPin.Number
OutCell3 ObjName(aPin.Net)
Print #1
Next aPin
Print #1
Print #1
LL:
Next part
Print #1
StatusBarText = ""
Close #1
'Do not forget quotes for file name!
Shell "Notepad " & Chr(34) & report & Chr(34), 1
End Sub
'Returns collection of signal pins in the given part
Function GetSignalPins(obj As Object, Optional Sorted As Boolean = False)
Set GetSignalPins = ActiveDocument.GetObjects(0)
For Each aPin In obj.Pins
If aPin.Gate Is Nothing And Not aPin.Net Is Nothing Then
GetSignalPins.Add aPin
End If
Next
If Sorted Then GetSignalPins.Sort
End Function
'Pins are not sorted by default (performance issue), so sort them explicitly in report
Function GetSortedPins(obj As Object)
Set GetSortedPins = obj.Pins
GetSortedPins.Sort
End Function
Function ObjName (obj As Object)
ObjName = IIf(obj Is Nothing, "", obj)
End Function
Dim CurCol As Integer 'Current column index staring from 0
Sub OutCell (txt As String)
w = Widths(CurCol)
txt = Left(txt, w)
Print #1, txt; Space(w - Len(txt)); " | ";
CurCol = CurCol + 1
End Sub
Sub OutCell1 (txt As String)
w = Widths(CurCol)
txt = Left(txt, w)
Print #1, txt; Space(w - Len(txt)); "= ";
CurCol = CurCol + 1
End Sub
Sub OutCell2 (txt As String)
w = Widths(CurCol)
txt = Left(txt, w)
Print #1, txt; Space(w - Len(txt)); "( ";
CurCol = CurCol + 1
End Sub
Sub OutCell3 (txt As String)
w = Widths(CurCol)
txt = Left(txt, w)
Print #1, txt; Space(w - Len(txt)); " ) ";
CurCol = CurCol + 1
End Sub
Спасибо, получается отлично !!!
В каком документе описано написание скриптов для PowerLogic?
Только на родном английском -
Power Logic / Help / Search / Script / Sax Basic Editor On-line Help
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.