Commit Graph

57 Commits

Author SHA1 Message Date
Jean-Paul Chaput 2c73cfe76c Migrating the initialisation system to be completely Python-like.
* New: In bootstrap/coriolisEnv.py, add the "etc" directory to the
    PYTHONPATH as initialization are now Python modules.
* New: In Hurricane/analogic, first groundwork for the integration of
    PIP/MIM/MOM multi-capacitors. Add C++ and Python interface for the
    allocation matrix and the list of capacities values.
* Change: In Hurricane::RegularLayer, add a layer parameter to the
    constructor so the association between the RegularLayer and it's
    BasicLayer can readily be done.
* Change: In Hurricane::Layer, add a new getCut() accessor to get the
    cut layer in ViaLayer.
* Change: In Hurricane::DataBase::get(), the Python wrapper should no
    longer consider an error if the data-base has not been created yet.
    Just return None.
* Bug: In Isobar::PyLayer::getEnclosure() wrapper, if the overall
    enclosure is requested, pass the right parameter to the C++ function.
* Change: In AllianceFramework, make public _bindLibraries() and export
    it to the Python interface.
* Change: In AllianceFramework::create(), do not longer call bindLibraries().
    This now must be done explicitely and afterwards.
* Change: In AllianceFramework::createLibrary() and
    Environement::addSYSTEM_LIBRARY(), minor bug corrections that I don't
    recall.
* Change: In SearchPath::prepend(), set the selected index to zero and
    return it.
* Change: In CRL::System CTOR, add "etc" to the PYTHONPATH as the
    configuration files are now organized as Python modules.
* New: In PyCRL, export the CRL::System singleton, it's creation is no
    longer triggered by the one of AllianceFramework.
* New: In CRL/etc/, convert most of the configuration files into the
    Python module format. For now, keep the old ".conf", but that are no
    longer used.
      For the real technologies, we cannot keep the directory name as
    "180" or "45" as it not allowed by Python syntax, so we create "node180"
    or "node45" instead.
      Most of the helpers and coriolisInit.py are no longer used now.
    To be removed in future commits after being sure that everything
    works...
* Bug: In AutoSegment::makeDogleg(AutoContact*), the layer of the contacts
    where badly computed when one end of the original segment was attached
    to a non-preferred direction segment (mostly on terminal contacts).
      Now use the new AutoContact::updateLayer() method.
* Bug: In Dijkstra::load(), limit symetric search area only if the net
    is a symmetric one !
* Change: In Katana/python/katanaInit.py, comply with the new initialisation
    scheme.
* Change: In Unicorn/cgt.py, comply to the new inititalization scheme.
* Change: In cumulus various Python scripts remove the call to
    helpers.staticInitialization() as they are not needed now (we run in
    only *one* interpreter, so we correctly share all init).
      In plugins/__init__.py, read the new NDA directory variable.
* Bug: In cumulus/plugins/Chip.doCoronafloorplan(), self.railsNb was not
    correctly managed when there was no clock.
* Change: In cumulus/plugins/Configuration.coronaContactArray(), compute
    the viaPitch from the technology instead of the hard-coded 4.0 lambdas.
      In Configuration.loadConfiguration(), read the "ioring.py" from
    the new user's settings module.
* Bug: In stratus.dpgen_ADSB2F, gives coordinates translated into DbU to
    the XY functions.
      In st_model.Save(), use the VstUseConcat flag to get correct VST files.
      In st_net.hur_net(), when a net is POWER/GROUND or CLOCK also make it
    global.
* Change: In Oroshi/python/WIP_Transistor.py, encapsulate the generator
    inside a try/except block to get prettier error (and stop at the first).
2019-10-28 18:09:14 +01:00
Jean-Paul Chaput 2d8e26a467 Quick fix for Stratus1, missing cell mapping file. 2019-10-25 11:20:15 +02:00
Jean-Paul Chaput 4cd0bcb009 Various bug corrections to pass the alliance-check-toolkit reference benchs.
* New: In Isobar::PyCell, export the isRouted() and setRouted() to the
    Python interface.
* Bug: In CRL::Entity::parseEntity(), check that the closing parenthesis
    is the last character of the net name. Issue a more relevant error
    message.
