caravel/signoff/caravel_clocking/openlane-signoff/lib/caravel_clocking.lib

514 lines
15 KiB
Plaintext

library (caravel_clocking) {
comment : "";
delay_model : table_lookup;
simulation : false;
capacitive_load_unit (1,pF);
leakage_power_unit : 1pW;
current_unit : "1A";
pulling_resistance_unit : "1kohm";
time_unit : "1ns";
voltage_unit : "1v";
library_features(report_delay_calculation);
input_threshold_pct_rise : 50;
input_threshold_pct_fall : 50;
output_threshold_pct_rise : 50;
output_threshold_pct_fall : 50;
slew_lower_threshold_pct_rise : 20;
slew_lower_threshold_pct_fall : 20;
slew_upper_threshold_pct_rise : 80;
slew_upper_threshold_pct_fall : 80;
slew_derate_from_library : 1.0;
nom_process : 1.0;
nom_temperature : 25.0;
nom_voltage : 1.80;
lu_table_template(template_1) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00232, 0.01077, 0.05000, 0.23208, 1.07722, 5.00000");
}
lu_table_template(template_10) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_11) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00232, 0.01077, 0.05000, 0.23208, 1.07722, 5.00000");
}
lu_table_template(template_12) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00232, 0.01077, 0.05000, 0.23208, 1.07722, 5.00000");
}
lu_table_template(template_13) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_14) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_15) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_16) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_17) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_18) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_19) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_2) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00232, 0.01077, 0.05000, 0.23208, 1.07722, 5.00000");
}
lu_table_template(template_20) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_21) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_22) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_3) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_4) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_5) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_6) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_7) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_8) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_9) {
variable_1 : total_output_net_capacitance;
index_1 ("0.00050, 0.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
type ("sel") {
base_type : array;
data_type : bit;
bit_width : 3;
bit_from : 2;
bit_to : 0;
}
type ("sel2") {
base_type : array;
data_type : bit;
bit_width : 3;
bit_from : 2;
bit_to : 0;
}
cell ("caravel_clocking") {
pin("core_clk") {
direction : output;
capacitance : 0.2094;
timing() {
related_pin : "ext_clk";
timing_type : rising_edge;
cell_rise(template_3) {
values("1.66101,1.66289,1.66932,1.68895,1.74717,1.94899,2.70950");
}
rise_transition(template_3) {
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40936,1.50414");
}
cell_fall(template_4) {
values("-0.11201,-0.11030,-0.10445,-0.08790,-0.04459,0.08258,0.54403");
}
fall_transition(template_4) {
values("0.02325,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
}
}
timing() {
related_pin : "ext_clk";
timing_type : falling_edge;
cell_rise(template_5) {
values("-0.15692,-0.15505,-0.14862,-0.12898,-0.07076,0.13106,0.89157");
}
rise_transition(template_5) {
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40936,1.50414");
}
cell_fall(template_6) {
values("2.99607,2.99779,3.00364,3.02018,3.06350,3.19066,3.65212");
}
fall_transition(template_6) {
values("0.02325,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
}
}
timing() {
related_pin : "core_clk";
timing_type : rising_edge;
cell_rise(template_7) {
values("1.66101,1.66289,1.66932,1.68895,1.74717,1.94899,2.70950");
}
rise_transition(template_7) {
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40936,1.50414");
}
cell_fall(template_8) {
values("-0.11201,-0.11030,-0.10445,-0.08790,-0.04459,0.08258,0.54403");
}
fall_transition(template_8) {
values("0.02325,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
}
}
timing() {
related_pin : "core_clk";
timing_type : falling_edge;
cell_rise(template_9) {
values("-0.15692,-0.15505,-0.14862,-0.12898,-0.07076,0.13106,0.89157");
}
rise_transition(template_9) {
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40936,1.50414");
}
cell_fall(template_10) {
values("15.49607,15.49779,15.50364,15.52018,15.56350,15.69066,16.15211");
}
fall_transition(template_10) {
values("0.02325,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
}
}
}
pin("ext_clk") {
direction : input;
capacitance : 0.0113;
}
pin("ext_clk_sel") {
direction : input;
capacitance : 0.0038;
timing() {
related_pin : "pll_clk";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.27545");
}
fall_constraint(scalar) {
values("-0.59870");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_rising;
rise_constraint(scalar) {
values("-0.06985");
}
fall_constraint(scalar) {
values("0.85359");
}
}
}
pin("ext_reset") {
direction : input;
capacitance : 0.0043;
timing() {
related_pin : "ext_clk";
timing_type : hold_rising;
rise_constraint(scalar) {
values("-5.52988");
}
fall_constraint(scalar) {
values("-6.42033");
}
}
timing() {
related_pin : "ext_clk";
timing_type : setup_rising;
rise_constraint(scalar) {
values("5.59236");
}
fall_constraint(scalar) {
values("6.56985");
}
}
}
pin("pll_clk") {
direction : input;
capacitance : 0.0217;
}
pin("pll_clk90") {
direction : input;
capacitance : 0.0155;
}
pin("resetb") {
direction : input;
capacitance : 0.0044;
timing() {
related_pin : "ext_clk";
timing_sense : negative_unate;
timing_type : hold_falling;
rise_constraint(scalar) {
values("2.67088");
}
}
timing() {
related_pin : "ext_clk";
timing_sense : negative_unate;
timing_type : setup_falling;
rise_constraint(scalar) {
values("-1.83114");
}
}
timing() {
related_pin : "pll_clk";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.56148");
}
fall_constraint(scalar) {
values("-0.63541");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_rising;
rise_constraint(scalar) {
values("0.41085");
}
fall_constraint(scalar) {
values("1.06792");
}
}
timing() {
related_pin : "pll_clk";
timing_sense : negative_unate;
timing_type : hold_falling;
rise_constraint(scalar) {
values("1.58562");
}
}
timing() {
related_pin : "pll_clk";
timing_sense : negative_unate;
timing_type : setup_falling;
rise_constraint(scalar) {
values("-1.02788");
}
}
timing() {
related_pin : "pll_clk90";
timing_sense : positive_unate;
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.53892");
}
}
timing() {
related_pin : "pll_clk90";
timing_sense : positive_unate;
timing_type : setup_rising;
rise_constraint(scalar) {
values("0.15517");
}
}
timing() {
related_pin : "pll_clk90";
timing_sense : negative_unate;
timing_type : hold_falling;
rise_constraint(scalar) {
values("1.56719");
}
}
timing() {
related_pin : "pll_clk90";
timing_sense : negative_unate;
timing_type : setup_falling;
rise_constraint(scalar) {
values("-0.70527");
}
}
}
pin("resetb_sync") {
direction : output;
capacitance : 0.2000;
timing() {
related_pin : "ext_reset";
timing_sense : negative_unate;
timing_type : combinational;
cell_rise(template_1) {
values("1.40631,1.40883,1.41875,1.45386,1.59465,2.23564,5.19283");
}
rise_transition(template_1) {
values("0.02247,0.02443,0.03316,0.07268,0.26583,1.18279,5.39656");
}
cell_fall(template_2) {
values("0.50304,0.50506,0.51263,0.53575,0.60447,0.87618,2.12327");
}
fall_transition(template_2) {
values("0.01885,0.02014,0.02505,0.04329,0.11876,0.48570,2.21348");
}
}
timing() {
related_pin : "ext_clk";
timing_type : falling_edge;
cell_rise(template_11) {
values("16.24807,16.25059,16.26051,16.29562,16.43641,17.07740,20.03459");
}
rise_transition(template_11) {
values("0.02247,0.02443,0.03316,0.07268,0.26583,1.18279,5.39656");
}
cell_fall(template_12) {
values("16.26107,16.26309,16.27067,16.29379,16.36251,16.63421,17.88131");
}
fall_transition(template_12) {
values("0.01885,0.02014,0.02505,0.04329,0.11876,0.48570,2.21348");
}
}
}
pin("user_clk") {
direction : output;
capacitance : 0.2000;
timing() {
related_pin : "ext_clk";
timing_type : rising_edge;
cell_rise(template_13) {
values("1.54263,1.54451,1.55093,1.57042,1.62858,1.83060,2.59730");
}
rise_transition(template_13) {
values("0.02439,0.02587,0.03120,0.05053,0.12314,0.40892,1.50596");
}
cell_fall(template_14) {
values("-0.10799,-0.10631,-0.10034,-0.08375,-0.04057,0.08664,0.54821");
}
fall_transition(template_14) {
values("0.02337,0.02442,0.02828,0.04105,0.08437,0.25148,0.91304");
}
}
timing() {
related_pin : "ext_clk";
timing_type : falling_edge;
cell_rise(template_15) {
values("-0.15037,-0.14850,-0.14207,-0.12258,-0.06442,0.13760,0.90429");
}
rise_transition(template_15) {
values("0.02439,0.02587,0.03120,0.05053,0.12314,0.40892,1.50596");
}
cell_fall(template_16) {
values("15.35966,15.36134,15.36731,15.38390,15.42708,15.55429,16.01586");
}
fall_transition(template_16) {
values("0.02337,0.02442,0.02828,0.04105,0.08437,0.25148,0.91304");
}
}
timing() {
related_pin : "pll_clk";
timing_type : rising_edge;
cell_rise(template_17) {
values("2.11329,2.11516,2.12159,2.14108,2.19924,2.40126,3.16795");
}
rise_transition(template_17) {
values("0.02439,0.02587,0.03120,0.05053,0.12314,0.40892,1.50596");
}
cell_fall(template_18) {
values("2.45140,2.45308,2.45905,2.47564,2.51882,2.64603,3.10759");
}
fall_transition(template_18) {
values("0.02337,0.02442,0.02828,0.04105,0.08437,0.25148,0.91304");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : rising_edge;
cell_rise(template_19) {
values("2.51398,2.51585,2.52228,2.54177,2.59993,2.80195,3.56864");
}
rise_transition(template_19) {
values("0.02439,0.02587,0.03120,0.05053,0.12314,0.40892,1.50596");
}
cell_fall(template_20) {
values("2.51791,2.51959,2.52555,2.54215,2.58533,2.71254,3.17410");
}
fall_transition(template_20) {
values("0.02337,0.02442,0.02828,0.04105,0.08437,0.25148,0.91304");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : falling_edge;
cell_rise(template_21) {
values("6.81800,6.81987,6.82630,6.84579,6.90395,7.10597,7.87266");
}
rise_transition(template_21) {
values("0.02439,0.02587,0.03120,0.05053,0.12314,0.40892,1.50596");
}
cell_fall(template_22) {
values("6.81403,6.81570,6.82167,6.83826,6.88145,7.00866,7.47022");
}
fall_transition(template_22) {
values("0.02337,0.02442,0.02828,0.04105,0.08437,0.25148,0.91304");
}
}
}
pin("VPWR") {
direction : input;
capacitance : 0.0002;
}
pin("VGND") {
direction : input;
capacitance : 0.0002;
}
bus("sel") {
bus_type : sel;
direction : input;
capacitance : 0.0000;
pin("sel[2]") {
direction : input;
capacitance : 0.0042;
}
pin("sel[1]") {
direction : input;
capacitance : 0.0043;
}
pin("sel[0]") {
direction : input;
capacitance : 0.0040;
}
}
bus("sel2") {
bus_type : sel2;
direction : input;
capacitance : 0.0000;
pin("sel2[2]") {
direction : input;
capacitance : 0.0041;
}
pin("sel2[1]") {
direction : input;
capacitance : 0.0041;
}
pin("sel2[0]") {
direction : input;
capacitance : 0.0041;
}
}
}
}