Menelusuri silikon dalam format hackathon. Tanpa Desain Fisik, Tidak Ada iPhone



Apakah semua orang menonton film Bung tentang startup Silicon Valley? Apakah Anda tahu startup Lembah mana yang paling silikon pada tahun 1977? Itu Silicon Valley Research, juga dikenal sebagai SVR dan Silvar-Lisco. Startup membuat program yang secara otomatis menempatkan transistor di situs chip dan menghubungkannya dengan trek. Startup go public dan bahkan hidup sampai abad ke-21 , tetapi tidak dapat bersaing dengan para pemimpin baru - pertama Daisy / Mentor / Valid, dan kemudian Synopsys dan Cadence.

Program yang dilakukan SVR disebut program penempatan dan penelusuran, dalam English Place & Route - P&R. Mereka sangat meningkatkan produktivitas tenaga kerja para insinyur - sebelum program P&R, gambar-gambar topeng chip dilem dari karton warna (Intel 4004), digambar dengan pensil di atas kertas, atau menjalankan kursor pada layar teks dan menghubungkan blok-blok elementer yang diwakili oleh bintang-bintang dengan plus dan minus (ini adalah bagaimana chip dirancang di IBM / 370 komputer Amdahl yang kompatibel, kerabat canggih komputer Uni Soviet Uni Eropa).

SVR didirikan oleh profesor Stanford, Bill van Klimpat , yang saya kenal secara pribadi, karena ia adalah investor malaikat dan anggota dewan direksi startup saya sendiri. Bill secara berkala membesarkan saya karena perilaku buruk di pertemuan dan penundaan, dan juga bercerita tentang pengadilan paten, di mana ia terus-menerus menjadi saksi ahli.

Oleh karena itu, ketika di Kazan Innopolis saya diminta untuk mengatur proyek hackathon mereka untuk siswa pada CASE Tools, saya ingat Bill dan menyarankan untuk membuat program routing minimal pada hackathon. Posting ini adalah laporan hasil hackathon eksperimental ini. Mereka juga mungkin layak dibahas pada konferensi zoom di Innopolis tentang proyek-proyek Open Source, yang akan berlangsung dalam seminggu .



Memahami algoritma desain fisik microchip adalah kompetensi inti. Di semua tim desain chip di Apple, NVidia, Intel, AMD, Cisco, Juniper, Huawei, Samsung, Tesla, Google, MediaTek, Broadcom - ada grup Tim PD (Tim Desain Fisik), yang bekerja dengan alat dari Synopsys dan Cadence, siapa yang melakukannya Selain itu, alat-alat ini rumit, mereka memiliki lebih dari seribu tim dan ratusan subsistem, mereka menelan biaya masing-masing perusahaan jutaan atau puluhan juta dolar setahun. Tanpa kehadiran lebih banyak spesialis PD (baik di tingkat pengguna dan di tingkat pengembang alat PD kustom), Rusia tidak memiliki peluang apa pun untuk menjadi signifikan di pasar internasional untuk microchip di telepon pintar, akselerator AI dan mobil self-driving. Sesuatu seperti beberapa negara Afrika di mana biokimia tidak diajarkan di universitas,umumnya tidak ada peluang untuk menjadi pemimpin dalam obat-obatan (penghambat prothesis) terhadap coronavirus.

Diskusi dan Keberatan


Kami mendiskusikan gagasan P&R hackathon di milis silikon-rusia , tempat kami diperlakukan dengan skeptisisme yang hati-hati. Secara khusus, Mikhail Shupletsov, yang terlibat dalam algoritma EDA (Electronic Design Automation) di VMK Moscow State University, keberatan dengan saya:
Mikhail Shupletsov: “Ada keraguan bahwa format Hackathon cocok untuk tugas semacam itu. Hasil yang bagus untuk masalah otomatisasi desain hanya dapat diperoleh jika kompetisi telah berlangsung lama (setidaknya 6 bulan). Dalam format yang diusulkan, menurut saya, hanya mungkin menjalankan alat yang sudah jadi, tetapi tidak membuat solusi baru. "
yang saya jawab:
: « , , capacity ( ) features ( ASIC libraries) . , ! 20 , floorplanning maze router. Tcl/Tk. , EDA. + .»

