Commit Graph

464 Commits

Author SHA1 Message Date
Jean-Paul Chaput cf449945fc Force the printer resolution to 150 DPI instead of copying the screen. 2017-03-13 18:32:30 +01:00
Jean-Paul Chaput b99a362509 Apaired segments building for symmetric routing (step 1).
* Change: In Hurricane::BaseFlags, store flags in uint64_t instead of
    unsigned int because we start to need more than 32 different flags
    in some tools.
* New: In ::getString() & ::getRecord() templates, add support for
    std::array<>.
* Change: In CRL::ToolEngine, add support for timer (time & memory
    measurements) displaced from Katabatic. This way all ToolEngine
    can use this feature. The _postCreate() method display the
    memory just after ToolEngine allocation.
* Change: In Etesian::EtesianEngine, make use of the ToolEngine
    builtin timer (remove the local one). Forgot to call the base
    class _postCreate() and _preDestroy().
* Change: In Anabatic::AnabaticEngine, make use of the ToolEngine
    builtin timer (remove the local one).
* New: In Anabatic, new AutoSegments_Connecteds() collection. This
    Collection allows a deterministic walkthough *all* the AutoSegments
    connected either to source or target of one AutoSegment.
* New: In Anabatic::AutoContactTerminal::isEndPoint() to check if an
    AutoContactTerminal is the *only one* anchored on a RoutingPad,
    thus being a true "end point" and not a kind of feed-through.
* New: In Katana::KatanaEngine, added support for symmetric nets.
    Created new class DataSymmetric to store symmetric information
    of a net (mainly the paired AutoSegments).
      Added KatanaEngine::runSymmetricRouter(), for now only build
    the DataSymmetric informations. More to come...
* Change: In Katana::GraphicKatanaEngine::_runTest(), now perform
    symmetric information building the non-symmetric routing.
2017-03-12 19:34:12 +01:00
Jean-Paul Chaput b820d22daa Merge branch 'devel_anabatic' of ssh://bop-t/users/largo2/git/coriolis into devel_anabatic
Conflicts:
	anabatic/src/Dijkstra.cpp
2017-03-12 17:09:16 +01:00
EricLaoGitHub 345ca78ade In Dijkstra.cpp/.h:
- GlobalRouting takes into account self symmetries and symmetries in pair of nets according to an axis. Self symmetries are symmetries considering one net symmetric to an axis. During the materialize step, they are routed symmetrically according to the axis. Symmetries in pair of nets follow the same principle but with 2 nets.

In LocalGlobalRouting.cpp:
- Minor bug fixed
- Verbose commented

in NetRoutingProperty.cpp/.h:
- Some flags methods  methods added
2017-03-08 17:49:23 +01:00
Jean-Paul Chaput 44a2f574bc Accurate measuring of memory usage under Linux.
* Change: In Hurricane::Timer, measuring memory usage through the increase
    of sbrk() gives erroneous results. Under Linux, now read the
    /proc/[pid]/statm which gives the real size of the virtual memory
    of the process. There is also code for reading /proc/[pid]/mmap
    but it gives only the resident size of the process (i.e. swapped
    pages are *not* accounteds).
* Change: In Katabatic, Anabatic, Kite & Katana now reports the total
    memory size of the program.
2017-02-25 18:21:55 +01:00
Jean-Paul Chaput 086e40ec7d Katana::runTest to setup net symmetry for gmChamla nets. 2017-02-24 14:37:11 +01:00
Jean-Paul Chaput fe14547b62 Added symmetric support in NetRoutingProperty.
* New: In Hurricane::NetRoutingProperty, added various flags for
    symmetric support, axis and slave net (if any).
      Json support is not complete yet: have to remember how to
    get the slave net when present.
2017-02-22 23:09:12 +01:00
Jean-Paul Chaput (acting Coriolis) aaeeef0097 In 32 bits, do not throw errors when DbU exceed 32 bits. 2017-02-08 18:24:13 +01: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 d175e1b27a Correct way too slow clock-tree. Backport Katana fixes to Kite.
* Bug: In Hurricane::Net::setExternal(), do not perform an UpdateSession
    inside this function, it leads to unbearibly slow operation in the
    clock-tree plugin.
