Dalam Eagle saya sering memilih untuk merutekan beberapa kabel sendiri (power, xtal, UBS, dll), dan menyerahkan sisanya ke autorouter. Ketika saya tidak puas dengan hasilnya, saya akan melakukan beberapa rute sendiri, dan biarkan autorouter mencoba lagi.
Masalah saya adalah membatalkan pekerjaan autorouter, tanpa membatalkan pekerjaan saya sendiri. Cara dasar untuk melakukan ini adalah tidak menyimpan versi autoroutered, dan kemudian memuat papan lagi. Tetapi begitu saya membuat kesalahan dengan menyimpan versi yang di-autorout (dan membersihkan backup) saya masih ingin dapat kembali ke versi yang sebelumnya di-autorout.
Salah satu upaya untuk melakukan ini adalah mengidentifikasi semua kabel autorouted di ULP dan membuat string perintah untuk RIPUP segmen ini. Saya dapat mengatur ULP untuk mengidentifikasi kabel autorouted, misalnya dengan memberi mereka lebar yang berbeda. Tetapi perintah RIPUP tampaknya ripup segmen kawat yang dipilih DAN SEGMEN ADJACEN. Sejauh ini saya belum menemukan perintah yang hanya merobek segmen kawat yang dipilih.
Jadi saya kira saya punya dua pertanyaan: - Bagaimana Anda menggabungkan hand-routing dan auto-routing dalam cara yang berulang (trial-and-error)? - Apakah ada cara (mungkin menggunakan ULP dan perintah) untuk ripup subset segmen kawat?
(pembaruan) Saya mencoba pendekatan yang berlawanan: dalam ULP, kumpulkan semua segmen kawat yang ingin saya simpan, lakukan ripup penuh, dan kemudian kembalikan segmen kabel (menggunakan perintah ROUTE). Tidak berhasil, segmen harus dalam urutan tertentu untuk perintah rute (bukan urutan tempat ULP menemukannya :(), via harus dibuat terlebih dahulu, dan beberapa masalah lagi.
GRRRR, pasti ada cara mudah untuk melakukan ini, atau apakah saya terlalu optimis?
sumber
Jawaban:
Saya benci menjawab pertanyaan saya sendiri, tetapi ini dia. Saya harap saya tidak mendapatkan poin untuk menjawab, itu akan aneh, hanya karena menerima jawaban? (BTW, saya tidak mendapat jawaban di forum Element14.)
Solusinya adalah dengan menggunakan perintah DRAW, bukan ROUTE. DRAW akan menempatkan segmen kawat, tepat di tempat yang Anda tentukan (tidak seperti ROUTE, yang mencoba menyambung ke airwire yang tidak diretas. ROUTE pada dasarnya tidak berguna dalam skrip.). Masalah berikutnya adalah via: Saya tidak bisa (atau tidak mau) membedakan antara manual via dan autorouted via, jadi saya menyimpan semua via yang menghubungkan dua (atau lebih) segmen kawat manual. Via via lainnya dihapus.
Jadi yang dilakukan skrip terakhir saya adalah:
Perhatikan bahwa itu mungkin tidak akan berfungsi lebih dari dua lapisan, atau untuk hal lain selain segmen kawat pada lapisan tembaga.
IMHO seluruh konsep ULP elang dan bahasa perintah merepotkan. ULP berjalan dalam lingkungan baca-saja, satu-satunya cara itu dapat mempengaruhi sirkuit, papan atau pustaka adalah dengan membuat daftar perintah. Ini menghilangkan beberapa teknik pemrograman yang berguna, tetapi yang lebih buruk adalah bahwa perintah tidak dirancang agar mudah dibuat dari ULP. Anda memerlukan semua jenis transformasi (dalam hal ini: koordinat, nama bentuk) untuk menerjemahkan dari dunia ULP ke dunia CMD.
(sunting) Sebelum Anda menjalankan ULP ini, setel pilihan 'bengkokan kawat' untuk memungkinkan sudut yang berubah-ubah, jika tidak elang akan mencoba menyesuaikan kabel yang dibangkitkan dengan sudut yang dibolehkan, yang dapat mengakibatkan kekacauan berdarah. IMHO ini adalah contoh lain masalah dengan ULP / SCR.
Ini adalah kode ULP:
sumber
Wouter. Saya tidak melihat pertanyaan Anda sebelumnya karena saya di Masters minggu lalu.
Cara saya menangani ini adalah dengan menyimpan salinan papan ke nama yang berbeda tepat sebelum menjalankan autorouter. Saya selalu menamainya SAVE.BRD, yang bisa dihapus dengan aman begitu semuanya selesai.
Alur kerja perutean saya tampaknya sangat mirip milik Anda. Saya merutekan bagian-bagian penting secara manual, memastikan kelas-kelas jaring diatur secara wajar, kemudian jalankan autorouter. Lalu saya mencari masalah seperti di mana autorouter tidak dapat menemukan solusi, itu akhirnya melakukan sesuatu yang tidak nyaman, dll. Saya kembali ke versi yang disimpan (sebelum autoroute) membuat beberapa perubahan manual semoga sehingga autorouter tidak akan mendapatkan dalam masalah, lalu coba lagi. Ini mungkin diulang 5-10 kali, tergantung pada kompleksitas papan. Beberapa pass autoroute pertama sebagian besar untuk melihat apakah ada solusi dan kira-kira untuk menemukan titik masalah. Untuk itu saya bahkan tidak menggunakan pass optimasi. Autoroutes nanti adalah dengan optimasi penuh, yang bagi saya biasanya 8 lintasan dengan biaya berubah atas lintasan untuk mendapatkan karakteristik yang saya inginkan.
Meskipun saya melakukan save to SAVE.BRD sebelum setiap autoroute pass (dan kemudian membuka kembali file asli untuk melanjutkannya), saya mencoba untuk tidak melakukan save pada hasil autorouted sampai saya puas dengan semuanya. Menyimpan snapshot ke SAVE.BRD setiap kali adalah cadangan keselamatan jika jariku secara tidak sengaja melakukan save sebelum saya memikirkannya.
Akan lebih baik jika Eagle memiliki opsi ripup untuk pass autoroute terakhir, tetapi tidak ada hal seperti itu.
sumber
Jika file data Eagle mengikuti pendekatan yang sama dengan yang lama yang saya mainkan (mis. Anda yang lebih tua DOS Autotrax) maka setiap segmen trek memiliki garis untuk dirinya sendiri. Garis "berdiri sendiri" dan dapat diedit atau dihapus tanpa berdampak pada hal lain. Sistem "lebih baik" yang lebih baru mungkin tidak memiliki kesederhanaan yang begitu kuat.
Jika trek independen, seperti di atas, dan jika lebar trek unik, seharusnya [tm] mudah untuk mengidentifikasi segmen trek dan menghapus garis yang bersangkutan.
Memori redup memberi tahu saya bahwa pada satu tahap saya menulis rutin untuk mengidentifikasi label komponen dan mengubah ukuran, memutar dan memindahkannya relatif ke badan komponen. Identifikasi trek terdengar mudah dibandingkan. Simpan salinan sebelum menjalankan program !!! :-).
sumber