[Libre-soc-dev] Introduction to Libre-SOC
Richard Wilbur
richard.wilbur at gmail.com
Sun Feb 7 17:23:11 GMT 2021
Hello folks!
First, I have read and fully support the Libre-soc charter!
My name is Richard Wilbur and I hail from the state of Montana (UTC-7, DST UTC-6) in the USA. I’m a software and electrical engineer who has worked on a variety of languages (BASIC, Forth, Fortran, assembler, C, C++, Perl, SQL, Python, Ruby), architectures (6502, 68000, 68300, i960, x86, PPC, SPARC), and hardware projects. My degrees are in mathematics and physics, and along the way I completed considerable coursework in computer science and electrical engineering. My employment history includes work in electrical engineering (computer display, wireless datalink, network of distributed SOC’s, HDL) and software engineering (low-level boot firmware, BSP, augmented C pre-processor, OpenGL vertex shader, 3-D model transformations, mathematical modeling, SQL database transformations and analytics queries, MPEG encoder/decoder drivers, PCI bus initialization, network protocol design and implementation, fixed-point division routine, thread-safe hash table).
I took a course in VLSI digital design back in 1997 and enjoyed it a great deal. The professor, Murari Kejariwal, had worked at Texas Instruments and was a great instructor. We used LASI (LAyout System for Individuals), back when it was v5.2, I believe.[1] The course and textbook[2] were geared towards the MOSIS program from USC[3] and targeting Orbit Semiconductor’s 2.0µm double-poly, double-metal, n-well process (CN20). Interestingly, Appendix A of the textbook gives process specifications, electrical and SPICE parameters, and design rules for the CN20 process. No NDA’s—published in a textbook. Sad to see the present semiconductor industry so closed when freedom and openness has made such a positive difference in the software world, and I’m heartened we have this opportunity make such a pivotal difference in the hardware market.
My interest in system and processor design has been developing for several decades since I started programming my family’s Commodore 64[4] in early 1983, first in BASIC, later in 6502/6510 assembly. The computer manual included the schematics. I enjoyed the fractal images we could create on that machine (320x200x2 colors in hours) and the pictures published in books created on Cray supercomputers. The joy of creation and the relative technical poverty imposed by the hardware design piqued my interest in learning how to make much greater resources available on a mere mortal’s budget.
I enjoyed learning about the hardware and software architecture of the Commodore Amiga[5] and Motorola’s 680x0 chips. A preemptive multitasking operating system with a window-based GUI on a 4096-color display, booting from an 880KiB floppy disk in 1MiB RAM still seems like quite an accomplishment—and it was introduced in 1985. I liked the fact that there was basically one hardware address for the operating system and that services were negotiated over message ports. I also liked the hardware multi-tasking with an intelligent bus arbitration/sharing scheme featuring the 68000 main processor, two smaller special-purpose processors, and multiple DMA engines. They got an amazing amount of stuff scheduled into that 0-wait state, 8MHz bus.
In 1994 I started using GNU/Linux in the physics department of the university where I was studying. I appreciated the GNU software freedoms and the concept of copyleft. I also enjoyed running X, gcc, and bash on a PC for which I didn’t have to schedule time to access. It was so much simpler to program than M$ Windows—especially in C for a mathematical model!
After university, I gained experience with IBM’s PowerPC processors as system controllers for embedded systems: development hosted on Solaris with GNU toolchain targeting VxWorks, configuring address map for PowerPC as bus host for two root PCI buses, resolving hardware bug in IBM CPC710 Avignon northbridge through software means. (A big argument for free and open source hardware: we couldn’t fix the hardware and IBM wouldn’t—so I had to work around the bug by making patches to less than open software!)
I have enjoyed designing and optimizing a number of different systems and I am eager to see all the ways I can contribute to Libre-soc. Luke asked me to work on the Dadda multiplier and I am eager to install the needed software and get started fleshing out the design.
Sincerely,
Richard
Reference:
[1] http://lasihomesite.com/ <http://lasihomesite.com/>
[2] http://lasihomesite.com/candr.htm <http://lasihomesite.com/candr.htm> (original edition, pictured on left), http://cmosedu.com <http://cmosedu.com/>
[3] http://www.mosis.org/ <http://www.mosis.org/>
[4] https://en.wikipedia.org/wiki/Commodore_64 <https://en.wikipedia.org/wiki/Commodore_64>
[5] https://en.wikipedia.org/wiki/Amiga_2000 <https://en.wikipedia.org/wiki/Amiga_2000>
More information about the Libre-soc-dev
mailing list