* Bug: In Kite, backport corrections done in Katana and also relevant
    for Kite.
* New: In Cumulus.ChipPlugin.py add support for Python profiling with
    cProfile. Disabled under normal operation, but will certainly come in
    handy sometimes.
2016-12-02 00:13:17 +01:00
Jean-Paul Chaput 10098e1371 Add support for "long long" in JSON Driver.
* Bug: In Hurricane::JsonWriter, add support for "long long". Needed on
    32 bits architectures to write DbU that are now int64_t which
    resolves to "long long".
2016-12-01 11:11:48 +01:00
Jean-Paul Chaput 83382f252c For build under 32 bits, remove all use of long.
* Bug: In Hurricane::DbU, replace long by DbU::Unit (aka int64_t) in all
    remaining occurrences.
* Change: In Hurricane::DbU::getValueString(), rewrite using ostringstream.
* Change: In Hurricane, in PyHurricane.h, PyAny_AsLong<> template to
    convert any kind of Python integer into DbU, making sure we always
    use 64 bits integers (long long for 32 bits and long for 64 bits).
      PyDbU_FromLong<> template to peform the reverse, DbU to Python
    integer in 64 bits (either using PyLong_FromLong() or
    PyLong_FromLongLong()).
* Bug: In Isobar, in PyArg_ParseTuple(), never use the "l" direct
    converter when reading a DbU. Instead read a PyObject then convert
    using PyAny_AsLong<>. This ensure to never do a truncature.
2016-11-30 21:50:25 +01:00
Jean-Paul Chaput dde6e57521 Merge branch 'devel_anabatic' of ssh://bop-t/users/largo2/git/coriolis into devel_anabatic 2016-11-27 00:06:55 +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) 51525319ba In PyDbU, ambiguous cast with DbU (32 bits archs only). 2016-11-23 16:04:02 +01:00
Jean-Paul Chaput a376d34cfe Accurate Qwt detection (Qt4 vs. Qt5). DbU forced to 64 bits.
* Change: In bootstrap/FindBootstrap.cmake, new setup_qwt() macro to
    link with the Qwt library build with Qt 5 *or* Qt 4 and not the
    first found.
* Change: In Hurricane/DbU, uses <int64_t> instead of <long> to always be
    sure that we use 64 bits integers for coordinates.
* Change: In Katana/KatanaEngine::_gutKatana() checks that the
    RoutingPlanes have been allocateds before trying to delete them.
2016-11-23 11:29:28 +01:00
Jean-Paul Chaput 47c9961ef3 First intergration of the Analogic router parts.
* New: In Anabatic::AutoSegment, introduce a the kind (associated to a
    flag) "LongLocal". Analog GCells can be very wide, so at least some
    carefuly choosen long local segments must be took into account as
    attractors in the computation of the optimal axis.
* New: In Anabatic::AutoSegment::computeOptimal(), take LongLocal into
    account as attractors.
* Change: In ::GCellTopology constructors compare the layers of the
    RoutingPads using layer masks instead of Layer pointers. Allows to
    find both "METALx" (symbolic) and "metalX" (real).
* Change: In ::GCellTopology::_doHChannel(), _doChannel(), _doStrut()
    and _doDevice(), tag long locals as "LongLocal". This need to be
    reviewed as it as bind done a bit too quickly.
* Change: In Anabatic::AutoSegment, due too a much bigger span of the
    analogic GCells the _optimalMin & _optimalMax bitfields must use
    16 bits instead of 8 (they where overflowed).
* New: In Katana, reorganisation of the initialization procedure to fit
    both digital and analogic cases. Create an analogInit() method.
* Change: In Katana::RoutingEvent, the _tracksNb and _tracksFree bitfields
    where too short for the Analog GCell size, now uses 16 bits instead of
    6.
* Bug: In Katana::GraphicKatanEngine::drawGCell(), skip drawing of a
    GCell if *both* width and height are under 150 pixels.
