Commit Graph

3059 Commits

Author SHA1 Message Date
Jean-Paul Chaput 3d8d737aaf Fix use of bitwise and instead of logical one. 2023-09-21 12:19:17 +02:00
Jean-Paul Chaput ad53372253 Fix stupid mistake in designflow.pnr.doTask(), not executing script. 2023-09-21 12:18:18 +02:00
Jean-Paul Chaput c8d98a304e Always check that coreAb fit into coronaAb while building a chip. 2023-09-20 20:15:24 +02:00
Jean-Paul Chaput 6fb0215742 Add the capability to pass a topName to the P&R script in designflow.pnr 2023-09-19 17:51:06 +02:00
Jean-Paul Chaput 09cace5300 Merge branch 'wip-gf180mcu' of github.com:lip6/coriolis into wip-gf180mcu 2023-09-19 16:01:55 +02:00
Jean-Paul Chaput 8f69fa668d More trials on SystemVerilog to Verilog translators.
* New: In designflow.surelog, support for the Synlig Surelog/UHDM plugin
    for Yosys.
* Fix: In designflow.svase, remove the transient file "slang-args.txt".
* Change: In designflow.yosys, remove the direct SystemVerilog support
    that is delegated to Surelog and just load the resulting UHDM.
      Merge with yosysnp and automatically detect if we can load the
    Python plugin or go through a script.
2023-09-19 16:01:00 +02:00
Jean-Paul Chaput 4398770432 Add SystemVerilog support to designflow.yosys. Merge with YosysNp.
* New: In designflow.yosys, add support to load SystemVerilog with the
    synlig plugin (CHIPS Alliance).
      Integrate back the "non-Python" version of the task. Now switch
    automatically between Python & Non-Python based on the availability
    of the plugin. Also select between "yosys" & "yowasp-yosys".
* Change: In svase & sv2v, suppress the requirement of the *first*
    dependency file to be used as the default target. Now use the
    "top module" argument.
2023-09-16 18:12:10 +02:00
Jean-Paul Chaput c35db5387e
Merge branch 'main' into wip-gf180mcu 2023-09-14 12:58:33 +02:00
Jean-Paul Chaput e0c159c07b Only allow BasicLayer of "cut" material to be of width/length 0. 2023-09-14 12:49:28 +02:00
Jean-Paul Chaput efa932a9aa Fix, again, the extensions of PATHTYPE 4 in GdsParser.
Even when we were creating Contacts of null width or height, they where
bumped to the minimal size by the constructor, hence bits sticking out
at the end with Gds PATHTYPE 4. Now, allow null size for non-composite
(which contains a cut) and non-cut Contacts.

* Fix: In GdsParser::readStructure(), always use the bounding box as
    abutment box if the later is empty (case of small sub-components).
    This was making the sub-component seemingly diseapear in the
    viewer...
* Fix: In GdsParser::xyToPath(), slight change in xadjust & yadjust.
* Change: In Contact::create(), force the contact width and height to
    the minimal size *only* if it's a composite layer *or* a basic layer
    of "cut" material.
2023-09-14 10:26:43 +02:00
Jean-Paul Chaput 495939560e Fix ordering of pad spec in cumulus.plugins.chips.pads.Side._placePads().
* Bug: In cumulus.plugins.chips.pads.Side._placePads(), when pads have
    positions they must be reorder *prior* to recomputing the pad
    final position? In order to avoid overlap and ensuring that they are
    on pitch, according to the I/O pad routing gauge.
2023-09-14 10:26:43 +02:00
Jean-Paul Chaput 11618cc647 Fix managment of layer 0 as bounding box in GdsParser.
* Bug: In GdsParser::readStructure(), the Gds::Layer_0_IsBoundary flag
    was not taken into account. The abutment box was always forced to
    the bounding box, resulting in incorrect cell size (and placement).
2023-09-14 10:26:43 +02:00
Jean-Paul Chaput 53f50ee8ca In GdsParser::xyToPath(), bad management of extension for PATHTYPE 4. 2023-09-14 10:26:43 +02:00
Jean-Paul Chaput 48bf2846e1 Fix bug in LefImport that was preventing loading the GDS file (FOREIGN). 2023-09-14 10:26:43 +02:00
Jean-Paul Chaput c55654eb5f Add partial support for SVase and sv2v to the DesignFlow. 2023-09-14 10:26:43 +02:00
Jean-Paul Chaput 2c32dbbf67 Add support for GF180MCU, borrowed from Chips4Makers.
Original source:
    https://gitlab.com/Chips4Makers/c4m-pdk-gf180mcu.git
