2023-02-19 00:52:52 +00:00
< img width = "186" height = "70" style = " margin: 10px 0px 10px 10px;" alt = "9086 logo" src = "readme_files/9086_design1.svg" >
2023-02-19 00:20:53 +00:00
2023-02-08 08:38:10 +00:00
2023-05-23 15:18:33 +00:00
A CPU that aims to be binary compatible with the 8086 ISA, focused on optimisation and flexibility.
2023-02-10 13:27:15 +00:00
### Progress
2023-05-04 02:21:53 +00:00
* [ ] 8086
* [X] Executing code
* [X] Is Turing complete
* [ ] Can boot up MS-DOS / FreeDOS
* [ ] Is completely binary compatible
2023-05-13 05:51:35 +00:00
* [X] Is pipelined
2023-05-04 02:21:53 +00:00
* [ ] Is Out of Order
* [ ] Is superscalar
2023-11-06 08:18:19 +00:00
* [X] Has been successfully synthesized
2023-11-07 14:37:22 +00:00
* [ ] Has a comprehensive testing framework
2023-02-19 00:52:52 +00:00
### Simulating it
2023-11-07 14:37:22 +00:00
Both Verilator and Icarus Verilog can be used for simulation. You can select which one you want with the SIM variable on [./common.mk ](./common.mk ).
This list shows the software needed and the versions used during development :
2023-02-10 13:27:15 +00:00
2024-02-10 15:52:13 +00:00
* Icarus Verilog : version 12.0 OR ** (preferred)** Verilator : 5.018
2023-03-05 06:37:07 +00:00
* bin86 : 0.16.21
* GNU Make : 4.4.1
2024-02-10 15:52:13 +00:00
* xxd : 2023-10-25
2023-10-21 17:38:35 +00:00
* POSIX coreutils : GNU coreutils 9.4
2023-02-10 13:27:15 +00:00
2023-03-05 06:37:07 +00:00
After that you can run `make` on the top level directory and it should build everything and start the simulation
2023-02-13 16:49:17 +00:00
2023-11-15 14:37:46 +00:00
### Synthesis and bitstream creation for FPGAs
2024-02-10 15:52:13 +00:00
You need to set FPGA\_BOARD in [./common.mk ](./common.mk ) to the name of a directory inside [./system/fpga\_config/ ](system/fpga_config/ ). You should also check inside your board directory for config.mk for further board-specific configuration options like the model of I2C boot rom (if any). Then you can run `make upload_bitstream` in the top level directory and it should create the bitstream and upload it to the fpga. Depending on the board you might need to run `make upload_bootrom` to upload the boot code to an I2C eeprom.
2023-05-16 13:06:01 +00:00
2023-11-15 14:37:46 +00:00
These are the currently supported FPGA boards:
2023-11-07 14:37:22 +00:00
* OrangeCrab r0.2.1
This list shows the software needed and the versions used during development :
2024-02-10 15:52:13 +00:00
* yosys : 0.37
2023-11-07 14:37:22 +00:00
* bin86 : 0.16.21
* GNU Make : 4.4.1
2024-02-10 15:52:13 +00:00
* xxd : 2023-10-25
2023-11-07 14:37:22 +00:00
* POSIX coreutils : GNU coreutils 9.4
Additionally, for ECP5 FPGAs:
* prjtrellis : 1.4 ( database commit 4dda149b9e4f1753ebc8b011ece2fe794be1281a )
* nextpnr : 0.6
Additionally, for FPGAs using the [foboot ](https://github.com/im-tomu/foboot ) bootloader
* dfu-util : 0.11
2023-03-21 12:38:35 +00:00
2024-02-10 15:52:13 +00:00
Additionally, for boards that require an I2C eeprom to boot from
* minipro : 0.6 - ( git commit a227bce77d1b592785558e0af58ae2b0b97d4a23 )
2023-12-04 22:32:21 +00:00
Additionally, if you need a DRAM/DDR controller, the project supports litedram but all the dependencies
needed to build it are downloaded automatically by the appropriate script.
2023-11-07 14:40:51 +00:00
### High level design overview
< img width = "700" style = " margin: 10px 0px 10px 10px;" alt = "9086 logo" src = "readme_files/9086_overview.svg" >
2023-11-07 14:37:22 +00:00
### License and Copyright
2023-11-02 00:29:14 +00:00
All parts of this project and files in this repository are licensed under the GNU General Public License version 3 or later
Efthymios Kritikos is the copyright owner for all files except the following:
2023-11-07 14:37:22 +00:00
| File | Copyright owner | Original license |
| :--------------------------------------------------------: | :-------------: | :--------------: |
| system/fpga\_config/OrangeCrab\_r0.2.1/pin\_constraint.pcf | Greg Davill | MIT |
2023-05-04 02:21:53 +00:00
2023-05-04 02:47:25 +00:00
### Version names
The version name consist of three numbers:
2023-05-04 02:21:53 +00:00
1. The CPU that this version aims to be compatible with
1. The specific milestone
1. Patch level
For example v1.3.2 aims to support 80186 code, is on the fourth milestone and has 2 bug fixes since the milestone was reached.
2023-11-07 14:37:22 +00:00
A "-dev" suffix denotes that the code is in the process to become that version, so in-between that and the previous.