« — »


Tugas itu menarik tiga siswa dari Innopolis. Intrik utama adalah bagaimana mengurangi kata-kata tugas sehingga sangat mungkin untuk menyelesaikannya dengan cepat, dalam dua minggu persiapan dan empat jam hackathon. Pernyataan asli masalah tampak seperti ini . Itu terdiri dari tiga bagian:

  1. Parsing file teks pada subset striped-down dari bahasa deskripsi perangkat keras Verilog.
  2. Aplikasi algoritma penelusuran gelombang Lee kuno.
  3. Output grafis dari hasilnya.

Setelah berdiskusi dengan siswa, kami memutuskan untuk mengganti parsing verliog dengan input koordinat sel yang disederhanakan dari file teks . Kemudian para siswa diberi tanggung jawab dan di bawah ini - tiga laporan mereka tentang percobaan.

Sejalan dengan para siswa, saya memutuskan untuk menulis solusi sendiri, untuk mencari tahu berapa lama untuk satu orang. Siswa menulis keputusan mereka menggunakan kerangka kerja klien-server berorientasi objek dalam Java dan grafik web. Saya baru saja menulis program C yang mengambil data dari array statis yang diinisialisasi dan mencetak hasilnya dengan mencetak gambar dengan tanda bintang dan titik, seperti pada program tahun 1970-an. Butuh waktu 4 setengah jam.

Kode program saya (non-mahasiswa) .Hasil
lengkap.



Sekarang kami memberikan dasar untuk siswa:



Laporan oleh Sofia Ermolaeva


Hackathon diadakan di antara mahasiswa Universitas Innopolis pada 19 Oktober 2019.

Pilihan 11 kasus disajikan, masing-masing harus memilih 3 dan memprioritaskan dari yang paling disukai sampai yang paling tidak disukai.

Menurut preferensi kami dan jumlah orang yang memilih setiap kasus, panitia membentuk tim.

Seminggu sebelum hackathon, saya dan dua siswa lainnya ditugaskan ke proyek dari MIPS BU.

Gambar 1. Kasing dari MIPS BU di situs web hackathon



Tim kami adalah yang terkecil, jika dibandingkan, tim lainnya adalah 5-7 orang. Oleh karena itu, segera menjadi jelas bagi kami bahwa kami tidak mungkin menguasai tugas yang ditetapkan untuk dieksekusi dalam waktu 8 jam. Kesulitannya adalah bahwa kami satu-satunya dengan pelanggan jarak jauh dan bahkan dengan perbedaan waktu 10 jam.

Menurut aturan hackathon, setelah distribusi tim, diizinkan untuk mengadakan serangkaian pertemuan dengan pelanggan untuk mengklarifikasi persyaratan dan membiasakan diri dengan teknologi jika mereka tidak terbiasa dengan tim (yang berlaku untuk tim kami).

Kami pertama kali bertemu dengan pelanggan pada 11 Oktober 2019. Untuk pertemuan itu, kami menyiapkan pertanyaan untuk Wawancara Elicitation (bahkan saat menyiapkan pertanyaan, kami mengerti bahwa kami sama sekali tidak mengerti bagaimana menyelesaikan tugas, tetapi itu bahkan lebih menarik). Daftar awal pertanyaan disajikan pada Gambar 2. Saya harus mendapatkan banyak wol di Internet untuk mendapatkan tingkat pengetahuan tentang topik tersebut.

Gambar 2. Pertanyaan wawancara elitasi.



Selama pertemuan, kami memiliki pertanyaan yang lebih terperinci mengenai solusinya (lihat Gambar 3).

Gambar 3. Masalah yang terkait dengan implementasi.



Sebagai hasil dari pertemuan tersebut, kami menemukan bahwa kami mengumpulkan persyaratan dan prioritas mereka sehingga jelas bagaimana mengurangi ruang lingkup (lihat Gambar 4).

Gambar 4. Persyaratan dan prioritas mereka dikumpulkan selama pertemuan pertama.



