Various typos correction (courtesy of G. Gouvine).

This commit is contained in:
Jean-Paul Chaput 2019-07-30 13:13:57 +02:00
parent f528cdea4c
commit d69327d9a9
17 changed files with 38 additions and 37 deletions

View File

@ -5,20 +5,19 @@
Coriolis README Coriolis README
=============== ===============
Coriolis is a free database, placement tool and routing tool for VLSI design.
Coriolis is a free database, placement tool and routing tool for VLSI designs.
Purpose Purpose
======= =======
Coriolis provides several tools to perform the layout of VLSI circuits. Its Coriolis provides several tools to perform the layout of VLSI circuits. Its
main components are the Hurricane database, the Etesian placer and the Kite main components are the Hurricane database, the Etesian placer and the Katana
router, but other tools can use the Hurricane database and the parsers router, but other tools can use the Hurricane database and the parsers
provided. provided.
The user interface <cgt> is the prefered way to use Coriolis, but all The user interface <cgt> is the prefered way to use Coriolis, but all
Coriolis tools are Python modules and thus scriptables. Coriolis tools are Python modules and thus scriptable.
Documentation Documentation
@ -33,7 +32,7 @@ The documentation of the latest *stable* version is also
available online. It may be quite outdated from the *devel* available online. It may be quite outdated from the *devel*
version. version.
https://soc-extras.lip6.fr/en/coriolis/coriolis2-users-guide/ https://www-soc.lip6.fr/sesi-docs/coriolis2-docs/coriolis2/en/latex/users-guide/UsersGuide.pdf
Building Coriolis Building Coriolis
@ -85,8 +84,8 @@ The Coriolis main interface can be launched with the command: ::
ego@home:~: ~/coriolis-2.x/<OS>.<DISTRIB>/Release.Shared/install/bin/coriolis ego@home:~: ~/coriolis-2.x/<OS>.<DISTRIB>/Release.Shared/install/bin/coriolis
The ``coriolis`` script is tasked to guess it's location and setup appropriatly The ``coriolis`` script detects its location and setups the UNIX
the UNIX environment, then lauch ``cgt`` (or *any* command, with the environment appropriately, then lauches ``cgt`` (or *any* command, with the
``--run=<COMMAND>`` option). ``--run=<COMMAND>`` option).
Conversely, you can setup the current shell environement for Coriolis by Conversely, you can setup the current shell environement for Coriolis by

View File

@ -380,7 +380,7 @@ Occurrence CHyperNetDriverPortOccurrences::Locator::getElement() const
{ {
if (_pinLocator.isValid()) if (_pinLocator.isValid())
return _pinLocator.getElement(); return _pinLocator.getElement();
return _plugOccurrenceLocator.getElement(); return _plugOccurrenceLocator.getElement();
} }
Locator<Occurrence>* CHyperNetDriverPortOccurrences::Locator::getClone() const Locator<Occurrence>* CHyperNetDriverPortOccurrences::Locator::getClone() const

View File