Duplicated because I needed to do some patches and combine it with
the vendor I/O pads.
2023-09-14 10:26:43 +02:00
Jean-Paul Chaput 8dc13eab5b Better handling of GDS sub-models, now put into separate library.
In order to better handle colliding cell names coming from multiple
GDS files, now, if a topCell is defined, create a sub-library with
the name of that top cell and put any other model from *that* GDS
file into it. This way, only the top cell will be shown in the
library and sub-cells with common names will be separateds.
Work needed for loading GF180MCU I/O pads.

* New: In Gds::setTopCellname(), specify the name of the top cell
    we specifically wants to load from the GDS file.
* New: In GdsStream::getCell(), function to find/create a Cell in
    the current library and, if any, the "top cell" dedicated
    sub-library.
* Change: In GdsStream::readTextBody(), if the layer material of
    the label is "other", do not create a Net with the name of
    the label. This should be a pure text label. Use the new
    Hurricane::Text Go for that.
      Compute the text box in a approximative way. Have to make
    it smarter in the future.
* Change: In LefImport::_macroForeignCbk(), change of policy for
    loading associated GDS. First, we look if a cell with the
    right name exists, in which case we use it. If not, *only*
    then, do we try to load from GDS.
      This allows to load by ourselves, in a separate way the
    GDS. This is more flexible when there are naming issues.
* New: Hurricane::Text Go class, to display text label without the
    need of a Net.
* New: In Hurricane::CellWidget, add support to display
    Hurricane::Text. Add a new mode to drawDisplayText() : FillBox
    so the text is resized to exactly fill the box it is in
    (in width).
2023-09-14 10:26:43 +02:00
Jean-Paul Chaput 8604f4a26d Fix, again, the extensions of PATHTYPE 4 in GdsParser.
Even when we were creating Contacts of null width or height, they where
bumped to the minimal size by the constructor, hence bits sticking out
at the end with Gds PATHTYPE 4. Now, allow null size for non-composite
(which contains a cut) and non-cut Contacts.

* Fix: In GdsParser::readStructure(), always use the bounding box as
    abutment box if the later is empty (case of small sub-components).
    This was making the sub-component seemingly diseapear in the
    viewer...
* Fix: In GdsParser::xyToPath(), slight change in xadjust & yadjust.
* Change: In Contact::create(), force the contact width and height to
    the minimal size *only* if it's a composite layer *or* a basic layer
    of "cut" material.
2023-09-09 12:46:42 +02:00
Jean-Paul Chaput 10c550593e Fix ordering of pad spec in cumulus.plugins.chips.pads.Side._placePads().
* Bug: In cumulus.plugins.chips.pads.Side._placePads(), when pads have
    positions they must be reorder *prior* to recomputing the pad
    final position? In order to avoid overlap and ensuring that they are
    on pitch, according to the I/O pad routing gauge.
2023-09-08 22:02:27 +02:00
Jean-Paul Chaput cebfd60f16 Fix managment of layer 0 as bounding box in GdsParser.
* Bug: In GdsParser::readStructure(), the Gds::Layer_0_IsBoundary flag
    was not taken into account. The abutment box was always forced to
    the bounding box, resulting in incorrect cell size (and placement).
2023-09-08 22:01:33 +02:00
Jean-Paul Chaput 06a7f82cc7 In GdsParser::xyToPath(), bad management of extension for PATHTYPE 4. 2023-09-02 23:00:01 +02:00
Jean-Paul Chaput ab0ce5562e Fix bug in LefImport that was preventing loading the GDS file (FOREIGN). 2023-09-02 22:57:04 +02:00
Jean-Paul Chaput 662b0124b8 Add partial support for SVase and sv2v to the DesignFlow. 2023-08-31 16:14:51 +02:00
Jean-Paul Chaput ef57ed9da1 Add support for GF180MCU, borrowed from Chips4Makers.
Original source:
    https://gitlab.com/Chips4Makers/c4m-pdk-gf180mcu.git
Duplicated because I needed to do some patches and combine it with
the vendor I/O pads.
2023-08-31 16:14:08 +02:00
Jean-Paul Chaput c21afeef8b Better handling of GDS sub-models, now put into separate library.
In order to better handle colliding cell names coming from multiple
GDS files, now, if a topCell is defined, create a sub-library with
the name of that top cell and put any other model from *that* GDS
file into it. This way, only the top cell will be shown in the
library and sub-cells with common names will be separateds.
Work needed for loading GF180MCU I/O pads.

* New: In Gds::setTopCellname(), specify the name of the top cell
    we specifically wants to load from the GDS file.
* New: In GdsStream::getCell(), function to find/create a Cell in
    the current library and, if any, the "top cell" dedicated
    sub-library.
* Change: In GdsStream::readTextBody(), if the layer material of
    the label is "other", do not create a Net with the name of
    the label. This should be a pure text label. Use the new
    Hurricane::Text Go for that.
      Compute the text box in a approximative way. Have to make
    it smarter in the future.
