Commit Graph

2700 Commits

Author SHA1 Message Date
Jean-Paul Chaput 9594476ab6 Improved SRAM output multiplexer, using NAND/NOR.
* New: In cumulus/plugins/sram_256x32.py, build the output mux using a
    NAND2/NOR2 binary tree instead of mux2/mux3. Use more, but much
    smaller cells. The reduction of wirelength (from Yosys) goes
    from 4% to 15% for the non-folded variant.
      Uses a specially placed tree to minimize wire length.
* New: In cumulus/plugins/sram.py, extend StdCellConf to convert names
    accross library flavors (FlexLib_TSMC_C180, FlexLib_Sky130 and
    generic SxLib).
2022-10-17 17:18:49 +02:00
Jean-Paul Chaput d294a770c4 Added Standard Cells based SRAM generator (Python).
The generator as been build in two parts:
1. A genereric sram.BaseSRAM class to provides support for all kind of
   SRAM (grouping column tree, headers, folding).
2. The specific SRAM_256x32 (256 words of 32 bits) suited for the
   ethmac.
The sram has been simulated with genpat+asimut and gives identical
results to the Yosys one (at gate level). No timing though.
2022-10-14 10:12:03 +02:00
Jean-Paul Chaput df1ba66c09 Fix a crash in PowerRails when a terminal is not connected.
* Bug: In Katana::GlobalNetTable::getRootNet(), when tracking up the
    net through the plug (to look if it's connected to a top level
    clock), we may encounter an *unconnected* plug.
      We where not checking that case, and went crashing. Now issue
    a warning and return NULL.
      This indicates that, up until now, we didn't encounter any
    unconnected Plug in our netlists. This did show up due to a
    building error in the SRAM Standard Cell generator.
2022-10-14 10:10:43 +02:00
Jean-Paul Chaput 82cd53b107 Display the length units in KatanaEngine::printCompletion() (unambiguous). 2022-10-13 10:54:50 +02:00
Jean-Paul Chaput 757284896c Remove extra debug messages in PythonAttributes. 2022-10-13 10:54:11 +02:00
Jean-Paul Chaput 7d31d6c457 Merge branch 'devel' of gitlab.lip6.fr:vlsi-eda/coriolis into devel 2022-09-22 10:35:21 +02:00
Jean-Paul Chaput 35f73ecec3 Added plugin for placing Yosys generated SRAM (failed experiment). 2022-09-21 17:48:26 +02:00
Jean-Paul Chaput 8980a01dae Added new tool "foehn" to create/manipulate DAG.
Build DAG then create an ordered list of gates from it. DAG starting
points could be Net or Instances (we take the output of the Instance).
Multiple DAG can be created, but once an Instance is part of a DAG,
it connot be part of another and is conidered as "reached" by all
subsequent DAG run. The ordered list build from a DAG contains both
Net and Instances.
   A new property has DagProperty, accessible through DagExtension
has been created to store relevant information of the DAG on each
Instance or Net (work in progress).
2022-09-21 17:46:48 +02:00
Jean-Paul Chaput 3f1148b105 Added support to map vectors of Entity into Python lists of PyEntity. 2022-09-21 17:30:30 +02:00
HoangAnhP 5b88929d23 Merge branch 'devel' of gitlab.lip6.fr:vlsi-eda/coriolis into devel 2022-08-23 14:36:25 +02:00
HoangAnhP 93fbc74f8d Seabreeze : nothing new, just some typos fixed 2022-08-23 14:35:55 +02:00
Jean-Paul Chaput 16428ffaa9 Updated documentation Python/Tutorial to catch up with API improvements. 2022-08-15 13:49:35 +02:00
Jean-Paul Chaput 440547a1c5 PyAttributesHolder, again (2). 2022-08-14 18:35:21 +02:00
Jean-Paul Chaput d0d0e3aa3d Fixing the PyAttributesHolder type definition, again. 2022-08-14 18:28:34 +02:00
Jean-Paul Chaput bdd78ce44a Right preprocess condition in PythonAttribues for old GCC 2022-08-14 18:14:35 +02:00
Jean-Paul Chaput c0b4a73f9e Alternate PyTypeObject inititalization in PythonAttributes for old GCC. 2022-08-14 13:05:35 +02:00
Jean-Paul Chaput 56aa978a9b Added management of Python attributes on DBo.
* New: Isobar::PyAttributesHolder, a PyObject with only a dictionary
    to hold the attributes associated to a DBo.
* New: Isobar::PyHolderProperty, the Property that encapsulate
    PyAttributesholder.
* New: Isobar::PythonAttributes, the extension to simplify the
    management of the PyAttributesholder.
* Change: In PyEntity, now use a dedicated tp_getattro and tp_setattro
    to delegate the Python attribute access towars the PyAttributesholder.
* New: In hurricane/doc & documentation, update docs regarding Python
    attributes managment.
2022-08-13 17:46:47 +02:00
Jean-Paul Chaput fefa47b2dc Remove submodule error that was painful under emacs. 2022-08-05 15:36:10 +02:00
HoangAnhP 5667797ae6 Seabreeze : More than 1 Contact in 1 RoutingPad 2022-08-01 10:58:59 +02:00
HoangAnhP af20ef092c Seabreeze : new case to be considered 2022-07-22 19:13:14 +02:00
HoangAnhP 2d181a592f Seabreeze : Finally fixed conflict 2022-07-22 13:25:17 +02:00
HoangAnhP 1e978d5149 Revert "Seabreeze : fixing conflict"
This reverts commit 0e9556676a.
2022-07-22 13:12:57 +02:00
HoangAnhP c8a15a3129 Revert "Revert "Seabreeze : fixing conflict""
This reverts commit 1016ae54a6.
2022-07-22 13:12:55 +02:00
HoangAnhP 1016ae54a6 Revert "Seabreeze : fixing conflict"
This reverts commit 0e9556676a.
2022-07-22 13:11:04 +02:00
HoangAnhP 0e9556676a Seabreeze : fixing conflict 2022-07-22 13:04:14 +02:00
HoangAnhP d16ec20966 Merge branch 'devel' of gitlab.lip6.fr:vlsi-eda/coriolis into devel
Conflicts:
	Seabreeze/src/Delay.cpp
