One of the coolest learning experiences I had was this awesome course by the Hebrew University (HUJI). The course deals with building a modern computer from basic logic gates such as "NAND" to a general computer architecture (16 bit "Hack" computer) designed to execute any program such as the Tetris game.
All the hardware components (chips) were developed by us the students of the course, in a hardware characterization language learned during the course. The hardware programs were taught and tested on a hardware simulator that was provided along with the course materials. Also, we develop our own assembler program to translate programs written in symbolic language into binary code.
In the repo I included all the files. Reflecting different stages of the development.
course website: https://courses.campus.gov.il/courses/course-v1:HUJI+ACD_HUJI_nand2tetris+2020_1/course/