* Change: In LefImport::_macroForeignCbk(), change of policy for
    loading associated GDS. First, we look if a cell with the
    right name exists, in which case we use it. If not, *only*
    then, do we try to load from GDS.
      This allows to load by ourselves, in a separate way the
    GDS. This is more flexible when there are naming issues.
* New: Hurricane::Text Go class, to display text label without the
    need of a Net.
* New: In Hurricane::CellWidget, add support to display
    Hurricane::Text. Add a new mode to drawDisplayText() : FillBox
    so the text is resized to exactly fill the box it is in
    (in width).
2023-08-31 16:12:56 +02:00
Robert Taylor 083d9fa7b2 Only run test uploads on main
If we run test uploads on branches, we inherently will get clashes as
pep440 versioning is linear by design.
2023-08-14 22:20:05 +01:00
Robert Taylor 8ed2c20781 If a new manylinux image isn't needed to be built, use the latest from main 2023-08-14 08:45:27 +01:00
Robert Taylor 08aa763619 Grant permissions to read package repository to build step 2023-08-12 23:09:10 +01:00
Robert Taylor 5a8d94c50d Use docker metadata extract to find tag 2023-08-12 23:09:10 +01:00
Robert Taylor 9fe1b15e5f Use sha1s for actions from third party repos 2023-08-12 23:09:10 +01:00
Robert Taylor 219c231005 Log into GHCR 2023-08-12 23:09:10 +01:00
Robert Taylor 23df3ed2e1 Use prebuild manylinux image 2023-08-12 23:09:10 +01:00
Robert Taylor 874a96e33b Add Github workflow to build custom manylinux image 2023-08-12 23:09:10 +01:00
Robert Taylor e5baf38a39 Use GitHub releases for releasing... 2023-08-11 21:12:19 +00:00
Robert Taylor aff1df5062 Tweak push rules for release build 2023-08-11 14:25:11 +00:00
Robert Taylor f192afd5f5 Add temporary token for pypi 2023-08-09 22:06:20 +02:00
Robert Taylor aa1557b843 Add lefdef to wheel build 2023-08-09 17:33:14 +01:00
Robert Taylor 3920f36e54 Enable unicorn 2023-08-09 17:33:14 +01:00
Robert Taylor 40352ea4da Rename top level from 'Coriolis' to 'coriolis' 2023-08-09 17:33:14 +01:00
Robert Taylor a89a4feacc Use PEP440 versioning 2023-08-09 17:33:14 +01:00
Robert Taylor 75419fd817 Add (temporaray) token for pypi testing 2023-08-09 17:33:14 +01:00
Robert Taylor 26af38dd39 Rename package to coriolis-eda 2023-08-09 17:33:14 +01:00
Robert Taylor 1e8211c973 Always upload to testing, only upload to real pypi on a tagged release 2023-08-09 17:33:14 +01:00
Robert Taylor 760692e496 Deploy wheels to pypi testing 2023-08-09 17:33:14 +01:00
Jean-Paul Chaput 9846330b91 Remove non-needed Python Development.Module requirement in CMakeLists.txt. 2023-08-09 10:11:54 +02:00
Gabriel Gouvine 6d8afe24e4 Fix Virtualenv setup + doc flag 2023-08-08 17:41:36 +02:00
Jean-Paul Chaput cd72c17cf2 Slightly increase the row height in the selection popup (to see underscores). 2023-08-08 00:59:48 +02:00
Jean-Paul Chaput 258bd053c4 Various bug fixes on blockages & H-Tree managment under Katana.
* Change: In Katana::PowerRailsPlanes::Rail::doLayout(): change the delta
    computation. Extend of the pitch *minus* the half wire-width *minus* 1.
    So a wire at minimal with will reach exactly the previous and next
    track axis. And will not be insterted in them due to the "minus 1".
      TrackFixedSegments created at this stage must be flagged as
    TElemBlockageNet, so that any overlap between them is not seen as an
    error by the track overlap checker.
      This was a problem for the clock tree wires which partly uses
    pre-fixed wires, but the driver of the H-Tree is a normal signal that
    must abide the usual checking.
* Change: In Katana::TrackFixedSegment::getNet(), no longer rely on the
    kind of net to choose to return the actual net or the blockage one,
    but uses the TElemUseBlockageNet flag.
2023-08-08 00:59:48 +02:00
Jean-Paul Chaput 3c9ef5b937 Ensure that we are using the "main" branchs of the repositories. 2023-08-06 19:03:45 +02:00
Jean-Paul Chaput df181b44b9 Link Yosys binaries in /usr/bin; so he can find it's subscripts. 2023-08-05 14:43:01 +02:00