Microprocessor Design and Verification 101

{MDV101} Build the Foundation of Computing.
Design Your Own Microprocessor!

Content

20+ Labs

Duration

15 Weeks

Format

Offline and online

Outcome

Fabricate your own chip!

What Will You Learn

Learn by doing! From simple logic gates upto functioning 16-bit microprocessor. Dive into the fundamentals of microprocessor design and verification, and gain hands-on experience in the world of hardware engineering. This course provides a comprehensive introduction to hardware design principles, the Verilog hardware description language, and modern verification methodologies. Learn to design a fully functional 16-bit processor, understand machine code and assembly language, and explore how processors execute programs. With real-world tools and industry-relevant techniques, this course equips you with the skills to become proficient in processor architecture, digital logic design, and verification processes.

Course language: The course material will be provided exclusively in English, as most hardware design resources available on the web are in English, and being able to read and comprehend English is a prerequisite for this course. However, the lectures and meetups will be flexible in their approach to ensure that your understanding remains the top priority. Whether it’s in Kazakh, Russian, or English, the goal is to create an inclusive environment where concepts are clear and accessible to everyone.

  • From gates to complex circuits
  • Foundations of hardware design
  • Verilog HDL
  • Building a 16-bit processor
  • Machine code and assembly language
  • Hardware verification methodologies
  • Simulation and debugging

Countdown to the Beginning of Your Journey

Don't miss out! The course starts on . Get ready to start an exciting journey into the world of microprocessor design and verification!

00

Days

00

Hours

00

Minutes

00

Seconds

What's Included

15
Weeks
20+
Practical Labs
10+
Physical meetups
6+
Guest lectures from industry experts

Course Modules

