I am reading Digital Design and Computer Architecture book and if I will be persistent then I will have MIPS architecture computer at the end, implemented from scratch by me .
I wonder is it possible to somehow define different components of this computer using Verilog or VHDL or something else maybe and simulate them on a computer? I'd like to build it from most basic blocks like NAND or AND and do one step at a time building each layer of abstraction. Then when I am done with hardware part I'd like to write an operating system for it.
Is it possible to do all of this without buying any real hardware and using only some simulation software?
If so, please, point me to some resources where I can read more about it. Or explain how this can be done.
Thanks in advance.