Perasaan bahwa kami bertiga tidak punya waktu selama 8 jam tidak meninggalkan kami, kami berbagi pengalaman dengan pelanggan. Ternyata dia tidak tahu tentang batas 8 jam. Oleh karena itu, kami mulai berpikir bersama tentang menyederhanakan tugas dan mengembangkan prototipe.

Penyederhanaan terutama menyangkut persyaratan fungsional No. 1 (lihat Gambar 4). Dalam Dokumen Persyaratan akhir kami, persyaratan prototipe dibagi berdasarkan fungsionalitas: Pembaca file (lihat Gambar 5), Penempatan (lihat Gambar 6), Perutean (lihat Gambar 7), Representasi grafis (lihat Gambar 8). Menurut aturan, dokumen Persyaratan harus disertifikasi dengan tanda tangan pelanggan, tetapi karena pelanggan kami memiliki konfirmasi jarak jauh, kami memutuskan untuk membuat foto (lihat Gambar 9).

Gambar 5. Persyaratan untuk File Reader



Gambar 6. Persyaratan untuk



Gambar Penempatan 7. Persyaratan untuk Routing



Gambar 8. Persyaratan untuk representasi grafis



[Gambar 9. Konfirmasi persyaratan oleh pelanggan.]

Setelah mengumpulkan persyaratan, kami mulai memikirkan fitur implementasi dan pilihan teknologi. Perlu dicatat bahwa tim kami terdiri dari: 1 pengembang C # (Michael), 1 pengembang Python (Maxim) dan 1 pengembang Frontent (Sofia). Untuk tampilan, kami memilih React.js karena saya cukup percaya diri bahwa menggunakan teknologi ini dalam waktu singkat saya dapat mengimplementasikan tampilan. Untuk komponen lainnya, sulit untuk memilih teknologi karena pengetahuannya sangat bervariasi, kami sepakat tentang Jawa karena setiap orang setidaknya memiliki pengalaman minimal dalam bahasa ini.

Kami berbagi tanggung jawab sebagai berikut:

  • Tampilan, tautan belakang dan depan, persiapan presentasi, manajemen tim - Sofia,
  • Penempatan dan Routing - Michael
  • Pembaca file - Maxim.

Selama hackathon, pelanggan harus menyerahkan kasing, tetapi karena perbedaan waktu (kami memilikinya lebih awal di pagi hari dan pelanggan larut malam) kami menunjukkan video yang disiapkan oleh pelanggan.


Setelah presentasi, kami pergi ke kode solusi kami. Kami duduk bersama tetapi masing-masing mengerjakan bagiannya (lihat Gambar 10). Tentu saja, sebelum Hackathon, kami dilatih untuk menulis algoritma Lee untuk memahami cara kerjanya.

[Gambar 10. Mikhail dan saya sedang mengerjakan solusi untuk masalah ini (Maxim tidak masuk ke dalam bingkai, tetapi dia juga bekerja di dekatnya).]

Saya memilih Spring untuk berkomunikasi bagian belakang dan depan. Untuk menguji solusinya, kami menyiapkan beberapa contoh file input sederhana (contoh file tersebut ditunjukkan pada Gambar 11).

Gambar 11. File masuk dan tampilannya.





Pengujian pada file sederhana berfungsi seperti yang kami harapkan. Masalah muncul ketika kami memutuskan untuk membuat contoh yang lebih rumit untuk gambar yang indah pada slide. Saya datang dengan sebuah contoh yang disajikan pada Gambar 12. Untuk alasan yang tidak diketahui oleh kami, algoritme tersebut menjadi loop tak terbatas. Sampai akhir hackathon adalah satu jam. Kami telah bekerja keras untuk presentasi, karena presentasi juga harus didorong untuk presentasi yang berkualitas. Ketika saya sedang mengerjakan presentasi, rekan tim saya menemukan bahwa program tidak berakhir dalam loop yang tak terbatas setiap kali, yaitu, ketika dimulai pada file yang sama, program terkadang masih berfungsi. Kami menyadari bahwa solusi kami tidak stabil. Tetapi tidak ada waktu untuk memperbaiki. Konfirmasi ketidakstabilan algoritma juga merupakan fakta bahwa konstruksi rangkaian untuk file yang sama berbeda (lihat Gambar 13).

Gambar 12. Contoh ditemukan selama hackathon untuk menunjukkan operasi algoritma.



Gambar 13. Kesimpulan untuk contoh kedua (selama hackathon dan setelah hackathon).





Hackathon kami tidak menang. Perlu dicatat bahwa sisa kasus terkait dengan analisis kualitas dan pengujian produk, sementara kami menerapkan solusi dari awal. Kami gagak di hackathon. Sebenarnya, saya sangat senang tentang ini, karena pengalaman yang didapat sangat berguna.

[Gambar 14. Presentasi solusi kami di hackathon.]
[Gambar 15. Tim kami dengan sertifikat partisipasi.]
[Gambar 16. Tim kami berpartisipasi dalam mengevaluasi kasus-kasus lain.]

Post mortem

Setelah hackathon, kami mengirim keputusan kami kepada pelanggan sebagai referensi untuk git .

Pada 4 November, saya menerima surat dari pelanggan yang menyatakan bahwa ia tidak dapat meluncurkan proyek kami. Masalahnya adalah bahwa kami mengembangkan masing-masing pada MacOS dan Windows, kami juga menulis instruksi berdasarkan bagaimana kami berlari pada platform kami.

Gambar 17. Instruksi awal untuk meluncurkan aplikasi.



Pelanggan mencoba menjalankan melalui konsol dan menerima kesalahan berikut:

Gambar 18. Kesalahan No. 1.



Itu mereproduksi semua kesalahan dan masalahnya adalah untuk meluncurkan proyek melalui konsol sebagai jar, perlu untuk menambahkan file manifes sehingga pakar tahu yang mana dari file tersebut adalah kelas utama. Jadi saya menambahkan file konfigurasi dan mengirim pembaruan ke pelanggan.

Surat berikutnya dari pelanggan datang pada 15 April 2020. Pelanggan menerima kesalahan berikut selama perakitan proyek:

Gambar 19. Kesalahan No. 2.



Saya harus berurusan dengan proyek lagi. Setelah beberapa jam coba-coba, saya masih berhasil menemukan masalahnya. Ternyata javafx.util.Pair bahkan ketika menambahkan perpustakaan javafx.util sebagai ketergantungan pada pom.xml selama perakitan tidak ditambahkan ke proyek. Setelah googling, ternyata semua pengguna perpustakaan ini memiliki masalah seperti itu. Pada awalnya saya mencoba menyelesaikan masalah ini dengan cara yang berbeda, tetapi sebagai hasilnya ternyata lebih mudah untuk mengimplementasikan kelas secara manual. Ternyata dalam Python (yaitu, pengembang Python dari tim kami mengerjakan bagian ini), kelas serupa digunakan sebagai solusi standar, tetapi di Jawa ada banyak struktur data lain untuk menyimpan nilai-kunci (HashMap dll.). Akibatnya, kode saya untuk Pair yang membantu memperbaiki semuanya adalah sebagai berikut:

Gambar 20. Implementasi pair.



Setelah saya memperbaiki kesalahan, saya memutuskan untuk menulis instruksi terperinci untuk meluncurkan aplikasi melalui konsol. Setelah menguji instruksi. Kami menelepon pelanggan dan meluncurkan proyek. Jadi, setelah 5 bulan, pelanggan bisa melihat hasil kerja kami.

Gambar 21. Instruksi terakhir untuk meluncurkan proyek.



Versi awal proyek ini ada di repositori github.

Versi terakhir dari proyek ini ada di repositori github saya.



Laporan oleh Maxim Kostin

Setelah mempelajari semua persyaratan untuk proyek, kami membagi tugas menjadi 3 bagian utama.

Saya bertanggung jawab untuk memproses file input dan mengemasnya dalam format yang mudah untuk diproses lebih lanjut. Menurut pendapat saya, grafik dapat dianggap sebagai struktur data yang paling jelas dan nyaman untuk tugas ini (kami mewakili elemen sebagai simpul, dan tepi koneksi di antara mereka).