Before diving into the details of hardware design, let's set the stage. This foundational chapter isn’t just about concepts; it’s about understanding that what you design will ultimately become physical hardware. Every circuit you simulate, every logic gate you connect—these are the building blocks of real, tangible technology. We'll be using Logisim Evolution, a virtual lab where you’ll connect components like a digital engineer, bridging the gap between abstract design and real-world application.
1.1Introduction to Hardware Design
1.2Lab 1: Simple 2-to-1 Mux
1.3Intro to Logisim Evolution
1.4Lab 2: Boolean Expressions to Digital Circuits
This week, we’ll deepen our understanding of digital logic by exploring both combinational and sequential logic circuits. You’ll start by reviewing key concepts of combinational logic, then dive into designing a one-bit adder step-by-step. We’ll also introduce sequential logic, which allows for state retention—a foundational concept in memory design. By the end of this week, you’ll have hands-on experience building essential digital components, including counters and priority encoders, using Verilog.
2.1Combinational Logic
2.2Step-by-Step Design of 1-Bit Adder
2.3Sequential Logic
2.4Lab 5: D Flip-Flop Counter
2.5Lab 6: Priority Encoder with Verilog
2.6Homework 1: Verilog Exercises
This week, we step into the world of simulation with Verilator, an essential tool for hardware verification. You'll learn the basics of Verilator, including how to set up wave tracing to capture and analyze circuit behavior. We’ll also explore debugging techniques as you work through building and troubleshooting a Fibonacci generator. This hands-on approach will equip you with essential debugging skills that are invaluable in hardware development.
3.1Lab 7: Getting Started with Verilator
3.2Enabling Wave Tracing in Verilator
3.3Lab 8: Debugging with Waveforms
This week, we’ll advance your ALU design skills by implementing the 74181 Arithmetic Logic Unit in Verilog, building on your previous graphical ALU work. Additionally, we’ll introduce Finite State Machines (FSMs), a crucial concept for sequential circuit design. You’ll learn best practices for designing FSMs and apply these skills to create a Key Lock System. By the end of this module, you'll have a deeper understanding of both ALU functions and FSMs, essential components in processor design.
4.1Lab 9: 74181 ALU in Verilog
4.2FSM Introduction
4.3Lab 10 Prelab: Designing FSMs the Right Way
4.4Lab 10: Key Lock System
This week marks the beginning of your final project: designing a simple processor, which we’ll call "Bitty" (from the Kazakh word "биттей," meaning tiny). Leveraging everything we’ve learned so far, you’ll build a processor with core components, including registers, a multiplexer, and a control unit implemented as a finite state machine. Bitty may be a small processor, but the challenges it brings will deepen your understanding of processor fundamentals and give you hands-on experience with the building blocks of computing systems.
5.1Lab 11: Final Project Part 1 - Simple Processor in Verilog
Final Project Begins
This week, you’ll continue developing your processor by enhancing its instruction set for more efficient operations. Additionally, you’ll embark on the fundamentals of processor verification. Lab 13 introduces co-simulation techniques and the implementation of a "golden model" to ensure your processor functions as expected. This dual focus on optimization and verification is crucial for building reliable, high-performance hardware.
6.1Lab 12: Final Project Part 2 - Enhancement No. 1
6.2Lab 13: Processor Verification 101 - Part 1
This week introduces you to Field-Programmable Gate Arrays (FPGAs), versatile platforms that allow for reconfigurable digital circuit design. You'll gain an understanding of FPGA architecture, explore how to implement designs on FPGA, and complete hands-on exercises that reinforce these concepts. By the end of the week, you'll be ready to bring your designs to life on an actual hardware platform.
7.1Introduction to FPGA
7.2FPGA Workshop
Building on our initial verification work, this week focuses on integrating a "golden model" into the testbench to validate processor functionality against a known standard. You will also work with random instruction generation to thoroughly test your processor design, enhancing its robustness and ensuring reliability. These verification techniques are essential for identifying edge cases and preparing the design for real-world applications.
8.1Lab 14: Processor Verification 101 - Part 2
This week continues our exploration of FPGA programming with more challenging exercises that build upon your foundational knowledge. You’ll tackle complex design tasks, gain further insights into FPGA capabilities, and deepen your skills in implementing and debugging FPGA circuits. These advanced exercises will prepare you to confidently apply FPGA solutions in real-world scenarios.
9.1Advanced FPGA Exercises
In the final stretch, we’ll focus on expanding your processor's capabilities and streamlining your development workflow. First, you’ll enhance the hardware logic to support running complete programs, further solidifying your understanding of processor functionality. Then, you’ll build an assembler and disassembler, crucial tools for translating between human-readable code and machine instructions. These steps are essential for creating a processor that can execute real programs efficiently.
10.1Lab 15: Enhancement No. 2 - Expanding Hardware Logic
10.2Lab 16: Streamline Your Workflow - Assembler and Disassembler
This week, you’ll expand your processor’s instruction set architecture (ISA) by adding a new immediate instruction. This enhancement will deepen your understanding of how processors handle various types of instructions and improve flexibility in coding. Implementing this new instruction will further your ability to customize the processor for specific computational tasks.
11.1Lab 17: Enhancement No. 3 - Adding New Immediate Instruction to the ISA
This week, you’ll further enhance your processor by extending the instruction set architecture (ISA) to support jump instructions. This crucial addition will allow the processor to handle non-linear control flows, enabling more complex program structures and enhancing execution efficiency.
12.1Lab 18: Enhancement No. 4 - Extending ISA for Jump Support
This week, you'll enhance your processor's functionality by adding Load and Store operations to the instruction set architecture (ISA). These operations are essential for interacting with memory, enabling the processor to read from and write to memory locations, which is fundamental for a wide range of applications.
13.1Lab 19: Enhancement No. 5 - Extending ISA for Load and Store Operations
In this final week, you’ll put your processor to the test by writing meaningful programs that utilize the full capabilities of the ISA you've developed. This practical application will solidify your understanding of the processor's operations and showcase the functionality you’ve built throughout the course. By writing programs, you'll gain hands-on experience with real-world applications of your custom processor.
14.1Lab 20: Developing Programs to Run on Your Processor
In this final week of hands-on work, you’ll deploy your custom processor on an FPGA. This stage will allow you to experience the entire process from design to implementation in hardware, validating your processor's functionality and performance in a real-world setting. Testing on an FPGA provides invaluable insights into the physical operation of your processor.
15.1Lab 21: Launch and Test Your Processor on an FPGA

Course Grading and Benefits

This course will be evaluated as an academic university course.