* New: In Katana::Session, add a new isOpen() method.
2016-10-04 17:12:58 +02:00
Jean-Paul Chaput 6e1d3f0372 Show backtrace when catching a C++ exception through Python.
* Change: In PyHurricane.h, in HCATCH macro, show the backtrace when
    catching a C++ exception. No need to use the "hex" stream manipulator
    if we cast into (void*).
2016-09-12 23:29:35 +02:00
Jean-Paul Chaput d8fc626678 Attempt to close all UpdateSession after catching an exception.
* New: In Hurricane::UpdateSession, added "reset()" static function to
   close all the currently opened sessions.
* New: In Hurricane::ExceptionWidget::catchAllwrapper(), close all
    pending UpdateSession if the user choose to resume.
2016-09-10 11:13:52 +02:00
Jean-Paul Chaput 6562792e53 Delay materialization of new objects until the UpdateSession::close().
* Change: In Hurricane::Go, instead of immediatly materializing a newly
    created Go (inserting it in a QuadTree) delay it until the closing
    of the UpdateSession. We call "invalidate()" in "_postCreate()"
    instead of "materialize()". This way, the abutment box of Gos is
    taken into account only when the session is closed. There was a
    problem when the abutment box was changing after the object creation
    misleading the algorithm of the QuadTree. This was occuring only
    when an object was created, not modificated, because in the later case
    the Session mechanism was used. Now, the Session mechanism is used
    in all cases.
      As a side effect, it will speed up the parser by making all QuadTree
    insertions in one step.
* Change: In Hurricane::JsonCell, forgot to call Cell::materialize() when
    the Cell is completed (as was done in ordinary parsers). The call is
    made in the destructor of the JsonCell.
* Change: In Hurricane::Cell, add QuadTree in the inspector support.
2016-09-08 21:50:17 +02:00
Jean-Paul Chaput 48f3a2bc3c Anabatic transient commit 18. Port of Kite (Katana), Yeah, Baby! Yeah!
* Bug: In Hurricane, in StaticObservable::getObserver(), if the slot
    pointer is NULL, do not try to access the owner. Returns NULL, so
    the caller can be aware of the situation...
* Change: In Hurricane, in BreakpointWidget & ExceptionWidget some
    cosmetic changes (fonts and window sizes).
* Bug: In Anabatic, In AutoHorizontal::getConstraints(), take into account
    the constraints from the source AutoContact, as it holds the constraints
    transmitted by the RoutingPads and sets up by propageConstraintsFromRp().
    It is likely to be a bug affecting the original Katabatic as well.
* Change: In Anabatic, in RawGCellsUnder(), check that the segment is not
    completly oustside the cell abutment box and truncate the coordinates
    to the part that is inside. Use the "shrink" if we reach the east/north
    border.
* Change: In Anabatic, in Configuration, no more decorator because we will
    use a true derived relationship. Katana *derives* from *Anabatic* and do
    not *decorate* it, so the Configuration can do the same. It also implies
    that we directly create a Katana engine, not an Anabatic one.
* Change: In Anabatic, in Session, do not allow the opening of the Session
    in a standalone fashion (with a static method). Instead it must be opened
    using the relevant method of the Anabatic/Katana engine. This ensure we
    are opening the right Session type.
* Change: In Anabatic, in AutoSegment_Aligneds() collection the seed segment
    is not part of the collection by default, but will be included if the
    Flags::WithSelf is set.
* Change: In Configuration, all the flags value are now defined in two steps.
    Declared in the header and initialized in the module. This is to prevent
    the fact that on some cases, in relation with the Python "extern C" part
    modules, we need a true allocated variable. It was causing weird linking
    problems.
      A side effect is that they can no longer be used as entry is switches,
    have to replace them by if/else.
* New: In Anabatic, new GCell::getNeighborAt() utility function.
* Bug: In Anabatic, in GCell::doGrid(), tag all the GCells of the grid with
    the grid type... Back annote all the edges capacity (north & east) with
    the reserved local capacity.
