write_timing_model -library_name

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2022-08-22 10:55:11 -07:00
parent 2f0f8cc3bd
commit 28c8185204
8 changed files with 27 additions and 14 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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);

View File

@ -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();

View File

@ -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);

View File

@ -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);
} }

View File

@ -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
} }
################################################################ ################################################################

View File

@ -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);
} }
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////