Bug 138 - NLNet 2019 Coriolis2 Layout proposal 2019-10-029
Summary: NLNet 2019 Coriolis2 Layout proposal 2019-10-029
Alias: None
Product: Libre-SOC's first SoC
Classification: Unclassified
Component: Milestones (show other bugs)
Version: unspecified
Hardware: PC Linux
: --- enhancement
Assignee: Luke Kenneth Casson Leighton
Depends on: 199 200 201 202 203 204 205 178
  Show dependency treegraph
Reported: 2019-09-25 03:24 BST by Luke Kenneth Casson Leighton
Modified: 2020-09-24 16:15 BST (History)
4 users (show)

See Also:
NLnet milestone: NLNet.2019.Coriolis2
total budget (EUR) for completion of task and all subtasks: 50000
budget (EUR) for this task, excluding subtasks' budget: 0
parent task for budget allocation:
child tasks for budget allocation: 178 199 200 201 202 203 204 205 217
The table of payments (in EUR) for this task; TOML format:


Note You need to log in before you can comment on or make changes to this bug.
Description Luke Kenneth Casson Leighton 2019-09-25 03:24:50 BST
A proposal to work with LIP6 to lay out the Libre RISC-V ASIC
with coriolis2 - https://libre-riscv.org/nlnet_2019_coriolis2/


* bug #178 - create tutorial / workflow page for setup, establish first layout
* bug #199 - do layout for single-core 180nm ASIC
* bug #200 - do layout for IEEE754 SIMD ALU 180nm
* bug #201 - coordinate and communicate modifications needed for nmigen
* bug #202 - modifications to HDL to suit coriolis2
* bug #203 - bugfixes and modifications to alliance/coriolis2
* bug #205 - Documentation for maintenance purposes of layout
* bug #204 - Transition support from symbolic to real layout and GDSII

* tutorial and exploration: EUR 3000
* layout of main core: EUR 9000
* layout of IEEE754 FP ALU: EUR 7000
* improvements to nmigen: EUR 9000
* modifications to HDL: EUR 6000
* modifications to coriolis2: 7000
* documentation of design and layout: 4000
* support for Staf in GDSII and transition from symbolic to real 180nm: 5000
Comment 1 Luke Kenneth Casson Leighton 2020-02-07 15:46:08 GMT
one important task: the tricky part of writing the translation rules
symbolic to real (that is GDSII). 

Comment 2 Luke Kenneth Casson Leighton 2020-02-07 15:47:00 GMT
also need the "target technology" (staf?)
Comment 3 Luke Kenneth Casson Leighton 2020-02-07 17:17:43 GMT
In the NLNet project the tape-outs are foreseen to be on 180nm. I would like to stick to that for the moment.
I would see 130nm as a possible follow-up. These tape-outs will be sponsored by Google though, so I don't know if that is acceptable for libre-soc development.

> > This should be discussed with Staf also. This is important becausewe need that information to configure the symbolic layout for it(typically, how many metal layers, are they all usable for routingnormal wires and so on). Then we can make place & route that aresufficiently realistics.
> ok.

The process has 6 layers of metal. Metal2-Metal5 have the same min.space/min.width design rule. Metal6 is a thick metal so needs higher pitch. Via5 (between Metal5 and Metal6) also has bigger width and space so Metal5 will likely need to be higher pitch.
I think it is best to discuss the exact configuration first further off-line; exact dimensions of the technology are under NDA.

> > And lastly, there is the tricky part of writing the translation rulessymbolic to real (that is GDSII). We have tried to automate that inthe past but never finished for various non-technical reasons...This may be the occasion.
> that would be helpful, or at least know what needs to be done so itcan go on the list of tasks.

I will take care of S2R. DRC etc; of course if there is a bug in S2R I will need support.
I am doing standard cell development and S2R may not even be needed... In the mean time the nsxlib can be used for development of the place-and-route process.
Comment 4 Luke Kenneth Casson Leighton 2020-02-08 13:09:17 GMT
* each intern receives EUR 600 per month from LIP6.fr.
* let us assume additional costs (management, other engineers) bringing that to EUR 1000 per month, particularly in case LIP6 interns are not available.
* let us assume 3 interns, that's EUR 3,000 per month.  around 4-6 weeks of that will be "training".

to do the layout, we can estimate between 6-9 months of work.  a "do everything automated and pray" is not going to work: we need to do low-level partial-manual, partial-automated layout.

then (as you surmise, Michiel), we will run into issues with nmigen.  already, we know for example that nmigen needs to be modified to support ASICs ("unknown / uninitialised" signal states). *migen* supports these, nmigen does not.  we would like to reserve around EUR 6,000 to 8,000 for the nmigen developers.

then, Jean-Paul explained that sometimes, you actually have to modify the verilog - small tweaking - to get it to properly in to shape for the layout.  this will need one of the people who wrote the nmigen HDL (me, or jacob) to take a look at it.  let us estimate 7-10 weeks here, around EUR 5,000.