* In Anabatic::NetBuilder::_do_xG() and all other unimplemented methods,
    throw an error if called from a derived classes instead of just
    issuing a message in the debug stream. Avoid later core dumps...
* In Anabatic::NetBuilderHV, implement the builders for GCells with
    one pin. Needed to support chip/corona routing.
* Bug: In Cumulus/plugins/Chip.py, check that coronaCk exists before
    using it.
* New: In Cumulus/plugins/PadsCorona/Side._placePad(), when routing
    a design with symbolic pads, export the chip external "pad"
    connectors to be able to perform a lvx (otherwise cougar do not
    create external nets).
      In Corona._createCoreWire(), set the minimal gap between the pads
    and the corona to 6 pitches. Empirical value to avoid DRC errors
    with symbolic pads (pxlib).
      When successufully done, mark the Corona cell as routed.
* Bug: In Cumulus/plugins/Core2Chip.IoNet, the regex for vectorizet net
    was wrong, it was allowing only one digit in the index.
* Bug: In Cumulus/plugins/Core2Chip.cmos, correct management of
    pad & corona clock nets. Correct connexion between vdde/vddi.
* Bug: In Unicorn/cgt.py, forgot to execute scripts when in text mode.
2019-05-24 23:57:22 +02:00
Jean-Paul Chaput 152276ddbb Corrected coordinates policy in stratus1.
* Bug: In stratus1, all coordinates given to the functions are now
    assumed to be in DbU instead of lambda. Designer must convert
    himself his coordinates from the unit of his choice into DbU.
      See helpers.l(), or helpers.m().
2018-09-11 19:21:11 +02:00
Jean-Paul Chaput 399a2e3c48 Merge branch 'devel_stratus' of ssh://bop-t/users/largo2/git/coriolis into devel_anabatic
Conflicts:
	documentation/CMakeLists.txt
	documentation/_templates/indexcontent.html
	documentation/index.rst
	katana/src/katana/RoutingEvent.h
	stratus1/CMakeLists.txt
2018-08-19 13:27:09 +02:00
Jean-Paul Chaput 4f089ffdea Polygon internal normalization. Sub-polygons for GDSII driver.
* Change: In Hurricane::Polygon, store the points so they are always
    ordered in the counter-clockwise (trigonometric) direction. This
    simplicificate internal computations.
* New: In Hurricane::Polygon, added getSubPolygons() methods, that
    split horizontally the polygon in sub-polygons of about 1000
    vertexes. This is mainly to be used by the GDSII driver to abide
    to the XY 4000 points limitation.
* New: In Hurricane::Isobar, export support for Point collections so
    the various contour Polygon methods can be created in the Python
    interface.
* New: In CRL::GdsDriver, split the Polygons into set of sub-polygons
    of less than 1000 vertexes. Use the getSubPolygons() method.
* Change: In stratus1.dpgen_RF2, makes more explicit error messages
    about placement by displaying the faulty vs. expected coordinates.
2018-06-03 11:47:31 +02:00
Jean-Paul Chaput 95aba574a5 Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +01:00
Jean-Paul Chaput de02cf5685 In stratus.buildModel(), do not always save Logical AND Physical.
* Bug: In stratus.buildModel(), the physical view was always saved, even
    only the logical one was created. Also add the ability to run the
    simulator.
2017-10-30 15:41:26 +01:00
Jean-Paul Chaput 0498ade143 In stratus.py, buildModel was always saving logical & physical. 2017-10-27 10:12:23 +02:00
Roselyne Chotin-Avot 6580c485fa Add VHDL driver 2017-08-02 10:38:48 +02:00
Roselyne Chotin-Avot 0f8b767f1b createPartRing do not be there ???
use the python notation [-1] to access last bit of a net
2017-04-25 16:18:18 +02:00
Jean-Paul Chaput b2e955185b Default stratus1.mappingName was not set correctly.
* Bug: In CRL.python.coriolisInit(), when it's not set, the stratus1.mappingName
    configuration variable is equal to "" and *not* "not_set".
* Bug: In Etesian::EtesianEngine::toColoquinte(), followup of the previous
    bug, bad FIXED/PLACED test when the AB is set.