@ -537,13 +537,13 @@ extern "C" {
, { "addCellGauge" , (PyCFunction)PyAllianceFramework_addCellGauge , METH_VARARGS , { "addCellGauge" , (PyCFunction)PyAllianceFramework_addCellGauge , METH_VARARGS
, "Add a new cell gauge." } , "Add a new cell gauge." }
, { "getCellGauge" , (PyCFunction)PyAllianceFramework_getCellGauge , METH_VARARGS , { "getCellGauge" , (PyCFunction)PyAllianceFramework_getCellGauge , METH_VARARGS
, "Get a cell gauge (whithout a name, return the default)." } , "Get a cell gauge (without a name, return the default)." }
, { "matchCellGauge" , (PyCFunction)PyAllianceFramework_matchCellGauge , METH_VARARGS , { "matchCellGauge" , (PyCFunction)PyAllianceFramework_matchCellGauge , METH_VARARGS
, "Find the first CellGauge comptible with width and height." } , "Find the first CellGauge comptible with width and height." }
, { "addRoutingGauge" , (PyCFunction)PyAllianceFramework_addRoutingGauge , METH_VARARGS , { "addRoutingGauge" , (PyCFunction)PyAllianceFramework_addRoutingGauge , METH_VARARGS
, "Add a new routing gauge." } , "Add a new routing gauge." }
, { "getRoutingGauge" , (PyCFunction)PyAllianceFramework_getRoutingGauge , METH_VARARGS , { "getRoutingGauge" , (PyCFunction)PyAllianceFramework_getRoutingGauge , METH_VARARGS
, "Get a routing gauge (whithout a name, return the default)." } , "Get a routing gauge (without a name, return the default)." }
, { "setRoutingGauge" , (PyCFunction)PyAllianceFramework_setRoutingGauge , METH_VARARGS , { "setRoutingGauge" , (PyCFunction)PyAllianceFramework_setRoutingGauge , METH_VARARGS
, "Select the default routing gauge." } , "Select the default routing gauge." }
//, { "destroy" , (PyCFunction)PyAllianceFramework_destroy , METH_NOARGS //, { "destroy" , (PyCFunction)PyAllianceFramework_destroy , METH_NOARGS

View File

@ -335,7 +335,7 @@ def ScriptMain ( **kw ):
if __name__ == '__main__': if __name__ == '__main__':
parser = optparse.OptionParser() parser = optparse.OptionParser()
parser.add_option( '-c', '--cell', type='string', dest='cell' , help='The name of the chip to build, whithout extension.') parser.add_option( '-c', '--cell', type='string', dest='cell' , help='The name of the chip to build, without extension.')
parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.') parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.')
parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose', help='Second level of verbosity.') parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose', help='Second level of verbosity.')
(options, args) = parser.parse_args() (options, args) = parser.parse_args()

View File