Anda dapat mengimplementasikan grafik dengan cara yang berbeda, tetapi untuk masalah ini saya memilih opsi untuk mengimplementasikan grafik pada daftar (mengimplementasikan grafik pada matriks adjacency akan berubah menjadi sangat kosong dan mengkonsumsi lebih banyak memori, meskipun melewati grafik pada daftar dengan cepat dalam menambahkan operasi tepi).

Awalnya direncanakan untuk memproses file input yang ditulis menggunakan sintaks Verilog, tetapi kemudian kami menghilangkan aspek ini dan mulai menggunakan format data input yang disederhanakan.

Kami juga membuat sejumlah penyederhanaan (karena pembatasan waktu hackathon) pada ukuran elemen (kami menganggap semua elemen memiliki ukuran yang sama), penyederhanaan lengkap pada sifat fisik elemen (penundaan sinyal, pengaruh sel tetangga, konsumsi energi - untuk beberapa elemen) trek lebih tebal dan banyak lagi).

Secara umum, tidak ada kesalahan kritis dalam implementasi grafik itu sendiri, tetapi dalam proses penguraian file sejumlah kesalahan muncul dengan tidak perhatian, misalnya, untuk elemen BUKAN, dua input awalnya dibuat (jelas program macet).

Sejumlah kesalahan kecil juga terjadi (ukuran substrat tidak ditentukan dengan benar) ketika menggabungkan dengan kode Michael (Mikhail terlibat dalam menempatkan elemen grafik pada substrat dan pelacakan), tetapi secara umum, semuanya diputuskan "dengan cepat dan tanpa rasa sakit." Michael menulis kode yang sangat bagus, yang memungkinkannya untuk mendekati sasaran dengan cepat.

Tapi Michael dan aku tidak akan berhasil kalau bukan di tim kami Sofia. Dia tidak takut, dan mengambil bagian yang paling penting - visualisasi hasil (sesuatu yang tanpanya proyek kami praktis tidak ada artinya), dan dia menghadapi tugas itu.

Secara umum, selama mengerjakan proyek ini saya belajar banyak informasi baru dan berguna tentang bagaimana papan sirkuit tercetak dan SoC dibuat, serta algoritma dan orang-orang di belakangnya. Saya yakin bahwa keterampilan ini dapat bermanfaat bagi saya di masa depan, karena Saya kadang-kadang mencoba-coba elektronik dan kadang-kadang mengumpulkan semua jenis prototipe. Sekarang, saya dapat menggunakan program kami untuk membuat jejak trek, dan melihat bagaimana itu terlihat dalam kenyataan.



Laporan oleh Michael Scheinberg


Alasan saya memilih proyek ini adalah kaitannya dengan contoh dari buku Eric Evans "Pemrograman Berorientasi Objek" yang saya baca pada waktu itu. Walaupun melihat ke depan saya dapat mengatakan bahwa tidak ada aplikasi serius dari pengetahuan saya tentang DDD dan pengalaman dari contoh yang diberikan dalam buku di hackathon, saya pikir pengalaman yang didapat di hackathon bermanfaat dan menarik bagi saya.

Setelah mempelajari semua persyaratan untuk proyek, kami membagi tugas menjadi 3 bagian utama.

Saya bertanggung jawab untuk membangun skema, Maxim mengambil alih penulisan parser dan Sofia bertanggung jawab atas visualisasi hasil.

Bersama dengan tim dan pelanggan, kami memilih algoritma Floyd untuk penempatan kabel yang optimal di sirkuit. Untuk menyimpan skema yang dibangun, matriks tiga dimensi digunakan di mana koordinat vertikal adalah jumlah lapisan. Bersama dengan tim, penyederhanaan diadopsi - setiap elemen dari skema diberi ukuran 5x5 sel dan ruang antara elemen adalah 3 sel. Penyederhanaan yang diterima dikaitkan dengan waktu hackathon (terbatas) dan pembatasan waktu senggang sebelum dimulainya hackathon (dalam luka hackathon ada sejumlah pembayaran besar yang juga perlu dilakukan).