Based on your final grade, you’ll receive different privileges and recognition at the end of the course.

Your final grade will be determined based on the following breakdown:
✅ 70% from the labs;
✅ 20% from quizzes;
✅ 10% from attendance at online and offline sessions.

Grade C (0%-79%)

You will receive:
  • Certificate of Completion
  • Full access to all course materials

Grade B (80%-89%)

You will receive:
  • Blue Certificate of Achievement
  • Invitation for SiemensEDA certification program
  • Fullfillment of the prerequisite course for Advanced Microprocessor Design course.
  • Full access to all course materials
  • Invitation to join an alumni network

Grade A (90%-100%)

You will receive:
  • Red Certificate of Excellence
  • We will farbricate your design! Bring your design to life!
  • Internship opportunity!
  • Invitation for SiemensEDA certification program
  • Fullfillment of the prerequisite course for Advanced Microprocessor Design course.
  • Full access to all course materials
  • Invitation to join an alumni network

Who is this Course For?

This course is designed for beginners eager to learn hardware design from the ground up. Starting from simple logic gates, you’ll progress all the way to creating a fully functional 16-bit microprocessor. Through hands-on labs and real-world tools, you’ll gain a strong foundation in hardware engineering, including design principles, Verilog, and modern verification methodologies. Along the way, you'll master essential skills in processor architecture, machine code, assembly language, and digital logic.

While no prior hardware experience is required, basic programming knowledge is recommended. Familiarity with C++ and comfort in a Linux environment will help you work more smoothly with the tools we'll use. If you’re excited about the field but need to brush up on these prerequisites, we can provide additional resources to get you started!

  • Aspiring engineers curious about digital logic and hardware design
  • Software developers who want to understand the hardware behind the code
  • Students aiming to boost their resumes with hands-on hardware skills
  • Tech enthusiasts looking to explore processor design and verification
  • Anyone with a programming background eager to enter the world of hardware
  • Innovators who want to bring their ideas to life in silicon
Instructor Image

Meet The Instructor

Nursultan Kabylkas is an Assistant Professor at Nazarbayev University with a passion for advancing the semiconductor industry in Kazakhstan. A graduate of the University of California, Santa Cruz, Nursultan brings a wealth of experience from his time in Silicon Valley. During his graduate studies, he interned at Esperanto Technologies, where he contributed to the design of a multi-core AI accelerator. He also interned at AMD, where he continues to play a role in their GPU ISA project.

Nursultan is a firm believer in the untapped potential of Kazakhstan to become a global leader in semiconductor technology. He envisions a future where Kazakh developers make their mark on the field, propelling a Kazakh company to the forefront of the semiconductor industry. With a rapidly changing landscape in chip design, he is driven by the vision that one day, a top semiconductor company will emerge from Kazakhstan.

Course Reviews

When I started the course, I was really new to hardware. I didn’t even know what it was or how to work with it, so it was pretty challenging at first. But with the professor’s help, I learned a lot, from digital circuits to how processors work. My favorite part was learning through hands-on practice. I even designed my own processor from scratch.

Kamila Tashimova

This course is well-structured, and the gradual process of learning makes the material easy to understand. I came to this course with doubts and zero knowledge - now I love this field and have a core understanding of how ISA should work. Starting this course was a life-changing decision for me, and I believe it can become one for others too.

Sayat Abdikul

Great introduction to microprocessor design and verification! The material is well-organized, and everything is explained very clearly. By taking this course, I learned a new language (Verilog), gained a better understanding of ISA design, and learned new verification techniques that I never studied before. The course is highly practical, with tons of labs, but having your self-crafted processor at the end and being able to write programs for it was very satisfying and worth the time and effort.

Alikhan Balpykov

This course is a breath of fresh air among CS courses. For the first time, I truly felt like I was doing something meaningful. What sets this course apart is how it introduced me to the world of hardware design, something I hadn’t explored before. While everything comes with its challenges, the small steps we took each time helped me gradually build and improve my processor design. Before starting the course, I couldn’t have imagined that I would design that processor architecture all by myself.

Yerulan Kongrat

