Thiết kế số
Đa số hiện nay công việc cho thiết kế vi mạch là thiết kế số, mặc dù trong các loại mixed-design vẫn hiện hữu các thiết kế tương tự chiếm tỉ lệ tương đối nhỏ (khoảng 20% diện tích IC - và hiện nay đang dần phát triển tương tự).
Mình xin viết vài dòng những hiểu biết sơ đẳng của mình về design IC số cho các bạn K4 -> trước có thể đọc để biết đường đầu tư môn học.
Trong quá trình học các bạn sẽ được làm quen với các mạch đơn giản như and, or, xor, not, các mach latch, flip-flop, Mux, deMux,… về chức năng hoạt động của chúng. Những mạch đơn giản này được dùng trong thiết kế số rất nhiều. Đó là lý do mà người ta định nghĩa ra các loại cổng như trên để khi cần thiết chỉ cần gọi chúng ra để sử dụng. Chúng có tác dụng định chuẩn ra các giá trị output với các input xác định có tính logic. Do đó khi ai đó nói bạn code ở mức RTL có nghĩa là code của bạn sử dụng các gate này để thiết kế nên mạch của bạn và chúng sẽ đúng hoặc không ở mức logic, tạm thời bỏ qua các ràng buộc như tối ưu timing, diện tích…
Đôi khi trong những mạch lớn, phức tạp người ta cần các mạch như mạch cộng, nhân, dịch, state-machine… thì người ta sẽ định nghĩa thêm mạch con nhỏ dựa trên các đơn vị như cổng nor, xor, nand,… nên khái niệm cell cũng chỉ là tương đối.
OK, tạm hiểu là mạch lớn được tạo nên nhờ những mạnh nhỏ, mạch nhỏ nhờ những mạch nhỏ hơn và cuối cùng là các con CMOS 
Khoa KTMT chúng ta học môn thiết kế vi mạch với verilog sử dụng Quartus của Altera, như các trình tổng hợp khác như Modelsim, VCS,… CAD này sẽ tổng hợp code VHDL or Verilog ra các cổng logic nhỏ và đi dây theo như những gì code mô tả mà ta có thể quan sát ở mức RTL. Trong quá trình code mã verilog, thật ra cũng giống như lập trình các ngôn ngữ vậy, người lập trình phải mường tượng ra mục đích của mình là đang làm gì. Tuy nhiên, đôi khi một người lập trình viên có thể nhận requirement rồi ngồi code với những sơ đồ đơn giản, còn người làm phần cứng thì không được, không nên hoặc không thể “trừu tượng” những gì mình đang code. Vì vậy mà bước Function Verification rất được chú trọng và chiếm phần lớn thời gian của việc thiết kế, trong đó, người kĩ sư phải thiết kế từng module nhỏ bằng mạch, vẽ tất cả ra và phải chắc chắn rằng module đó thực hiện đúng yêu cầu. Sau khi hoàn thành thì người lập trình Hardware ngồi mô tả lại những gì mình đã verify.
Bước mô tả mạch này chủ yếu là làm cho function đúng còn theo sau nó là cả một quá trình check timing như trong phần front end của bài trước. Vì thế bước verification rất quan trọng vì đưa bản verify cho các nhóm làm việc khác nhau sẽ tiện lợi và khi có lỗi phát sinh thì dựa vào nó để debug nhanh hơn. Và tất nhiên, quá trình tạo bản verification này cũng phải có kĩ năng để các nhóm làm việc có thể đọc hiểu mà không cần phải face to face “tâm sự”.
Mình chưa được đụng tới làm timing như thế nào nên cũng chưa rõ lắm nên mong bạn nào đã tiếp xúc với thực tế, hãy chia sẻ cho mọi người cùng biết.
Theo mình được biết thì trong quá trình trade-off, customer sẽ đưa ra những yêu cầu mà công ty thiết kế nhận trong đó có những ràng buộc về timing, diện tích, power,… Các yêu cầu về diện tích hay power tiêu thụ thì còn phụ thuộc vào loại công nghệ (bao nhiêu nanometers) sử dụng nên công ty thiết kế phải tuân theo. Vậy còn lại là timing. Từ những yêu cầu về timing mà người thiết kế phải canh chỉnh để các tín hiệu phải thỏa mãn một con số nào đó, không được chậm hơn và tín hiệu cần ổn định không bị nhầm lẫn.
Tất nhiên, còn nhiều vấn đề nữa mà mình chưa được biết tới, hy vọng sẽ có người bổ sung.
Chúc các bạn sẽ học tốt các môn như verilog, hệ thống số,… Nếu học verilog mình đề cuốn này cho các bạn: Verilog HDL Synthesis, A Practical Primer