2022-07-22 12:50:41 +02:00
HoangAnhP dedad34585 Complete fonctions of class Delay 2022-07-22 12:39:08 +02:00
Jean-Paul Chaput 149b4997fd Code reorganisation of Seabreeze consolidating objects. 2022-07-22 01:01:21 +02:00
Jean-Paul Chaput c647a670b1 Add full inspector support (getString/getRecord) to Seabreeze. 2022-07-21 19:24:42 +02:00
HoangAnhP bf181787cb Seabreeze : new class Delay for the result 2022-07-21 12:03:52 +02:00
HoangAnhP 555f6ea6a4 Seabreeze : new class for results 2022-07-21 11:45:18 +02:00
HoangAnhP b65821282c Seabreeze : optimise with new attribute of Node + fix wrong formula of Elmore's delay 2022-07-21 11:44:44 +02:00
HoangAnhP a6bfbdf825 Seabreeze : some changes 2022-07-20 17:49:43 +02:00
Jean-Paul Chaput 336b0ad015 First step in normalizing/rewriting Seabreeze. 2022-07-20 15:14:38 +02:00
Jean-Paul Chaput be1dd12c1a Merge branch 'devel' of gitlab.lip6.fr:vlsi-eda/coriolis into devel 2022-07-14 15:20:40 +02:00
Jean-Paul Chaput 34a3ae327c Revert horizontalAdvance() to width() so it build on old Qt5 versions. 2022-07-14 15:19:24 +02:00
HoangAnhP 78401f5129 Merge branch 'devel' of gitlab.lip6.fr:vlsi-eda/coriolis into devel 2022-07-13 12:30:33 +02:00
HoangAnhP 0cd9cd7ddb Seabreeze : Elmore's delay calculation checked, it should be good (?) 2022-07-13 12:30:10 +02:00
Jean-Paul Chaput db0ecb878d Merge branch 'devel' of gitlab.lip6.fr:vlsi-eda/coriolis into devel 2022-07-13 11:48:48 +02:00
Jean-Paul Chaput c737d5bd0c Port to Python3 capacitors & resistors generators.
Main list of ports:

* Replace deprecated operator '<>' by '!='.
* To check if a list is empty, do not compare to [], but check it's
  length instead.
* Do not make a class inherit indirectly twice from the same base class.
* Hurricane physical object constructors uses DbU::Unit as arguments,
  seen as int in Python, so they will not match float. Unfortunately
  the calculation often gives float. So explicitely cast them into
  int. This is due to a change of behavior in Python. Now, 3/2
  gives 1.5 (float). To get the previous one use: 3/2 -> 1 (int).
* dict.keys()[0] no longer work, instead use list(dict.keys())[0].
2022-07-13 11:20:55 +02:00
Jean-Paul Chaput f453dbc6f9 Correct the selection bug in Net mode in CellWidget.
In SelectorCriterion & SelectorCriterions, when selecting a Net occurrence,
we where storing the Net only. This was fine if the Net was belonging to
the Cell's top level. But when it was an occurrence of a non-top level
net, this was creating the elusive incoherent Occurrence problem.
Now we truly store the occurrence of the Net, to be accurate, the root
of the HyperNet.

* Change: In SelectorCriterions::add(), the Net* argument is replaced
    by a Occurrence of Net. Must be an HyperNet root occurrence.
      Same goes for SelectorCriterions::remove().
* Change: In CellWidget::select(), when called with a Net occurrence,
    select the whole HyperNet components.
* Change: In NetSelectorCriterion, now use a Net occurrence instead
    of directly a Net. Must be an HyperNet root net occurrence.
2022-07-13 11:20:24 +02:00
HoangAnhP 7267951683 Seabreeze : debugged, RC calculated for each node. Testing delay_Elmore 2022-07-12 15:03:33 +02:00
HoangAnhP d1c0e4882a Seabreeze : update on calculating RC; adding explication (brief) of fonctions 2022-07-12 12:39:37 +02:00
HoangAnhP 157532af48 Seabreeze : fixed wrong formula of C. Still not using data, parameters are defined 2022-07-07 09:30:24 +02:00
HoangAnhP 871622f482 Seabreeze : phase 2, add Configuration 2022-07-06 18:20:35 +02:00
HoangAnhP d9db42447d Seabreeze : Step 1 - Building Tree is done. Going to step 2 - Compute RC 2022-06-17 12:05:57 +02:00
HoangAnhP 9b59c50efc Seabreeze : new version of function build_branch(). No more recursivity 2022-06-16 18:14:47 +02:00
HoangAnhP 2c89e5b41a Seabreeze : error while returning the contact from build_branch() 2022-06-15 12:01:32 +02:00
HoangAnhP e2c27cc039 Seabreeze : add fonction build_from_Node(Node*, Segment*) 2022-06-14 12:34:44 +02:00
HoangAnhP e9147299b0 Seabreeze : add fonction build_branch(Contact* ct) to help build a branch and pass all the 'unecessary' contacts 2022-06-13 17:14:58 +02:00