Course provided an important hands-on experience in both the design and verification of microprocessors. Writing a microprocessor in Verilog was a great exercise in understanding low-level hardware design, from creating registers and ALUs to implementing control logic. The verification was no less challenging, requiring a deep understanding of testbenches, simulation tools, and the creation of comprehensive test cases. So, If you want to deepen your knowledge of microarchitecture and gain practical hardware design and verification skills, this course is a great choice.

Sultan Kassenov

This program helped me develop my intuition about hardware. Theory is, of course, valuable, but when you build something, you encounter certain aspects firsthand, which gives you a deeper understanding of processors—even if it’s a simple one.

Moldir Azhimukhanbet

The course offers a comprehensive introduction to the fundamental concepts of microprocessor design, emphasizing both theoretical principles and practical verification techniques. It is well-planned and structured, with clear explanations, engaging lab assignments, and access to valuable resources. Professor Kabylkas created a supportive learning environment that encourages critical thinking and problem-solving, ensuring that students not only grasp the material but can also apply it in real-world scenarios by building projects. One of the highlights of the course was the building of a project, where we had the opportunity to design and build a fully functional microprocessor. At first, it was scary to me (the person who had 0 practical knowledge about the processors), but the step-by-step instructions and constant feedback from the Professor made it challenging and entertaining at the same time. In my humble opinion, this course is "musthave" for anyone pursuing a career in electrical engineering or computer science.

Ansar Askhat

Microprocessor Verification was the most interesting course I took this fall, offering a solid introduction to hardware engineering. It’s ideal for those who enjoy building systems from scratch, as we constructed a microprocessor complete with an ALU, memory, and a control unit capable of reading ISA instructions, managing the entire instruction flow . The course strikes a great balance between theory and hands-on implementation, making it a bit challenging yet very rewarding. The professor was consistently approachable and supportive, always ready to help with questions or debugging issues. For anyone considering a career in hardware design or embedded systems, this course provides an excellent intro into this specific domain.

Didar Kozhikov

I really enjoyed this course. Before taking this course, my knowledge about computer systems was limited to a basic understanding of processors, assembly language, and binaries (from NU course CS231). However, this course gave me a much deeper understanding of how processors are designed, how they execute binary instructions, and how they interact with memory. As part of the coursework, I even created my own Turing-complete assembly language. The code of this language can then be converted into binary code and run on a processor to produce meaningful results.

We also explored advanced processor architecture topics, like branch prediction, cache coherence, and pipeline hazards. While these were covered briefly during lectures, it was enough to grasp how they work at an industry-standard level. Overall, I would highly recommend this course—not just for those interested in hardware development and computer engineering, but also for software engineers and computer scientists. Understanding how computers work at a low level is incredibly valuable for debugging and diagnosing potential issues.

Sultan Rzgaliyev

The course is incredibly well structured, making it accessible even to someone like me, an electrical engineering student, despite being designed for CS students. The clear explanations and practical examples bridged the gap between disciplines, allowing me to grasp the concepts with ease. The clear explanations and practical examples made even complex concepts accessible. Through this course, I discovered my passion for this field and gained the confidence to pursue it further. I’m excited to continue improving my skills and building on the strong foundation this course provided.

Almas Adilgazyuly

This is a great course that builds a solid foundation in hardware design, verification, and computer architecture. It covers a diverse range of topics, from logic design fundamentals to modern processor architectures. Each lab exercise builds on the previous one, gradually enhancing the processor by adding additional capabilities and modules at each step. Through hands-on experience, I learned about the way processors operate and optimization techniques used to enhance performance.

Olzhas Nurman

In this course, I acquired basic skills and knowledge about microprocessor design and verification. All learning happens in practice, by the end of the course we designed and verified a 16-bit processor with 21 operations. These practical assignments gave me a deeper understanding of previous courses on computer architectures. I also learned how to work with verilog, and combine it with c++. The most interesting part of the course was developing an emulator for the processor and cosimulation verification done with help of the emulator as a golden model.

Viktor Kovalchuk