2016-12-07 12:21:40 +01:00
Jean-Paul Chaput 3758bd098e attachPlugOrPin() do not core-dump when there is 0 plugs+pins.
* Bug: In CRL::ToolBox::attachPlugOrPin(), simply returns when there is
    no plugs/pins to connect instead of doing an assert().
* Change: In Hurricane, more informative trace information for Python
    ProxyProperty managment.
* Bug: In Stratus, when merging nets with the "<=" operator some table
    of lookup of Hurricane Net are not updated correctly. As I don't
    understand well enough the Stratus code **is is not corrected**.
2016-11-27 00:04:58 +01:00
Jean-Paul Chaput (acting Coriolis) 3ef5ced601 Merge branch 'devel_anabatic' of file:///users/largo2/git/coriolis into devel_anabatic 2016-11-10 10:37:57 +01:00
Jean-Paul Chaput (acting Coriolis) 2dadce1957 Forgotten UpdateSession calls in Stratus. 2016-11-10 10:37:23 +01:00
Jean-Paul Chaput c70a220016 Correct some old style Hurricane/Python constants in Stratus. 2016-11-10 10:34:34 +01:00
Jean-Paul Chaput 5435ca1933 Added missing UpdateSession in Stratus & Plugins.
* Bug: In Cumulus & Stratus, now that creation of Hurricane objects must be
    enclosed in UpdateSession, has to adds them into Python code.
* Bug: In Anabatic & Katana, in the global routing stage suspend the timed
    bewteen ripup steps instead of resetting it.
2016-09-11 13:20:05 +02:00
Jean-Paul Chaput 8328c890bb In Stratus, in dpgen_RAM get cell height from the library.
* Change: In Stratus, in dpgen_RAM, the cell height was fixed to 50l.
    Now read the prech[0] to set up the cell height (useful for MOSIS
    cells).
* New: In Stratus, in buildModel(), the stand alone generator caller
    now support a className, a modelName and a set of parameters to
    pass on to the model. This is very useful when the module name
    (the file), the class name and the model name are not the same.
2016-04-13 18:49:50 +02:00
Jean-Paul Chaput 1b7bd9de36 Happy new year 2016! 2016-01-21 00:41:19 +01:00
Jean-Paul Chaput ed557d9027 Added support for "same layer" dogleg. Big fix for pad routing.
* Change: In Knik, in Vertex, add a "blocked" flag to signal disabled
    vertexes in the grid (must not be used by the global router).
      Modificate the Graph::getVertex() method so that when a vertex
    is geometrically queried, if is a blocked one, return a non-blocked
    neighbor. This mechanism is introduced to, at last, prevent the
    global router to go *under* the pad in case of a commplete chip.
* New: In Katabatic, in AutoSegment, a new state has been added: "reduced".
    A reduced segment is in the same layer as it's perpandiculars.
    To be reduced, a segments has to be connected on source & target to
    AutoContactTurn, both of the perpandiculars must be of the same layer
    (below or above) and it's length must not exceed one pitch in the
    perpandicular direction.
      To reduce an AutoSegment, call ::reduce() and to revert the state,
    call ::raise(). Two associated predicates are associated:
    ::canReduce() and ::mustRaise().
      Note: No two adjacent segments can be reduced at the same time.
* Bug: In Katabatic, in GCellTopology, add a new method ::doRp_AccessPad()
    to connect to the pads. Create wiring, fixed and non managed by
    Katabatic, to connect the pad connector layer to the lowest routing
    layers (depth 1 & 2). The former implementation was sometimes leading
    to gaps (sheared contact) that *must not* occurs during the building
    stage.
      Remark: This bug did put under the light the fact that the initial
    wiring must be created without gaps. Gaps are closed by making doglegs
    on contacts. But this mechanism could only work when the database if
    fully initialised (the cache is up to date). Otherwise various problems
    arise, in the canonization process for example.
* New: In Katabatic, in AutoContactTerminal::getNativeConstraintBox(),
    when anchored on a RoutingPad, now take account the potential rotation
    of the Path's transformation. Here again, for the chip's pads.