* New: Complete portage of Kite over Anabatic. The new engine is christened
    "Katana" for Kite-Analogic. When it's capabilities and performances
    will be on a part with Kite, it is to completly replace it (and take
    back the "Kite" name). Preliminary tests seems to show that, contrary
    to intuition (because built on a more complex/slower grid), it is even
    slightly faster than Kite 8-).
2016-08-15 16:30:13 +02:00
Jean-Paul Chaput 4aec49e08a Allows multiple backtraces objects, as long as they are fully created. 2016-08-10 16:13:21 +02:00
Jean-Paul Chaput f7e981a840 Fix bug & compatibility issues with Qt 5.
* Bug: In Hurricane, in NetlistWidget CTOR, the horizontal header was set
    up assuing that there was (at least) three sections (column) in the
    model, which was wrong. Now it is done in the setCell() method which
    know the exact number of sections.
      It was a bug in both Qt 4 & 5, but was showing only under Qt 5.
2016-08-09 17:42:13 +02:00
Jean-Paul Chaput 675e20867b In Backtrace, prevent looping when an error occur inside itself.
* Bug: In Hurricane, in Backtrace, under RHEL 6 when the package
    <devtoolset-2-binutils-devel> is *not* installed, Backtrace uses the
    wrong "bfd.h" from the system instead of the one from the devtoolset2,
    causing itself to core.
      The Backtrace, then try to create a second Backtrace from this
    error, generating an infinite loop. To prevent this situation add a
    counter so that only one Backtrace can be created at a any time.
    And incidentally display a more meaningful error message along with
2016-08-09 11:49:55 +02:00
Jean-Paul Chaput 3835d6f7ad Diplay function, file & line number in the backtrace (like gdb).
* New: In Bootstrap, add cmake detection for libbfd.
* New: In Hurricane, in Backtrace, add BFD support to read debuginfo from
    the shared libraries (aka DSO) when compiled with "-g". This avoid the
    tedious step of running gdb after generating a core dump. It is also
    mandatory in ExceptioWidget to known from where an exception was thrown
    as Qt::notify() block all C++ exceptions.
      Currently works only under Linux (gcc or clang), may be extended in
    the future.
      The BFD reading is based on the small utility from:
          Don Hatch (hatch@plunk.org)
          http://www.plunk.org/~hatch/goodies/backtracefilt.C
      And small trinket: adjust the size of the window for high DPI screens.
* New: In CRL Core & Unicorn add link toward libbfd, if needed.
2016-08-06 18:15:06 +02:00
Jean-Paul Chaput 09004b3a75 More explicit error messages in Plug::setNet() to help diagnosis. 2016-07-27 11:04:14 +02:00
Jean-Paul Chaput 8893779edf Suppress multiline comments (shut off gcc warnings). 2016-07-23 11:50:39 +02:00
Roselyne Chotin-Avot 276fabf7ff Compatibility with clang 7.3 and MacOSX 10.11 2016-07-20 15:21:50 +02:00
Jean-Paul Chaput 9808fb12b2 Solve the template lookup problem in tstream.
* Bug: In Hurricane, in tstream (Commons.h), in the *template* overload of
    operator<<(), do not use the operator<<() of ostream as it will be
    looked up in "stage 1" (template definition) and so will miss all the
    overloads added later and built over getString<>(). Instead, make use
    of getString<>(), which, as another template will be looked up in
    "stage 2" (template instanciation) and at that point will have all the
    needed template specialisation of getString<>().
      We also need to define new stream manipulators to be able to create
    a matching template overload not dependant from the implementation.
    To avoid name clashes, we prefix a 't'. For now, only 'tsetw()' is
    refined.
      As a side effect, we cannot directly print bit-fields into the stream,
    we must go through an intermediate variable (happens once in AutoContact).
2016-07-19 16:02:55 +02:00
Jean-Paul Chaput 36a982ce47 Merge branch 'devel' into devel_anabatic
Catch up the Lemon removal and cdebug correction.
2016-06-11 21:58:25 +02:00
Jean-Paul Chaput f68ac4d0e6 Argh. cdebug was slowing down the program too much.
* Change: In Hurricane Commons.h, even when cdebug print nothing, it slow
    down the program (three times for Kite!). Create a macro cdebug_log
    which calls cdebug *only* if the debug level is active.
