Update to Qt 5, requires cmake 2.8.9. New placer: Etesian.
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.
2014-03-22 05:50:36 -05:00
|
|
|
# -*- explicit-buffer-name: "CMakeLists.txt<unicorn/src>" -*-
|
2010-03-09 09:26:22 -06:00
|
|
|
|
2015-03-22 13:12:45 -05:00
|
|
|
# include( ${QT_USE_FILE} )
|
|
|
|
include_directories( ${UNICORN_SOURCE_DIR}/src
|
|
|
|
${HURRICANE_INCLUDE_DIR}
|
2021-08-27 14:48:19 -05:00
|
|
|
${KNIK_INCLUDE_DIR}
|
|
|
|
${KATABATIC_INCLUDE_DIR}
|
|
|
|
${SOLSTICE_INCLUDE_DIR}
|
|
|
|
${EQUINOX_INCLUDE_DIR}
|
|
|
|
${KITE_INCLUDE_DIR}
|
|
|
|
${ETESIAN_INCLUDE_DIR}
|
|
|
|
${ANABATIC_INCLUDE_DIR}
|
|
|
|
${KATANA_INCLUDE_DIR}
|
2015-03-22 13:12:45 -05:00
|
|
|
${CORIOLIS_INCLUDE_DIR}
|
|
|
|
${BOOKSHELF_INCLUDE_DIR}
|
|
|
|
${CONFIGURATION_INCLUDE_DIR}
|
2021-11-21 17:05:48 -06:00
|
|
|
${QtX_INCLUDE_DIRS}
|
2015-03-22 13:12:45 -05:00
|
|
|
${Boost_INCLUDE_DIRS}
|
|
|
|
${LEFDEF_INCLUDE_DIR}
|
Migration towards Python3, first stage: still based on C-Macros.
* New: Python/C++ API level:
* Write a new C++/template wrapper to get rid of boost::python
* The int & long Python type are now merged. So a C/C++ level,
it became "PyLong_X" (remove "PyInt_X") and at Python code
level, it became "int" (remove "long").
* Change: VLSISAPD finally defunct.
* Configuration is now integrated as a Hurricane component,
makes use of the new C++/template wrapper.
* vlsisapd is now defunct. Keep it in the source for now as
some remaining non essential code may have to be ported in
the future.
* Note: Python code (copy of the migration howto):
* New print function syntax print().
* Changed "dict.has_key(k)" for "k" in dict.
* Changed "except Exception, e" for "except Exception as e".
* The division "/" is now the floating point division, even if
both operand are integers. So 3/2 now gives 1.5 and no longer 1.
The integer division is now "//" : 1 = 3//2. So have to carefully
review the code to update. Most of the time we want to use "//".
We must never change to float for long that, in fact, represents
DbU (exposed as Python int type).
* execfile() must be replaced by exec(open("file").read()).
* iter().__next__() becomes iter(x).__next__().
* __getslice__() has been removed, integrated to __getitem__().
* The formating used for str(type(o)) has changed, so In Stratus,
have to update them ("<class 'MyClass'>" instead of "MyClass").
* the "types" module no longer supply values for default types
like str (types.StringType) or list (types.StringType).
Must use "isinstance()" where they were occuring.
* Remove the 'L' to indicate "long integer" (like "12L"), now
all Python integer are long.
* Change in bootstrap:
* Ported Coriolis builder (ccb) to Python3.
* Ported Coriolis socInstaller.py to Python3.
* Note: In PyQt4+Python3, QVariant no longer exists. Use None or
directly convert using the python syntax: bool(x), int(x), ...
By default, it is a string (str).
* Note: PyQt4 bindings & Python3 under SL7.
* In order to compile user's must upgrade to my own rebuild of
PyQt 4 & 5 bindings 4.19.21-1.el7.soc.
* Bug: In cumulus/plugins.block.htree.HTree.splitNet(), set the root
buffer of the H-Tree to the original signal (mainly: top clock).
Strangely, it was only done when working in full chip mode.
2021-09-19 12:41:24 -05:00
|
|
|
${Python_INCLUDE_DIRS}
|
2015-03-22 13:12:45 -05:00
|
|
|
)
|
|
|
|
add_definitions( -DSYS_CONF_DIR="${SYS_CONF_DIR}" )
|
2010-03-09 09:26:22 -06:00
|
|
|
|
2015-03-22 13:12:45 -05:00
|
|
|
set( includes unicorn/ImportCell.h )
|
|
|
|
set( mocincludes unicorn/UnicornGui.h
|
|
|
|
unicorn/OpenCellDialog.h
|
|
|
|
unicorn/SaveCellDialog.h
|
|
|
|
unicorn/ImportCellDialog.h
|
|
|
|
unicorn/ExportCellDialog.h
|
|
|
|
)
|
|
|
|
set( pyIncludes unicorn/PyUnicornGui.h
|
|
|
|
)
|
2021-11-21 17:05:48 -06:00
|
|
|
set( cpps ImportCell.cpp
|
2015-03-22 13:12:45 -05:00
|
|
|
OpenCellDialog.cpp
|
|
|
|
SaveCellDialog.cpp
|
|
|
|
ImportCellDialog.cpp
|
|
|
|
ExportCellDialog.cpp
|
|
|
|
UnicornGui.cpp
|
|
|
|
)
|
|
|
|
set( pyCpps PyUnicorn.cpp
|
|
|
|
PyUnicornGui.cpp
|
|
|
|
)
|
|
|
|
set( cgtcpp CgtMain.cpp )
|
2010-03-09 09:26:22 -06:00
|
|
|
|
2015-03-22 13:12:45 -05:00
|
|
|
qtX_wrap_cpp( mocCpps ${mocincludes} )
|
|
|
|
qtX_add_resources( RCC_SRCS Unicorn.qrc )
|
2010-03-09 09:26:22 -06:00
|
|
|
|
2015-03-22 13:12:45 -05:00
|
|
|
set( depLibs ${SOLSTICE_GRAPHICAL_LIBRARIES}
|
|
|
|
${SOLSTICE_LIBRARIES}
|
|
|
|
${EQUINOX_GRAPHICAL_LIBRARIES}
|
|
|
|
${EQUINOX_LIBRARIES}
|
|
|
|
${KITE_GRAPHICAL_LIBRARIES}
|
|
|
|
${KITE_LIBRARIES}
|
|
|
|
${KATABATIC_GRAPHICAL_LIBRARIES}
|
|
|
|
${KATABATIC_LIBRARIES}
|
|
|
|
${KNIK_GRAPHICAL_LIBRARIES}
|
|
|
|
${KNIK_LIBRARIES}
|
|
|
|
${ETESIAN_GRAPHICAL_LIBRARIES}
|
|
|
|
${ETESIAN_LIBRARIES}
|
Anabatic transient commit 18. Port of Kite (Katana), Yeah, Baby! Yeah!
* Bug: In Hurricane, in StaticObservable::getObserver(), if the slot
pointer is NULL, do not try to access the owner. Returns NULL, so
the caller can be aware of the situation...
* Change: In Hurricane, in BreakpointWidget & ExceptionWidget some
cosmetic changes (fonts and window sizes).
* Bug: In Anabatic, In AutoHorizontal::getConstraints(), take into account
the constraints from the source AutoContact, as it holds the constraints
transmitted by the RoutingPads and sets up by propageConstraintsFromRp().
It is likely to be a bug affecting the original Katabatic as well.
* Change: In Anabatic, in RawGCellsUnder(), check that the segment is not
completly oustside the cell abutment box and truncate the coordinates
to the part that is inside. Use the "shrink" if we reach the east/north
border.
* Change: In Anabatic, in Configuration, no more decorator because we will
use a true derived relationship. Katana *derives* from *Anabatic* and do
not *decorate* it, so the Configuration can do the same. It also implies
that we directly create a Katana engine, not an Anabatic one.
* Change: In Anabatic, in Session, do not allow the opening of the Session
in a standalone fashion (with a static method). Instead it must be opened
using the relevant method of the Anabatic/Katana engine. This ensure we
are opening the right Session type.
* Change: In Anabatic, in AutoSegment_Aligneds() collection the seed segment
is not part of the collection by default, but will be included if the
Flags::WithSelf is set.
* Change: In Configuration, all the flags value are now defined in two steps.
Declared in the header and initialized in the module. This is to prevent
the fact that on some cases, in relation with the Python "extern C" part
modules, we need a true allocated variable. It was causing weird linking
problems.
A side effect is that they can no longer be used as entry is switches,
have to replace them by if/else.
* New: In Anabatic, new GCell::getNeighborAt() utility function.
* Bug: In Anabatic, in GCell::doGrid(), tag all the GCells of the grid with
the grid type... Back annote all the edges capacity (north & east) with
the reserved local capacity.
* New: Complete portage of Kite over Anabatic. The new engine is christened
"Katana" for Kite-Analogic. When it's capabilities and performances
will be on a part with Kite, it is to completly replace it (and take
back the "Kite" name). Preliminary tests seems to show that, contrary
to intuition (because built on a more complex/slower grid), it is even
slightly faster than Kite 8-).
2016-08-15 09:30:13 -05:00
|
|
|
${KATANA_GRAPHICAL_LIBRARIES}
|
|
|
|
${KATANA_LIBRARIES}
|
2016-06-17 06:09:34 -05:00
|
|
|
${ANABATIC_GRAPHICAL_LIBRARIES}
|
|
|
|
${ANABATIC_LIBRARIES}
|
2015-03-22 13:12:45 -05:00
|
|
|
${CORIOLIS_PYTHON_LIBRARIES}
|
|
|
|
${CORIOLIS_LIBRARIES}
|
|
|
|
${HURRICANE_PYTHON_LIBRARIES}
|
|
|
|
${HURRICANE_GRAPHICAL_LIBRARIES}
|
|
|
|
${HURRICANE_LIBRARIES}
|
|
|
|
${BOOKSHELF_LIBRARY}
|
|
|
|
${AGDS_LIBRARY}
|
|
|
|
${CIF_LIBRARY}
|
|
|
|
${UTILITIES_LIBRARY}
|
|
|
|
${CONFIGURATION_LIBRARY}
|
2015-06-10 11:38:10 -05:00
|
|
|
${COLOQUINTE_LIBRARIES}
|
2019-02-12 05:48:52 -06:00
|
|
|
${FLUTE_LIBRARIES}
|
2015-03-22 13:12:45 -05:00
|
|
|
${LEFDEF_LIBRARIES}
|
|
|
|
${OA_LIBRARIES}
|
|
|
|
${QtX_LIBRARIES}
|
|
|
|
${Boost_LIBRARIES}
|
2022-12-14 18:37:06 -06:00
|
|
|
|
2015-03-22 13:12:45 -05:00
|
|
|
-lutil
|
|
|
|
${LIBXML2_LIBRARIES}
|
2021-11-21 17:05:48 -06:00
|
|
|
${BZIP2_LIBRARIES}
|
2016-08-06 11:15:06 -05:00
|
|
|
${LIBBFD_LIBRARIES}
|
2015-03-22 13:12:45 -05:00
|
|
|
)
|
2012-11-16 06:54:58 -06:00
|
|
|
|
2015-03-22 13:12:45 -05:00
|
|
|
add_library( unicorn ${cpps} ${mocCpps} ${pyCpps} )
|
|
|
|
set_target_properties( unicorn PROPERTIES VERSION 1.0 SOVERSION 1 )
|
2022-12-10 11:12:38 -06:00
|
|
|
target_link_libraries( unicorn ${depLibs} )
|
2012-11-16 06:54:58 -06:00
|
|
|
|
2015-03-22 13:12:45 -05:00
|
|
|
add_python_module( "${pyCpps}"
|
|
|
|
"${pyIncludes}"
|
|
|
|
"Do_not_generate_C_library"
|
|
|
|
Unicorn
|
|
|
|
"unicorn;${depLibs}"
|
|
|
|
include/coriolis2/unicorn
|
|
|
|
)
|
|
|
|
|
|
|
|
add_executable( cgt.bin ${cgtcpp} )
|
|
|
|
target_link_libraries( cgt.bin unicorn ${depLibs} )
|
|
|
|
|
|
|
|
install( TARGETS unicorn DESTINATION lib${LIB_SUFFIX} )
|
|
|
|
install( TARGETS cgt.bin DESTINATION bin )
|
|
|
|
install( PROGRAMS cgt.py DESTINATION bin RENAME cgt )
|
New coriolis launcher. Configuration files cleanup.
* Change: In CRL Core, simplify the loading sequence. The technology,
both symbolic and real is now loaded directly from coriolisInit.py
and not through the Alliance loader. This was a leftover from the
time configuration was in XML. Remove others traces of XML loading.
Remove SYMB_TECHNO_NAME, REAL_TECHNO_NAME & DISPLAY from the Alliance
environement, as they was no longer used.
Note that technology *still* need to be loader *after* Alliance
framework has been initialized.
Gauge information is moved from <alliance.conf> to <kite.conf>.
* Bug: In Coloquinte, in optimization_subproblems.cxx static variables
must not be inlined. Generate a problem when linking in debug mode
(seems the symbol gets optimised out).
* Bug: In Katabatic, in Grid::getGCell(), when the coordinate is *outside*
the area, do not try to find a GCell, directly return NULL.
* New: In Unicorn, create a generic command launcher named "coriolis" which
automatically take cares of all environement setup, then run a command
by default, it's <cgt>, but it can be anything. For example: <zsh>.
2015-04-13 11:54:09 -05:00
|
|
|
install( PROGRAMS coriolis.py DESTINATION bin RENAME coriolis )
|
2015-03-22 13:12:45 -05:00
|
|
|
install( FILES ${includes}
|
|
|
|
${mocincludes} DESTINATION include/coriolis2/unicorn )
|
2010-03-09 09:26:22 -06:00
|
|
|
|