This course has been an incredible journey in understanding the complexity of computer architecture, low-level programming, and the interaction between software and hardware. The progression from creating simple digital logic circuits to designing our own processor has been as challenging as it is rewarding. The course has taught me to think like a true hardware engineer, always keeping in mind the HDL mantra: "I am describing a physical hardware." Not only did I learn how to design hardware, but I also learned how to verify it, which strengthened my C++ skills. Anyone looking to begin their journey in hardware engineering and build a solid foundation in it should definitely take this course.

Askar Aibar

This was one of the most interesting courses I took during my four years at this university. The course is well-structured, and even if you take it as a freshman, by the end of the semester, you'll have a thorough understanding of the material. Instructor Kabylkas guides you step by step towards the course objectives. Moreover, he is always accessible and ready to provide any support you might need, which makes the learning experience even better.

Azat Utessov

We value your feedback! Please share your feedback with us if you took the course. Let others know about your experience. Email your feedback to kabylkas@texer.ai

Join This Course

Course Audit

₸50000
Full access to the course
  • Study at your own pace
  • Pass for guest lectures
  • No grading

Instructor-led Course

₸600000
Full access to the course with guidance
  • Pass for online and offline meetups
  • Pass for guest lectures
  • Graded course with privileges
  • Feedback on quizzes
  • Feedback on labs
  • Access to Q/A Telegram channel

Premium Instructor-led Course

₸1000000
Premium access with extra support
  • Pass for online and offline meetups
  • Pass for guest lectures
  • Graded course with privileges
  • Feedback on quizzes
  • Feedback on labs
  • Access to Q/A Telegram channel
  • 6 one-on-one office hours with TAs
  • 2 one-on-one office hours with the instructor

FAQ

Can't find the answer you're looking for? Feel free to get in touch.

What is the financial aids application process?

We understand that financial constraints can sometimes be a barrier to accessing quality education. However, before applying for financial aid, we kindly ask that you consider the following:

This course is a not-for-profit initiative. The fees collected are used solely to cover operational expenses, including salaries, equipment, servers, and other necessary resources. If you have the means to pay for the course, we encourage you to do so to help sustain this initiative for others who need financial assistance.

If you genuinely cannot afford the course fees but are passionate about participating, please complete our Financial Aid Application Form. We are committed to making education accessible and will review your application with care and discretion.

Can you justify the cost of the course?

Absolutely, and here’s why! First, we have real operational costs—like paying teaching assistants, using virtual machines on Azure, and keeping everything running smoothly so you get the best learning experience. Second, there’s a bit of psychology behind the pricing. Our instructor has found that when students make a financial commitment, they’re more motivated to stick with the course and complete it. In the past, when we offered material for free, completion rates were low, and students didn’t seem to see the value. Treat this as an investment that will pay-back in the form of promotion or a new job! By investing in the course, you’re giving yourself a nudge to stay committed, learn deeply, and finish strong. It’s a win-win!

Who is this course for?

This course is for anyone looking to dive into the world of hardware design from scratch! Whether you’re a curious student, an aspiring engineer, a software developer who wants to understand the hardware side of things, or simply a tech enthusiast wanting to explore processor design, you're in the right place. We recommend a bit of programming knowledge—some familiarity with C++ and Linux will go a long way, but if you need a refresher, we’ve got extra resources to help you get started!

How is the course structured?

The course is structured like a university class, complete with lectures, hands-on labs, quizzes, and a final project. Each week, you’ll tackle different aspects of processor design and verification, starting with the basics and gradually moving to complex concepts. Labs will give you real-world experience, while quizzes and homework will help reinforce what you learn. And for those ready to go above and beyond, there’s a final project that lets you build a simple processor of your own. We even grade you, so you know exactly where you stand—and the grade you achieve comes with perks!

Why attandance is mandatory and such a big chunk of the grade?

Many instructor's might argue with me, but in my opinion, attendance must be mandatory because it plays a crucial role in the learning process, beyond just consuming content. We are all human, and we always have "other" stuff to do, but coming to lectures helps bring attention to the material and adjusts the daily priorities. Much like learning kung fu, where a student must show up to train with the master—and the master has to hold the student accountable if they don’t—I believe showing up to class is essential for progress. While it would be easier for me not to track attendance, I value the opportunity for students to engage with the material, connect with a community of learners, and make their learning experience more meaningful.