2016-06-11 21:56:12 +02:00
Jean-Paul Chaput 23d6ae55fd Solve the overlap in Layers&Go extensions entries.
* Bug: In Hurricane::PaletteWidget, flush the normal widgets before reading
    the position of the Extension entry (from GridBuffer).
2016-06-06 01:07:54 +02:00
Jean-Paul Chaput 747027f23a Simplification of the Hurricane::Observer mechanism.
* Change: In Hurricane::Observer, simplification of the template so that
    we can use it directly instead of creating a derived class with an
    implementation of Observer::notify(). Now the implemenation is the
    same for all and just calls a notify() method on the owner object.
      Create a StaticObservable for fast access of the observers. This
    is mainly a fixed size table (array<>) with oberservers at known
    indexes. This way we can go from the obervable to the observer
    owner in one indirect access (or so I hope).
* Change: In Hurricane::CellViewer, use the new observers.
* Change: In Hurricane::ControllerWidget, use the new observers.
* Change: In Hurricane::CellWidget, set the winidow initial size to a
   more sensible 500px.
* Change: In CRL::LibraryManager, use the new observers.
* Change: In CRL::LibraryManager, use the new observers.
* Change: In CRL, in display.conf & technology.conf, modification for
    the ST hcmos9gp capacitors.
2016-06-03 17:19:46 +02:00
Jean-Paul Chaput 1f4d6b7e83 Anabatic transient commit 4.
* New: In Anabatic:
    - A Dijkstra skeleton, not debugged yet.
2016-05-30 11:30:29 +02:00
Jean-Paul Chaput a4655aec8b Anabatic transient commit 2.
* Change: In Hurricane, in CellWidget, enable the drawing of ExtensionGos
    according to the the threshold paramaters (as layers do).
* Change: In CRL Core, provide DrawingStyle for Anabatic::GCell &
    Anabatic::Edge. Use the exact name of the ExtensionGo.
      In kite.conf, add settings for the size of an edge as the optimal
    size may change between analog & digital designs.
* New: In Anabatic:
    - Support for fast position query using a matrix.
    - Computation of the Edge capacity, based on the routing gauge parameters.
    - Graphic display of the edges capacity. Added configuration
      parameters to size the bounding box of an Edge.
* Bug: In Anabatic:
    - GCell::_moveEdges was both too complex (some cases never arise the
      way we divide GCells) and bugged.
2016-05-26 13:56:16 +02:00
Jean-Paul Chaput f11be897ef Remove Anabatic from cgt. Index numbering in vector slot.
* Bug: In Unicorn, in cgt.py, do not import Anabatic as it is not present
    yet in the devel branch.
* Change: In Hurricane, in Commons.h, in the vector slot template, start
    index at 0 and not 1 (to closer to the internal representation).
* Change: In ExtensionGo, forgotten trace system calls to update.
2016-05-23 16:02:57 +02:00
Jean-Paul Chaput 82cff69d9f Complete rewrite of the trace system (now a stream).
* Change: In Hurricane, in Flags add operator overload for "int" type
    and not only "unsigned int". Otherwise the compiler complaints about
    ambiguous overload when using enum values which are considered as
    "int".
      Simpler code for the BaseFlags::contains() method.
      Added implicit conversion from BaseFlags toward bool type.
* Change: In Hurricane, in Commons, complete replacement of the previous
    two trace systems (trace & ltrace) by a stream-based one.
    As it is a true object it is much less fragile than the one based
    on defines (but maybe a little slower).
      Define a reservation table for the trace levels for all the
    Coriolis & Chams components.
* Change: All tools, use the new trace system.
2016-05-17 23:00:06 +02:00
Jean-Paul Chaput f2c036ac6d Corrections in C-Python interface required by Analagic (CHAMS).
* Change: In Hurricane, in PyHurricane.h, in all DirectSet*() macros,
    suppress the third parameter giving the function name. It is now
    build from stringification of other parameters.
      The various macros calls are also modificated all througout
    Isobar.
      Added PyAny_AsInt() to convert a Python Int or Long into an int.
    Maybe we should manage only long, because the type difference seems
    ambiguous in Python itself.
