2018-10-18 11:10:01 -05:00
|
|
|
# -*- explicit-buffer-name: "CMakeLists.txt<bora/src>" -*-
|
|
|
|
|
|
|
|
include_directories( ${BORA_SOURCE_DIR}/src
|
|
|
|
${CORIOLIS_INCLUDE_DIR}
|
|
|
|
${HURRICANE_INCLUDE_DIR}
|
|
|
|
${CONFIGURATION_INCLUDE_DIR}
|
|
|
|
${Boost_INCLUDE_DIRS}
|
|
|
|
${QWT_INCLUDE_DIR}
|
|
|
|
${QtX_INCLUDE_DIR}
|
|
|
|
${PYTHON_INCLUDE_PATH}
|
|
|
|
)
|
|
|
|
set( includes bora/Constants.h
|
First stage in analog capacitor integration
* Bug: In Technology::getPhysicalRule(), if the named layerdo not exists,
throw an exception instead of silently putting a NULL pointer inside
a rule.
* New: In Hurricane/Analog, new parameters classes for capacitor devices:
- Analog::Matrix, a matrix of null or positives integers to encode
capacitor matrix matching.
- Analog::Capacities, a list of float values for all component of a
multi-capacitor.
* New: In Hurricane::Script, add a "getFileName()" method to get the full
path name of the Python module.
* Change: In Analog::LayoutGenerator, completly remove the logger utility
as it is no longer used. Simply print error messages instead.
* Change: In Analog::MetaCapacitor, rename top & bottom plate 'T' & 'B'.
Accessors renamed in "getTopPlate()" & "getBottomPlate()".
* New: In Analog::MultiCapacitor, complete rewrite. Makes use of the
new parameters "capacities" and "matrix". Dynamically generates it's
terminals as we do not know beforehand how many capacitors could be
put in it.
* Bug: In isobar/PyHurricane.h, in Type object definition, do not prepend
a "Py" to class name (so the keep the C++ name).
* Change: In CRL/etc/scn6m_deep_09/devices.py, add entry for the new
capacitor generator.
* New: In oroshi/python/ParamsMatrix, add a "family" entry in the [0,0]
element to distinguish between transistor, capacitor and resistor.
(this is the matrix of values returned to the LayoutGenerator after
device generation).
Now have one "setGlobalParams()" function per family.
* New: In oroshi/python/Rules.py, added DTR rules needed by capacitors.
Catch exceptions if something wrong append when we extract the rules
from the technology.
* New: In Bora, the devices are no longer *only* transistors, so the
possibles configurations are no longer defined only by a number of
fingers. We must be able to support any kind of range of configuration.
So the explicit range of number of fingers is replaced by a base
class ParameterRange, and it's derived classes:
- Bora::StepParameterRange, to encode the possible number of fingers
of a transistor (the former only possibility).
- Bora::MatrixParameterRange, to encode all the possible matching
scheme for a capacitor. As there is no way to compress it, this
is a vector of Matrix (from Analog).
* Change: In Bora::DSlicingNode::_place(), the ParameterRange has to be set
on the right configuration (through the index) before being called.
The generation parameters are taken from the active item in the
ParameterRange.
* Change: In Bora::NodeSets::create(), iterate over the ParameterRange
to build all the configuration. Adjustement to the routing gauge
pitchs are moved into the DBoxSet CTOR to save a lot of code.
Semantic change: the index in the NodeSets is now the index in
the associated ParameterRange and no longer the number of fingers
of a transistor.
Check that the ParameterRange dynamic class is consitent with the
device family.
* Change: In Bora::DBoxSet, same semantic change as for NodeSets, the
number of finger become an index in ParameterRange.
In DBoxSet::create(), now also perform the abutment box adjustement
to the RoutingGauge, if possible.
* New: In Karakaze/python/AnalogDesign.py, add support for Capacitor
devices.
2019-11-07 10:05:49 -06:00
|
|
|
bora/ParameterRange.h
|
2018-10-18 11:10:01 -05:00
|
|
|
bora/BoxSet.h
|
|
|
|
bora/NodeSets.h
|
|
|
|
bora/HVSetState.h
|
|
|
|
bora/ChannelRouting.h
|
|
|
|
bora/SlicingNode.h
|
|
|
|
bora/HVSlicingNode.h
|
|
|
|
bora/HSlicingNode.h
|
|
|
|
bora/VSlicingNode.h
|
|
|
|
bora/DSlicingNode.h
|
|
|
|
bora/RHVSlicingNode.h
|
|
|
|
bora/RHSlicingNode.h
|
|
|
|
bora/RVSlicingNode.h
|
|
|
|
bora/AnalogDistance.h
|
|
|
|
bora/Pareto.h
|
|
|
|
bora/BoraEngine.h
|
|
|
|
|
|
|
|
)
|
First stage in analog capacitor integration
* Bug: In Technology::getPhysicalRule(), if the named layerdo not exists,
throw an exception instead of silently putting a NULL pointer inside
a rule.
* New: In Hurricane/Analog, new parameters classes for capacitor devices:
- Analog::Matrix, a matrix of null or positives integers to encode
capacitor matrix matching.
- Analog::Capacities, a list of float values for all component of a
multi-capacitor.
* New: In Hurricane::Script, add a "getFileName()" method to get the full
path name of the Python module.
* Change: In Analog::LayoutGenerator, completly remove the logger utility
as it is no longer used. Simply print error messages instead.
* Change: In Analog::MetaCapacitor, rename top & bottom plate 'T' & 'B'.
Accessors renamed in "getTopPlate()" & "getBottomPlate()".
* New: In Analog::MultiCapacitor, complete rewrite. Makes use of the
new parameters "capacities" and "matrix". Dynamically generates it's
terminals as we do not know beforehand how many capacitors could be
put in it.
* Bug: In isobar/PyHurricane.h, in Type object definition, do not prepend
a "Py" to class name (so the keep the C++ name).
* Change: In CRL/etc/scn6m_deep_09/devices.py, add entry for the new
capacitor generator.
* New: In oroshi/python/ParamsMatrix, add a "family" entry in the [0,0]
element to distinguish between transistor, capacitor and resistor.
(this is the matrix of values returned to the LayoutGenerator after
device generation).
Now have one "setGlobalParams()" function per family.
* New: In oroshi/python/Rules.py, added DTR rules needed by capacitors.
Catch exceptions if something wrong append when we extract the rules
from the technology.
* New: In Bora, the devices are no longer *only* transistors, so the
possibles configurations are no longer defined only by a number of
fingers. We must be able to support any kind of range of configuration.
So the explicit range of number of fingers is replaced by a base
class ParameterRange, and it's derived classes:
- Bora::StepParameterRange, to encode the possible number of fingers
of a transistor (the former only possibility).
- Bora::MatrixParameterRange, to encode all the possible matching
scheme for a capacitor. As there is no way to compress it, this
is a vector of Matrix (from Analog).
* Change: In Bora::DSlicingNode::_place(), the ParameterRange has to be set
on the right configuration (through the index) before being called.
The generation parameters are taken from the active item in the
ParameterRange.
* Change: In Bora::NodeSets::create(), iterate over the ParameterRange
to build all the configuration. Adjustement to the routing gauge
pitchs are moved into the DBoxSet CTOR to save a lot of code.
Semantic change: the index in the NodeSets is now the index in
the associated ParameterRange and no longer the number of fingers
of a transistor.
Check that the ParameterRange dynamic class is consitent with the
device family.
* Change: In Bora::DBoxSet, same semantic change as for NodeSets, the
number of finger become an index in ParameterRange.
In DBoxSet::create(), now also perform the abutment box adjustement
to the RoutingGauge, if possible.
* New: In Karakaze/python/AnalogDesign.py, add support for Capacitor
devices.
2019-11-07 10:05:49 -06:00
|
|
|
set( pyIncludes bora/PyParameterRange.h
|
|
|
|
bora/PyStepParameterRange.h
|
|
|
|
bora/PyMatrixParameterRange.h
|
|
|
|
bora/PySlicingNode.h
|
2018-10-18 11:10:01 -05:00
|
|
|
bora/PyDSlicingNode.h
|
|
|
|
bora/PyHSlicingNode.h
|
|
|
|
bora/PyVSlicingNode.h
|
|
|
|
bora/PyRHSlicingNode.h
|
|
|
|
bora/PyRVSlicingNode.h
|
|
|
|
bora/PyBoraEngine.h
|
|
|
|
bora/PyGraphicBoraEngine.h
|
|
|
|
)
|
|
|
|
set( mocIncludes bora/SlicingDataModel.h
|
|
|
|
bora/SlicingDataWidget.h
|
|
|
|
bora/SlicingPlotWidget.h
|
|
|
|
bora/SlicingWidget.h
|
|
|
|
bora/GraphicBoraEngine.h
|
|
|
|
)
|
|
|
|
set( cpps BoxSet.cpp
|
|
|
|
NodeSets.cpp
|
First stage in analog capacitor integration
* Bug: In Technology::getPhysicalRule(), if the named layerdo not exists,
throw an exception instead of silently putting a NULL pointer inside
a rule.
* New: In Hurricane/Analog, new parameters classes for capacitor devices:
- Analog::Matrix, a matrix of null or positives integers to encode
capacitor matrix matching.
- Analog::Capacities, a list of float values for all component of a
multi-capacitor.
* New: In Hurricane::Script, add a "getFileName()" method to get the full
path name of the Python module.
* Change: In Analog::LayoutGenerator, completly remove the logger utility
as it is no longer used. Simply print error messages instead.
* Change: In Analog::MetaCapacitor, rename top & bottom plate 'T' & 'B'.
Accessors renamed in "getTopPlate()" & "getBottomPlate()".
* New: In Analog::MultiCapacitor, complete rewrite. Makes use of the
new parameters "capacities" and "matrix". Dynamically generates it's
terminals as we do not know beforehand how many capacitors could be
put in it.
* Bug: In isobar/PyHurricane.h, in Type object definition, do not prepend
a "Py" to class name (so the keep the C++ name).
* Change: In CRL/etc/scn6m_deep_09/devices.py, add entry for the new
capacitor generator.
* New: In oroshi/python/ParamsMatrix, add a "family" entry in the [0,0]
element to distinguish between transistor, capacitor and resistor.
(this is the matrix of values returned to the LayoutGenerator after
device generation).
Now have one "setGlobalParams()" function per family.
* New: In oroshi/python/Rules.py, added DTR rules needed by capacitors.
Catch exceptions if something wrong append when we extract the rules
from the technology.
* New: In Bora, the devices are no longer *only* transistors, so the
possibles configurations are no longer defined only by a number of
fingers. We must be able to support any kind of range of configuration.
So the explicit range of number of fingers is replaced by a base
class ParameterRange, and it's derived classes:
- Bora::StepParameterRange, to encode the possible number of fingers
of a transistor (the former only possibility).
- Bora::MatrixParameterRange, to encode all the possible matching
scheme for a capacitor. As there is no way to compress it, this
is a vector of Matrix (from Analog).
* Change: In Bora::DSlicingNode::_place(), the ParameterRange has to be set
on the right configuration (through the index) before being called.
The generation parameters are taken from the active item in the
ParameterRange.
* Change: In Bora::NodeSets::create(), iterate over the ParameterRange
to build all the configuration. Adjustement to the routing gauge
pitchs are moved into the DBoxSet CTOR to save a lot of code.
Semantic change: the index in the NodeSets is now the index in
the associated ParameterRange and no longer the number of fingers
of a transistor.
Check that the ParameterRange dynamic class is consitent with the
device family.
* Change: In Bora::DBoxSet, same semantic change as for NodeSets, the
number of finger become an index in ParameterRange.
In DBoxSet::create(), now also perform the abutment box adjustement
to the RoutingGauge, if possible.
* New: In Karakaze/python/AnalogDesign.py, add support for Capacitor
devices.
2019-11-07 10:05:49 -06:00
|
|
|
ParameterRange.cpp
|
2018-10-18 11:10:01 -05:00
|
|
|
HVSetState.cpp
|
|
|
|
SlicingNode.cpp
|
|
|
|
HVSlicingNode.cpp
|
|
|
|
HSlicingNode.cpp
|
|
|
|
VSlicingNode.cpp
|
|
|
|
DSlicingNode.cpp
|
|
|
|
RHVSlicingNode.cpp
|
|
|
|
RHSlicingNode.cpp
|
|
|
|
RVSlicingNode.cpp
|
|
|
|
ChannelRouting.cpp
|
|
|
|
BoraEngine.cpp
|
|
|
|
Pareto.cpp
|
|
|
|
SlicingDataModel.cpp
|
|
|
|
SlicingDataWidget.cpp
|
|
|
|
SlicingPlotWidget.cpp
|
|
|
|
SlicingWidget.cpp
|
|
|
|
GraphicBoraEngine.cpp
|
|
|
|
)
|
First stage in analog capacitor integration
* Bug: In Technology::getPhysicalRule(), if the named layerdo not exists,
throw an exception instead of silently putting a NULL pointer inside
a rule.
* New: In Hurricane/Analog, new parameters classes for capacitor devices:
- Analog::Matrix, a matrix of null or positives integers to encode
capacitor matrix matching.
- Analog::Capacities, a list of float values for all component of a
multi-capacitor.
* New: In Hurricane::Script, add a "getFileName()" method to get the full
path name of the Python module.
* Change: In Analog::LayoutGenerator, completly remove the logger utility
as it is no longer used. Simply print error messages instead.
* Change: In Analog::MetaCapacitor, rename top & bottom plate 'T' & 'B'.
Accessors renamed in "getTopPlate()" & "getBottomPlate()".
* New: In Analog::MultiCapacitor, complete rewrite. Makes use of the
new parameters "capacities" and "matrix". Dynamically generates it's
terminals as we do not know beforehand how many capacitors could be
put in it.
* Bug: In isobar/PyHurricane.h, in Type object definition, do not prepend
a "Py" to class name (so the keep the C++ name).
* Change: In CRL/etc/scn6m_deep_09/devices.py, add entry for the new
capacitor generator.
* New: In oroshi/python/ParamsMatrix, add a "family" entry in the [0,0]
element to distinguish between transistor, capacitor and resistor.
(this is the matrix of values returned to the LayoutGenerator after
device generation).
Now have one "setGlobalParams()" function per family.
* New: In oroshi/python/Rules.py, added DTR rules needed by capacitors.
Catch exceptions if something wrong append when we extract the rules
from the technology.
* New: In Bora, the devices are no longer *only* transistors, so the
possibles configurations are no longer defined only by a number of
fingers. We must be able to support any kind of range of configuration.
So the explicit range of number of fingers is replaced by a base
class ParameterRange, and it's derived classes:
- Bora::StepParameterRange, to encode the possible number of fingers
of a transistor (the former only possibility).
- Bora::MatrixParameterRange, to encode all the possible matching
scheme for a capacitor. As there is no way to compress it, this
is a vector of Matrix (from Analog).
* Change: In Bora::DSlicingNode::_place(), the ParameterRange has to be set
on the right configuration (through the index) before being called.
The generation parameters are taken from the active item in the
ParameterRange.
* Change: In Bora::NodeSets::create(), iterate over the ParameterRange
to build all the configuration. Adjustement to the routing gauge
pitchs are moved into the DBoxSet CTOR to save a lot of code.
Semantic change: the index in the NodeSets is now the index in
the associated ParameterRange and no longer the number of fingers
of a transistor.
Check that the ParameterRange dynamic class is consitent with the
device family.
* Change: In Bora::DBoxSet, same semantic change as for NodeSets, the
number of finger become an index in ParameterRange.
In DBoxSet::create(), now also perform the abutment box adjustement
to the RoutingGauge, if possible.
* New: In Karakaze/python/AnalogDesign.py, add support for Capacitor
devices.
2019-11-07 10:05:49 -06:00
|
|
|
set( pyCpps PyParameterRange.cpp
|
|
|
|
PyStepParameterRange.cpp
|
|
|
|
PyMatrixParameterRange.cpp
|
|
|
|
PySlicingNode.cpp
|
2018-10-18 11:10:01 -05:00
|
|
|
PyDSlicingNode.cpp
|
|
|
|
PyHSlicingNode.cpp
|
|
|
|
PyRHSlicingNode.cpp
|
|
|
|
PyRVSlicingNode.cpp
|
|
|
|
PyVSlicingNode.cpp
|
|
|
|
PyBoraEngine.cpp
|
|
|
|
PyGraphicBoraEngine.cpp
|
|
|
|
PyBora.cpp
|
|
|
|
)
|
|
|
|
qtX_wrap_cpp( mocCpps ${mocIncludes} )
|
|
|
|
|
|
|
|
set( depLibs ${KATANA_LIBRARIES}
|
|
|
|
${ANABATIC_LIBRARIES}
|
|
|
|
${CORIOLIS_PYTHON_LIBRARIES}
|
|
|
|
${CORIOLIS_LIBRARIES}
|
|
|
|
${HURRICANE_PYTHON_LIBRARIES}
|
|
|
|
${HURRICANE_ANALOG_LIBRARIES}
|
|
|
|
${HURRICANE_GRAPHICAL_LIBRARIES}
|
|
|
|
${HURRICANE_LIBRARIES}
|
|
|
|
${CONFIGURATION_LIBRARY}
|
|
|
|
${CIF_LIBRARY}
|
|
|
|
${AGDS_LIBRARY}
|
2019-02-12 05:48:52 -06:00
|
|
|
${FLUTE_LIBRARIES}
|
2018-10-18 11:10:01 -05:00
|
|
|
${LEFDEF_LIBRARIES}
|
|
|
|
${OA_LIBRARIES}
|
|
|
|
${QWT_LIBRARY}
|
|
|
|
${QtX_LIBRARIES}
|
|
|
|
${Boost_LIBRARIES}
|
|
|
|
${PYTHON_LIBRARIES} -lutil
|
|
|
|
)
|
|
|
|
|
|
|
|
add_library( bora ${cpps} ${mocCpps} )
|
|
|
|
set_target_properties( bora PROPERTIES VERSION 1.0 SOVERSION 1 )
|
|
|
|
target_link_libraries( bora ${depLibs} )
|
|
|
|
|
|
|
|
add_python_module( "${pyCpps}"
|
|
|
|
"${pyIncludes}"
|
|
|
|
"pybora;1.0;1"
|
|
|
|
Bora
|
|
|
|
"bora;${depLibs}"
|
|
|
|
include/coriolis2/bora
|
|
|
|
)
|
|
|
|
|
|
|
|
install( TARGETS bora DESTINATION lib${LIB_SUFFIX} )
|
|
|
|
install( FILES ${includes}
|
|
|
|
${mocIncludes} DESTINATION include/coriolis2/bora )
|
|
|
|
|
|
|
|
|