* New: In Kite, support for reduced AutoSegment. TrackSegment associateds
    to reduced AutoSegment are *not* inserted into track to become
    effectively invisibles. When a segment becomes reduced, a TrackEvent
    is generated to remove it. Conversely when it is raised a RoutingEvent
    is created/rescheduled to insert it. All this is mostly managed inside
    the Session::revalidate() method.
* New: In Kite, in KiteEngine::createGlobalGraph(), in case of a chip,
    mark all global routing vertexes (Knik) that are under a pad, as blockeds.
* Bug: In Cumulus, in PadsCorona.Side.getAxis(), inversion between X and
    Y coordinate of the chip size. Did not show until a non-square chip
    was routed (i.e. our MIPS R3000).
* Change: In Stratus1, in st_placement.py add the ClockBuffer class for
    backward compatibility with the MIPS32 bench. Have to review this
    functionnality coming from the deprecated placeAndroute.py.
      In st_instance.py, no longer creates the Plug ring of a Net.
    In my opinion it just clutter the display until the P&R is called.
    Can re-enable later as an option (in Unicorn).
* Change: In Unicorn, in cgt.py, more reliable way of loading then running
    user supplied scripts. Borrowed from alliance-checker-toolkit doChip.py	.
2015-08-16 23:29:28 +02:00
Jean-Paul Chaput 393b5a735f Remove simulated annealing placer Nimbus/Metis/Mauka. 2015-03-17 22:50:00 +01:00
Jean-Paul Chaput 5dc60415e7 Happy new year 2015! 2015-03-17 16:56:55 +01:00
Jean-Paul Chaput bd3984a313 Correctly manage clock net isolateds from the main clock.
* New: In Bootstrap, in ccb.py, check if cmake is installed and issue
    a warning, if not.
* New: In Hurricane, added Cell::getDeepNet() to search for a deepnet
    given a path and a leaf net. This method is slow and must not be
    used too often. Introduced for Kite::BuildPowerRails().
* Change: In CRL Core, in cmos/alliance.conf, modify the clock name
    pattern to match the sub-clock signals in the datapath operators.
* Bug: In Etesian, do not blindly reset the top cell abutment-box.
    Do it only if it's empty, otherwise keep it.
* Bug: In Kite, in buildPowerRails(), in getRootNet() the management
    of clock nets was incomplete. The case of unrouted clock nets
    that where not connected to the top core clock net, like the
    one in the datapath registers was faulty. They were partly
    recognized as unrouteds and partly as blockage generating a
    routing deadlock: routage impossible due to blockage generated
    from itself...
* New: In Stratus1, add a buildModel() utility function to automate
    the model generation and allow a call by the model name (string).
* Change: In Unicorn, in cgt.py, display the Alliance environement.
2015-02-25 22:22:16 +01:00
Jean-Paul Chaput 7296dcd6fb Make the Python interface closely mirroring the C++ one.
* Change: In Isobar, the Python interface was not exactly mirroring the
    C++ one, now it is the case. The Python code should look likes almost
    exactly like the C++ one, the only differences remaining being due
    to the languages respective syntaxes. Note that in the case of
    constructor functions, it leads to a slightly longer notation in
    Python that it could have been (mimic the ".create()" static
    member). Main modifications:
    1. Mirror the static constructor syntax with create():
          Cell( ... )   ==>  Cell.create( ... )
    2. Correct hierarchy for constants in Instance, Net, Pin
       & Transformation. For example:
          Hurricane.PlacementStatusFIXED
                     ==> Hurricane.Instance.PlacementStatus.FIXED
          Hurricane.OrientationID
                     ==> Hurricane.Transformation.Orientation.ID
          Hurricane.TypeLOGICAL  ==>  Hurricane.Net.Type.LOGICAL
          Hurricane.DirectionIN  ==>  Hurricane.Net.Direction.IN
* Change: In CRL Core, correction to match the improved Python API
    in the configutation helpers.
