Commit Graph

12 Commits

Author SHA1 Message Date
Jean-Paul Chaput 95aba574a5 Happy New Year 2018 ! Update license years... 2018-01-06 17:55:44 +01:00
Jean-Paul Chaput 1b7bd9de36 Happy new year 2016! 2016-01-21 00:41:19 +01:00
Jean-Paul Chaput 9db97608cb More clever way of taking into account constraints on caged terminals.
* Change: In vlsispad, in Dots, add an enable/disable flag because when printing
    into a cmess, it is only the base class ostream which is took into account
    as none of it's methods are virtuals (silly me).
* Bug: In Etesian, print into cmess instead of cout and make use of the Dots
    enabling feature.
* New: In Katabatic, added AutoContact::migrateConstraintBox() to transfert
    constraint from one contact to another.
      New flag for AutoContact, CntWeakTerminal for AutoContact which are at
    the other of a segment directly connected to a terminal. They may hold
    special constraints in case of caged terminals (computed in Kite).
      In AutoHorizontal & AutoVertical, in ::_makeDogleg(), transfert flags
    and constraints when breaking a segment directly connected to a terminal.
* New: In Kite, in protectCagedTerminals(), uses cross constraint on the
    AutoContact opposite to the ContactTerminal (CntWeakTerminal) instead
    of moving up one terminal over two consecutives. This is simpler without
    degrading the routing quality.
2015-08-18 15:42:28 +02: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 e2fcfcb699 Rationalization of Cell's flags. Compilation warnings hunt.
* New: In Hurricane, dedicated class BaseFlags to wrap a set of flags.
    Similar to the Mask class, only with a slightly different semantic.
    Encapsulation of <unsigned int>.
      Also provide support for the Inspector, to have a human-readable
    display of the flags.
* Change: In Hurricane, in Cell, regroup all the flags under a Flags
    sub-class of Cell. No more mixing between booleans and bit flags.
    (first use of BaseClass).
* In Hurricane, CRL Core & Knik, many small corrections to suppress
    annoying warning messages at compile time.
      Most noticeably, Bison errors in VstParserGrammar generated by
    rules and token with mismatched return value type. This was not
    problematic because the badly defined return value where not used.
    But still...
2015-06-10 15:49:58 +02:00
Jean-Paul Chaput a2d4f01ca3 New Library Manager Widget. Access with Tools menu or CTRL+M.
* New: In CRL Core, created a LibraryManager widget. It provides a
    composite information based on what is present, for each
    Alliance library:
    1. - A Cell in memory, without Catalog::State.
    2. - A Catalog::State, with or whithout the Cell in memory.
    3. - The files of the Cell in the librariy's directory.
    4. - A file with a format referenced for one of the importers.
      File type recognition is based *only* on the file extension,
    so it may easily confused. Be careful about what you put in
    the library's directory.
      One of the big limitation is that it will not display Hurricane
    libraries that do not have the AllianceLibrary extension.
      This widget is put in a separate library <libmanager>, included
    in the default CRLCORE_LIBRARIES.
* Change: In CRL Core, in State (through the loader), now sets the
    InMemory flag (event if nobody uses it yet...). Display it in
    the state _getString().
      In AllianceFramework, new getAllianceLibraries() method.
      In CatalogExtension, make the static method "get()" publicly
    accessible, for sometimes we want the whole State.
* Bug: In vlsisapd, in Path, the pathcache was not rebuild when it
    should, leading to incorrect results.
* New: In vlsisapd, in Path, added a listdir() method to access the
    contents of a directory and a stat() method to poll the status
    of a file/directory.
      Rename the ".string()" method in ".toString()" to avoid
    tricky name resolution with std::string, refactor in all the
    other tools.
* Change: In Hurricane, in Controller, no longer oversize the fonts
    of the table's headers.
* New: In Unicorn, in UnicornGui, integrate LibraryManager.
2015-05-09 17:03:17 +02:00
Jean-Paul Chaput 5dc60415e7 Happy new year 2015! 2015-03-17 16:56:55 +01:00
Jean-Paul Chaput 978315c017 Compliance with Clang 3.4 (RHEL7, MacOS).
* New: In Bootstrap, added support for RHEL7 in ccb.py & coriolisEnv.py.
   In coriolisEnv.py, under RHEL6, directly launch a shell under
   devtoolset-2 (do not put it in .bashrc).
* Change: All tools, compliance with Clang 3.2.
   - Call using namespace std *after* at least one include of std has
     been used.
   - In Utilities.h define both const and non-cont overload for operator<<
     of mstream (this was the true cause of the Banner display problem).
   - No longer use defaults arguments in templates, instead create two
     separated overloads.
   - Put template static attributes allocation outside of namespaces
     (this one I'm not sure how to justify).
   - Protect by NDEBUG variables that are only needed in assert().
   - In PyInterval getUnion() & getIntersection() we where silently
     overwriting the "self" object (interval).
   - In Mauka, *do no* overload _postCreate() and add an argument, breaks
     the virtual function mechanism. Rename it into _maukaPostCreate().
     Idem for SubRow().
   - In Katabatic::GCell(), invalidate() overload a Go funtion but is
     used for different purpose at this level. Rename it invalidateCt()
     (invalidate *ConTents*).
   - Miscellaneous small cleanup.
2014-12-09 23:49:46 +01:00
Jean-Paul Chaput 37c8498962 Support for devtoolset-2, clang and c++11 improvement. 2014-12-05 18:50:15 +01:00
Jean-Paul Chaput 9501b88110 First barebone implementation of Etesian. Support for ISPD05 benchmark.
Details:
* New: In <vlsispad/utilities>, new objet Dots for displaying a kind
    of progress bar.
* Change: In <vlsisapd/bookshelf>, keywords are now case-insensitive.
    Added a "strict syntax" option (to be disabled for ISPD05).
* New: First working implementation of Etesian, at least for ISPD05
    "bigblue1".
* Change: In <hurricane>, in Cell::flattenNets(), no longer display
    a warning if an instance is unplaced, this does not make sense
    when the circuit is not placed.
* New: In <crlcore>, Added translator for ISPD05 bookshelf, the
    circuit is *not* placed, unlike in ISPD04 and terminal nodes
    *are* true cells.
* New: In <unicorn>, added entry in import cell for ISPD05 benchmarks.
2014-03-25 00:59:12 +01:00
Jean-Paul Chaput 21215595a5 Missing cstdlib include for getenv(). 2013-04-27 17:13:21 +00:00
Jean-Paul Chaput 9a12f43e6b * ./vlsisapd/src/utilities:
- New: Path module to provide a ligthweight alternative to boost::filesystem.
        The compatibility change in boost was giving more and more touble and was
        not worth it. Path is aimed to provides the same services, but with a
        better portability.
2013-04-21 15:35:11 +00:00