* Change: In Hurricane, in PyHurricane.h, in DirectGetBoolAttribute()
    deduce the function name to display in messages from the arguments.
      Idem for DirectIsAFromCStringAttribute(), DirectGetIntAttribute(),
    DirectGetUIntAttribute(), DirectGetDoubleAttribute() and
    DirectGetStringAttribute().
* New: In Hurricane, in PyHurricane.h, new macro DirectGetNameAttribute()
    to build accessors for method returning a Name.
* New: In Hurricane, in PyHurricane.h, new macro DirectSetIntAttribute()
    to build modificators taking int arguments.
* Bug: In Hurricane, in PyHurricane.h, in macro DirectSetBoolAttribute(),
    the check for a boolean PyObject was wrong, leading the macro to
    systematically emit a Python exception.
* Bug: In Hurricane, in PyInstance method table, PyLibrary_create() was
    registered as a NOARGS function, but it *do* have arguments, change
    to VARARGS.
2016-05-01 15:50:27 +02:00
Jean-Paul Chaput 506ccbd589 Correct a security check in PyHurricane.h.
* Bug: In Hurricane, in PyHurricane.h, the macro GENERIC_METHOD_HEAD was
    not checking at all that the underlying Hurricane object was not NULL.
    This may have lead to core-dumps.
2016-04-13 18:30:45 +02:00
Jean-Paul Chaput a4e46444e2 Various problems in the BLIF parser.
* In CRL Core, in BlifParser, when an input terminal of an instance is
    either connected to power or ground, insert a zero_x0 or one_x0
    Cell to avoid direct connection to the supply (the router is not
    able to do it). The names and terminals of the intermediate cells
    are hard-wired for now (to SxLib).
      When merging Nets, always merge internal nets into external ones
    as the other way around is not always legal.
2016-04-04 17:54:09 +02:00
Jean-Paul Chaput d641f236a3 Suppress warnings when flatening a Cell twice.
* In Hurricane, in Cell::flattenedNets(), if the cell has already been
    flattened, do not issue warnings about duplictated flattened nets.
* In Hurricane, in Net, allow Net::setName() to switch the main name
    for an alias without complaining about an already used name.
* In Cumulus, in RSavePlugin.py, when "views" is supplied in keywords
    (kw) arguments, override the default instead of merging with it.
    This is to allow scripts to save exactly what views they want.
2016-04-02 14:47:10 +02:00
Jean-Paul Chaput 6ad644fac2 New relation for slaved ABs. Do *not* delete blockage nets.
* Change: In Hurricane, in DataBase::CellDepths() the recursion stop
    criterion must be Cell::isLeaf() and not Cell::isTerminal() as
    the second one can be used to hide some levels of hierarchy,
    and we want all of them in a blob.
* New: In Hurricane, in Cell, create a new Slaveds relation to keep
    track of all the Cells with a slaved abutment box. This work is
    incomplete as we do not manage the behavior in case of merge or
    Cell destruction or slaving Cells with aready slaveds ones.
      Modify Cell::setAbutmentBox() to work in both autonomous and
    slaved mode.
* New: In Hurricane, in Net, add a new type of Net: BLOCKAGE this
    avoid us to be dependant on the framework pattern recognition.
    (change propagated to the Python support)
* New: In CRL Core, in the various drivers, recognize blockage nets
    as such and set their type accordingly.
* Change: In CRL, in Toolbox::deleteEmptyNets(), preserve blockage
    Nets. This was the cause of crashs in Kite::BuildPowerRails() as
    we where trying to use a deleted blockage net...
* Bug: In Hurricane, in NetAlias, do not write NetAlias as a name
    but as a type. They were not read back and moreover staying in
    the JSON parser stack.
