Ever thought what happens when you open an application program like Microsoft Word or Excel or a calculator on your laptop or mobile? These are application programs written in high-level programming languages, which are, eventually converted to binary machine language (in terms of ‘1’s and ‘0’s). What’s interesting here is the software and hardware interface.
A high-level program, like swap.c as shown below is first converted to an assembly language program (RISC-V in below example) using compiler. This assembly language is converted to binary machine language program using an assembler. This level of abstraction of your application using high-level programming languages like C, C++, Java or Visual Basic, proves to be a great idea to improve design
Here’s the flow:
Application software- System Software-Hardware
One important abstraction, as shown above, is the interface between lowest level software (see instructions like addi, sd, slli, etc. in above image) and hardware (See below). This lowest level software is therefore called as instruction set architecture (ISA) or simply architecture.
‘Picorv32’ is a cpu core that implements RISC-V architecture (which will be more evident as we continue with the upcoming course). Implementation is a hardware, which follows architecture abstraction. See RTL snippet in below image –
And finally, once we synthesize/pnr picorv32 using qflow (an opensource rtl2gds flow) and analyze using STA tool ‘opentimer’, below is the layout what you can see in MAGIC – Now this layout is an actual hardware implementation of a RISC-V architecture, you can call it a ‘processor’ which sits on your mobile phone and runs all applications on your phone, like facebook, linkedin and so on
- Introduction to risc-v instruction set architecture – Thanks to SiFive for helping me out on this
- RTL implementation and synthesis of risc-v – Thanks to Clifford Wolf
- RTL2GDS of picorv32 – Thanks to Tim Edwards from opencircuitdesign.com