* Change: In Cumulus, correction to match the improved Python API.
* Change: In Stratus, correction to match the improved Python API.
* Change: In Documenation, update for the new Python interface
    (both user's guide & examples).
* Note: We must port those changes into Chams for it to continue
   to run.
* Change: In Documenation, update the Python script support part.
2014-06-29 14:26:59 +02:00
Roselyne Chotin c5270ec605 correct bug in constant generation 2013-08-02 12:36:01 +00:00
Roselyne Chotin c09ab25abc - add int parameter for constant insteed of only string
- add hexa and octal for representation
2013-04-30 08:01:42 +00:00
Jean-Paul Chaput 5f12dd5e28 Uses the new configuration system for the cell mapping. 2013-03-04 15:36:18 +00:00
Jean-Paul Chaput 4b5a3ef5d2 * All Tools:
- New: Added FreeBSD/Ubuntu patches from Otacilio De Araujo
       (<otaciliodearaujo@gmail.com>).

  * ./stratus/src/stratus.py
    - Change: Configuration is now read through the new python C/API
        system. No more st_config.
2012-12-03 08:31:26 +00:00
Jean-Paul Chaput da88363881 * ./stratus:
- Change: Busses are now created in "downto" order instead of "to".
2012-11-16 12:56:08 +00:00
Roselyne Chotin bb29bc3057 test the problem of parameters on each net to cat 2012-11-13 20:38:59 +00:00
Roselyne Chotin 94e57d651f add possibility to use list of net in Cat function 2012-11-13 19:37:00 +00:00
Roselyne Chotin 708aca610e change names to be more compact or precise 2012-11-13 19:05:27 +00:00
Roselyne Chotin 773a4b7d97 forget a lower 2012-08-20 10:02:30 +00:00
Roselyne Chotin 827b3bd400 change simulation options 2012-08-20 08:29:31 +00:00
Roselyne Chotin 33eca48c11 return in precedent state 2012-08-16 17:17:21 +00:00
Roselyne Chotin 1917f64d56 correct bug in lower of net's name 2012-08-10 15:00:08 +00:00
Roselyne Chotin 4e0140d9ff take account of multi outputs cell as FullAdder to compute weight 2012-08-09 16:34:55 +00:00
Roselyne Chotin f2e151842e take account of multi outputs cell as FullAdder to compute weight 2012-08-09 16:33:48 +00:00
Roselyne Chotin a5bfc0e816 treatment of negative constant 2012-08-09 16:31:36 +00:00
Roselyne Chotin 392accdf27 export and simul with standard VHDL 2012-03-09 07:50:55 +00:00
Roselyne Chotin ab008d2ad9 add a configuration file 2012-03-09 07:50:05 +00:00
Roselyne Chotin 4cdfa6391e add a configuration file 2012-03-09 07:49:45 +00:00
Sophie Belloeil 0ec480cc0c MAJ d un message d erreur pour arreter de chercher 500 ans ce qui ne va pas quand on a oublie l existance du nouveau fichier de config .... 2011-10-03 11:57:26 +00:00
Sophie Belloeil 3801d65cdc (suite)
Gestion de la fonction d'evaluation de la consommation

    pour memoire : stratus utilise toujours la variable STRATUS_MAPPING_NAME
2011-02-16 13:59:03 +00:00
Sophie Belloeil 72e72d8eab essai 2011-02-16 13:57:46 +00:00
Jean-Paul Chaput ad00c58ffe * ./stratus:
- Change: In doc, activate installation of stratus, dpgen & pattern documentation.
2011-01-09 18:28:00 +00:00
Jean-Paul Chaput 0e09dee142 * ./stratus1:
- Change: In st_model, separate View() in two methods, one that load the
        model into the editor (still named View()) and a Breakpoint() method
        for putting true stop points. The Breakpoint() method calls the
        View() method. Will simplificate my explanations to the students...
2010-12-15 15:25:45 +00:00
Jean-Paul Chaput 802d80e850 * ./stratus:
- Change: Add support for chip-level nets. POWER/GROUND/CLOCK as signals.
    - Bug: Reorder import so that CRL is always imported first so that the
        problem of duplicated type_info RTTI doesn't show.
2010-11-16 14:09:53 +00:00
Sophie Belloeil 1ee7622af9 Gestion of vdd/vss step two ... 2010-09-06 11:22:30 +00:00
Sophie Belloeil afe83178ae Remove of fulladder.vst, step two ... 2010-09-06 11:15:41 +00:00