lip6 / coriolis

Coriolis VLSI EDA Tool (LIP6)
https://coriolis.lip6.fr
GNU General Public License v2.0
44 stars 5 forks source link

Added layer map manupulation functions to LefImport #129

Closed lanserge closed 5 months ago

lanserge commented 5 months ago

Python functions added to LefImport:

addLayer - add LEF layer name mapped to existing layer

getLayer - get layer mapped by LEF layer name

clearLayer - remove LEF layer name mapping

With these functions it is possible to import LEF with it's layer names mapped to proper existing layers.

github-actions[bot] commented 5 months ago

A preview of is uploaded and can be seen here:

https://lip6.github.io/coriolis/pull/129/

Changes may take a few minutes to propagate. Since this is a preview of production, content with draft: true will not be rendered. The source is here: https://github.com/lip6/coriolis/tree/gh-pages/pull/129/

lanserge commented 5 months ago

OK for me. Just one though : why the layer name in the Coriolis config files be different that the ones in the LEF file ? I try to use the same names for the sake of clarity, but maybe there are corner cases.

There is no problem with single LEF, but for different IPs that provide different LEFs, like standard cells LEF and padring cells LEF and SRAM macro LEF they all could have different layer names for the same technology and especially if they are from different providers. The layermap file that accompany the LEF file could be used for mapping names to the proper GDS layers.

jpc-lip6 commented 5 months ago

OK for me. Just one though : why the layer name in the Coriolis config files be different that the ones in the LEF file ? I try to use the same names for the sake of clarity, but maybe there are corner cases.

There is no problem with single LEF, but for different IPs that provide different LEFs, like standard cells LEF and padring cells LEF and SRAM macro LEF they all could have different layer names for the same technology and especially if they are from different providers. The layermap file that accompany the LEF file could be used for mapping names to the proper GDS layers.

I assume that you did encounter that case. I find it extremely scary that, for a same technology, different providers uses different layer names. Especially as the GDS layer name is not indicated in the LEF file, so we have to rely on some third party information to ensure that the mapping is consistent across different LEF files.

lanserge commented 5 months ago

The accompanied layermap file contains information that maps LEF layer names to GDS numerical values. So this makes LEF use any names for the GDS layers. Using this information will guarantee no mess with layers.

stafverhaegen-chipflow commented 5 months ago

Also it is not uncommon that the layer names in the design rule manual and the Virtuoso layer names differ from the layer names used in LEF files. In such cases I think in Coriolis the names used in DRM/Virtuoso should be used and the LEF layers mapped onto those names.