個人
- 故鄉 臺灣 花蓮
- 現居 臺灣 桃園
- 帳號 morris821028 morris1028
工作經驗 Work and Experience
Cadence EDA 管理職 2021 ~
- Jun. 2023, Senior Engineering Manager, Taipei, Cadence Design Systems
- Database: serialize 10x faster, reduce 30% runtime memory
- Integrity 3D-IC platform
- Integrate cross-platform result.
- Performance improvement on product interface.
- 3D-IC design system optimization infrastructure.
- Mar. 2023, Senior Engineering Manager, Taipei, Cadence Design Systems
- Database/Tcl scripting/Extension/Testing architecture
- GUI: stacking/3D/graph viewer/usability
- Rebranding: license, code-level, application
- Back-annotation/Integrated Product: Thermal, Power-Domain-Network, InFO Routing
- Customer engagement: TSMC, Intel, SONY, Renesas, Marvell, Amazon, etc.
- Algorithm & Performance Improvement: scripting, connections/flightline, planning stage, 2D display, 3D display
- Jul. 2022, Senior Engineering Manager, Taipei, Cadence Design Systems
- Database runtime memory improvement: 30% reduction
- Parallel display canvas rendering
- Mar. 2022, Software Engineering Manager, Taipei, Cadence Design Systems
- 3D-IC System Planner
- Lead 3D viewer project
- System engineering: cross product communication, crash issues, license
- Database storage improvement: 50% size reduction, 25% speed up
- Tcl interface improvement: auto-compelete in cross product, infrastructure
- UI/UX: application message ID mechanism, logging mechanism, text style, and common layout
- Spatial data structure improvement: worst case from $\mathcal{O}(n)$ to $\mathcal{O}(\log n)$ speed up
- 3D-IC System Planner
- Oct. 2021, Software Engineering Manager, Taipei, Cadence Design Systems
- 3D-IC System Planner
- Build 3D viewer for release
- Build cell-based explorer
- Design advanced Tcl api usage for design flow
- Enhance Allegro/DieAbstract interface for design flow
- Fix hardware accelerator issues, HDPI, font renderer, and performance.
- Customized JDK, fix product integration issues
- 3D-IC System Planner
Cadence EDA 研發職 ~ 2021
- Jan. 2021 ~ Sep. 2021, Principal Software Engineer, Taipei, Cadence Design Systems
- 3D-IC Solution
- Architecture
- LEF/DEF ECO flow
- Co-design Tcl/tk interface in Java
- Auto completion
- Command register management
- Floorplanning functions
- IO interface: guideline, core area
- Bundle for routing
- Bump planning: functional distribution
- Connection optimization: diff-pair, closest pairs, cross target function
- Thermal/Early rail analysis: current area
- Architecture
- 3D-IC System Planner
- In-memory database 50% memory usage reduction
- Database serialization/deserialization performance improvementm, storage size 10% reduction
- Improve common data structures: adaptive set, one-time list, memory-saving structure
- Improve core library utilities, such as iterator, sorting, streaming, functional, etc.
- Speed up Verilog parsing
- Keyword searching, UI enhancement
- Code quality: enempty bugs and vulnerabilities issues with SonarQube analysis.
- 3D-IC Solution
- Oct. 2020 ~ Jan. 2021, Principal Software Engineer, Taipei, Cadence Design Systems
- OrbitIO System Planner Tool
- Architecture
- Implement tcl/tk script engine interface
- Regression testing framework
- Enhancement
- Placement algorithm
- Database API performance improvement
- Reduce renderering canvas memory usage
- Product UI integration
- Architecture
- OrbitIO System Planner Tool
- Jul. 2018 ~ Sep. 2020, Senior Software Engineer, Taipei, Cadence Design Systems
- OrbitIO System Planner Tool
- Enhancement
- The geometry library for database and routing, such as shape intersection, containing testing, and distance measuring.
- The lazy computation API for functional language design, fix the performance to match expected behavior.
- The basic operations for designers, provide automatic alignment/measuring/parametric methods.
- UI
- Implement I18n (internationalization) mechanism, support multiple language pack to rendering.
- Implement UI themes/canvas drawing styles to satisfy internal product integration
- Implement high customized UI/UX setting
- Develop 3D viewer
- Database
- Enhance the performance for massive exchange designs requirement, from $\mathcal{O}(n^2)$ to $\mathcal{O}(n)$.
- Improve the algorithms/data structures in core architecture, reduce the memory usage/allocation and time.
- Enhancement
- OrbitIO System Planner Tool
- Oct. 2017 ~ Jun. 2018, Software Engineer II, Taipei, Cadence Design Systems
- OrbitIO System Planner Tool
- Optimize the geometry algorithm on connection/flight line generation, time complexity from $\mathcal{O}(n^2)$ to $\mathcal{O}(n \log n)$.
- Develop automatic grouping algorithm based on logical net connectivity.
- Enhancement
- UI rendering on millions of data, from $\mathcal{O}(n)$ to $\mathcal{O}(1)$ on demand.
- The data retrieving API, reduce the time/space complexity from $\mathcal{O}(nm^2)$ to $\mathcal{O}(nm)$.
- Rewrite spatial indexing data structure in library code, improve the scalability of algorithm.
- Canvas display on demand, based on database architecture corresponding the knowledge of computer graphics.
- UI
- Improve the performance on rendering components.
- Implement heuristic mechanism to organize context menu.
- Database
- Enhance the performance of file IO, at least 10x faster.
- Enhance the performance of each kinds of database operations with constant optimization.
- Reduce the overall memory usage of opening/saving database, at least half.
- Fix hundreds of database objects definition, and build related test cases.
- Implement full/complete transaction/history/database/script mechanism.
- Testing
- Enhance the correction of regression testing.
- Implement complete testing mechanism to detect potential/missing bugs.
- Fix hundreds of wrong testing scripts.
- Allegro PCB Designer
- Enhance the performance the GDSII (stream out), improve geometry processing algorithm from $\mathcal{O}(n^{2\star})$ to $\mathcal{O}(n \log n)$
- Enhance the spatial indexing data structure in library code for design rule checking, from $\mathcal{O}(\sqrt{n})$ to $\mathcal{O}(\log n)$
- Enhance the basic data structure for database operations, from $\mathcal{O}(\sqrt{n})$ to $\mathcal{O}(1)$
- Unicorn Prototype
- Web-based architecture, based on VueJs and Python
- Develop flow integration automation across multiple products and platforms
- OrbitIO System Planner Tool
碩士時期 Master Degree
- Mar. 2017 ~ Jun. 2017, Teaching Assistant for “Parallel Programming” of National Taiwan University
- Teaching the parallel optimization and related paper implementation on classic algorithm problems.
- The lesson slides could be found at https://github.com/morris821028/slides
- Mar. 2016 ~ Jun. 2016, Teaching Assistant for “Parallel Programming” of National Taiwan University
- Continuously,develop the hetergeneous hardware platform for auto-testing Judge System.
- Use/Design related concept lesson problem instead of distributed environment Spark and Hadoop.
- Design the lesson problem about SIMD, GPU and Xeon Phi.
- Sep. 2015 ~ Jan. 2016, Teaching Assistant for “The C Programming Language” of National Taiwan University
- Develop the Judge Girl System for School Lesson, which is different from common online judges, provide the specific judge multiple source files.
- Based on Nodejs, Javascript, Python, MySQL, and support sandbox environment on Linux platform.
- Support 200+ people simultaneously, and share system techology to other schools, departments, or lessons.
- The Judge Gril System Source Code https://github.com/JudgeGirl
學歷
- Sep. 2015 ~ Sep. 2017 國立臺灣大學 資訊工程研究所 平行與分散實驗室 畢業
Department of Computer Science & Information Engineering, National Taiwan University, Parallel and Distributed Processing Laboratory - Sep. 2012 ~ Sep. 2015 國立中央大學 資訊工程學系 畢業
Department of Computer Science & Information Engineering, National Central University - Sep. 2011 ~ Sep. 2012 國立中興大學 資訊科學與工程學系 肄業
Department of Computer Science and Engineering, National Chung Hsing University
自傳
家庭背景
花蓮人,父親投入綜理校務的教育事務,母親從事署立花蓮醫院護理工作,由於母親經常輪值大小夜班,從小到大幾乎都是陪著父親從偏遠的豐濱鄉港口國小到花東縱谷的壽豐鄉平和國小,以及花蓮市的中正國小、花崗國中、花蓮高中,上山下海接觸各種的文化與族群,尤其各個慶典文化的活動我都陪父親參與,同時也碰見了許多地方上的大人物,被這些長輩鼓勵與期待,希望將來能認真學習為社會做不平凡的事。
大學前求學過程
小學因為父親工作的關係,小學讀過海邊、鄉村及都市的學校。接觸到各種族群與文化,有著許多人生的體驗。到了國中,遇到了許多背景不同的朋友,深刻了解學習上需要勇於接受良性的競爭。有了深刻的覺悟後開始認真讀書,參與數學比賽與珠心算能力檢定,來奠定自己在數學領域上的基礎,這些都成為後來在學習資訊領域的助力。
進入花蓮高中,在這三年中,正是學習資訊領域與程式設計的開始,與一群實力相當的同學們一起奮鬥,讓視野更加地寬闊。由於在數理資優班,在專題報告(資訊)試做中,獲得台下同學的喝彩,讓我深深地感受到自己在資訊領域的能力認可,便毅然決然選擇了數學組與資訊組為生涯發展的首選。
高中學習用 ANSI C 寫 Zerojudge、UVa Online Judge 上的題目,在屢次參與台大舉辦的 NPSC 和東區資訊科能力競賽後,終於在最後兩年分別得到了資訊科能力競賽的佳作、第二名,最後一年代表東區參與全國資訊科能力競賽,靠著自學和資訊老師的提點下,雖不敵有長期累積和培訓的其他選手,但是在期間讓我磨練能力,學了更多的演算法,修正取多原本的錯誤知識,更加修改對比賽的態度。
高中數學方面,曾與同學一起製作數學科展,主題是關於圖論,在高二的時候獲得學校代表權。藉由在資訊領域上學到的演算法,做出程式碼去搜尋資料,這使得我們可以減少相當大的人力以及人力處理上的誤差,同時使我們在東區分賽脫穎而出,而後來在全國科學展覽會上獲得數學組第三名。在製作程式時,不斷地修正效率以及準確度,以代替人力上的不足。
大學求學過程
在大學時期,一年級就讀中興大學資訊工程學系,在二年級時轉入中央大學資訊工程學系,三年中參與兩次 ACM-ICPC、NCPC,數次各大學舉辦的資訊競賽、PTC、ITSA 月賽/桂冠賽,並且在 UVa Online Judge 磨練數千題。
在大學專題中,特別撇開一如往常的演算法領域的程式設計,向專題指導教授學習軟體工程領域,在 C/C++、JAVA Application 外,一年中學習了網頁程式設計 javascript、Nodejs,以及最重要的版本控制系統 Github。在不熟悉的領域中,學習新的項目開發是我這一年最大的挑戰,開發經歷讓我收穫非常多。
研究所求學過程
研究所兩年受教授特別要求,擔任了三次基礎課程助教,接管並重新開發課程系統,參與題型設計與驗證部分,並管理與負責伺服器相關事宜。每周監考,且參與學生討論,分享與創新課程內容,將同期課程專案整合至系統,並提供自動化的驗證流程。
課程以演算法及實作細節底層為核心,修習高等編譯器、虛擬機器、數位影像、計算機圖學、即時系統等為主,以改善整體效率的技術為目標,將這些經驗整合至平行程式設計的主修領域中。因有這些經歷,在學期間便受博士班學長邀請至 Cadence Design Systems 實習。研究所畢業後,並進行三年研發替代役。
社會工作過程
尚未
得獎清單
獎項類別 | 競賽名稱 | 獲得獎項/競賽成果 |
---|---|---|
國際獎項 | The 2011 ACM-ICPC Asia Hsinchu Regional Contest | Fourteen Place |
The 2012 ACM-ICPC Asia Hsinchu Regional Contest | Honorable Mention | |
全國獎項(含分區) | 第50屆中小學科學展覽會 | 高中組數學科第三名 |
第十一屆台灣區TRML高中數學競賽 | 表現良好 | |
第十二屆台灣區TRML高中數學競賽 | 表現良好 | |
第十二屆台灣區TRML高中數學競賽 | 台北區團隊優良獎 | |
第十二屆台灣區TRML高中數學競賽 | 個人成績優異 | |
98學年度高級中學數理及資訊學科能力競賽第一區複賽 資訊科 | 佳作 | |
99學年度高級中學數理及資訊學科能力競賽第一區複賽 資訊科 | 第二名 | |
99學年度全國高級中學資訊學科能力競賽 | 進入決賽 | |
2012 中區大專院校程式設計競賽 | 佳作 | |
2013 中區大專院校程式設計競賽 | 第一名 | |
2014 中區大專院校程式設計競賽 | 第二名 | |
2013 靜宜大學全國程式設計競賽 | 特優 | |
2011年ITSA線上程式設計大賽 | 績優團隊 4 次 | |
2012年ITSA線上程式設計大賽 | 績優團隊 2 次(至3月記錄) | |
PTC 國際大專院校程式設計競賽 | 排名第二名(2012/02/25) | |
100年度全國大專電腦軟體設計競賽 | 甲組 佳作 | |
101年度全國大專電腦軟體設計競賽 | 甲組 第二名 | |
101年度 03/08 全國大專 ITSA 盃程式設計桂冠挑戰賽 | 菁英組第二名 | |
101年度 06/25 全國大專 ITSA 盃程式設計桂冠挑戰賽 | 挑戰組第三名 | |
校內獎項 | 97學年度校內科學展覽 數學科 | 佳作 |
98學年度校內科學展覽 數學科 | 優勝 | |
98學年度數理及資訊學科能力競賽初賽 資訊科 | 第二名 | |
99學年度數理及資訊學科能力競賽初賽 資訊科 | 第一名 | |
特別獎-藝文競賽(高中) | 熱心參與藝文競賽 | |
100學年第1學期理學院資訊科學與工程學系成績優異 | 成績優異 | |
100學年第1學期必修課程-計算機程式設計 | 表現優異 | |
100學年第1學期必修課程-離散數學 | 表現優異 | |
100學年第1學期必修課程-計算機導論 | 表現優異 | |
101學年第1學期資電學院資訊工程學系 | 成績優異 | |
101學年第2學期資電學院資訊工程學系 | 成績優異 | |
102學年第1學期資電學院資訊工程學系 | 成績優異 | |
102學年第2學校「當代消費文化與社會」 | 用心學習 | |
其他 | 大學程式能力檢定 (2011年12月20日) | A(解題數 5 題) |
大學程式能力檢定 (2011年09月27日) | A+(解題數 6 題) | |
大學程式能力檢定 (2011年03月27日) | A+(解題數 7 題) | |
高中生程式解題系統-ZeroJudge | 解題總計 1200+ 題 | |
UVa Online Judge | 解題總計 3400+ 題 |