2016-03-30 17:47:00 +02:00
Jean-Paul Chaput bbab2d14eb Bug, uniquification of unique cells.
* In Hurricane: In Instance::slaveAbutmentBox() and Instance::uniquify()
    use isUnique() instead of isUniquified(). This way we do not clone
    masterCells that are unique in the design. This was the reason
    sometimes "holes" were appearing in the visualiser, as the AB were
    not merged. The uniqification policy may need some refinement.
2016-03-27 17:13:30 +02:00
Jean-Paul Chaput b5d3a2ec3c Update JsonReader for the latest RapidJSON. Doc rebuild.
* Change: In Hurricane, in JsonReader::HurricaneHandler, add RawNumber().
    Don't know what kind of data it parses, so for now if it's called,
    just issue a warning.
* Bug: In documentation, in UsersGuide, add dependencies on doc_HTML and
    doc_LaTeX so they are rebuild if the source files changes.
      Some modifications to work with our new installation of TeXLive 2014.
2016-03-22 15:38:26 +01:00
Jean-Paul Chaput 1ef4bc122f Forgot to catch Bug exception. GCell manage 5 terminals of a Net.
* Bug: In Hurricane, in HApplication, ExceptionWidget ans PyHurricane.h,
    forgot to catch the Hurricane::Bug exception which was leading to
    terminate() without explanations.
* Change: In Katabatic, In GCellTopology, now support one GCell with
    five metal1 terminal of the same net. This unlikely configuration
    did appear in the SNX for the first time...
2016-03-17 16:54:53 +01:00
Jean-Paul Chaput da60370b60 Various bugs in the virtual flattening mechanism (part 2).
* Bug: In Hurricane, in Cell_HyperNetRootNetOccurrences::Locator, must
    also check that the current Net is not a DeepNet in the constructor.
    Take the occasion to prune Net that are automatic.
* Change: In Hurricane, in DeepNet::_createRoutingPads(), check for
    already created RoutingPads. That is, the DeepNet must not have
    RoutingPad components or Segments components.
2016-03-15 17:55:48 +01:00
Jean-Paul Chaput 33355f0e54 Various bugs in the virtual flattening mechanism.
* Bug: In Hurricane, in Cell::flattenNets(), addition to the topHyperNets
    vector was done *inside* the components loop, resulting in multiple
    additions of the same top net. This was leading to the RoutingPads
    created multiple times on the same connectors. Hence the conflict in
    KiteEngine::protectRoutingPads().
* Change: In Hurricane, in Cell::flattenNets(), do not create RoutingPads
    or build rings on already routed Nets. A Net is considered already
    routed if it has at least one Segment. This way we avoid Rubbers to
    be drawn over routed Nets.
* Change: In Hurricane, in DeepNet, do not build RoutingPads & rings on
    already routed Nets (same condition as in Cell::flattenNets()).
* New: In Hurricane, in HyperNet, new collection of all component
    occurrences of an HyperNet. May or may not (default) include
    components from the leaf cells.
2016-03-13 19:35:56 +01:00
Jean-Paul Chaput ae0e6aed25 Disable the merged quad-tree feature, no so bright an idea.
* Bug: In Hurricane, In Cell, the quad-tree cannot be mergeds because
    when a geometrical search is performed, components, and even more
    importantly, instances from lower hierarchical levels will be
    reported. And there is no simple way to discriminate them.
* Change: In Hurricane, Cell & Instance, change the flag of
    MergedQuadTree into SlavedAb.
* Bug: In Hurricane, In Instance::slaveAbutmentBox(), the AB of the
    master model must be set before calling setPlacementStatus()
    otherwise the Instance do not get inserted into the quad-tree
    (empty AB).
2016-03-11 14:04:31 +01:00
Jean-Paul Chaput de401b13d9 In ScriptWidget, keep the name of the script between two calls. 2016-02-27 12:29:51 +01:00
Jean-Paul Chaput 0f1775a77c Corrected bugs in the print feature.
* Bug: In Hurricane, in CellWidget, do *not* rescale iteratively the _initialSide
    attribute under high DPI (do it once).
* Bug: In Hurricane, in CellPrinter, suppress the divide by 4 scaling of the
    printer widget. Don't remember why I did so, and it generate too small
    pictures.
2016-02-25 14:31:29 +01:00