* Bug: In Hurricane, UpdateSession::close(), when re-materializing, the
cells must be notified <CellChanged> *after* all the Gos are
re-materializeds. In fact they must also revalided according to the
deepness of their instanciation (the deepest first). Has still to
be done.
Placement management:
* Change: In <metis>, always disable the hMetis support regardless of
it being detected or not as the placer is still unable manage the
final bin contents.
Routing gauge management:
* Bug: In CRL Core, <vsclib/alliance.conf>, set the correct pitches and
size for the routing layers and the cell gauge.
* Change: In Katabatic & Kite, extract the correct extension cap for each
routing layer from the layers characteristics (cache then in
Katabatic::Configuration).
* Change: In Katabatic, <AutoSegment>, create segment with the wire width
defined in the gauge. For AutoSegment created on already existing
Segment from the global routing, adjust the width.
* Change: In Katabatic, <AutoSegment>, more accurate information about how
a segment is connected to terminal via source and/or target.
The flag SegStrongTerminal is splitted into SegSourceTerminal and
SegSourceTarget (but still used as a mask). So now we can know by
which end an AutoSegment is connected to a terminal.
* Change: In Katabatic, ::doRp_Access(), create constraint freeing segments
not only when HSmall but also when VSmall (more critical for <vsclib>).
Otherwise we may see AutoSegments with incompatible source/target
constraints.
* Change: In Kite, BuildPowerRails, do not create blockage on PinOnly
layers *but* still create power rails planes. This is a temporary
workaround for <vsclib> where the METAL1 blockages overlaps the
terminals (it was fine for Nero, but they shouldn't for Kite).
* Change: In Kite, <RoutingEvent>, if a TrackSegment is overconstrained,
directly bybass it's slackening state to DataNegociate::Slacken.
Also rename the flag "_canHandleConstraints" to "_overConstrained",
seems clearer to me.
Miscellaneous:
* Change: In CRL Core, <Utilities>, add a "pass-though" capability on the
mstream to temporarily make them print everything.
When upgrading from doxygen 1.5.x to 1.8.5 the way the documentation
is generated has underwent many changes, particularly in the headers.
* Change: In <header.html>, must include the javascripts <jquery.js>
and <dynsections.js>.
* In <CMakeLists.txt>, as the header is customized, doxygen seems not
copy some files like the javascripts and some images (open.png,
closed.png). So we copy them from doxygen installation and make
the CMakeLists.txt install them. I hope they will not change too
much in the future.
* In <doxyfile>, disable markdown support as it do not interpret
correctly the formating we already adopted (with a left margin
to put command into). Use HTML_EXTRA_STYLESHEET instead of
HTML_STYLESHEET. Enable the index (DISABLE_INDEX=NO), for the
top header. Enable dot for inheritance diagram. Set the
EXAMPLE_PATH=. to include the synthetic hierarchy.
Correct the tag inclusion (faulty path in some places).
* In <SoC.css>, create style for the new header generated by doxygen.
* In the documentation, move the synthetic hierarchy into a module.
Miscellaneous:
* Change: In <crlcore>, in display.conf use the same display threshold
for both METAL2 & METAL3.
In alliance.conf, the side of VIAs in the gauge is 2l (not 3l).
In kite.conf, separate edge densities for H/V.
* Change: In <Cell>, in flattenNets() use flag as argument, not a
boolean. Do not create rings for clock or supply nets.
* Change: In <DeepNet>, in _createRoutingPads() do not create rings
for clock or supply net (duplicated policy as in Cell::flattenNets()).
* Bug: In <ControllerWidget>, at last find the bad signal disconnect
that was causing ungraceful messages.
* Change: In <knik>, in Edge display occupancy/capacity in the string
name. Improved display progress and debugging capabilities.
Improved exception catch & breakpoint managment:
* Bug: In <PaletteWidget>, in updateExtensions() replace the calls to
deleteLayer() by delete. This cause the widget to be immediatly
erased instead of waiting for the event queue to be completly
processed. This was causing the widget to be left in a incoherent
state when stoping at a breakpoint.
* Bug: In <BreakpointWidget>, in execNoModal(), flush the main event
loop (QApplication::flush()) *before* lauching the *local* event
loop. This is to ensure all widgets are in their final state when
waiting (especially <PaletteWidget>).
* Change: In <ExceptionWidget>, new method catchAllWrapper() to
execute any std::function< void() > function/method with a "try"/
"catch" wraparound and lauch the widget in case something is catch.
* New: In <hurricane>, support for a oberver pattern, backported from
<katabatic> with an Obervable capable of being linked to any
number of Obervers.
* New: In <Cell>, made it observable to detect Cell change, currently
emit two kind of signals:
- Cell::CellAboutToChange : *before* any change.
- Cell::CellChanged : *after* the change has been completed.
* New: In <UpdateSession>, in Go::invalidate() add the Cell owning the
Go to the UPDATOR_STACK (of course the cell is added only once).
In addition, when the Cell is added, send a notification of
Cell::CellAboutToChange to all it's observers. The slave instances
are also invalidated.
Conversely in UpdateSession::_preDestroy() for each invalidated
Cell send a Cell::CellChanged notification to all observer.
The UPDATOR_STACK has been slightly amended to accept Cell which
are not Gos. Prior to this, the Cell where completly excluded from
the UpdateSession mechanism, so it's instances where never actualised
of anything referring to the Cell for that matter.
Note: we use two different mechanisms to transmit a Cell change,
observers and the slave instance map. I think at some point it
should be unificated.
* Change: In <CellViewer>, make it a Cell observer to redraw when the
cell is modificated (also update the palette).
Uses the catchAllWrapper() to protect all critical actions.
* Change: In <GraphicTool>, no longer need of cellPreModificated and
cellPostModificated signals. Now done through the Cell obersvers.
* Change: In <mauka>, <etesian> & <kite> now uses the catchAllWrapper
method for protection (need to split methods in two, to be able
to pass it as argument). No longer emit cellPreModificated and
cellPostModificated.
Support for RoutingGauge in P&R:
* Bug: In <placeandroute.py>, the connection from the internal power
ring to the connectors was not done correctly. Wrong contact layers
leading to a gap.
* Change: In <BuildPowerRails>, detection of the corona signals based
on how the "pck_px" pad is connected. No longer based on name
matching.
* Change: In <placeandroute.py>, support for 2 routing metal only
(3 metal in the technology).
* Change: In <katabatic> & <kite> support for a "top layer" limitation
on the routing gauge, this allows to use only two routing metals
(METAL2 & METAL3). Work in progress.
Cleanup:
* Cleanup: In <vlsisapd/src/bookshelf>, remove unused file Bookshelf.cpp
(may have been a parser once upon a time).
* Cleanup: In <hurricane>, in Cell::flattenNets() use flags instead of
booleans to be more readable. Allow occurrence placement checking.
* New: In <crlcore> add Python wrapper for the Ispd05 loader.
* New: In <unicorn> add option for direct loading of ISPD05 designs.
* Bug: In <hurricane/src/viewer>, RecordModel must emit
layoutAboutToBeChanged() before changing the record contents (and
layoutChanged() afterwards).
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.
Update to Qt 5:
* Change: Now requires at least cmake 2.8.9.
* Change: CMakeLists.txt needs small changes. Qt modules must be found
one by one (Core, Gui, Widgets). Must add "set(CMAKE_AUTOMOC ON)"
in the top file and replace "qt4" prefix in macros by "qt5".
Added simpler macro "setup_qt()" in FindBootstrap.cmake.
* Change: No longer need to include <QGtkStyle> is is choosen by default
according to the current desktop environment.
* Change: In <hurricane>, In HApplication, launch ExceptionWidget when
a std::exception is catched instead of silently discarting it.
New placer Tool: Etesian
* New: <etesian> analytical placer. Encapsulate Coloquinte from
Gabriel Gouvine.
* New: in <documentation>, add stub demonstration ToolEngine <smurf>.
Needs to be commented.
Miscellaneous:
* New: in <boostrap> and <unicorn>, added support for Etesian, the new
analytic placer. The tool itself will be added in the next commit.
* Bug: in <CellWidget>, when shifting the display buffer, we no longer
can copy the buffer on itself (we should never have). Now go through
a temporary one (PlaneId::AutoCopy) which is added to the
DrawingPlanes. Affect "goLeft()" and "goUp()".
* Bug: In <CellWidget>, remove the WA_PaintOnScreen flag/attribute.
When it's on, no PaintEvent is transmitted to the CellWidget
when it's the central widget of the <CellViewer> (QMainWindow).
It's something I still don't understand from the doc of Qt.
* Change: In <AreaCommand>, use the PlaneId enumeration instead of a
anonymous numerical index.
* Change: In <HApplication>, no longer catch and silently discard
standartd exceptions but launch the ExceptionWidget...
Suppress the now deprecated constructor with "Type" argument.
* Change: In <SelectionModel>, the "reset()" method is deprecated in
Qt5, instead enclose the "clear()" by a "beginResetModel()" and
"endResetModel()" pair.
* New: In <crlcore>, add support for ISPD05 benchmarks (in Bookshelf
format). Forked from ISPD04 and not finished yet.
* Change: In <Mauka>, distinguish the Action string identifier from
<Etesian>
* New: In <unicorn>, add entry for ISPD05 loader. Add entry for
<Etesian> analytic placer.
Details:
* New: in <bootstrap>: add support for devtoolset-2 in ccb. Run the
cmake commands through 'scl', set shell environment variables
BOOST_INCLUDEDIR & BOOST_LIBRARYDIR and disable the default
system path search.
* Change: In various flex scanners add the %nounput to suppress
compiler warnings.
* Change: Little cleanup for g++ 4.8.1 as it's more strict.
* Change: In various top CMakeLists.txt, suppress extraneous '/'
after DESTDIR.
Documentation restructuration:
* Bug: in <hurricane>: bad figure for transf-R1.
* Change, in <kite>: Remove deprecated configuration variables.
* New: documentation <tool> to regroup all documentation not directly
related to one tool.
* Change, in <crlcore>, move the user's guide and the top doc index
into <documentation>.
* New, in <documenation>: added Python script demo based on AM2901.
Project hierarchy reorganisation:
* With svn, we were doing a tool by tool checkout, suppressing the
whole repository hierarchy level.
* The tools were also grouped, inside one repository, into multiple
projects (<bootstrap>, <vlsisapd>, <coriolis>).
* We do not want to split up each tool into a separate repository,
given their tight integration (except for vlsisapd).
* We choose to simplify, and consider all tools in a svn repository
one project. Due to the way Git clone repositories, the directory
containing the project is now to be seen under "src/".
CMake modifications:
* Now that the <vlsisapd> and <bootstrap> projects are merged into
coriolis, modificate the top CMakeLists.txt of each tool to uses
only Coriolis (and bootstrap hard wired).
CCB compile script modifications:
* Uses the new source tree hierarchy, with the project directory
inserted.
* Remove (comment) all parts relateds to svn managment.
* Git is sufficiently simple so that we do not want to integrate
command shortcut into the script.
SVN cleanup:
* Remove the obsolete <chamsin> tool, that has become the full fledged
<chams> project long time ago.
- New: Added an id on DBo, SharedName and SharedPath to ensure
database determinism. All the hash key now uses the id instead
of the object's pointer (see _getHashValue()).
- Change: In RoutingPad, position is now only relative to the anchor,
no more (dx,dy). Add a isPlacedOccurrence() to check if all the
occurrence in the path are fixed and thus the position meaningful.
* ./hurricane/doc/hurricane:
- Change: In Cell, added doc about PlacementStatus.
- Change: In Transformation, more detailed explanations about the
orientations. A little beautifying too...
- Change: RoutingPad doc update.
- Change: Entity doc update (for id).
- Change: In HTML header/footer uses the new SoC.css.
- New: In PyDataBase, added method for getDB (the correct name, as alias)
and getRootLibrary().
- New: In PyComponent, added support for the optional BasicLayer argument
of getBoundingBox().
- New: In PyEntity, added support for conversion to/from RoutingPad.
- New: In PyHyperNet, added support for getNetOccurrences().
- New: In PyLibrary, added support for getLibrary().
- New: In NetExternalComponents, added support for setExternal().
- New: In hurricane/doc, added documentation RoutingPad, HyperNet & Query.
- New: In isobar, added support for RoutingPad.
- Change: In PyComponent, getCenter() method moved to it's right place in
the base class.
- Change: In PyPath, added duplicated methods (ApplyOn <-> applyOn and
Invert <-> invert).
- Change: In PyHurricane, add type object for all subtype of Component, then
we can use the Python "isinstance()" function to know the true type of a
component. Useful when looping over a collection of Component.
Name clash: We have used the class name as the name of the constructor
inside the Hurricane module, at a time we where less acquainted with
Python, so the real class are named 'PyVertical' for example, while
'Hurricane' is the constructor function. Should correct this in the
future but it's a huge work as all the Python scripts must be editeds...
- Change: In PyNet, adds the "getComponents()" Collection accessor.
- New: In Occurrence, added method getCompactString() to display a more
compact version of the occurrence.
- New: PyQuery & PyQueryMask expose the Query classe. Only partially implemented,
and with the start of the template based interface disabled.
- Bug: In PyHurricane, PyTypeViaLayer was *not* reference incremented, causing
the type to be desallocated when the Python interpreter was finalizing.
This was causing <isis> to fail.
- New: Added FreeBSD/Ubuntu patches from Otacilio De Araujo
(<otaciliodearaujo@gmail.com>).
* ./hurricane:
- Change: In CellViewer, one unificated method to lauch Python
scripts whatever they are Stratus or not.
- Change: In ScriptWidget, the function lauched is now
"ScriptMain()".
- New: In PyCellViewer, add the refresh method.
- A complete sweep of cleanup to suppress allmost all compiler warnings.
* ./hurricane/doc/hurricane:
- New: Documentation cleanup and update, particularly on the new Layer
derived classes.
* ./hurricane/src/hurricane,
./hurricane/src/isobar,
./hurricane/src/viewer:
- New: Creation of new methods, more explicit on DbU. Based on a to/from
naming scheme.
- New: Python support extented to include all objects needed to configure
through python scripts.
- Change: Finally understood what's causing the _XOPEN_SOURCE redefinition.
Basically the Python.h must be included first before any other
include. The type-puned problem will remains still (that is a Python
problem, not our own).
- Change: In DisplayStyle, uses shared_ptr for DrawingStyle instead of
custom made reference count.
- New: In ExceptionWidget, mimic more closely the behavior of a QDialog.
Uses QTextEdit/QTextDocument for the trace. Static "all in one" methods,
build from various exceptions/Errors & QString. Automatic window centering
when the trace is displayed.
- Change: In RoutingPad, uses my C++ style. Normalize constructors calls.
Allow to select (trough flags) the way the "best component" is choosen.
Currently: Biggest Area or Lowest Layer or Highest Layer.
* ./hurricane/src/viewer:
- New: In DisplayStyle, darkening is now expressed as a ratio over the HSV
components of a color. Introduce a new DisplayStyle::HSVr type.
Allow a more readable darkening effect. All object modicated accordingly.
- Change: In NetlistWidget, the "Net" section now correctly dimension itself
on the widest net name. Must suppress all the size Hints in the header
& data models.
- In CellViewer, adds a shortcut for launching Stratus scipts: SHIFT+P,S
and one for pure Python scripts: SHIFT+P,P.
- In ExceptionWidget, put the trace inside a QScrollArea so all the call
stack can be viewed regardless of the window's size. It seems that
QFontMetrics has problems to compute the right text size when using
a Qt::RichText enabled widget. Adds some "manual" corrections, hope
they will be sufficiently portables.
- New: Torus object. To allow a simpler management of a chip's corona,
the toric area between the pads and the core.
- Change: In HyperNet/LeafPlugOccurrences, change the instance stop criterions
from "isLeaf()", which means "contains no instances" to "isTerminal()"
which can be programmatically changed. This has to be done for the Pads
which are non-leaf due to "padreal" but still must be considered for their
connectors.
This modification is coupled with one in the Ap parser.
- Change: In Backtrace, enable support for Apple backtrace. This is a blind
test as I can't check by myself.
* ./hurricane/src/viewer:
- Change: In CellWidget/SelectionModel/SelectionWidget, rewrite the Gos selec-
tion mechanism. Now ExtensionGo could be selecteds as they ought to be.
Also adopt a more standard way of how objetcs are selecteds.
Prefer "dataChanged()" signal over "reset()" or "layoutChanged()" as
it keeps the selection instead of resetting it.
Unselecteds entry in the window (toggled with 't') are now shown in
red for better readability.
- New: Backtrace to print the stack when an exception is thrown.
- New: In Error, support for Backtrack.
- Change: In TextTranslator, provides a default HTML translator instead of
building it every time it was needed.
- Bug: In Common, when demangling a C++ symbol fails, returns the empty
string instead of NULL.
* ./hurricane/src/viewer:
- New: In Exception, support for the Backtrack new feature.
* ./hurricane/src/isobar:
- Change: In PyHurricane, when catching a C++ exception, adds a newline to
have a more clean display.
- New: In Query, adds an accessor to get the current path.
- Bug: In NetExternalComponents, every component of an external net was
considered as an external one. Now only truly external components
are considered.
* ./hurricane/src/isobar:
- New: StratusScript, dedicated Stratus script laucher.
- Bug: In CellWidget, when drawing selecteds Gos, the loop variable was
not reset between loops resulting in incomplete display.
* ./hurricane/src/isobar:
- New: In PyHorizontal & PyVertical, adds mutator methods.
- Bug: In Mask, the "!=" operator was erroneously implemented like the
"==" operator. Making "!=" behave like "==", what a mess.
- Bug: In BasicLayer, in constructor the _blockageLayer and _connectorLayer
where *not* initialised, leading to erratic behavior when checked
against NULL.
- Change: New problem identified with the Python modules: each module seems
to be built as a complete binary, so all the static C++ initializers are
allocated in each module. In particular the C++ tree inheritance is built
for *each* module so we cannot longer uses the typeid() comparisons
across modules... It was used by boost::program_options to perform is
casts with boost::any and was starting throwing exceptions because of
bad casts. program_option was first initialized in "configuration"
first included by PyViewer then in PyCRL (see Utilities.cpp).
A first solution is to re-order the import of Python modules in
stratus1/st_model so that CRL is imported first.
The second is to not not link "configuration" with boost::program_option
as only the binary vlsisapd-conf-editor needs it.
That is a serious problem of which we must be aware and can cause further
strange behaviors.
Debug code used to diagnostic has been kept commented in the sources a
it may be needed again :-(
This behavior do not affect our singletons because they are part of
dynamic libraries that seems to be correctly shared between the various
Python modules.
- Bug: target_link_libraries() must be put back for OSX Snow Leopard
(doesn't seems to affect Leopard). As I do not have an OSX under
my hand it's untested and is likely to fail at that point.
* ./hurricane:
- Bug: In Instance, correct support for Instance::PlacementStatus::Code.
- New: NetExternalComponents python object wrapper, moves
getExternalComponents() from Hurricane module into that new object.
- New: Breakpoint python object wrapper, to allow stratus1 to stop each
times it calls the viewer.
- Change: In PyHurricane, UpdateSession is now a true object with static
methods.
- Change: In BreakpointWidget uses a local event loop mechanism that no
longer consumes 100% of a CPU while doing nothing... (copied from
Qt's sources of QDialog).
- Library linking: there must not be "target_link_library()" for libraries,
only when building binaries. Avoid clashes between static module
or class variables, and strange reinitialisation of those variables.
- Change: Boost is now always linked staticly.
* ./hurricane/src/hurricane:
- New: TextTranslator to allow translation to and from text & HTML.
- Change: In Exception, make uses of TextTranslator to correctly display
exception text when in graphic mode.
* ./hurricane/src/isobar:
- New: Script, small object to wrap around Python scripts.
- Change: In DisplayStyle, new attribute "goMatched" to tell if the style
is associated to a given Go and therefore should be displayed in the
Layer table.
- Change: In Instance & Cell, do *not* materialize unplaced instances.
This is to avoid overloading the QuadTree at point (0,0) and besides
has no senses. Uses the PlacementStatus state.
- Bug: In Viewer CMakeLists.txt, put tool include directories first.
- Change: When static linking is required, also switch Boost libraries in static
mode. Automatically done is modules using FindHURRICANE through
SET_LIB_LINK_MODE(). Note: FindBoost must be called *after* SET_LIB_LINK_MODE().
- Change: adopt a tree layout compliant with the UNIX FHS.
* includes under TOP/include/coriolis2.
* shared datas under TOP/shared/coriolis2.
* docs under TOP/share/doc/coriolis2.
* configuration under TOP/etc/coriolis2
* ./crlcore:
- Change: In Environment, comply to the new tree layout, search configuration
files under TOP/etc/coriolis2/.
* ./knik:
- Change: In flute, comply to the new tree layout, get the "POW*.dat" files
from TOP/share/coriolis2/flute-2.4.
libraries gets installed in "lib64" instead of "lib".
buildCoriolis.py sets automatically LIB_SUFFIX for cmake.
coriolis2.spec modificated to uses lib64 on 64 bits.
- Change: In the CMakeLists.txt, in all the install commands remove all
the leading "/" as they prevents the CMAKE_INSTALL_PREFIX to be took
into account. It was nevertheless working because buildCoriolis.py was
using DESTDIR which is prepended anyway.
* ./goodies:
- Change: In buildCoriolis.py, no longer uses the DESTDIR but instead
CMAKE_INSTALL_PREFIX.
- Cleanup: In Slot.h, comment out print for debug.
- New: In CellViewer, adds a renameCell() method to "rename" the currently
loaded Cell "in place". Utility function for SaveCellDialog (see below).
- Bug: In Net.h, force expansion of SlotTemplate<Net*> with the line:
const SlotTemplate<Net*> dummyNetSlot ( string("dummyNetSlot"), NULL );
I've no satisfactory explanation, but in the cyclop Inspector the
Cell's NetMap is correctly created and in the cgt Inspector, Nets
entries of the NetMap appears as "unsupported", meaning that the
SlotTemplate<> has not been generated for Net. This correct the
problem.
- Bug: In CellWidget, correct the slightly off position of Labels references.
- New: In ControllerWidget, new TabSettings tab to hold the configuration
settings of the various Coriolis tools. The TabSettings is a tab itself.
- Bug: In PaletteWidget, do not derive from QScrollArea. Instead uses it
as a child widget. This solves the refreshing problem of the Palette.
As a rule now: never derives from anything other than QWidget.
- New: GotoWidget, not having this feature finally unverved me enough for
beeing implemented. You can specify an (x,y) on which the view will
be centered and an aperture which gives the size of the view smallest
side. It's a way of specifying the zoom level (as the zoom is not
meaningful for users). An aperture of "zero" disable that feature,
that is, zoom remains unchanged. The coordinates are integer which
are implicitly expressed in the current mode used by the viewer
(Symbolic, Grid, or Physical in micro-meters).
- Change: Big rewrite of how the Symbolic/Grid/Physical modes are sets
to/from the CellWidget. Impacted widgets are CellWidget &
DisplayFilterWidget.
Main changes are that there is no more "individual" setter/getter for
modes (setSymbolic(), setGrid(), setPhysical(DbU::UnitPower)) but one
with two arguments:
setDbuMode(int mode,DbU::UnitPower)
Signals & slots of the widgets also evolves into:
dbuModeChanged(int mode,DbU::UnitPower)
changeDbuMode (int mode,DbU::UnitPower)
- New: In Reference, adds a type to differentiate between "Labels" and
"Position". Labels are strings that we wants to display, and position
are specific points with a name attached to it.
- New: In CellWidget, specific display for the two kind of references
(Label & Display).
- New: In Query, add support for Markers, although they are Go's, are stored
in a separate QuadTree directly at Cell level. In a very similar fashion
to the ExtensionGos. Sometimes should look if thoses mecanism could be
unified.
* ./hurricane/src/viewer:
- New: In CellWidget, add support for displaying References. Uses the Marker
Query. For now labels are displayed centered on the reference point,
making that point hard to see. That behavior may be changed later if
needs to be.
- Bug: In InspectorWidget, the History::push() wasn't updating the ComboBox
index. The line was strangely commented out (?).
- Change: In Cyclop, now uses the GtkStyle when not under OSX and Qt is
newer or equal to Qt 4.5.0.
- Change: In the various Qt Model Table, do the rowHeigh bug correction.
- Bug: In InspectorWidget/NetlistModel, when browsing through the records
tree, the records were generated twice at each slot change. This
was due to the History ComboBox sending a index change signal then
the InspectorWidget setting the slot *again*.
When trying to explore a Slot, but this Slot is empty (like an
empty vector, for instance) do not gut the RecordModel. Because
as we find out that the new Slot is empty we go back and restore
the previous contents. Potentially slow if we comes from a Slot
with lots of records. Now we dump the contents only if there is
something to explore.
* ./hurricane/src/hurricane:
- Bug: In Record, the slots where stored in a list container, which was
making indexed accesses very very slow. This slowdown was also
affecting the destructor of Record (this is the explanation why
the RecordWidget was slow, even when *leaving* the net IntrusiveSet).
Now implemented in term of STL vector.
- Bug: In Slot/Common, still some adjustements to make the Inspection
mechanism work with all types. Correct the "IntrusiveMap<>" not
working with the NetMap. Related to templates not using the same
constness.
- Change: In Entity/DBo/Cell, Some more adjustements on Slot/Records.
- Bug: In NetlistWidget/NetlistModel, suppress the "forceRowHeight()"
method which was terribly slowing down the table display. Instead
uses the "setDefaultSectionSize()" of the vertical header to setup
the row height (much more compact display).
- Bug: In NetlistModel, strangely, although we have a "data()" and a
"headerData()" method, the "data()" is also called for the headers
potentially erasing any previous setting done with "headerData()".
This was occuring for the fonts settings. Don't known if it is
a bug or a feature of Qt...
- Thoses changes has to be ported to the others widgets some times...
- Change: <PROJECT>_SEARCH_PATH are put back into the *first* tool of
a project.
- Bug: In HURRICANE_CHECK_MACRO(), the quiet flag was not correctly
implemented. User ARGV instead of argv (case sensitivity!).
- Change: New structure for the installation & CMake system.
* Tools are now grouped in "projects". There are three projects:
1. - IO: Standalones parsers/drivers (IO_USER_TOP, IO_TOP).
2. - Coriolis: Base & digital tools (CORIOLIS_USER_TOP, CORIOLIS_TOP).
3. - Chams: Analogic tools (CHAMS_USER_TOP, CHAMS_TOP).
Each *project* has a two "TOP" environement variables, for
example: IO_TOP and IO_USER_TOP. Thoses variables are the only
ones useds to locate the tool (CMake modules, headers & libraries).
The local path always takes precedence over the global one.
The localisation process occurs in each tool top CMakeLists.txt
where the macro SETUP_PROJECT_PATH is to be defined. There is no
way to put it in a shared includes file as it's the macro precisely
used to locates the includes... You have to call the macro once for
each project you wants to uses:
SETUP_PROJECT_PATHS(IO)
SETUP_PROJECT_PATHS(CORIOLIS)
* In FindTOOL.cmake, supress the <TOOL>_DIR_SEARCH and uses the
<PROJECT>_DIR_SEARCH instead (example: CORIOLIS_DIR_SEARCH).
* buildCoriolis.py modificated according to the new "TOP" scheme.
- Bug: In DebugSession, bad stacking/unstacking of debug levels (unapaired),
and wrong value stacked sometimes.
* All Hurricane/Coriolis tools:
- Change: Simplify the CMakeLists,
- Bug: In DbU, "micro" symbol is "u", not "m".
- Change: In DbU, uses different precisions on differents units.
* ./hurricane/src/hviewer:
- Change: In CellWidget, when drawing a Ruler, display the current Unit
mode on first & last tick.
- New: In DbU, extend the StringMode/getValueString() to support the physical
unit in addition of lambda & foundry grid. "setStringMode()" has now a
second parameter "UnitPower", only used when the mode is DbU::Physical.
* ./hurricane/src/hviewer:
- New: In CellWidget, the fitToContents now adds a margin of 5% to get border
clear of the bounding box.
- New: In CellWidget, ability to display lengths in nanometers & micrometers
in complement of symbolic and foundry grid. DisplayFilterWidget modificated
accordingly. New members:
void setPhysicalMode ( DbU::UnitPower );
bool physicalMode () const;
DbU::UnitPower getUnitPower () const;
In addition to:
bool gridMode () const;
bool symbolicMode () const;
void setGridMode ();
void setSymbolicMode ();
- Change: In CellWidget/Ruler, rulers are now unidirectionals (as in Cadence).
- New: In CellWidget, support for drawing components names. Includes correction
of badly computed coordinates in drawDisplayText.
Components names are drawed only for the top level of hierarchy and only
if the bounding box is large enought (currently hard-coded to 50x50 pixels).
- New: In Net, "Automatic" attributes to distinguish automatically generated
net names without string pattern matching. "Automatic" Net's names are not
drawn by the CellWidget to much cluttering the display. And testing a boolean
is way faster than a pattern matching on a hard-coded name.
- Change: In CellWidget, when loading a terminal Cell, draw it's internals.
- Change: In RulerCommand, allow the ruler to be on the cursor grid, not the
snap grid (usesul for the real mode where the snap grid is much bigger
than the cursor grid).
- New: In Occurrence, new method getBoundingBox(const BasicLayer*). Returns
a different value from getBoundingBox() only if the Entity is a Component.
Long awaited by the Solstice extractor.
- Change: In ExtensionSlice, keep track of the created ExtensionSlice by name
to avoid consuming a new bit each time an ExtensionGo slice is deallocated/
re-allocated (happens often in Solstice/Equinox).
- Backtrack: In SelectCommand, do not uses::boost regex as their library have
not been compiled for 32 bits support under OSX Snow Leopard ?!$#.
- Bug: In Command.h, include and uses std::string has in some rare case no one
has done it before.
Now a command is associated to one CellWidget exactly, the active flag
was shared among all CellWidget which was an error (do not show unless
we start to multithread).
- New: In SelectCommand/SelectionPopup/SelectionPopupModel now there are three
selection mode:
Mode 0: Select all Component under point.
Mode 1: Select whole nets whose at least one component is under point.
Mode 2: Same as 1, but hide all cluttering "*nymous*" nets.
Rotation through the mode is done by pressing repeadedly the 'N' key.
The various select modes are implemented through "sub" Collections.
- export MousePositionWidget.h so pharos can use it (displays the (x,y) mouse position in status bar)
ADDS
- add a getOnPhysicalGrid() in DbU
- add getPhysical and getOnPhysicalGrid functions in PyDbU and also defines useful CONSTANTS
- New: In DbU, create a "onCustomGrid(point,step,round)" method to place
a point on an arbitrary grid. That different from the real or symbolic
ones.
- Bug: In DbU, all the snap function where bugged when passed negatives
coordinates.
- New: In DbU, new conversion function, DbU::getPhysical() to translate into
physical (metric) system.
- New: In CellWidget, separate the "Snap Grid" (real or symbolic) from the
cursor position. The cursor position will now be displayed in half-lambda
(symbolic mode) or founder grid unit (real mode).
That can be changed trough the CellWidget::setCursorStep(DbU::Unit)
method.
- New: In CellViewer/ControllerWidget, the CTRL+I keys toggle the visibility
of the Controller instead of systematically showing it.
I rewrited everything like it was in Coriolis-1 (PyType_create) and reuse the precedent hierarchical system (PyTypeInheritedObjectDefinition)
With all these changes Pharos is able to run the same script several times without any error (and not only 7 times before crash)
Maybe there are still some bugs but it seems ok for the moment :D.
does not throw Error anymore but cerr and return
this way it is possible to execute python script more than one time
Adding trace information for DirectDeleteMethod
- Adds a CMAKE_POLICY CMP0003 has we've upgraded to cmake 2.6.
* ./hurricane/src/hurricane :
- Bug: In Interval, the merge method wasn't working if the "other"
Interval was empty (doing merge) instead of nothing. This was
a non-symetrical behavior.
* ./hurricane/src/hviewer :
- New: In CellViewer, adds an accessor to the ControlerWidget widget.
- Bug: In CellViewer::imageDisplay(), when using GtkStyle the file
dialog seems to core dump if the directory is not specified.
Now systematically starts with the current working directory.
- Change: In Technology::getViaBetween(Layer*,Layer*) if the two layers
are identicals, return the layer instead of NULL (mostly for mono-
metallic VIAs).
* ./hurricane/src/hviewer :
- Bug: In CellWidget::redrawSelection(), correct calculation of the
selected Instances abutment box. We must apply the occurrence path
transformation to the instance transformation and not the other way
around.
- Bug: In SelectorLess(), Instance must be *inferior* to Components as
they are drawed after in CellWidget::redrawSelection().
o added bool noScale to hide colorScale (only useful for congestionMap)
o respect the cellWidget aspect ratio when saving
- Adding 'Save to image' functino which call a QFileDialog to choose file name
- Highlight a masterCell's abutmentbox when it's selected (there is a bug in this)
- Bug: In CellWidget, the drawRulers was copying an enlarged redrawArea into
the Selection Plane causing the selection to deseapear gradually when
slowly shifting.
- New: In PaletteWidget: allow to select the number of rows of the grid
widget (up to "infinite", meaning one column). Allow to hide entire
groups in the widget.
- Change: Consistent encapsulation of "_active" in Command and all it's derived
classes.
- New: support for Rulers. Start drawing by pressing Shift+L.Button, finish
by pressing it again. To cancel a Ruler press Shift+R.Button.
Drawing style support also added : "text.ruler". Rulers are always
visibles (display threshold sets to zero), only the numbers of graduations
displayeds changes (at least 5 pixels between two graduations).
- Bug : In Timer.h, forgot to declare the specialized getString()
template, thus preventing the timer to be correctly display in
output streams.
- Bug : In CellWidget::_redraw(), uses "paintersBegin()" instead of
"painterBegin()" (whithout the "s"). The former open painters for
both normal & selection planes which are subsequently accessed by
"setPen()". The laters opens only the normal plane painter resulting
in warnings for the selection plane painter (shows only from Qt 4.5).
- New : In CellWidget, ability to support the physical grid (not only the
symbolic grid). Added selection symbolic/real in the DisplayFilter.
- Change : add to Technology and all the Layers sub-classes a
"_onDbuChange(float)" method.
This is due to the fact that the symbolic technology is loaded first
into the DataBase (needed for defining the BasicLayer ordering) along with
all the symbolic dimensions for the symbolic Layers. Only afterward, we
load the real technology (hcmos9 for instance) which will sets the
"grids per lambda" factor to it's true value, changing the meaning of
the already loaded symbolic values. Then, it is necessary to scale those
values so they are coherent with the new "GPL" factor, hence the
"_onDbuChange()" function.
NEVER USE THIS FUNCTION AFTER THE TECHNOLOGY HAS BEEN LOADED, it would
render all symbolic coordinates false...
- Bug: In the various Property sub-types dox file the Hurricane namespace
wasn't closed, resulting in the deseapearance of thoses classes in the
documentation (painful to diagnose).
Still, the doc for the derived Property mostly remains to be written.
- Bug: clearing some remnants of a merge conflict in DataBase.dox.
- Change: in CellWidget::DrawingPlane, complete replacement of hard-coded
numeric indexes by the PlaneId enum values.
- Change: in SelectionWidget, filter on the Occurrence name instead of the
path name. Todo: add a radio button to select on witch column we sort.
- Bug: in SelectionWidget, when the filter is active, remap the index
of the toggled occurrence through the filter.
* ./hurricane,
./coriolis/src/katabatic,
./coriolis/src/kite :
- Change: documentation building with doxygen is now optional and disabled
by default. To enable documentation generation run cmake with the
following argument :
-D "BUILD_DOC:STRING=ON"
Or edit the cmake cache variable "BUILD_DOC".
- Bug: destructor of Technology was destroying some Layers twice. Destruction
of Layer was done by a loop over a multimap<> that could contains more
than one entry of a Layer... Now using a loop over the IntrusiveMap.
- Change: Reorganization of NetExternalComponents property, all functions
are now static functions members as the property name.
- Bug: in CellViewer::setCell(), do not try to get the name of the cell if
it's a NULL pointer... Solve the cyclop "empty cell" coredump problem.
- New feature : dbo_destroy<> a shared_ptr<> that calls the destroy method
of an object, specially tailored for DBo. Application in Cyclop.
- Bug: correction of the bad keyPress event handling in InspectorWidget
(had to press twice the key for the action to be transmitted).
Uses an eventFilter() at InspectorWidget instead of a keyPressEvent()
overload. The keyPress event is first received by the QTableView then
transmitted to the upper level. The eventFilter allows the InspectorWidget
to catch the event *before* it gets to QTableView (but let pass thoses
it don't want).
- Bug: idem for SeletionWidget.
- Change: do not draw the rectangular area of AreaCommand until it is bigger
than a given threshold (programmable). Affect ZoomCommand and
SelectCommand. ZoomCommand no longer issue a warning when the zoom is
to small.
- New feature: fit to net in the NetlistWidget. Uses simple contextual menu,
another way to avoid overloading keyPressEvent().
- Change: in Query, the filter has now it's own subtype: Query::Mask.
- Change: enhancement for the "start" model of signal propagation, used to
re-implement the DisplayFilterWidget.
- Change: more clear policy for signal emission: a signal must be emitted
by any "setter" method (setStartLevel(), setStopLevel(), ...). Has to
be enforced for all setter (work in progress).
- Change: re-implemenation of the delayed refresh mechanism. No more flags
propaged througout the functions calls but a session mechanism instead.
See CellWidget::openRefreshSession() & CellWidget::closeRefreshSession().
Nothing is actually drawn until the last session is closed.
Session mechanism can be invoked by signals/slots, see NetlistWidget.
- Change: less dangerous key mapping:
'z' : zoom in.
'm' : zoom out.
'CTRL+z' : previous zoom level.
'CTRL+m' : next zoom level.
'CTRL+Up' : back in hierarchy.
'CTRL+Down' : go down in hierarchy.
'SHIFT+Up' : back in hierarchy stack.
'SHIFT+Down' : go down in hierarchy stack.
- Change: simpler implementation of the occurence selection mechanims
between SelectionPopup, SelectCommand, SelectionWidget & CellWidget.
Consistent (identical) names of signal/slots : selectionToggled() and
toggleSelection().
- Change: disable QApplication::processEvent() has it seems to slow down
display refreshment on Mac OS. This may be a side effect of another
problem not yet diagnosed.
- New feature: CellWidget internal state enhancement : now manage an
history of scales (through 'u' & 'd').
- New feature: hierarchical exploration through 'CTRL+u' & 'CTRL+d'.
On second though, what a bad key mapping. To be corrected soon...
- New feature: CellWidget now store it's internal state in a separate
nested object CellWidgetState. The State is work in progress, currently
is store the Cell*, showSelection, cumulativeSelection, selection
criterions and showBoundaries. showBoundaries may evolve to be stored
as part of the Palette's state.
- Change: implement the "start" propagation model signal/slot for
showSelection, cumulativeSelection & showBoundaries. The main concern
is to avoid signals loop. See SelectionWidget::setShowSelection(bool)
for an example.
- Change: supress the minimumSize of the SelectionWidget (200 pixels is a
waste of space when the Path is empty).
- Optimization: rework the display speed and display policies. Now redraw
requests no longer interrupt themselves, provoking a lagging effect but
a more fluid display (Events interruption is working nonetheless).
Small rework on RedrawManger: more meaningful attributes names and
code simplification.
The previous behavior can be re-enabled with the ALLOW_REQUEST_INTERRUPT
define.
Try to reduce to the min the number of pixmap copy, less calls to
DrawingPlanes & repaint.
The hurricaneAMS transview so regain it's previous fluidity when
parameters are changed.
- Change: the _stripWidth can now be adjusted.
- Note on profiling: sysprof, or rusage do not take account for operations
outside the processus, so for example, when a pixmap copy is done, it
doesn't show any cost in the processus but it's paid in Xorg.
The operation seems to be fast while it's slower instead.
./coriolis/src/crlcore/src/ccore/crlcore/Banner.h
- Moved "CBanner" to "Banner", cleaned up, relooked, renamed functions, reorganised.
* ./coriolis/src/crlcore/src/ccore/ToolEngine.cpp
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngine.h
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngines.h
- Renamed CEngine to ToolEngine, cleaned up, relooked. All fonctions as static
members.
* ./coriolis/src/crlcore/src/ccore/Memory.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Memory.h
- Renamed CMemory to Memory (as for Timer), minimal cleanup.
* ./coriolis/src/crlcore/src/ccore/crlcore/*.h
- Change anti-double inclusion constants from __XX_H__ to __CRL_XX_H__
(that is: include namespace) to avoid potential constant clashes with
other pieces of software.
* ./coriolis/src/crlcore/src/ccore/Utilities.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Utilities.h
- Finish porting of all features from CUtils. Simplificated mstream using
member templates. Speedup mstream by using static_cast instead of
dynamic_cast.
* ./coriolis/src/crlcore/src/ccore/Environment.cpp
- Now read CORIOLIS_TOP from UNIX environment instead of hard-coded
directory (to my personnal installation...). See new method
"loadFromShell()", needs to be extended to all other variables.
_____________________________________________________________________________
* ./hurricane/src/hurricane/BasicLayer.{h,cpp}
- Suppress all graphics related members from Layer.
- Adding realName member for symbolic to real transformation.
* ./hurricane/src/hviewer/CellWidget.cpp
Bug: Now uses display threshold from Graphics (DisplayStyle) instead
of layer. Now layers appears/diseapears while zooming/unzooming.
* ./coriolis/src/crlcore :
- Separating clearly symbolic technology form real technology.
- Various file renaming.
_____________________________________________________________________________
* ./hurricane/src :
- Complete include re-organisation.
include/hurricane/*.h : kernel.
include/hurricane/viewer/*.h : hviewer.
include/hurricane/inspector/*.h : hinspector.
Includes have been moved into subdirectories of .cpp files (as in
crlcore).
- Now you must include files like this :
#include <hurricane/Layer.h>
#include <hurricane/viewer/CellViewer.h>
#include <hurricane/inspector/HInspector.h>
- Suppressed viewer specific include path in FindHURRICANE.cmake.
- Re-enabled documentation, with dot disabled as it seems to slow down
doxygen.
* ./crlcore/src/crlcore :
- Adapted to new Hurricane include scheme. Corrected bugs in it's own
include files (noticeably "Utilities.h").
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Added (empty) directories "html" & "latex". Those directories are
created by doxygen, but as they are used in the CMakeList.txt, they
must be present even before the fisrt run of cmake (otherwise cmake
choke on them).
- Doxygen sets to only generate html & pdf (through LaTeX) documentation.
- All ".dox" files corrected to suit the new function members naming
scheme (some work may remains in code examples).
_____________________________________________________________________________
* ./hurricane/doc/hurricane/src/hurricane/Layer.{h.cpp}
./hurricane/doc/hurricane/src/hurricane/BasicLayer.{h.cpp}
- Changed "Type" to "Material" to fit better the OpenAccess semantic.
Introduce Material meanings : pWell, nWell, pImplant, nImplant
active, metal, cut, obstacle & other.
* ./coriolis/src/crlcore :
- Switched to the generic layer model. Updated technology XML configuration
files, technology parser & AP parser/driver.
- Note that the representation of transistors visually changes as it's now
modelled with Implant + Active.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- CompositeLayer replaced by 5 kind of symbolic layers :
RegularLayer (1 BasicLayer)
DiffusionLayer (2 or 3 BasicLayers: active+implant,well)
TransistorLayer (3 or 4 BasicLayers: poly+active+implant,well)
ContactLayer (4 or 5 BasicLayers: metal+cut+active+implant,well)
ViaLayer (3 BasicLayers: metal0+cut0+metal1)
- To better follow the OpenAccess semantic, the "obstacle" Material type
is renommed to "blockage".
- NB: doxygen documentation is not up-to-date and issue warnings.
* ./coriolis/src/crlcore :
- Migrate from CompositeLayer to the various SymbolicLayers.
- Symbolic rules are now closer to the reality so that a Cell displayed
with Hurricane should look identical to the Graal one.
- Complete rewrite of the AP parser. Much simplificated, do not try to
merge/articulates segments. This ensure a true rendering of the
Cell. Especially do not create contact to anchor diffusion segments,
which leads to very strange randering (DRC error as well).
_____________________________________________________________________________
* ./hurricane :
- Unit evolution to allow Symbolic (lamda) and Real (grid founder) mixing.
All functions related to Unit translations are now grouped under
the "DbU" class (another tribute to OpenAccess). "DbU" contains
only static attributes (constants) and methods. Unit itself becomes
a typedef inside this class, hence the file renaming from Unit.{h,cpp}
to DbU.{h.cpp}. Have to replace all instances of "Unit" by "DbU::Unit".
- Doc will be updated shortly.
_____________________________________________________________________________
* ./coriolis/src/crlcore :
- New AP parser : simplificated, no longer try to re-articulates segments.
More accurate representation of standart cell innards.
- More accurate symbolic extentions rules.
- Propagated changes from Hurricane about Unit/DbU.
_____________________________________________________________________________
* ./hurricane/src :
- Rename "pyext" to "isobar".
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Documentation of DbU, replacing documentation of Unit.
* ./hurricane/src/hurricane/hurricane/DBo.h :
- Property set is now a mutable member, allowing const DBo to changes
their properties. Strange side effect on SlotAdapter in which we
need to declare two separate templates, one for const type and
another for non-const type.
- _getTypeName() defined to prevents noisy error message when a
derived class (from DBo) do not want to implement support for
the inspector.
_____________________________________________________________________________
Derrick Release !!
* ./hurricane/src
- Simplification of the Inspector internal mechanism. Simple, but with
more templates, means a slower compilation.
- The DbU::Unit problem : DbU::Unit are only typedef over long type,
so we cannot create a specific overload for them. Uses "getValueRecord()"
instead of "getRecord()"
- For HInspectorWidget add a "getClone()" method. Also add a global
object counter (for Record too) to track down memory leaks.
- Big rewrite of the HInspectorWidget : now do not leak memory like hell,
and only kept allocated the current Record and not the full stack
of them (instead, we stack Slots which are ligthweigh objects).
- Rename of "real" unit to "grid" unit.
- New conversion function "getPhysicalsPerGrid()" and associated
mechanism.
* ./coriolis/src/crlcore :
- Synchronise with the Hurricane modifications.
_____________________________________________________________________________
* ./hurricane/src/hurricane/DbU.{h,cpp} :
- Add forgotten converter function physicalToGrid(), physical units to
founder grid units.
* ./hurricane/src/hinspector :
- Added history support, and ability to move through the history stack.
- Fork support : by typing 'O' (capitalized 'o' letter) you can open
a new inspector on the current record.
_____________________________________________________________________________
* ./hurricane/src/hinspector :cla
- No more extra arguments in HInspectorWidget & RecordModel constructors.
Valid values have to be sets through setRootRecord() & setSlot().
- Key for forking sub-inspector is now *minus* 'o'.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug: very tricky one. Do not emit "layoutAboutToChange()" signal
after destroying the Record used by the RecordModel but before
setting a new one and not setting the _record field to NULL.
Now setRootRecord() should work more than once.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- API : in CellWidget & CellViewer constructors now only takes the
parent QWidget.
- Renaming coordinates translation functions for more clarity.
- Adding a StatusBar showing mouse coordinates.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Grid & Spot support (adjusted display threshold).
- Added new copyToScreen() functions for _drawingBuffer to screen refreshment
or partial copy (useful for Spot).
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New Widget policy : a widget do not generate other widget : applied to
CellWidget which no longer supplies Palette & StatusBar.
API note: to associate a HPalette to a CellWidget (that is be able
to select layer) you have to call "bindToPalette()" on the CellWidget.
- Hurricane reusable widget names prefixed by 'H' : HMousePosition and
HPalette.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : support for highlighted selection with decent refresh time.
To active selection mode, use the 's' key or the "View" menu.
- New feature : HNetlist to browse a Cell's Netlist. HNetlist can be used
with any NetInformations derived class, allowing the user to enrich
the HNetlist displayed fields. For an example, have a look at
SimpleNetlistWidget.
- Added proper licence header to all file.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New feature : geometrical Query with callback fonctions "a la" OpenAccess.
* ./hurricane/src/hviewer :
- Uses Query to draw display.
- Bug : when drawing segments as lines (width inferior to 1 pixel)
uses an alternate Pen which is one pixel wide and SolidLine styled,
avoiding strange orange lines... Mechanism implemented in sub-class
DrawingPlanes.
- Make selection always visible regardless the zoom level.
- CellWidget names it's most importants childs QWidget (mostly menus)
for later retrieval in customized sub-classes.
* ./coriolis/src/crlcore/src/cyclop :
- Created a simple derived class from CellViewer. Example of customisation
of CellWidget.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : now CellViewer can start with a NULL Cell, note that in this
case all displacement/zooming function of CellWidget became uneffective.
(display only a black screen)
- New widget : HGraphics to select the layout graphic's theme.
- New widget : HDisplayFilter to select displayed hierarchical levels.
- Distinguish between Close (one viewer) & Exit (all viewers).
- Small enhancments of DisplayStyle (Description & darkening).
* ./coriolis/src/crlcore/src/ccore :
- Xml display parser takes account of DisplayStyle description & darkening.
* ./coriolis/src/crlcore/src/cyclop :
- Enhanced COpenCellDialog : ability to open in a new Viewer.
- Bug : now Cyclop can start on a NULL Cell.
- Half Bug : when a Cell is loaded at start, call show() *before* setCell()
so all internal widget resizing due to the insertion of the toolbar,
menbar palette ... takes places before the Cell fit. Now the loaded
cell appears correctly fitted.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : Command support. Move command is now implemenented as a
Command and no longer built into the CellWidget. ZoomCommand implemented.
- New feature : SelectCommand support along with new HSelection widget to
browse the current selection. Selection is automatically kept up to
date.
- Note : Selection Browser & Netlist Browser pointer in the CellViewer are
resets to NULL on widget destruction by closing. We do not want to keep
big widget hiden. The are allocateds on demand.
- New feature : progessive grid. First display 5x5 then 5x5 + 1x1.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : default argument to setWeight() sould be QFont::Normal and not "-1".
Shows in Qt debug mode (catched by an assert).
- Bug : SelectCommand now keep the Selection check button in sync.
- Change : Palette doesn't show at start.
* ./hurricane :
- Now choice between static and dynamic linking. Note that thoses options are
mutually exclusives.
* ./coriolis/src/crlcore :
- New choice between static and dynamic linking.
- New feature : XmlParser optional warning when file not found (default is
to warn).
- New feature : now read environment from user's optional configuration file :
~/.environment.alliance.xml
- Potential bug : when loading/parsing file, the XmlReader hangs if the opened
file is a directory, and QFile allows directory opening :-(
_____________________________________________________________________________
* ./hurricane/src/viewer :
- New features : advanced selection widget/commands. Communications between
CellWidget, HSelectionPopup, HSelection & SelectCommand mostly done
through signal/slots (better undersdanding of the possibilities).
- Change : debug menu is hidden by default.
- Change : in all the QTableView rows are now correctly resized, even when
filtering is active (new forceRowHeight() slot). I'm pretty sure there's
a better way to handle this, but I haven't found it for now.
- Change : small naming normalisation in all those TableView.
_____________________________________________________________________________
* ./hurricane/src/viewer :
- New feature : display instances names (vertical on bottom left corner
of the AB). New CellWidget capability : drawText(). Small modification
of styles & display.xml to distinguish between different kind of texts.
(instances name, master cell names, ...).
- New feature : do not create color, pen & brush at start in Graphics/
DisplayStyles. Now for the graphics to be used it must be enabled with
a call to "Graphics::enable()" *AFTER* allocating the QApplication.
* ./coriolis/src/crlcore/src/cyclop :
- New argument "--text" to check pure text mode.
_____________________________________________________________________________
* ./hurricane/src/hurricane/Name.h
./hurricane/src/hurricane/Name.cpp :
- New feature : Allocate a static member "_emptyName" which could be used
to manage effeciently empty Name (for functions returning reference on
Name, by example).
* ./hurricane/src/hurricane/Property.h
./hurricane/src/hurricane/Property.cpp :
- Change : Now StandardPrivateProperty & StandardSharedProperty templates
systematically uses static member for the property's name. This leads
to suppress the "const Name&" argument when creating a property, and
the _name member is no longer present in each object instance.
- Change : Property must now be created/get through static methods :
StandardPrivateProperty<Value>::get ( DBo* );
StandardPrivateProperty<Value>::create ( DBo* );
StandardPrivateProperty<Value>::create ( DBo*, const Value& );
Note that, as before, the Value type must provide a default constructor
and a copy constructor.
* ./hurricane/src/hviewer/DisplayStyle.cpp :
Bug : early Graphics::enable() no longer makes application crash.
* ./coriolis/src/crlcore/properties :
- Complete redesign of properties managment. Individual properties relateds
to the same concept and DBo* are now grouped together into an
"ExtensionDatas" which is nested into a specific "Extension" Property.
The various datas can be accessed through static methods of the Extention
object. Two Extension have been created :
a. LefDefExtensionDatas / LefDefExtension (on Cell*) : holds convert
factors & Ioc orders (if any).
b. NetExtensionDatas/NetExtension (on Net*) : holds various Port names,
currently only one Name at the same time is managed.
* ./coriolis/src/crlcore/lefdef :
- Change : re-enable and big cleanup of the LEF/DEF parsers drivers. Currently
only the DEF parser is enabled.
* ./coriolis/src/crlcore/src/AllianceFramework.cpp :
- New : Ability to pre-load all cells from a library.
* ./coriolis/src/crlcore/src/cyclop :
- New : Ability to choose the input format "on the fly".
_____________________________________________________________________________
* ./hurricane/src/hurricane/ExtensionSlice.h
./hurricane/src/hurricane/ExtensionSlice.cpp
./hurricane/src/hurricane/ExtensionGo.h
./hurricane/src/hurricane/ExtensionGo.cpp :
- New : support for user-based Gos & Slices. A normal slice is a couple
(Layer,QuadTree) while a ExtensionSlice is a couple (Name,Quadtree).
Note that for efficiency ExtensionSlices also uses a mask bitmap.
This new feature implies modifications of the Cell QuadTrees and
the Query callback/class. CellWidget & Palette also updated to allow
the drawing of thoses new slices.
* ./coriolis/src/crlcore/src/cyclop/DemoGo.{h,cpp} :
- Example : how to construct & uses an ExtensionGo (draw a thick red
box around the Cell's abutment box).
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New : Mask object to manage masks.
- New : BasicLayer ordering & connectivity is managed.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New : DebugSession for a selective trace activation, based on "symbols",
that is, void pointers to objects.
- New : ExtensionGos are now selectables (integrated to the
Cell_OccurrencesUnder collection). Note that they are manageds as Gos
and *not* ExtensionGos.
- New : Bug flavor of Exception (sibling of Error & Warning).
* ./hurricane/src/hviewer :
- Change : ExtensionGos are now hidden by default.
* ./coriolis/src/crlcore :
- Technology directly avalaible in RoutingGauge.
- _viaLayers table in RoutingGauge to manage METAL/METAL connexity.
Can contains NULL in case of non-contiguous metals.
- Contants are moved into a Constant top-level namespace named
"Constant"...
- RoutingLayerGauge no longer checks for BasicLayer (could be
RegularLayer).
* ./coriolis/src/nimbus :
- Uses Constant namespace.
* ./coriolis/src/knik :
- Edges are now drawed as true colored edges between two vertexes,
and not as sides of the GCell.
* ./coriolis/src/katabatic :
- Initial portage from Coriolis 1. AutoContacts resizing is still to be
activated.
* ./coriolis/src/unicorn :
- Bug : bad libraries depndencies in CMakeList.txt.
- Added Katabatic tool.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- Bug : double deletion of ExtensionSlice, one in Cell and one in
ExtensionGo::unmaterialize() when the last ExtensionGo is removed.
Keep the one in unmaterialize.
- Bug : missing "_preDestroy()" in ExtensionGo (not really a bug but may
be useful in the future).
- Modification : begin to uses "ltrace(level)" instead of "trace()".
Levels affecteds to Hurricane are 0-10 (the lowest).
* ./coriolis/src/katabatic :
- New : create a Configuration object to group all that's related to
configuration (RoutingGauge ...).
- Finished porting :
a. - AutoContact resizing.
b. - Structure stripping to get back to Hurricane.
- Todo : AutoContact removal from the GCell lists whenever destructed.
In combination with "engineDelete" to speedup the destruction
process. Not a priority as we never destruct AutoContacts for now.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- Bug : memory leak in Query.h. When we do try a levelDown() remove the
Instance locator that have been created (and is not valid).
- To trace the numbers of Instances Locator add a counter inside the
QuadTree. The code is commented but could be useful in case of
another memory leak...
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : first try at a more ergonomic interface. The "Controller",
a simple Tabbed window for managing all settings.
Reorganize the way things are selected (Nets, Area, single), aglomerated
selection.
Use a "logical" progression Netlist -> Selection -> Inspector.
- In CellWiddget, new Selection managment mecanism to ensure persistent
Selection across cell modifications.
New signals/slots to manage Cell modification :
a. - cellPreModificated() : must be launched *before* the Cell modification
by the tool about to modify it.
b. - cellPostModificated() : must be lauched *after* the Cell modification
This mecanism may be amended to automatically fit with the UpdateSessions.
- Cleanup (part 1) : more consistent name for widgets, replace the 'H' prefix by
a "Widget" suffix. Objects are modified by not filenames yet (due to svn not
liking file renaming and modications at the same time).
- Improved support for static building in CMakeList.txt.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : InspectorWidget was using Record from Occurrences in the SelectionWidget.
but those Occurences were created on the fly by the CellWidget/Selectors.
So, whenever the selection changes the Occurrence may diseapear leaving a
bad Record in the InspectorWidget (core dump).
Now, the TabInspector keep a copy of the Inspected occurrence, so it
can go through any selection change.
In addition, the InspectorWidget could be passed Occurrence that it keeps
local copy along with Record*.
- New Feature : internal, first step toward an extensible ControllerWidget :
now all Tab are derived classes of ControllerTab.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : full uses of SelectionModel in NetlistWidget, allow multiple
selection. New option to automatically select Nets from the Netlist
browser into the SelectionWidget (temporarily set up in cumulative
mode).
- Rename : SelectorCommand into SelectorCriterion (file name renaming in
next commit).
- Reorganisazion : in CellWidget, SelectorCommand/SelectorCriterions operations
are gathered in a single object : SelectionCriterions.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Rename : SelectorCommand into SelectorCriterion (file part).
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug: Bad detection of libraries in HURRICANE_CHECK_LIBRARY macro.
- New feature : add a "selectable" characteric on drawable objects. Allows
to selectively select objects through dragging. Note that it's implemented
in term of BasicLayer & ExtensionGo. If an object (Component) has a Layer
composed of more than one BasicLayer it will become selectable as soon as
one of it's BasicLayer is selectable.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New feature : remove Hurricane's original basic Timer and replace it with
the one from Coriolis/crlcore. Added ability to get the elapsed time
without stopping the timer.
* ./hurricane/src/hviewer :
- New feature : complete redesign of the drawing refreshment loop. Now there's
a "secondary" loop managed by the "RedrawManager" object which bufferize
the redraw requests. The "_redraw()" function has been made interruptible
at coarse level (between layer).
Important note about the redrawing design : the QApplication::processEvents()
function cannot be called inside the paintEvent() functions/sub-functions.
So the drawing is separated from the paintEvent. The paintEvent() performs
only quick pixmap buffer copy. The _redraw() is triggered by the move/refresh
events bufferized by the RedrawManager, flush periodically the loop event
and send direct (not posted) paint events (repaint() call).
Another constraint is that the displayed Widget can only be painted during
the paintEvent(). Otherwise the painter refuses to initialize.
- Ergonomy : adopt more standard key/mouse bindings. No more CTRL key for zooming
(too small zooms are rejecteds, thresold at 10x10 pixels). Continuous move
is enabled with SPACE+mouse.
* ./coriolis/src/unicorn :
- Reorganisation : Unicorn is now supplied as a separate library. Due to a limitation
of cmake the binary can no longer be named "unicorn" as it conflicts with the
library name. So it's been renamed into unimain (better candidates?)
_____________________________________________________________________________
* Merry Christmas & Fuck Numericable.
* ./hurricane/src/hurricane :
- New feature: Display support for Rubber, three modes of representation : centric,
barycentric and (pseudo) steiner.
- New feature: ability to generate pdf/ps snapshot using QPrinter. Can perform
an exact snapshot or print a synthetic A4 (choice hard-wired for now).
- Change: display styles reorganisation, recreation of the "Alliance Graal" look.
- New feature: darkening managment at CellWidget level, to allow Extension to
darken when unselecteds.
- New feature: ExtentionGo are now managed by the selection redraw function.
- New feature: Selector set is now sorted by object type, this allow to speedup
the redraw function which will now perform only one loop.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- Bug : Timer.h/.cpp, friend overload of the operator<<(ostream&) introduce
a ostream<<() function in the Hurricane namespace which prevent the
overload to resolve correctly under MacOS X (gcc 4.0).
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New feature: support for breakpoints with a selectable stop level.
See Breakpoint.h. Graphical popup automatically when Graphics is
enabled.
User can select what to do when a breakpoint is reached and valid
through a callback mechanism.
A disabled example is avalaible in GraphicKatabaticEngine.cpp.
- Ergonomy : reverse the zooming direction of the mouse weel (some said
it's like in MS Word...).
- Bug: accept zoom when bottom right is below lower left (absolute value).
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug: redraw the palette layer samples whenever the style changes. Uses a
new, more clear model to transmit signals. A star model where the
CellWidget is the center, signals propagate a void pointer which tells
the emitter to avoid looping. First a slave emit the signal to the
CellWidget. When the CellWidget receive the signal it's transmitted to
all slave widgets.
- New feature: ExceptionWidget (derived from QDialog) to display properly
catched exceptions. The Abort button of the Dialog forces the program
to core-dump with a SIGSEGV. The "Try to Continue" resumes the program,
which is higtly to crash anyway...
- New feature: a HApplication in replacement of the QApplication to catch
exceptions in the notify() function, that is exceptions that could be
throwed inside event handlers.
* ./coriolis/src/unicorn :
- New feature: making uses of HApplication.
_____________________________________________________________________________
* ./coriolis/src/crlcore :
- New feature: users can select it's preferred display style through the
environment.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Change: BreakpointWidget is no longer modal, need to replace the ::exec()
by a custom made one.
_____________________________________________________________________________
* ./coriolis/src/katabatic :
- Supress the last remnants of Nimbus (used to build the GCell grid),
now read the grid cut lines from Katabatic.
* ./coriolis/src/unicorn :
- No more linking with Nimbus library.
_____________________________________________________________________________
* ./coriolis/src/katabatic :
- Bug: correctly build the GCell grid from Knik.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Change: make ExceptionWidget & BreakpointWidget non-resizables.
- Bug: redraw the palette layer samples whenever the style changes. Uses a
new, more clear model to transmit signals. A star model where the
CellWidget is the center, signals propagate a void pointer which tells
the emitter to avoid looping. First a slave emit the signal to the
CellWidget. When the CellWidget receive the signal it's transmitted to
all slave widgets.
- New feature: ExceptionWidget (derived from QDialog) to display properly
catched exceptions. The Abort button of the Dialog forces the program
to core-dump with a SIGSEGV. The "Try to Continue" resumes the program,
which is higtly to crash anyway...
- New feature: a HApplication in replacement of the QApplication to catch
exceptions in the notify() function, that is exceptions that could be
throwed inside event handlers.
- New feature: support for breakpoints with a selectable stop level.
See Breakpoint.h. Graphical popup automatically when Graphics is
enabled.
User can select what to do when a breakpoint is reached and valid
through a callback mechanism.
A disabled example is avalaible in GraphicKatabaticEngine.cpp.
- Ergonomy : reverse the zooming direction of the mouse weel (some said
it's like in MS Word...).
- Bug: accept zoom when bottom right is below lower left (absolute value).
The dbuToDisplayRect function now has a boolean argument which is true by default and define the way the rectangle is passed to display.
If true, it's like we pass 2 corners to define the rectangle
If false, it's like we pass the bottom left corner, width and height (directly QT compliant)
- Bug : Timer.h/.cpp, friend overload of the operator<<(ostream&) introduce
a ostream<<() function in the Hurricane namespace which prevent the
overload to resolve correctly under MacOS X (gcc 4.0).
* ./hurricane/src/hurricane :
- New feature: Display support for Rubber, three modes of representation : centric,
barycentric and (pseudo) steiner.
- New feature: ability to generate pdf/ps snapshot using QPrinter. Can perform
an exact snapshot or print a synthetic A4 (choice hard-wired for now).
- Change: display styles reorganisation, recreation of the "Alliance Graal" look.
- New feature: darkening managment at CellWidget level, to allow Extension to
darken when unselecteds.
- New feature: ExtentionGo are now managed by the selection redraw function.
- New feature: Selector set is now sorted by object type, this allow to speedup
the redraw function which will now perform only one loop.
- New feature : remove Hurricane's original basic Timer and replace it with
the one from Coriolis/crlcore. Added ability to get the elapsed time
without stopping the timer.
* ./hurricane/src/hviewer :
- New feature : complete redesign of the drawing refreshment loop. Now there's
a "secondary" loop managed by the "RedrawManager" object which bufferize
the redraw requests. The "_redraw()" function has been made interruptible
at coarse level (between layer).
Important note about the redrawing design : the QApplication::processEvents()
function cannot be called inside the paintEvent() functions/sub-functions.
So the drawing is separated from the paintEvent. The paintEvent() performs
only quick pixmap buffer copy. The _redraw() is triggered by the move/refresh
events bufferized by the RedrawManager, flush periodically the loop event
and send direct (not posted) paint events (repaint() call).
Another constraint is that the displayed Widget can only be painted during
the paintEvent(). Otherwise the painter refuses to initialize.
- Ergonomy : adopt more standard key/mouse bindings. No more CTRL key for zooming
(too small zooms are rejecteds, thresold at 10x10 pixels). Continuous move
is enabled with SPACE+mouse.
* ./coriolis/src/unicorn :
- Reorganisation : Unicorn is now supplied as a separate library. Due to a limitation
of cmake the binary can no longer be named "unicorn" as it conflicts with the
library name. So it's been renamed into unimain (better candidates?)
- Bug: Bad detection of libraries in HURRICANE_CHECK_LIBRARY macro.
- New feature : add a "selectable" characteric on drawable objects. Allows
to selectively select objects through dragging. Note that it's implemented
in term of BasicLayer & ExtensionGo. If an object (Component) has a Layer
composed of more than one BasicLayer it will become selectable as soon as
one of it's BasicLayer is selectable.
Bug : make the Netlist Browser filter to work again. Have to ignore
the keyPressEvent in NetlistWidget (a bit counter-intuitive:
ignore event in NetlistWidget to have them accounteds in the
SortFilter children widget).
- New feature : full uses of SelectionModel in NetlistWidget, allow multiple
selection. New option to automatically select Nets from the Netlist
browser into the SelectionWidget (temporarily set up in cumulative
mode).
- Rename : SelectorCommand into SelectorCriterion (file name renaming in
next commit).
- Reorganisazion : in CellWidget, SelectorCommand/SelectorCriterions operations
are gathered in a single object : SelectionCriterions.
- Bug : InspectorWidget was using Record from Occurrences in the SelectionWidget.
but those Occurences were created on the fly by the CellWidget/Selectors.
So, whenever the selection changes the Occurrence may diseapear leaving a
bad Record in the InspectorWidget (core dump).
Now, the TabInspector keep a copy of the Inspected occurrence, so it
can go through any selection change.
In addition, the InspectorWidget could be passed Occurrence that it keeps
local copy along with Record*.
- New Feature : internal, first step toward an extensible ControllerWidget :
now all Tab are derived classes of ControllerTab.
- New feature : first try at a more ergonomic interface. The "Controller",
a simple Tabbed window for managing all settings.
Reorganize the way things are selected (Nets, Area, single), aglomerated
selection.
Use a "logical" progression Netlist -> Selection -> Inspector.
- In CellWiddget, new Selection managment mecanism to ensure persistent
Selection across cell modifications.
New signals/slots to manage Cell modification :
a. - cellPreModificated() : must be launched *before* the Cell modification
by the tool about to modify it.
b. - cellPostModificated() : must be lauched *after* the Cell modification
This mecanism may be amended to automatically fit with the UpdateSessions.
- Cleanup (part 1) : more consistent name for widgets, replace the 'H' prefix by
a "Widget" suffix. Objects are modified by not filenames yet (due to svn not
liking file renaming and modications at the same time).
- Improved support for static building in CMakeList.txt.
deprecated conversion from string constant to char*
still one occurrence of this warning, but I don't know how to treat
it between C++ and Python C API.
- Bug : memory leak in Query.h. When we do try a levelDown() remove the
Instance locator that have been created (and is not valid).
- To trace the numbers of Instances Locator add a counter inside the
QuadTree. The code is commented but could be useful in case of
another memory leak...
- Bug : double deletion of ExtensionSlice, one in Cell and one in
ExtensionGo::unmaterialize() when the last ExtensionGo is removed.
Keep the one in unmaterialize.
- Bug : missing "_preDestroy()" in ExtensionGo (not really a bug but may
be useful in the future).
- Modification : begin to uses "ltrace(level)" instead of "trace()".
Levels affecteds to Hurricane are 0-10 (the lowest).
- New : DebugSession for a selective trace activation, based on "symbols",
that is, void pointers to objects.
- New : ExtensionGos are now selectables (integrated to the
Cell_OccurrencesUnder collection). Note that they are manageds as Gos
and *not* ExtensionGos.
- New : Bug flavor of Exception (sibling of Error & Warning).
* ./hurricane/src/hviewer :
- Change : ExtensionGos are now hidden by default.
./hurricane/src/hurricane/ExtensionSlice.cpp
./hurricane/src/hurricane/ExtensionGo.h
./hurricane/src/hurricane/ExtensionGo.cpp :
- New : support for user-based Gos & Slices. A normal slice is a couple
(Layer,QuadTree) while a ExtensionSlice is a couple (Name,Quadtree).
Note that for efficiency ExtensionSlices also uses a mask bitmap.
This new feature implies modifications of the Cell QuadTrees and
the Query callback/class. CellWidget & Palette also updated to allow
the drawing of thoses new slices.
* ./coriolis/src/crlcore/src/cyclop/DemoGo.{h,cpp} :
- Example : how to construct & uses an ExtensionGo (draw a thick red
box around the Cell's abutment box).
./hurricane/src/hurricane/Name.cpp :
- New feature : Allocate a static member "_emptyName" which could be used
to manage effeciently empty Name (for functions returning reference on
Name, by example).
* ./hurricane/src/hurricane/Property.h
./hurricane/src/hurricane/Property.cpp :
- Change : Now StandardPrivateProperty & StandardSharedProperty templates
systematically uses static member for the property's name. This leads
to suppress the "const Name&" argument when creating a property, and
the _name member is no longer present in each object instance.
- Change : Property must now be created/get through static methods :
StandardPrivateProperty<Value>::get ( DBo* );
StandardPrivateProperty<Value>::create ( DBo* );
StandardPrivateProperty<Value>::create ( DBo*, const Value& );
Note that, as before, the Value type must provide a default constructor
and a copy constructor.
* ./hurricane/src/hviewer/DisplayStyle.cpp :
Bug : early Graphics::enable() no longer makes application crash.
Do not iterate over a STL set while erasing (all) elements...
The set is stable over erasure, but if the iterator is pointing
to the erased element we cannot do a "++". Increment first, erase
after.
- New feature : display instances names (vertical on bottom left corner
of the AB). New CellWidget capability : drawText(). Small modification
of styles & display.xml to distinguish between different kind of texts.
(instances name, master cell names, ...).
- New feature : do not create color, pen & brush at start in Graphics/
DisplayStyles. Now for the graphics to be used it must be enabled with
a call to "Graphics::enable()" *AFTER* allocating the QApplication.
* ./coriolis/src/crlcore/src/cyclop :
- New argument "--text" to check pure text mode.
./coriolis/src/crlcore/src/ccore/crlcore/Banner.h
- Moved "CBanner" to "Banner", cleaned up, relooked, renamed functions, reorganised.
* ./coriolis/src/crlcore/src/ccore/ToolEngine.cpp
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngine.h
./coriolis/src/crlcore/src/ccore/crlcore/ToolEngines.h
- Renamed CEngine to ToolEngine, cleaned up, relooked. All fonctions as static
members.
* ./coriolis/src/crlcore/src/ccore/Memory.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Memory.h
- Renamed CMemory to Memory (as for Timer), minimal cleanup.
* ./coriolis/src/crlcore/src/ccore/crlcore/*.h
- Change anti-double inclusion constants from __XX_H__ to __CRL_XX_H__
(that is: include namespace) to avoid potential constant clashes with
other pieces of software.
* ./coriolis/src/crlcore/src/ccore/Utilities.cpp
./coriolis/src/crlcore/src/ccore/crlcore/Utilities.h
- Finish porting of all features from CUtils. Simplificated mstream using
member templates. Speedup mstream by using static_cast instead of
dynamic_cast.
* ./coriolis/src/crlcore/src/ccore/Environment.cpp
- Now read CORIOLIS_TOP from UNIX environment instead of hard-coded
directory (to my personnal installation...). See new method
"loadFromShell()", needs to be extended to all other variables.
_____________________________________________________________________________
* ./hurricane/src/hurricane/BasicLayer.{h,cpp}
- Suppress all graphics related members from Layer.
- Adding realName member for symbolic to real transformation.
* ./hurricane/src/hviewer/CellWidget.cpp
Bug: Now uses display threshold from Graphics (DisplayStyle) instead
of layer. Now layers appears/diseapears while zooming/unzooming.
* ./coriolis/src/crlcore :
- Separating clearly symbolic technology form real technology.
- Various file renaming.
_____________________________________________________________________________
* ./hurricane/src :
- Complete include re-organisation.
include/hurricane/*.h : kernel.
include/hurricane/viewer/*.h : hviewer.
include/hurricane/inspector/*.h : hinspector.
Includes have been moved into subdirectories of .cpp files (as in
crlcore).
- Now you must include files like this :
#include <hurricane/Layer.h>
#include <hurricane/viewer/CellViewer.h>
#include <hurricane/inspector/HInspector.h>
- Suppressed viewer specific include path in FindHURRICANE.cmake.
- Re-enabled documentation, with dot disabled as it seems to slow down
doxygen.
* ./crlcore/src/crlcore :
- Adapted to new Hurricane include scheme. Corrected bugs in it's own
include files (noticeably "Utilities.h").
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Added (empty) directories "html" & "latex". Those directories are
created by doxygen, but as they are used in the CMakeList.txt, they
must be present even before the fisrt run of cmake (otherwise cmake
choke on them).
- Doxygen sets to only generate html & pdf (through LaTeX) documentation.
- All ".dox" files corrected to suit the new function members naming
scheme (some work may remains in code examples).
_____________________________________________________________________________
* ./hurricane/doc/hurricane/src/hurricane/Layer.{h.cpp}
./hurricane/doc/hurricane/src/hurricane/BasicLayer.{h.cpp}
- Changed "Type" to "Material" to fit better the OpenAccess semantic.
Introduce Material meanings : pWell, nWell, pImplant, nImplant
active, metal, cut, obstacle & other.
* ./coriolis/src/crlcore :
- Switched to the generic layer model. Updated technology XML configuration
files, technology parser & AP parser/driver.
- Note that the representation of transistors visually changes as it's now
modelled with Implant + Active.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- CompositeLayer replaced by 5 kind of symbolic layers :
RegularLayer (1 BasicLayer)
DiffusionLayer (2 or 3 BasicLayers: active+implant,well)
TransistorLayer (3 or 4 BasicLayers: poly+active+implant,well)
ContactLayer (4 or 5 BasicLayers: metal+cut+active+implant,well)
ViaLayer (3 BasicLayers: metal0+cut0+metal1)
- To better follow the OpenAccess semantic, the "obstacle" Material type
is renommed to "blockage".
- NB: doxygen documentation is not up-to-date and issue warnings.
* ./coriolis/src/crlcore :
- Migrate from CompositeLayer to the various SymbolicLayers.
- Symbolic rules are now closer to the reality so that a Cell displayed
with Hurricane should look identical to the Graal one.
- Complete rewrite of the AP parser. Much simplificated, do not try to
merge/articulates segments. This ensure a true rendering of the
Cell. Especially do not create contact to anchor diffusion segments,
which leads to very strange randering (DRC error as well).
_____________________________________________________________________________
* ./hurricane :
- Unit evolution to allow Symbolic (lamda) and Real (grid founder) mixing.
All functions related to Unit translations are now grouped under
the "DbU" class (another tribute to OpenAccess). "DbU" contains
only static attributes (constants) and methods. Unit itself becomes
a typedef inside this class, hence the file renaming from Unit.{h,cpp}
to DbU.{h.cpp}. Have to replace all instances of "Unit" by "DbU::Unit".
- Doc will be updated shortly.
_____________________________________________________________________________
* ./coriolis/src/crlcore :
- New AP parser : simplificated, no longer try to re-articulates segments.
More accurate representation of standart cell innards.
- More accurate symbolic extentions rules.
- Propagated changes from Hurricane about Unit/DbU.
_____________________________________________________________________________
* ./hurricane/src :
- Rename "pyext" to "isobar".
_____________________________________________________________________________
* ./hurricane/doc/hurricane :
- Documentation of DbU, replacing documentation of Unit.
* ./hurricane/src/hurricane/hurricane/DBo.h :
- Property set is now a mutable member, allowing const DBo to changes
their properties. Strange side effect on SlotAdapter in which we
need to declare two separate templates, one for const type and
another for non-const type.
- _getTypeName() defined to prevents noisy error message when a
derived class (from DBo) do not want to implement support for
the inspector.
_____________________________________________________________________________
Derrick Release !!
* ./hurricane/src
- Simplification of the Inspector internal mechanism. Simple, but with
more templates, means a slower compilation.
- The DbU::Unit problem : DbU::Unit are only typedef over long type,
so we cannot create a specific overload for them. Uses "getValueRecord()"
instead of "getRecord()"
- For HInspectorWidget add a "getClone()" method. Also add a global
object counter (for Record too) to track down memory leaks.
- Big rewrite of the HInspectorWidget : now do not leak memory like hell,
and only kept allocated the current Record and not the full stack
of them (instead, we stack Slots which are ligthweigh objects).
- Rename of "real" unit to "grid" unit.
- New conversion function "getPhysicalsPerGrid()" and associated
mechanism.
* ./coriolis/src/crlcore :
- Synchronise with the Hurricane modifications.
_____________________________________________________________________________
* ./hurricane/src/hurricane/DbU.{h,cpp} :
- Add forgotten converter function physicalToGrid(), physical units to
founder grid units.
* ./hurricane/src/hinspector :
- Added history support, and ability to move through the history stack.
- Fork support : by typing 'O' (capitalized 'o' letter) you can open
a new inspector on the current record.
_____________________________________________________________________________
* ./hurricane/src/hinspector :cla
- No more extra arguments in HInspectorWidget & RecordModel constructors.
Valid values have to be sets through setRootRecord() & setSlot().
- Key for forking sub-inspector is now *minus* 'o'.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug: very tricky one. Do not emit "layoutAboutToChange()" signal
after destroying the Record used by the RecordModel but before
setting a new one and not setting the _record field to NULL.
Now setRootRecord() should work more than once.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- API : in CellWidget & CellViewer constructors now only takes the
parent QWidget.
- Renaming coordinates translation functions for more clarity.
- Adding a StatusBar showing mouse coordinates.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Grid & Spot support (adjusted display threshold).
- Added new copyToScreen() functions for _drawingBuffer to screen refreshment
or partial copy (useful for Spot).
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New Widget policy : a widget do not generate other widget : applied to
CellWidget which no longer supplies Palette & StatusBar.
API note: to associate a HPalette to a CellWidget (that is be able
to select layer) you have to call "bindToPalette()" on the CellWidget.
- Hurricane reusable widget names prefixed by 'H' : HMousePosition and
HPalette.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : support for highlighted selection with decent refresh time.
To active selection mode, use the 's' key or the "View" menu.
- New feature : HNetlist to browse a Cell's Netlist. HNetlist can be used
with any NetInformations derived class, allowing the user to enrich
the HNetlist displayed fields. For an example, have a look at
SimpleNetlistWidget.
- Added proper licence header to all file.
_____________________________________________________________________________
* ./hurricane/src/hurricane :
- New feature : geometrical Query with callback fonctions "a la" OpenAccess.
* ./hurricane/src/hviewer :
- Uses Query to draw display.
- Bug : when drawing segments as lines (width inferior to 1 pixel)
uses an alternate Pen which is one pixel wide and SolidLine styled,
avoiding strange orange lines... Mechanism implemented in sub-class
DrawingPlanes.
- Make selection always visible regardless the zoom level.
- CellWidget names it's most importants childs QWidget (mostly menus)
for later retrieval in customized sub-classes.
* ./coriolis/src/crlcore/src/cyclop :
- Created a simple derived class from CellViewer. Example of customisation
of CellWidget.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : now CellViewer can start with a NULL Cell, note that in this
case all displacement/zooming function of CellWidget became uneffective.
(display only a black screen)
- New widget : HGraphics to select the layout graphic's theme.
- New widget : HDisplayFilter to select displayed hierarchical levels.
- Distinguish between Close (one viewer) & Exit (all viewers).
- Small enhancments of DisplayStyle (Description & darkening).
* ./coriolis/src/crlcore/src/ccore :
- Xml display parser takes account of DisplayStyle description & darkening.
* ./coriolis/src/crlcore/src/cyclop :
- Enhanced COpenCellDialog : ability to open in a new Viewer.
- Bug : now Cyclop can start on a NULL Cell.
- Half Bug : when a Cell is loaded at start, call show() *before* setCell()
so all internal widget resizing due to the insertion of the toolbar,
menbar palette ... takes places before the Cell fit. Now the loaded
cell appears correctly fitted.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- New feature : Command support. Move command is now implemenented as a
Command and no longer built into the CellWidget. ZoomCommand implemented.
- New feature : SelectCommand support along with new HSelection widget to
browse the current selection. Selection is automatically kept up to
date.
- Note : Selection Browser & Netlist Browser pointer in the CellViewer are
resets to NULL on widget destruction by closing. We do not want to keep
big widget hiden. The are allocateds on demand.
- New feature : progessive grid. First display 5x5 then 5x5 + 1x1.
_____________________________________________________________________________
* ./hurricane/src/hviewer :
- Bug : default argument to setWeight() sould be QFont::Normal and not "-1".
Shows in Qt debug mode (catched by an assert).
- Bug : SelectCommand now keep the Selection check button in sync.
- Change : Palette doesn't show at start.
* ./hurricane :
- Now choice between static and dynamic linking. Note that thoses options are
mutually exclusives.
* ./coriolis/src/crlcore :
- New choice between static and dynamic linking.
- New feature : XmlParser optional warning when file not found (default is
to warn).
- New feature : now read environment from user's optional configuration file :
~/.environment.alliance.xml
- Potential bug : when loading/parsing file, the XmlReader hangs if the opened
file is a directory, and QFile allows directory opening :-(
_____________________________________________________________________________
* ./hurricane/src/viewer :
- New features : advanced selection widget/commands. Communications between
CellWidget, HSelectionPopup, HSelection & SelectCommand mostly done
through signal/slots (better undersdanding of the possibilities).
- Change : debug menu is hidden by default.
- Change : in all the QTableView rows are now correctly resized, even when
filtering is active (new forceRowHeight() slot). I'm pretty sure there's
a better way to handle this, but I haven't found it for now.
- Change : small naming normalisation in all those TableView.
- Bug : default argument to setWeight() sould be QFont::Normal and not "-1".
Shows in Qt debug mode (catched by an assert).
- Bug : SelectCommand now keep the Selection check button in sync.
- Change : Palette doesn't show at start.
* ./hurricane :
- Now choice between static and dynamic linking. Note that thoses options are
mutually exclusives.
* ./coriolis/src/crlcore :
- New choice between static and dynamic linking.
- New feature : XmlParser optional warning when file not found (default is
to warn).
- New feature : now read environment from user's optional configuration file :
~/.environment.alliance.xml
- Potential bug : when loading/parsing file, the XmlReader hangs if the opened
file is a directory, and QFile allows directory opening :-(
- New feature : Command support. Move command is now implemenented as a
Command and no longer built into the CellWidget. ZoomCommand implemented.
- New feature : SelectCommand support along with new HSelection widget to
browse the current selection. Selection is automatically kept up to
date.
- Note : Selection Browser & Netlist Browser pointer in the CellViewer are
resets to NULL on widget destruction by closing. We do not want to keep
big widget hiden. The are allocateds on demand.
- New feature : progessive grid. First display 5x5 then 5x5 + 1x1.
- Bug : now CellViewer can start with a NULL Cell, note that in this
case all displacement/zooming function of CellWidget became uneffective.
(display only a black screen)
- New widget : HGraphics to select the layout graphic's theme.
- New widget : HDisplayFilter to select displayed hierarchical levels.
- Distinguish between Close (one viewer) & Exit (all viewers).
- Small enhancments of DisplayStyle (Description & darkening).
- New feature : geometrical Query with callback fonctions "a la" OpenAccess.
* ./hurricane/src/hviewer :
- Uses Query to draw display.
- Bug : when drawing segments as lines (width inferior to 1 pixel)
uses an alternate Pen which is one pixel wide and SolidLine styled,
avoiding strange orange lines... Mechanism implemented in sub-class
DrawingPlanes.
- Make selection always visible regardless the zoom level.
- CellWidget names it's most importants childs QWidget (mostly menus)
for later retrieval in customized sub-classes.
- New feature : support for highlighted selection with decent refresh time.
To active selection mode, use the 's' key or the "View" menu.
- New feature : HNetlist to browse a Cell's Netlist. HNetlist can be used
with any NetInformations derived class, allowing the user to enrich
the HNetlist displayed fields. For an example, have a look at
SimpleNetlistWidget.
- Added proper licence header to all file.