so we are at around EUR 27,000 + 8,000 + 5,000 = EUR 40,000 *estimated*, hence the reason for requesting EUR 50,000, to be on the safe side.
Comment 5 Staf Verhaegen 2020-02-23 17:40:54 GMT
I did have a chat with Jean-Paul and provided him information on the process that will be used for the prototype tape-out. He will have a further look to see if changes need to be done the coriolis setup.
Comment 6 Luke Kenneth Casson Leighton 2020-02-23 17:59:13 GMT
(In reply to Staf Verhaegen from comment #5)
> I did have a chat with Jean-Paul and provided him information on the process
> that will be used for the prototype tape-out. He will have a further look to
> see if changes need to be done the coriolis setup.

fantastic that is very helpful.  i asdume it was private because it was under NDA (because of the TSMC NDA).
Comment 7 Staf Verhaegen 2020-02-23 18:59:51 GMT
> i assume it was private because it was under NDA (because of the TSMC NDA).

Indeed, the information about the process I can make public is already in this thread.
Comment 8 Luke Kenneth Casson Leighton 2020-03-02 16:51:37 GMT
jean-paul i am happy now with the experiments in #178 that what we want to do is achievable.  some interns could now fairly easily do the layout, what would the process and timeline be, there? do we need to bring Marie-Minerve in?

joost are you happy with this one?  i will begin creating toplevel bugreports.
Comment 9 Luke Kenneth Casson Leighton 2020-03-05 11:28:36 GMT
Comment 10 Luke Kenneth Casson Leighton 2020-03-13 13:34:54 GMT
To be attached as Schedule A to the 2010-10-029 MoU

# create tutorial / workflow page for setup, establish first layout
we need the alliance2/coriolis workflow documented, a suite of tutorials
found (or written), and a "test project" to be done which gives a guide
to completion time of layout.

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=178
Budget: 3000

# layout for single-core 180nm ASIC
do layout for single-core 180nm ASIC including 1st level cache.
also peripherals: minimum priority is SDRAM 32 bit, 16550 UART, JTAG and SPI. secondary priorities are 64 bit SDRAM, GPIO, PWM, EINT, QSPI, SDMMC, RGBTTL, I2C and the pinmux.
package is to be QFP, maximum around 200 pins only including power and ground.

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=199
Budget: 9000

# layout for IEEE754 SIMD ALU 180nm
layout of the IEEE754 FPU "Function Units" needed, as part of the 180nm ASIC in bug #199. these are to be done as reuseable blocks because several FPMUL blocks, several FPSQRT blocks etc. are needed per core, and they are very large.

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=200
Budget: 7000

* bug #201 - create specifications for modifications needed for additional nmigen functionality.
nmigen needs some very specific additions to support the LibreSOC layout. these include adding SRNOR Latches, as well as "z" and "x" in signals (migen supported "x" but nmigen does not).

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=201
Budget: 9000

* bug #202 - modifications to HDL to suit coriolis2
coriolis2 layout expects some specific rules regarding connections between Cells. it has sometimes been the case that only when seeing a layout is it discovered that there is a mistake or it is suboptimal. a redesign of the nmigen HDL would be needed.

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=202
Budget: 6000

* bug #203 - bugfixes and modifications to alliance/coriolis2
coriolis2 was initially designed for small ASICs (50,000 gates).  it needs significant improvements to be suitable for use with LibreSOC due to its massive size (500,000 gates).  additionally, it would be useful to prepare for coriolis2 conversion and refactoring to use python3

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=203
Budget: 7000

* bug #205 - Documentation for maintenance purposes of layout
this is important for maintenance purposes and for later ASICs as well as educational purposes and for other developers on alternative projects.  the process and decisions on how the layout was done must be documented, here:

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=205
Budget: 4000

* bug #204 - Transition support from symbolic to real layout and GDSII
Staf will need to do the "real" layout, using a "real" Cell Library instead of the purely symbolic one. Also the IO Pads. If there are any issues he will need  to resolve them in order to get a working ASIC.

URL: http://bugs.libre-riscv.org/show_bug.cgi?id=204
Budget: 5000
Comment 11 Luke Kenneth Casson Leighton 2020-04-07 20:46:32 BST
Sentence for MoU:

Reducing complexity makes software and hardware we rely on to provide crucial services and infrastructure more secure and reliable. Making sure that not only the tools to develop ASICs (coriolis2) but the ASIC itself is fully transparently developed leaves no opportunity for subversion of hardware.
Comment 12 Staf Verhaegen 2020-09-24 16:15:26 BST
On 23/11 a meeting was organised to discuss roadmap for tape-out of this 180nm prototype. Due delay in progress for both standard cell and Coriolis development the tape-out date has been moved to 2/12. One month is foreseen for verification so all input need to be available 30/10. Following milestones have been put forward to get there:

- now: freeze first version of libre-soc code, without any macro blocks
  on-chip RAM syntehsized to flip-flops
- 2/10: First layout of scaled standard cells
- 16/10: First dry run of P&R and test of tape-out flow with Europractice.
- 30/10:
  - Final code freeze of libre-soc nmigen code.
  - Final standard cell library
  - SRAM block finished
  - IO cell tested and finalized
  - PLL available
- 2/12: Hard deadline for tape-out submission of final layout.

This that need to be done from libre-soc side:
- now: finalize IO definition for current design (Luke & Staf)
- 30/10:
  - Finalize peripherals + IO (bug #490)
  - Finish MMU design + cache (bug #450, ...)
  - Determine expected operating frequency + align with PLL spec
  - Determine SRAM block dimensions + implement it (bug #502)