Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various fixes for IHP SG13G2 node. #139

Merged
merged 61 commits into from
Jan 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
f17a243
Suppress paranoid bug message if a TrackSegment has no prior Track.
jpc-lip6 Oct 18, 2024
62a7718
Makes block I/O pins square (wire width) to avoid GDS offgrid.
jpc-lip6 Oct 18, 2024
2a021b9
Fix in AutoSegment::updatePosition(), when du S/T exceed contact exte…
jpc-lip6 Oct 20, 2024
dd13956
Implement full support for promoteToPref.
jpc-lip6 Oct 22, 2024
92b3e4d
Fix various errors in minimal area management of segments.
jpc-lip6 Oct 24, 2024
ecaa4da
Move promoteToPref() in AutoSegment as it is sufficiently generic.
jpc-lip6 Oct 24, 2024
e3e229b
Fix comparison error in IntervalTree.
jpc-lip6 Oct 24, 2024
836d783
Removed debug printing.
jpc-lip6 Oct 27, 2024
be6d221
Add a new parameter in chip/core2chip to merge or not the vss/iovss.
jpc-lip6 Oct 30, 2024
7b09d81
Makes the jumper on IO as wide as the connecting wire.
jpc-lip6 Oct 30, 2024
91ceef2
Remove deprecated std::binary_function<>.
jpc-lip6 Oct 30, 2024
6eee8cd
Remove deprecated std::unary_function<>.
jpc-lip6 Oct 30, 2024
90f716a
Forgotten c_str() in Error() variadic CTOR call.
jpc-lip6 Oct 30, 2024
d87bf07
Add a translate(Point&) overload, cleanup of the translate() export.
jpc-lip6 Nov 1, 2024
5dcb3cd
Add a new way of mixing LEF & GDS while loading (support for "galleri…
jpc-lip6 Nov 1, 2024
52ab23d
Small aesthetical fix in LefImport.
jpc-lip6 Nov 1, 2024
8a8cd38
Forgotten to export Polygon.getPoints() to Python.
jpc-lip6 Nov 13, 2024
6d71146
Change non-convex polygon from and error to a state flag.
jpc-lip6 Nov 13, 2024
229f698
Clearly display the final die size in cumulus.chip.
jpc-lip6 Nov 13, 2024
44dbfee
In GdsStream::xyToComponent(), create Polygon for non-rectilinear sha…
jpc-lip6 Nov 13, 2024
2b3ec66
More accurate message about offgrid points in GdsStream.
jpc-lip6 Nov 13, 2024
bdc2046
Avoid cell name collision when loading LEF FOREIGN from GDS.
jpc-lip6 Nov 13, 2024
1ecbce5
Add variable names for IHP DRC scripts for KLayout.
jpc-lip6 Nov 13, 2024
3b51c52
Do not manhatanize Polygon with only 45 degree edge (native support).
jpc-lip6 Nov 16, 2024
6bc772c
Finally a correct management of MACRO ORIGIN in LefImport.
jpc-lip6 Nov 16, 2024
76b9607
Fix minimal width and distances of the vertical begin/end power lines.
jpc-lip6 Nov 16, 2024
ac8ce32
Little rework for more flexibility in the klayout wrapper.
jpc-lip6 Nov 16, 2024
e6a9a76
Expanded capabilities of the klayout doit wrapper.
jpc-lip6 Nov 18, 2024
3f73843
Display the number of diodes and success ratio in log level 1
jpc-lip6 Nov 18, 2024
b9143b3
Add PDK_ROOT, PDK, KLAYOUT_PATH & KLAOUT_HOME to static ShellEnv.
jpc-lip6 Nov 20, 2024
dbb2cb4
Do *not* use "-b" when calling klayout.
jpc-lip6 Nov 20, 2024
46e39e6
Add the possibility to use a non-default Python, add doit to venv.
jpc-lip6 Nov 20, 2024
ff9d736
Support for multiple PROPVALUE while parsing elements.
jpc-lip6 Nov 20, 2024
7db2cfc
The kite.py layout was still refering to defunct "kite".
jpc-lip6 Dec 3, 2024
f672fb1
Fix compability issues of the designflow with doit > 0.34.0.
jpc-lip6 Dec 3, 2024
faa79e0
Exclude the generated .venv from accidental commit.
jpc-lip6 Dec 3, 2024
4b8808d
Add an error message in case of no-merged power supplies.
jpc-lip6 Dec 19, 2024
7a3a23f
No longer lock move up for antenna clustered wires.
jpc-lip6 Dec 19, 2024
681e8cb
Fix the coherency of the NonPref flag in AutoSegment::setLayer().
jpc-lip6 Dec 19, 2024
b3b90f9
Consider a segment as "pre-routed" only if *fully* inside the AB.
jpc-lip6 Dec 19, 2024
317f0c9
Try a new impl in NetBuilder::doRp_Access() (not enabled yet).
jpc-lip6 Dec 19, 2024
877c35d
* In DataNegociate::update(), formerly a non-placed perpandicular
jpc-lip6 Dec 19, 2024
5ff607d
Fix, never tries to repair (or reschedule) non-pref segments.
jpc-lip6 Dec 19, 2024
1c87947
Fix, in Track::repair(), now take non-pref into account for narrow gaps.
jpc-lip6 Dec 19, 2024
f7830e7
Sligth change in the triage for slackening segments.
jpc-lip6 Dec 19, 2024
8267346
Add a lot more P&R statistics in Katana.
jpc-lip6 Dec 19, 2024
3e12067
* In plugins.chip.corona, the clock ring was on the inner side of the
jpc-lip6 Dec 19, 2024
aaba086
Now enable the LVS by default when making a block or chip.
jpc-lip6 Dec 19, 2024
60ca4d0
Add the possibility to setup environment variable for KLayout scripts.
jpc-lip6 Dec 19, 2024
ca78223
Make the pnr scriptless rule (for GUI) never up-to-date, so it is alw…
jpc-lip6 Dec 19, 2024
5c7fdab
In the pnrcheck rule set, make cgt depends on netlist generation.
jpc-lip6 Dec 19, 2024
a9c0aee
Fix error in windowed LVX, generating open over the cut line.
jpc-lip6 Dec 23, 2024
cddd5f3
Seems that Fedora 41 has a slightly different rpmbuild layout.
jpc-lip6 Dec 30, 2024
1034a9e
Fix inverted conditional in Makefile.LIP6
jpc-lip6 Dec 31, 2024
2a27377
Support for Debian build under openSUSE build system.
jpc-lip6 Jan 1, 2025
5c73ca2
Updating for Debian packaging & name of the OBS upload script.
jpc-lip6 Jan 6, 2025
35c17f8
Updating for Debian packaging & name of the OBS upload script.
jpc-lip6 Jan 6, 2025
2a02d22
Add python3-doit dependency.
jpc-lip6 Jan 10, 2025
0ba8de4
Adjustements to work under Debian. When system installed.
jpc-lip6 Jan 11, 2025
355afdc
Fix bugs for Debian standalone installation.
jpc-lip6 Jan 11, 2025
3c88c6e
Merge branch 'main' into ihp-fix
jpc-lip6 Jan 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ GRTAGS
.dir-locals.el
.projectile
.vscode
.venv

lefdef/src/lef/lef/lef.tab.h
lefdef/src/def/def/def.tab.h
Expand Down
66 changes: 49 additions & 17 deletions Makefile.LIP6
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@


venv = source .venv/bin/activate;
venv = . .venv/bin/activate;

REGRESSION_DIR =
ifneq ($(findstring nightly,$(shell pwd)),)
Expand All @@ -14,25 +14,53 @@
ifneq ($(shell which nproc 2> /dev/null),)
SMP_FLAGS = -j$(shell nproc)
endif
ifeq ($(findstring abuild/rpmbuild,$(shell pwd)),)
$(info Using LIP6 build directory tree scheme)
SRC_DIR = ${HOME}$(REGRESSION_DIR)/coriolis-2.x/src
CORIOLIS_SRC = ${SRC_DIR}/coriolis
ALLIANCE_SRC = ${SRC_DIR}/alliance/alliance/src
BUILDTYPE = release
BUILDDIR = ${HOME}$(REGRESSION_DIR)/coriolis-2.x/$(BUILDTYPE)/build
PREFIX = ${HOME}$(REGRESSION_DIR)/coriolis-2.x/$(BUILDTYPE)/install
else
$(info Using rpmbuild directory tree scheme)
SRC_DIR = ${HOME}/rpmbuild/BUILD

USE_VENV = Yes
ifneq ($(findstring abuild/rpmbuild,$(shell pwd)),)
$(info Using RPM directory tree scheme)
PYTHON_BIN = python3
ifneq ($(findstring coriolis-eda-2.5.5-build,$(shell pwd)),)
SRC_DIR = ${HOME}/rpmbuild/BUILD/coriolis-eda-2.5.5-build
else
SRC_DIR = ${HOME}/rpmbuild/BUILD
endif
CORIOLIS_SRC = ${SRC_DIR}/coriolis-eda-2.5.5
ALLIANCE_SRC = ${SRC_DIR}/alliance/alliance/src
BUILDDIR = ${CORIOLIS_SRC}/build
PREFIX = /usr
else
ifneq ($(findstring packages/BUILD,$(shell pwd)),)
$(info Using DEB directory tree scheme)
PYTHON_BIN = python3
SRC_DIR = /usr/src/packages/BUILD
CORIOLIS_SRC = ${SRC_DIR}
ALLIANCE_SRC = ${SRC_DIR}
BUILDDIR = ${CORIOLIS_SRC}/build
PREFIX = /usr
else
$(info Using LIP6 build directory tree scheme)
# PYTHON_BIN = /usr/bin/python3.11
PYTHON_BIN = python3
SRC_DIR = ${HOME}$(REGRESSION_DIR)/coriolis-2.x/src
CORIOLIS_SRC = ${SRC_DIR}/coriolis
ALLIANCE_SRC = ${SRC_DIR}/alliance/alliance/src
BUILDTYPE = release
BUILDDIR = ${HOME}$(REGRESSION_DIR)/coriolis-2.x/$(BUILDTYPE)/build
PREFIX = ${HOME}$(REGRESSION_DIR)/coriolis-2.x/$(BUILDTYPE)/install
endif
endif

ifeq ($(USE_VENV),Yes)
PDM_BIN = $(CORIOLIS_SRC)/.venv/bin/pdm
MESON_BIN = $(CORIOLIS_SRC)/.venv/bin/meson
PELICAN_BIN = $(CORIOLIS_SRC)/.venv/bin/pelican
DOIT_BIN = $(CORIOLIS_SRC)/.venv/bin/doit
else
PDM_BIN = /usr/bin/pdm
MESON_BIN = /usr/bin/meson
PELICAN_BIN = /usr/bin/pelican
DOIT_BIN = /usr/bin/doit
endif
PDM_BIN = $(CORIOLIS_SRC)/.venv/bin/pdm
MESON_BIN = $(CORIOLIS_SRC)/.venv/bin/meson
PELICAN_BIN = $(CORIOLIS_SRC)/.venv/bin/pelican



Expand Down Expand Up @@ -71,7 +99,7 @@ check_dir:


$(CORIOLIS_SRC)/.venv:
python3 -m venv .venv
$(PYTHON_BIN) -m venv .venv


$(MESON_BIN): $(CORIOLIS_SRC)/.venv
Expand All @@ -82,13 +110,17 @@ $(PELICAN_BIN): $(CORIOLIS_SRC)/.venv
$(venv) if [ ! -x "$(PELICAN_BIN)" ]; then pip install pelican; fi


$(DOIT_BIN): $(CORIOLIS_SRC)/.venv
$(venv) if [ ! -x "$(DOIT_BIN)" ]; then pip install doit==0.33.1; fi


ifeq ($(USE_SYSTEM_PDM),)

$(PDM_BIN): $(CORIOLIS_SRC)/.venv
$(venv) if [ ! -x "$(PDM_BIN)" ]; then pip install pdm; pdm install --no-self -d --plugins; fi


install_venv: $(PDM_BIN) $(MESON_BIN) $(PELICAN_BIN)
install_venv: $(PDM_BIN) $(MESON_BIN) $(PELICAN_BIN) #$(DOIT_BIN)

else

Expand Down
8 changes: 4 additions & 4 deletions anabatic/src/AntennaProtect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -983,7 +983,7 @@ namespace Anabatic {
if (netData) {
for ( auto item : clusterSegments ) {
cdebug_log(147,0) << "No move up: " << item.first << endl;
netData->setNoMoveUp( item.first );
//netData->setNoMoveUp( item.first );
}
}

Expand Down Expand Up @@ -1158,9 +1158,9 @@ namespace Anabatic {
cmess2 << Dots::asString ( " - Antenna gate maximum WL" , DbU::getValueString(etesian->getAntennaGateMaxWL()) ) << endl;
cmess2 << Dots::asString ( " - Antenna diode maximum WL" , DbU::getValueString(etesian->getAntennaDiodeMaxWL()) ) << endl;
cmess2 << Dots::asString ( " - Antenna segment maximum WL", DbU::getValueString(segmentMaxWL) ) << endl;
cmess2 << Dots::asInt ( " - Total needed diodes", total ) << endl;
cmess2 << Dots::asInt ( " - Failed to allocate" , failed ) << endl;
cmess2 << Dots::asPercentage( " - Success ratio" , (float)(total-failed)/(float)total ) << endl;
cmess1 << Dots::asInt ( " - Total needed diodes", total ) << endl;
cmess1 << Dots::asInt ( " - Failed to allocate" , failed ) << endl;
cmess1 << Dots::asPercentage( " - Success ratio" , (float)(total-failed)/(float)total ) << endl;

stopMeasures();
printMeasures( "antennas" );
Expand Down
102 changes: 56 additions & 46 deletions anabatic/src/AutoHorizontal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,11 @@ namespace Anabatic {
void AutoHorizontal::setDuSource ( DbU::Unit du )
{
_horizontal->setDxSource(du);
if (du > 0)
cerr << Warning( "AutoHorizontal::setDuSource(): Positive du=%s (should always be negative)\n"
" On %s"
, DbU::getValueString(du).c_str()
, getString(this).c_str() ) << endl;
if (abs(du) > getPitch())
cerr << Warning( "AutoHorizontal::setDuSource(): Suspiciously big du=%s (should not exceed routing pitch %s)\n"
" On %s"
Expand All @@ -146,6 +151,11 @@ namespace Anabatic {
void AutoHorizontal::setDuTarget ( DbU::Unit du )
{
_horizontal->setDxTarget(du);
if (du < 0)
cerr << Warning( "AutoHorizontal::setDuTarget(): Negative du=%s (should always be positive)\n"
" On %s"
, DbU::getValueString(du).c_str()
, getString(this).c_str() ) << endl;
if (abs(du) > getPitch())
cerr << Warning( "AutoHorizontal::setDuTarget(): Suspiciously big du=%s (should not exceed routing pitch %s)\n"
" On %s"
Expand Down Expand Up @@ -538,16 +548,16 @@ namespace Anabatic {
}


void AutoHorizontal::updatePositions ()
{
_sourcePosition = getSourceU() - getExtensionCap(Flags::Source);
_targetPosition = getTargetU() + getExtensionCap(Flags::Target);
if (isNonPref()) {
DbU::Unit halfCap = getExtensionCap( Flags::NoFlags ) -1;
_sourcePosition -= halfCap;
_targetPosition += halfCap;
}
}
// void AutoHorizontal::updatePositions ()
// {
// _sourcePosition = getSourceU() - getExtensionCap(Flags::Source);
// _targetPosition = getTargetU() + getExtensionCap(Flags::Target);
// if (isNonPref()) {
// DbU::Unit halfCap = getExtensionCap( Flags::NoFlags ) -1;
// _sourcePosition -= halfCap;
// _targetPosition += halfCap;
// }
// }


void AutoHorizontal::updateNativeConstraints ()
Expand All @@ -563,42 +573,42 @@ namespace Anabatic {
}


bool AutoHorizontal::checkPositions () const
{
bool coherency = true;
DbU::Unit sourcePosition = _horizontal->getSource()->getX() - getExtensionCap(Flags::Source);
DbU::Unit targetPosition = _horizontal->getTarget()->getX() + getExtensionCap(Flags::Target);
if (isNonPref()) {
DbU::Unit halfCap = getExtensionCap( Flags::NoFlags ) -1;
sourcePosition -= halfCap;
targetPosition += halfCap;
}

if ( _sourcePosition != sourcePosition ) {
cerr << "extensionCap: " << DbU::getValueString(getExtensionCap(Flags::Source)) << endl;
cerr << "ppitch: " << DbU::getValueString(getPPitch()) << endl;
cerr << "via width: " << DbU::getValueString(Session::getViaWidth(getLayer())) << endl;
cerr << Error ( "%s\n Source position incoherency: "
"shadow: %s, real: %s."
, _getString().c_str()
, DbU::getValueString(_sourcePosition).c_str()
, DbU::getValueString( sourcePosition).c_str()
) << endl;
coherency = false;
}

if ( _targetPosition != targetPosition ) {
cerr << Error ( "%s\n Target position incoherency: "
"shadow: %s, real: %s."
, _getString().c_str()
, DbU::getValueString(_targetPosition).c_str()
, DbU::getValueString( targetPosition).c_str()
) << endl;
coherency = false;
}

return coherency;
}
// bool AutoHorizontal::checkPositions () const
// {
// bool coherency = true;
// DbU::Unit sourcePosition = _horizontal->getSource()->getX() - getExtensionCap(Flags::Source);
// DbU::Unit targetPosition = _horizontal->getTarget()->getX() + getExtensionCap(Flags::Target);
// if (isNonPref()) {
// DbU::Unit halfCap = getExtensionCap( Flags::NoFlags ) -1;
// sourcePosition -= halfCap;
// targetPosition += halfCap;
// }

// if ( _sourcePosition != sourcePosition ) {
// cerr << "extensionCap: " << DbU::getValueString(getExtensionCap(Flags::Source)) << endl;
// cerr << "ppitch: " << DbU::getValueString(getPPitch()) << endl;
// cerr << "via width: " << DbU::getValueString(Session::getViaWidth(getLayer())) << endl;
// cerr << Error ( "%s\n Source position incoherency: "
// "shadow: %s, real: %s."
// , _getString().c_str()
// , DbU::getValueString(_sourcePosition).c_str()
// , DbU::getValueString( sourcePosition).c_str()
// ) << endl;
// coherency = false;
// }

// if ( _targetPosition != targetPosition ) {
// cerr << Error ( "%s\n Target position incoherency: "
// "shadow: %s, real: %s."
// , _getString().c_str()
// , DbU::getValueString(_targetPosition).c_str()
// , DbU::getValueString( targetPosition).c_str()
// ) << endl;
// coherency = false;
// }

// return coherency;
// }


bool AutoHorizontal::checkConstraints () const
Expand Down
Loading
Loading