write_timing_model -library_name
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
2f0f8cc3bd
commit
28c8185204
BIN
doc/OpenSTA.odt
BIN
doc/OpenSTA.odt
Binary file not shown.
BIN
doc/OpenSTA.pdf
BIN
doc/OpenSTA.pdf
Binary file not shown.
|
|
@ -1268,7 +1268,8 @@ public:
|
||||||
PowerResult &result);
|
PowerResult &result);
|
||||||
PwrActivity findClkedActivity(const Pin *pin);
|
PwrActivity findClkedActivity(const Pin *pin);
|
||||||
|
|
||||||
void writeTimingModel(const char *cell_name,
|
void writeTimingModel(const char *lib_name,
|
||||||
|
const char *cell_name,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
const Corner *corner);
|
const Corner *corner);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,11 +62,12 @@ MakeTimingModel::~MakeTimingModel()
|
||||||
}
|
}
|
||||||
|
|
||||||
LibertyLibrary *
|
LibertyLibrary *
|
||||||
MakeTimingModel::makeTimingModel(const char *cell_name,
|
MakeTimingModel::makeTimingModel(const char *lib_name,
|
||||||
|
const char *cell_name,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
{
|
{
|
||||||
tbl_template_index_ = 1;
|
tbl_template_index_ = 1;
|
||||||
makeLibrary(cell_name, filename);
|
makeLibrary(lib_name, filename);
|
||||||
makeCell(cell_name, filename);
|
makeCell(cell_name, filename);
|
||||||
makePorts();
|
makePorts();
|
||||||
|
|
||||||
|
|
@ -84,10 +85,10 @@ MakeTimingModel::makeTimingModel(const char *cell_name,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MakeTimingModel::makeLibrary(const char *cell_name,
|
MakeTimingModel::makeLibrary(const char *lib_name,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
{
|
{
|
||||||
library_ = network_->makeLibertyLibrary(cell_name, filename);
|
library_ = network_->makeLibertyLibrary(lib_name, filename);
|
||||||
LibertyLibrary *default_lib = network_->defaultLibertyLibrary();
|
LibertyLibrary *default_lib = network_->defaultLibertyLibrary();
|
||||||
*library_->units()->timeUnit() = *default_lib->units()->timeUnit();
|
*library_->units()->timeUnit() = *default_lib->units()->timeUnit();
|
||||||
*library_->units()->capacitanceUnit() = *default_lib->units()->capacitanceUnit();
|
*library_->units()->capacitanceUnit() = *default_lib->units()->capacitanceUnit();
|
||||||
|
|
|
||||||
|
|
@ -49,11 +49,12 @@ public:
|
||||||
MakeTimingModel(const Corner *corner,
|
MakeTimingModel(const Corner *corner,
|
||||||
Sta *sta);
|
Sta *sta);
|
||||||
~MakeTimingModel();
|
~MakeTimingModel();
|
||||||
LibertyLibrary *makeTimingModel(const char *cell_name,
|
LibertyLibrary *makeTimingModel(const char *lib_name,
|
||||||
|
const char *cell_name,
|
||||||
const char *filename);
|
const char *filename);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void makeLibrary(const char *cell_name,
|
void makeLibrary(const char *lib_name,
|
||||||
const char *filename);
|
const char *filename);
|
||||||
void makeCell(const char *cell_name,
|
void makeCell(const char *cell_name,
|
||||||
const char *filename);
|
const char *filename);
|
||||||
|
|
|
||||||
|
|
@ -5567,12 +5567,14 @@ Sta::equivCells(LibertyCell *cell)
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void
|
void
|
||||||
Sta::writeTimingModel(const char *cell_name,
|
Sta::writeTimingModel(const char *lib_name,
|
||||||
|
const char *cell_name,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
const Corner *corner)
|
const Corner *corner)
|
||||||
{
|
{
|
||||||
MakeTimingModel maker(corner, this);
|
MakeTimingModel maker(corner, this);
|
||||||
LibertyLibrary *library = maker.makeTimingModel(cell_name, filename);
|
LibertyLibrary *library = maker.makeTimingModel(lib_name, cell_name,
|
||||||
|
filename);
|
||||||
writeLiberty(library, filename, this);
|
writeLiberty(library, filename, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1033,22 +1033,29 @@ proc worst_clock_skew { args } {
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
define_cmd_args "write_timing_model" {[-corner corner] \
|
define_cmd_args "write_timing_model" {[-corner corner] \
|
||||||
|
[-library_name lib_name]\
|
||||||
[-cell_name cell_name]\
|
[-cell_name cell_name]\
|
||||||
filename}
|
filename}
|
||||||
|
|
||||||
proc write_timing_model { args } {
|
proc write_timing_model { args } {
|
||||||
parse_key_args "write_timing_model" args \
|
parse_key_args "write_timing_model" args \
|
||||||
keys {-cell_name -corner} flags {}
|
keys {-library_name -cell_name -corner} flags {}
|
||||||
check_argc_eq1 "write_timing_model" $args
|
check_argc_eq1 "write_timing_model" $args
|
||||||
|
|
||||||
set filename [lindex $args 0]
|
set filename [file nativename [lindex $args 0]]
|
||||||
if { [info exists keys(-cell_name)] } {
|
if { [info exists keys(-cell_name)] } {
|
||||||
set cell_name $keys(-cell_name)
|
set cell_name $keys(-cell_name)
|
||||||
} else {
|
} else {
|
||||||
set cell_name [get_name [[top_instance] cell]]
|
set cell_name [get_name [[top_instance] cell]]
|
||||||
}
|
}
|
||||||
|
if { [info exists keys(-library_name)] } {
|
||||||
|
set lib_name $keys(-library_name)
|
||||||
|
} else {
|
||||||
|
set lib_name $cell_name
|
||||||
|
}
|
||||||
set corner [parse_corner keys]
|
set corner [parse_corner keys]
|
||||||
write_timing_model_cmd $cell_name [file nativename $filename] $corner
|
write_timing_model_cmd $lib_name $cell_name $filename $corner
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
|
|
||||||
|
|
@ -5044,11 +5044,12 @@ write_path_spice_cmd(PathRef *path,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
write_timing_model_cmd(const char *cell_name,
|
write_timing_model_cmd(const char *lib_name,
|
||||||
|
const char *cell_name,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
const Corner *corner)
|
const Corner *corner)
|
||||||
{
|
{
|
||||||
Sta::sta()->writeTimingModel(cell_name, filename, corner);
|
Sta::sta()->writeTimingModel(lib_name, cell_name, filename, corner);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue