remove autogen code, add rationale
[libreriscv.git] / 180nm_Oct2020.mdwn
1 # 180 nm ASIC plan for Oct 2020
2
3 NOTE: moved to Jun 9th 2021 (sigh should not have put a date in the page name, oh well)
4
5 This page is for discussion of what we can aim for and reasonably achieve.
6 To be expanded with links to bugreports
7
8 Links:
9
10 * <https://gitlab.com/Chips4Makers>
11 * <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2020-June/007699.html>
12
13 ## Minimum viability
14
15 * a Wishbone interface.  this allows us to drop *directly* into
16 already-written Litex "SOC" infrastructure (leaving all of us free to
17 focus on the essentials)
18 * the dependency matrices are essential.
19 * a Branch Function Unit is essential (minimum of 1)
20 * Load/Store Function Units are essential
21 * so are multiple register file files (SPRs, Condition Regs, 32x INT Regs)
22 * the integer pipelines (integer and logic instructions) are essential
23 (the FP ones not so much)
24 <https://bugs.libre-soc.org/show_bug.cgi?id=305>
25 * a very very basic Branch Prediction system (fixed, but observing POWER
26 branch "hints")
27 * a very very basic Common Data Bus infrastructure.
28 * a TLB and MMU are not strictly essential (not for a proof-of-concept ASIC)
29 * neither in some ways is a L1 cache
30 * [[180nm_Oct2020/interfaces]] we need as a bare minimum include JTAG,
31 GPIO, EINT, SPI and QSPI, I2C, UART16550, LPC (from Raptor Engineering)
32 and that actually might even be it.
33 * [[180nm_Oct2020/ls180]] actual auto-generated pinouts by pinmux program
34
35 ## Secondary priorities
36
37 * a PLL (this is quite a lot however it turns the ASIC from a 24mhz
38 design into a 300mhz design)
39 * a TLB and MMU (in combination with a PLL if it is GNU/Linux OS capable
40 we have an actual viable *saleable product*, immediately)
41 * dual L1 Caches with the 2x 128-bit-wide L0CacheBuffer to merge 8x LD/STs
42 * multiple Common Data Buses to / from the RegFile along with a 4x
43 "Striped" HI/LO-32-ODD/EVEN access pattern.
44 * multi-issue
45 * PartitionedSignal-based integer pipelines
46 * an FP regfile and associated FP pipelines
47 * SV compliance
48 * 128x INT/FP registers
49 * GPU-style opcodes - Jacob mentioned Texturisation opcodes as being
50 more important than e.g. SIN/COS.
51 * additional interfaces such as RGB/TTL, SDRAM, HyperRAM, RGMII, SD/MMC,
52 USB-ULPI
53 * a pinmux
54 * [FSI instead of JTAG](https://gitlab.raptorengineering.com/raptor-engineering-public/lpc-spi-bridge-fpga/-/blob/master/fsi_master.v)
55
56 # Available people
57
58 * Rudi from <http://asics.ws> to cover the interface set
59 * [[lkcl]] for the scoreboard systems
60 * [[programmerjake]] TODO
61 * [[tplaten]] memory and cache
62 * [[jock_tanner]] TODO
63 * MarketNext TODO
64
65 # Preliminary coriolis2 ASIC layout
66
67 ## 02jul2020 - first version
68
69 * <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2020-July/008438.html>
70
71 [[!img 180nm_Oct2020/2020-07-02_19-01.png size="900x" ]]
72
73 ## 03jul2020 - DIV unit added
74
75 [[!img 180nm_Oct2020/2020-07-03_11-04.png size="900x" ]]
76
77 ## 28dec2020 - End of year progress update
78
79 ### With blockage layers
80
81 [[!img 180nm_Oct2020/2020-12-28.png size="900x" ]]
82
83 ### Without blockage layers so wires can be seen more clearly
84
85 [[!img 180nm_Oct2020/2020-12-28_without_blockages.png size="900x" ]]