@ -274,6 +274,7 @@ namespace Etesian {
Super::_postCreate(); Super::_postCreate();
// Ugly: Name based detection of ISPD benchmarks. // Ugly: Name based detection of ISPD benchmarks.
// Maybe base it on whether the imported library is in Bookshelf format or not?
if (getString(getCell()->getName()).substr(0,7) == "bigblue") { if (getString(getCell()->getName()).substr(0,7) == "bigblue") {
cmess2 << " o ISPD benchmark <" << getCell()->getName() cmess2 << " o ISPD benchmark <" << getCell()->getName()
<< ">, no feed cells will be added." << endl; << ">, no feed cells will be added." << endl;
@ -649,8 +650,6 @@ namespace Etesian {
_placementLB.positions_ = positions; _placementLB.positions_ = positions;
_placementLB.orientations_ = orientations; _placementLB.orientations_ = orientations;
_placementUB = _placementLB; _placementUB = _placementLB;
//cerr << "Coloquinte cell height: " << _circuit.get_cell(0).size.y << endl;
} }
@ -831,6 +830,7 @@ namespace Etesian {
int_t sliceHeight = getSliceHeight() / getHorizontalPitch(); int_t sliceHeight = getSliceHeight() / getHorizontalPitch();
roughLegalize(sliceHeight, options); roughLegalize(sliceHeight, options);
// TODO: for uniform density distribution, add some margin to the cell sizes so we don't disrupt it during detailed placement
for ( int i=0; i<iterations; ++i ){ for ( int i=0; i<iterations; ++i ){
ostringstream label; ostringstream label;
@ -838,7 +838,7 @@ namespace Etesian {
label << " [" << setw(3) << setfill('0') << i << "]"; label << " [" << setw(3) << setfill('0') << i << "]";
optimize_x_orientations( _circuit, _placementUB ); // Don't disrupt VDD/VSS connections in a row optimize_x_orientations( _circuit, _placementUB ); // Don't disrupt VDD/VSS connections in a row
_progressReport1(label.str()+" Oriented ......." ); _progressReport1(label.str() + " Oriented ......." );
if(options & UpdateDetailed) if(options & UpdateDetailed)
_updatePlacement( _placementUB ); _updatePlacement( _placementUB );

View File

@ -176,9 +176,10 @@ namespace Hurricane {
void TransistorLayer::setExtentionWidth ( const BasicLayer* layer, DbU::Unit width ) void TransistorLayer::setExtentionWidth ( const BasicLayer* layer, DbU::Unit width )
{ {
for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) { for ( size_t i=0 ; i<_basicLayers.size() ; i++ ) {
if ( _basicLayers[i] == layer ) if ( _basicLayers[i] == layer ) {
_extentionWidths[i] = width; _extentionWidths[i] = width;
_maximalExtentionWidth = max ( _maximalExtentionWidth, width ); _maximalExtentionWidth = max ( _maximalExtentionWidth, width );
}
} }
} }

View File

@ -828,7 +828,7 @@ int main ( int argc, char *argv[] )
, "Set the level of trace, trace messages with a level superior to " , "Set the level of trace, trace messages with a level superior to "
"<arg> will be printed on <stderr>." ) "<arg> will be printed on <stderr>." )
( "cell,c" , poptions::value<string>() ( "cell,c" , poptions::value<string>()
, "The name of the cell to load, whithout extension." ) , "The name of the cell to load, without extension." )
( "knik,k" , poptions::bool_switch(&knikSimple)->default_value(false) ( "knik,k" , poptions::bool_switch(&knikSimple)->default_value(false)
, "Perform a simple routing pass.") , "Perform a simple routing pass.")
( "KNIK,K" , poptions::bool_switch(&knikOverflow)->default_value(false) ( "KNIK,K" , poptions::bool_switch(&knikOverflow)->default_value(false)

View File

@ -48,5 +48,5 @@ AutoHorizontal/AutoVertical
* The local ``slacken()`` methods are, in fact AutoSegment::makeTopologyDogLeg(). * The local ``slacken()`` methods are, in fact AutoSegment::makeTopologyDogLeg().
* We now must be able to create AutoHorizontal/AutoContact whithout suppling * We now must be able to create AutoHorizontal/AutoContact without suppling
the anchor AutoContacts. Allows more supple building constructions. the anchor AutoContacts. Allows more supple building constructions.

View File

@ -243,7 +243,7 @@ namespace {
//! function: //! function:
//! <ul> //! <ul>
//! <li>One global: nonsensical because there also must be a terminal. //! <li>One global: nonsensical because there also must be a terminal.
//! <li>Two aligned globals: in that case we do a straight wire whithout //! <li>Two aligned globals: in that case we do a straight wire without
//! any AutoContact (handled by the source/target of the wire). //! any AutoContact (handled by the source/target of the wire).
//! </ul> //! </ul>
//! //!

View File

@ -68,7 +68,7 @@ namespace Katana {
if ( _locator.isValid() ) { if ( _locator.isValid() ) {
_element = Session::lookup( _locator.getElement()->getCanonical(bounds)->base() ); _element = Session::lookup( _locator.getElement()->getCanonical(bounds)->base() );
if ( !_element ) { if ( !_element ) {
cerr << Bug("Canonical segment whithout TrackElement.") << endl; cerr << Bug("Canonical segment without TrackElement.") << endl;
continue; continue;
} }

View File

@ -68,7 +68,7 @@ namespace Kite {
if ( _locator.isValid() ) { if ( _locator.isValid() ) {
_element = Session::lookup( _locator.getElement()->getCanonical(bounds)->base() ); _element = Session::lookup( _locator.getElement()->getCanonical(bounds)->base() );
if ( !_element ) { if ( !_element ) {
cerr << Bug("Canonical segment whithout TrackElement.") << endl; cerr << Bug("Canonical segment without TrackElement.") << endl;
continue; continue;
} }

View File

@ -97,7 +97,7 @@ struct SegRecord {
struct NetSurfacesComp : public binary_function<const NetRecord, const NetRecord, bool> { struct NetSurfacesComp : public binary_function<const NetRecord, const NetRecord, bool> {
public: bool operator() ( const NetRecord &record1, const NetRecord &record2 ) const { public: bool operator() ( const NetRecord &record1, const NetRecord &record2 ) const {
if (record1._exArea < record2._exArea) return true; if (record1._exArea < record2._exArea) return true;
if (record1._exArea == record1._exArea) { if (record1._exArea == record2._exArea) {
if (getString(record1._net->getName()) < getString(record2._net->getName())) return true; if (getString(record1._net->getName()) < getString(record2._net->getName())) return true;
if (record1._net == record2._net) assert ( false ); if (record1._net == record2._net) assert ( false );
} }

View File

@ -106,9 +106,10 @@ void defiPath::clear() {
void defiPath::Destroy() { void defiPath::Destroy() {
if (keys_) if (keys_) {
free((char*)(keys_)); free((char*)(keys_));
keys_ = NULL; keys_ = NULL;
}
if (data_) { if (data_) {
clear(); clear();
free((char*)(data_)); free((char*)(data_));

View File

@ -52,10 +52,10 @@ if __name__ == '__main__':
parser = optparse.OptionParser(usage) parser = optparse.OptionParser(usage)
parser.add_option( '--no-init' , action='store_true', dest='noInit' , help='Do not load any initialization.') parser.add_option( '--no-init' , action='store_true', dest='noInit' , help='Do not load any initialization.')
parser.add_option( '-c', '--cell' , type='string' , dest='cell' , help='The name of the cell to load, whithout extension.') parser.add_option( '-c', '--cell' , type='string' , dest='cell' , help='The name of the cell to load, without extension.')
parser.add_option( '--acm-sigda-89' , type='string' , dest='acmSigdaName' , help='An ACM/SIGDA 89 bench name to load, whithout extension.') parser.add_option( '--acm-sigda-89' , type='string' , dest='acmSigdaName' , help='An ACM/SIGDA 89 bench name to load, without extension.')
parser.add_option( '--blif' , type='string' , dest='blifName' , help='A Blif (Yosys) design name to load, whithout extension.') parser.add_option( '--blif' , type='string' , dest='blifName' , help='A Blif (Yosys) design name to load, without extension.')
parser.add_option( '--ispd-05' , type='string' , dest='ispd05name' , help='An ISPD 05 bench (placement) name to load, whithout extension.') parser.add_option( '--ispd-05' , type='string' , dest='ispd05name' , help='An ISPD 05 bench (placement) name to load, without extension.')
parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.') parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.')
parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose' , help='Second level of verbosity.') parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose' , help='Second level of verbosity.')
parser.add_option( '-i', '--info' , action='store_true', dest='info' , help='Display lots of informational messages.') parser.add_option( '-i', '--info' , action='store_true', dest='info' , help='Display lots of informational messages.')

View File

@ -137,7 +137,7 @@ int main ( int argc, char *argv[] )
( "dump-measures,M" , bopts::bool_switch(&dumpMeasures)->default_value(false) ( "dump-measures,M" , bopts::bool_switch(&dumpMeasures)->default_value(false)
, "Dump statistical measurements on the disk.") , "Dump statistical measurements on the disk.")
( "cell,c" , bopts::value<string>() ( "cell,c" , bopts::value<string>()
, "The name of the cell to load, whithout extension." ) , "The name of the cell to load, without extension." )
( "save-design,s" , bopts::value<string>() ( "save-design,s" , bopts::value<string>()
, "Save the routed design.") , "Save the routed design.")
( "export-def" , bopts::bool_switch(&exportDef)->default_value(false) ( "export-def" , bopts::bool_switch(&exportDef)->default_value(false)
@ -145,9 +145,9 @@ int main ( int argc, char *argv[] )
( "import-def" , bopts::value<string>() ( "import-def" , bopts::value<string>()
, "Import the design in DEF format.") , "Import the design in DEF format.")
( "importk-ispd04-bk" , bopts::value<string>() ( "importk-ispd04-bk" , bopts::value<string>()
, "The name of the ISPD04 benchmark to import (Bookshelf .aux), whithout extension." ) , "The name of the ISPD04 benchmark to import (Bookshelf .aux), without extension." )
( "import-iccad04-def" , bopts::value<string>() ( "import-iccad04-def" , bopts::value<string>()
, "The name of the ICCAD04 benchmark to import (LEF/DEF), whithout extension." ) , "The name of the ICCAD04 benchmark to import (LEF/DEF), without extension." )
( "save-import" , bopts::bool_switch(&saveImport)->default_value(false) ( "save-import" , bopts::bool_switch(&saveImport)->default_value(false)
, "Save of the imported design immediatly after loading."); , "Save of the imported design immediatly after loading.");

View File

@ -102,10 +102,10 @@ if __name__ == '__main__':
parser = optparse.OptionParser(usage) parser = optparse.OptionParser(usage)
parser.add_option( '--no-init' , action='store_true', dest='noInit' , help='Do not load any initialization.') parser.add_option( '--no-init' , action='store_true', dest='noInit' , help='Do not load any initialization.')
parser.add_option( '-c', '--cell' , type='string' , dest='cell' , help='The name of the cell to load, whithout extension.') parser.add_option( '-c', '--cell' , type='string' , dest='cell' , help='The name of the cell to load, without extension.')
parser.add_option( '--acm-sigda-89' , type='string' , dest='acmSigdaName' , help='An ACM/SIGDA 89 bench name to load, whithout extension.') parser.add_option( '--acm-sigda-89' , type='string' , dest='acmSigdaName' , help='An ACM/SIGDA 89 bench name to load, without extension.')
parser.add_option( '--blif' , type='string' , dest='blifName' , help='A Blif (Yosys) design name to load, whithout extension.') parser.add_option( '--blif' , type='string' , dest='blifName' , help='A Blif (Yosys) design name to load, without extension.')
parser.add_option( '--ispd-05' , type='string' , dest='ispd05name' , help='An ISPD 05 bench (placement) name to load, whithout extension.') parser.add_option( '--ispd-05' , type='string' , dest='ispd05name' , help='An ISPD 05 bench (placement) name to load, without extension.')
parser.add_option( '--script' , type='string' , dest='script' , help='Run a Python or Stratus script.') parser.add_option( '--script' , type='string' , dest='script' , help='Run a Python or Stratus script.')
parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.') parser.add_option( '-v', '--verbose' , action='store_true', dest='verbose' , help='First level of verbosity.')
parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose' , help='Second level of verbosity.') parser.add_option( '-V', '--very-verbose' , action='store_true', dest='veryVerbose' , help='Second level of verbosity.')

View File

@ -659,10 +659,10 @@ namespace Bookshelf {
} }
if ( ordereds[0].empty() ) if ( ordereds[0].empty() )
throw Exception("Bookshelf::Parser(): .aux file do not contains <.nodes>."); throw Exception("Bookshelf::Parser(): .aux file does not contains <.nodes>.");
if ( ordereds[1].empty() ) if ( ordereds[1].empty() )
throw Exception("Bookshelf::Parser(): .aux file do not contains <.nets>."); throw Exception("Bookshelf::Parser(): .aux file does not contains <.nets>.");
for ( size_t iext=0 ; iext<5 ; ++iext ) { for ( size_t iext=0 ; iext<5 ; ++iext ) {
if ( ordereds[iext].empty() ) continue; if ( ordereds[iext].empty() ) continue;