# 2025 年「資訊科技產業專案設計」作業 3
> [**Resume**](https://www.canva.com/design/DAG5uX5s5WM/t3tuCytvNMK8fvguU6AruA/edit?utm_content=DAG5uX5s5WM&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton)
## 相關公司職務描述
### NVIDIA
:::spoiler
\
[**Senior Verification Engineer - Hardware**](https://nvidia.eightfold.ai/careers?start=0&pid=893392163264&sort_by=timestamp)
#### Job Description:
You will be responsible for creation of "state of the art" UVM based verification test benches and methodologies to verify complex IP's and Sub-systems. You will also get to work on System level verification using C/C++. During the course of a project you would end up driving the following aspects of verification for your unit:
- Architect the testbenches and craft verification environment using UVM methodology
- Define test plans, tests and verification infrastructure for modules, clusters and system
- Build efficient and reusable bus functional models, monitors, checkers and scoreboards
- Implement functional coverage and own verification closure
- Work with architects, designers, FPGA and post-silicon teams to ensure that your unit is robust
#### Requirement:
You should be BTech/MTech with 5+ years of experience in verification closure of complex Unit, Sub-system or SOC level verification. If you have experience in at least a few of the following domains, we will have an excellent match for our needs:
- CPU verification, Memory controller verification, Interconnect verification
- High Speed IO verification (UFS/PCIE/XUSB)
- 10G/1G Ethernet MAC and Switch
- Bus protocols (AXI/APB)
- System functions like Safety, Security, Virtualization and sensor processing
- Experience in the latest verification methodologies like UVM/VMM
- Exposure to industry standard verification tools for simulation and debug is a requiremen
- Exposure to Formal verification would be excellent
- Good debugging and analytical skills.
- Good interpersonal skills, ability to work as an excellent teammate with excellent communication skills to collaborate with cross-cultural teams and work in a matrix organization
:::
:::spoiler
\
[**ASIC Design Engineer - New College Grad 2026**](https://nvidia.eightfold.ai/careers?query=digital+design+engineer&start=0&pid=893391566289&sort_by=relevance&filter_job_type=new+college+graduate)
#### Job Description:
- As a key member of the GPU Design team, you will implement, document and deliver high performance, area and power efficient RTL to achieve design targets and specifications.
- Analyze architectural trade-offs based on features, performance requirements and system limitations.
- Craft micro-architecture, implement in RTL, and deliver a fully verified, synthesis/timing clean design.
- Collaborate and coordinate with architects, other designers, pre- and post-silicon verification teams, synthesis, timing and back-end teams to accomplish your tasks.
- Work on a broad list of IPs such as GPU's work scheduler, time distribution system, interrupt controllers, and DMA engines.
- Architect features to help silicon debug and support post-silicon validation activities.
#### Requirement:
- Bachelors Degree or equivalent experience in Electrical Engineering, Computer Engineering or Computer Science.
- Experience in micro-architecture and RTL development (Verilog).
- Good understanding of ASIC design flow including RTL design, verification, logic synthesis and timing analysis.
- Exposure to Digital systems and VLSI design, Computer Architecture, Computer Arithmetic is required.
- Strong interpersonal skills and an excellent teammate.
#### Ways to stand out from the crowd:
- Strong C/C++, Python or Perl skills.
- Good debugging and analytical skills.
- Experience with arbiters, scheduling, synchronization & bus protocols, interconnect networks, caches
:::
### Google
:::spoiler
\
[**Multimedia Digital Design Engineer, Silicon**](https://www.google.com/about/careers/applications/jobs/results/73094055768007366-multimedia-digital-design-engineer-silicon?skills=degital%20design%20engineer)
#### Minimum qualifications:
- Bachelor's degree in Electrical Engineering, Computer Engineering, Computer Science, or a related field, or equivalent practical experience.
- 4 years of experience with digital logic design principles, RTL design concepts, and languages such as Verilog or SystemVerilog.
- Experience with logic synthesis techniques to optimize RTL code, performance and power as well as low-power design techniques.
#### Preferred qualifications:
- Master's degree or PhD in Electrical Engineering, Computer Engineering or Computer Science.
Experience with a scripting language like Perl or Python.
- Experience with Application-Specific Integrated Circuit (ASIC) or FPGA design verification, synthesis, timing/power analysis and Design for Testing (DFT).
- Knowledge of high performance and low power design techniques, assertion-based formal verification, FPGA and emulation platforms and SOC architecture.
- Knowledge of memory compression, fabric, coherence, cache, or Dynamic Random Access Memory (DRAM).
#### Job Description
- Define the block level design document (e.g., interface protocol, block diagram, transaction flow, pipeline, etc.).
- Perform RTL coding, function/performance simulation debug, and Lint/CDC/FV/UPF checks.
- Participate in synthesis, timing/power closure, and Field-programmable Gate Array (FPGA)/silicon bring-up.
- Participate in test plan and coverage analysis of the block and ASIC-level verification.
Communicate and work with multi-disciplined and multi-site teams.
:::
:::spoiler
\
[**Design Verification Engineer, CPU, Google Cloud**](https://www.google.com/about/careers/applications/jobs/results/130274548409868998-design-verification-engineer-cpu-google-cloud?skills=digital%20verification)
#### Minimum qualifications:
- Bachelor's degree in Electrical Engineering or equivalent practical experience.
3 years of experience verifying digital logic at RTL level using SystemVerilog, or Specman/E for FPGAs or ASICs.
- Experience creating and using verification components and environments in standard verification methodology.
- Experience verifying digital systems using standard IP components/interconnects (e.g., microprocessor cores, hierarchical memory subsystems).
#### Preferred qualifications:
- Master’s degree in Electrical Engineering, Computer Science, or a related field.
- Experience with UVM, SystemVerilog, or other scripting languages (e.g., Python, Perl, Shell, Bash, etc.).
- Experience with CPU implementation, assembly language, or compute System on a Chip (SOC).
#### Job Description
- Plan the verification of digital design blocks by fully understanding the design specification and interacting with design engineers to identify important verification scenarios.
- Create and enhance constrained-random verification environments using SystemVerilog/UVM, or Specman.
- Identify and write all types of coverage measures for stimulus and corner-cases.
- Debug tests with design engineers to deliver functionally correct design blocks.
- Lead coverage measures to identify verification holes and to show progress towards tape-out.
:::
### RealTek
:::spoiler
\
[**微處理器設計工程師**](https://recruit.realtek.com/Job/JobDetail?jobid=716)
#### Job Description:微處理器設計工程師(Processor Design Engineer)
#### Requirement:
- 碩士以上電機資訊相關科系畢
- 熟悉 Verilog RTL 及 Synthesis, Simulation 等相關 IC Design Flow
- 熟悉 Computer Architecture
- 有下列經驗者更佳:
(1)Microprocessor或DSP相關硬體設計
(2)On-chip Bus, DDR/Flash Memory Controller, PCIE, USB等設計
:::
:::spoiler
\
[**CPU數位IC設計工程師**](https://recruit.realtek.com/Job/JobDetail?jobid=1478)
#### Job Description:
Microprocessor design. Desired skills and experience includes:
1. Knowledge of DSP, microprocessor and computer architecture fundamentals.
2. Experience in RTL design and ability to make trade-offs between power, performance and area appropriately.
3. Experience in the microprocessor design cycle: initial concept, micro-architecture, implementation, verification, documentation and support.
#### Requirement:
1. 碩士以上; 電子、電機、資工、電信、電控、資科等相關科系畢業為主。
2. 具相關工作經驗者尤佳。
:::
### MediaTek
:::spoiler
\
[**Digital IC designer**](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120191111002?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3D%26order%3D%26page%3D1%26searchKey%3Ddigital%2520design%26category%3D%26workExp%3D%26branch%3D%26program%3D)
#### Job Description:
- Digital design (RTL design, Synthesis, integration, verification)
- SoC Chip design, integration
- Familiar with VLSI design flow is a plus
#### Requirement :
- Majored in electrical and electronics and Computer Science
- Experience in VLSI courses is a plus
:::
:::spoiler
\
[**Neural Processing Unit Digital Designer**](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120240821014?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3D%26order%3D%26page%3D2%26searchKey%3Ddigital%2520design%26category%3D%26workExp%3D%26branch%3D%26program%3D)
#### Job Description:
Mediatek Neural/AI Processing Unit (NPU/APU) enables AI applications in all Mediatek's products, such as smartphones, tablets, TVs, smart-cameras, and automobiles. It has been recognized as the NPU with worldwide leading PPA for edge devices.
As a NPU digital hardware designer, you will join the APU IP development procedures, including architecture, u-architecture, RTL, verification, and PPA optimization. Join us, and you will enjoy your contribution to ubiquitous AI.
#### Requirement :
- Familiar with Verilog design
- Familiar with digital design flow, such as synthesis, STA, power analysis
- Familiar with at least one of following tasks
- AI processing unit design
- Paralleling processing design
- DSP/processor design
- Arithmetic operation designs
- Bus interface or fabric design, especially AMBA
- Design integration
:::
## 自己在專業上匹配的程度
### 職缺分析
- Digital Design Engineer (DD)
- 電機工程、電信工程、電控工程、資訊工程相關科系碩士畢業。
- 除了基本的 RTL 能力外,要熟悉 ic design flow、timing analysis、low-power design techniques。
- 熟悉 Computer Architecture (除了CPU外,其他硬體如 DDR、AXI 等也要有一定程度的了解)
- 有過開發 **MCU**、DSP design、**DDR/Flash Memory Controller** 等硬體設計經驗。
- **影像處理,影像壓縮**。
- 參與過 data bus access/arbitration相關控制電路設計。
- 有修過相關課程,如 VLSI、Computer Architecture等。
- 熟悉如何優化 PPA (Power、Performance、Area)
- C、C++、Python、Perl
- 看重 debug 跟分析問題的能力。
- 除了個人能力,也看重團隊溝通能力。
- Digital Verification Engineer (DV)
- 電機工程、電信工程、電控工程、資訊工程相關科系碩士畢業。
- 熟悉 RTL(System Verilog) 跟 UVM
- 熟悉 SOC 組成 (如CPU、Memory、Bus、Interconnect等)
- 有 Verification 的相關經驗
- 解決問題的能力 (Debugging、Analytical)
- 團隊溝通能力
### 與職缺所需符合程度
- 大學 CS,碩班 EE
- 熟悉 RTL,並有實作大型專案的經驗
- 有跑過 IC design flow,包含 synthesize, APR
- 修過 Advanced VLSI System Design、Computer Architecture等相關課程,並有相關開發經驗 (SoC)
- 在職缺中列出的實務經驗中,有實做過 CPU / AI Processing Unit、Arithmetic Units、AXI Bus、Memory hierarchy (Cache、DRAM)
- 基本程式語言能力 C、C++、Python
### 缺乏之處
- Google、Nvidia 看重英文,我的英語對話能力欠佳
- 實驗室不是 IC 相關的
- 雖然有跑過完整的 IC Design Flow,但不太熟悉如何使用 GUI 介面或是寫 Script
- 缺乏 DSP 的實作經驗 (看很多職缺都有要求)
- 缺乏驗證的相關經驗
- 目前沒有 Low Power Design 的相關經驗
- 欠缺一些 IC 的 knowledge
## 面試題目
- CDC
- Metastability
- Two flip-flop synchronizer
- Pulse synchronizer
- Mux synchronizer
- Async FIFO
- 為甚麼多bit數據傳輸, 不能使用1-bit synchronizer分別同步
- two flip-flop synchronizer / three flip-flop synchronizer差別
- SDC
- False path
- multi cycle (為何合成時 Constraint 要這樣下)
- input / output delay
- max / min delay
- Timing
- Setup / Hold time 的解釋或計算
- hold time 可以是 0 嗎
- Violation 怎麼解決
- 什麼是STA,如何找 critical path
- STA timing report 的內容
- STA vs DTA
- IC Design Flow
- Synthesize、APR
- 合成時 Clock 的頻率取決於哪些因素
- 合成需要哪些檔案
- APR 如何做 timing optimization
- Pre / Post Sim 差異
- Difference
- Synchronous vs Asynchronous reset
- Blocking vs Non-Blocking
- Latch vs Flip-flop
- FSM : Mealy vs Moore
- Clock Skew
- 用 NAND 拼出 OR (很多類似的題目 : 用 ? 組出 ?)
- Clock Gating (設計電路以及優缺點)
- Counter (同步、非同步、反向)
- 除頻電路 (Verilog : 設計除N電路)
- AXI protocol
- 給 Waveform 寫 RTL
- 舉幾個 low power methodology
- Glitch
## 模擬面試
> 🙋 : interviewee
> 👨💻 : interviewer
### 背景知識 :
👨💻 : 請解釋 setup time, hold time
🙋 : Setup time 是資料在時脈上升或下降之前,保持穩定的最小時間,也就說資料要提早到來,以免採樣到錯誤的資料。Hold time 是資料在時脈觸發上升或下降之後,必須保持穩定不能改變的最小時間,也就說資料不能太快改變,不然也會採樣到錯誤的資料。
👨💻 : 那為什麼要滿足 Setup 跟 Hold time?
🙋 : 剛剛有提到,在 clock edge 前資料必須有足夠的時間被採樣。若是資料太晚到來,就會違反 setup,會導致 flip flop 抓到錯誤的資料,可能讓整個晶片無法正常的運作,那 Hold time 也是相同的意思。
👨💻 : 若發生setup time & hold time violation分別該怎麼處理
🙋 : 在電路的邏輯太複雜或是 clock 頻率太快,就會發生 setup time violation,那最簡單的方式就是降低 clock frequency,不然就是減少資料路徑延遲,像是 pipeline。那當資料太快到下一個 flip flop,就會發生 hold time violation,可以增加一些 buffer 來讓資料延遲。
👨💻 : 請解釋亞穩態
🙋 : 當 setup / hold time violation 時,訊號會呈現一個不是 0 也不是 1 的狀態。
👨💻 : 在 CDC 中如何避免亞穩態?
🙋 : 在多個單元用的時脈不同的情況下,也就是 CDC 的問題,就可能會發生亞穩態。那解決方式要看資料的位元數來決定。如果是單個位元,可以使用兩級的 flip flop 來避免,第一級可能進入亞穩態,但第二級有足夠的時間解析成穩定值。那如果是多個位元,可以使用 Asynchronous FIFO
👨💻 : 低頻率的clock傳輸數據到高頻率的clock, 造成高頻率的clock多次重覆取到data, 你會如何解決?
🙋 : 可以用一個握手機制,低頻送資料,高頻收到後回 ACK,低頻才更新資料,能確保資料只被高頻端接受一次,不會重複讀取。
## Reference
https://www.ptt.cc/bbs/Tech_Job/M.1472189407.A.993.html
https://hackmd.io/@mY6ukBHKSIG5P_4sveSdtA/HJ50IHfri#ICD-Knowledge
https://www.dcard.tw/f/tech_job/p/240953224
https://www.ptt.cc/bbs/Tech_Job/M.1641268306.A.9FF.html