Dalam proses menggabungkan hasil pekerjaan saya dengan hasil kerja Maxim, sejumlah masalah menjengkelkan muncul karena kesibukan dan kecerobohan terkait dengan waktu yang terbatas, yang, untungnya, dengan cepat ditemukan dan dihilangkan.

Secara terpisah, saya ingin mencatat kualitas visualisasi yang dilakukan oleh Sofia. Bagian ini berfungsi tanpa kesalahan dan menyediakan bahan yang bagus untuk presentasi informatif hasil.

Secara umum, selama mengerjakan proyek ini, saya belajar banyak informasi baru dan berguna tentang bagaimana proses membangun sirkuit mikro dan algoritma yang digunakan di area ini yang dapat saya terapkan di masa depan diatur.



Lampiran A: Keberatan oleh Mikhail Shupletsov dari Moscow State University (foto kiri)

Tim Mikhail Shupletsov dari Moscow State University memenangkan kompetisi internasional bergengsi IC-CAD 2015 , dan bahkan mantan Duta Besar AS untuk Rusia Michael McFaul mendapat tanggapan emosional .

Dari diskusi di milis silikon-rusia .

: , . , :

1. http://iccad-contest.org
2. http://www.ispd.cc/?page=contests

( , ). , :

1. https://arxiv.org/pdf/1810.01078.pdf
2. https://github.com/jinwookjungs/datc_robust_design_flow

Saya percaya bahwa inisiatif untuk mengadakan kompetisi untuk mengembangkan algoritma otomasi desain sangat berguna. Saya sendiri memiliki pengalaman dalam mengelola tim yang berpartisipasi dalam kompetisi tersebut. Saya sendiri akan tertarik untuk berpartisipasi sebagai penyelenggara kompetisi semacam itu.

Satu-satunya hal yang sedikit mengecewakan adalah bahwa posting tentang acara di Innopolis muncul setelah pendaftaran acara berakhir. Ada juga keraguan bahwa format Hackathon cocok untuk tugas-tugas seperti itu. Hasil yang bagus untuk masalah otomatisasi desain hanya dapat diperoleh jika kompetisi telah berlangsung lama (setidaknya 6 bulan). Dalam format yang diusulkan, menurut saya, hanya mungkin menjalankan alat yang sudah jadi, tetapi tidak membuat solusi baru.

Dan yang kedua:

!

. . , . , ( ) , .

, , .

. . , , EDA - . , EDA , ICCAD ISPD. , ( ). , ICCAD ISPD , , (http://www.mes-conference.ru/) , EDA.

,


Lampiran B: Instruksi oleh Sofia Ermolaeva tentang cara mereproduksi hasil

Required:

    Maven
    Npm 

Clone repository

    git clone https://github.com/keepYourHairOn/HackathonProject.git 

In the repository folder:

    cd edap
    cd ASICdrawer
    npm install
    npm start 

In the browser open:

    localhost:8008 

In the new tab of the command line (because node should stay working).

To build new jar:

    cd edap
    mvn package
    Copy input.txt file from {repository folder}/edap/input.txt and paste a file into: edap/target 

To run the existing jar:

    cd target
    java -jar edap-1.0-SNAPSHOT.jar

Referensi

  1. Pernyataan masalah di pos sebelumnya tentang Habré.

  2. Dokumen yang kami buat bersama siswa.

  3. Preprint sebuah artikel oleh Hackathons sebagai Bagian dari Pendidikan Rekayasa Perangkat Lunak: KASUS dalam Alat Contoh oleh Andrey Sadovykh, Maria Naumcheva, Mansur Khazeev, Innopolis University.

  4. Artikel PDF oleh Hackathons sebagai Bagian dari Pendidikan Rekayasa Perangkat Lunak: KASUS dalam Alat Contoh oleh Andrey Sadovykh, Maria Naumcheva, Mansur Khazeev, Innopolis University.

  5. Foto-foto Hackathon.



Matahari terbenam di Silicon Valley, dan naik di atas Innopolis, tempat saya menghentikan pidato saya. Bagaimana menurut anda?


All Articles