caravel/lib/caravel_clocking.lib

677 lines
18 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.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
lu_table_template(template_10) {
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_11) {
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_12) {
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_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.00191, 0.00726, 0.02767, 0.10546, 0.40192, 1.53169");
}
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_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.00232, 0.01077, 0.05000, 0.23208, 1.07722, 5.00000");
}
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 : falling_edge;
cell_rise(template_1) {
values("-13.28561,-13.28373,-13.27730,-13.25767,-13.19945,-12.99762,-12.23708");
}
rise_transition(template_1) {
values("0.02433,0.02582,0.03117,0.05049,0.12302,0.40939,1.50434");
}
cell_fall(template_2) {
values("-10.81571,-10.81400,-10.80813,-10.79159,-10.74828,-10.62111,-10.15966");
}
fall_transition(template_2) {
values("0.02326,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
}
}
timing() {
related_pin : "ext_clk";
timing_type : rising_edge;
cell_rise(template_3) {
values("1.19763,1.19950,1.20594,1.22557,1.28379,1.48561,2.24616");
}
rise_transition(template_3) {
values("0.02433,0.02582,0.03117,0.05049,0.12302,0.40939,1.50434");
}
cell_fall(template_4) {
values("-0.11202,-0.11031,-0.10444,-0.08790,-0.04459,0.08258,0.54403");
}
fall_transition(template_4) {
values("0.02326,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
}
}
timing() {
related_pin : "core_clk";
timing_type : rising_edge;
cell_rise(template_5) {
values("1.19763,1.19950,1.20594,1.22557,1.28379,1.48561,2.24616");
}
rise_transition(template_5) {
values("0.02433,0.02582,0.03117,0.05049,0.12302,0.40939,1.50434");
}
cell_fall(template_6) {
values("-0.11202,-0.11031,-0.10444,-0.08790,-0.04459,0.08258,0.54403");
}
fall_transition(template_6) {
values("0.02326,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
}
}
timing() {
related_pin : "core_clk";
timing_type : falling_edge;
cell_rise(template_7) {
values("-12.65693,-12.65505,-12.64862,-12.62899,-12.57076,-12.36894,-11.60840");
}
rise_transition(template_7) {
values("0.02433,0.02582,0.03117,0.05049,0.12302,0.40939,1.50434");
}
cell_fall(template_8) {
values("1.68429,1.68600,1.69187,1.70841,1.75172,1.87889,2.34034");
}
fall_transition(template_8) {
values("0.02326,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.02150");
}
fall_constraint(scalar) {
values("0.00319");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_rising;
rise_constraint(scalar) {
values("0.11637");
}
fall_constraint(scalar) {
values("0.09388");
}
}
}
pin("ext_reset") {
direction : input;
capacitance : 0.0043;
timing() {
related_pin : "pll_clk";
timing_type : hold_rising;
rise_constraint(scalar) {
values("-0.27921");
}
fall_constraint(scalar) {
values("0.10560");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_rising;
rise_constraint(scalar) {
values("1.06807");
}
fall_constraint(scalar) {
values("1.12612");
}
}
timing() {
related_pin : "ext_clk";
timing_type : hold_falling;
fall_constraint(scalar) {
values("1.36428");
}
}
timing() {
related_pin : "ext_clk";
timing_type : setup_falling;
fall_constraint(scalar) {
values("-0.67456");
}
}
timing() {
related_pin : "pll_clk";
timing_type : hold_falling;
fall_constraint(scalar) {
values("0.01574");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_falling;
fall_constraint(scalar) {
values("0.70940");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : hold_rising;
fall_constraint(scalar) {
values("0.71263");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_rising;
fall_constraint(scalar) {
values("0.77865");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : hold_falling;
fall_constraint(scalar) {
values("0.03221");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_falling;
fall_constraint(scalar) {
values("0.71067");
}
}
}
pin("pll_clk") {
direction : input;
capacitance : 0.0205;
}
pin("pll_clk90") {
direction : input;
capacitance : 0.0164;
}
pin("porb") {
direction : input;
capacitance : 0.0037;
timing() {
related_pin : "pll_clk";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.15779");
}
fall_constraint(scalar) {
values("-0.29391");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_rising;
rise_constraint(scalar) {
values("1.06844");
}
fall_constraint(scalar) {
values("1.06704");
}
}
timing() {
related_pin : "ext_clk";
timing_type : hold_falling;
rise_constraint(scalar) {
values("1.41647");
}
}
timing() {
related_pin : "ext_clk";
timing_type : setup_falling;
rise_constraint(scalar) {
values("-0.73224");
}
}
timing() {
related_pin : "pll_clk";
timing_type : hold_falling;
rise_constraint(scalar) {
values("0.06792");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_falling;
rise_constraint(scalar) {
values("0.65172");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.76482");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_rising;
rise_constraint(scalar) {
values("0.72097");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : hold_falling;
rise_constraint(scalar) {
values("0.08440");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_falling;
rise_constraint(scalar) {
values("0.65299");
}
}
}
pin("resetb") {
direction : input;
capacitance : 0.0040;
timing() {
related_pin : "pll_clk";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.22336");
}
fall_constraint(scalar) {
values("-0.24088");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_rising;
rise_constraint(scalar) {
values("0.99597");
}
fall_constraint(scalar) {
values("1.03383");
}
}
timing() {
related_pin : "ext_clk";
timing_type : hold_falling;
rise_constraint(scalar) {
values("1.48204");
}
}
timing() {
related_pin : "ext_clk";
timing_type : setup_falling;
rise_constraint(scalar) {
values("-0.80471");
}
}
timing() {
related_pin : "pll_clk";
timing_type : hold_falling;
rise_constraint(scalar) {
values("0.13349");
}
}
timing() {
related_pin : "pll_clk";
timing_type : setup_falling;
rise_constraint(scalar) {
values("0.57924");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.83039");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_rising;
rise_constraint(scalar) {
values("0.64850");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : hold_falling;
rise_constraint(scalar) {
values("0.14997");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_falling;
rise_constraint(scalar) {
values("0.58052");
}
}
}
pin("resetb_sync") {
direction : output;
capacitance : 0.2000;
timing() {
related_pin : "ext_clk";
timing_type : falling_edge;
cell_rise(template_9) {
values("2.26354,2.26587,2.27541,2.30999,2.45006,3.08944,6.04212");
}
rise_transition(template_9) {
values("0.01893,0.02095,0.02999,0.07071,0.26573,1.18103,5.38149");
}
cell_fall(template_10) {
values("2.49102,2.49300,2.50064,2.52386,2.59262,2.86413,4.11151");
}
fall_transition(template_10) {
values("0.01882,0.02007,0.02507,0.04325,0.11874,0.48520,2.21294");
}
}
}
pin("user_clk") {
direction : output;
capacitance : 0.2000;
timing() {
related_pin : "pll_clk";
timing_type : rising_edge;
cell_rise(template_11) {
values("1.60877,1.61064,1.61707,1.63657,1.69473,1.89674,2.66296");
}
rise_transition(template_11) {
values("0.02438,0.02586,0.03120,0.05053,0.12314,0.40898,1.50597");
}
cell_fall(template_12) {
values("1.94967,1.95135,1.95733,1.97393,2.01711,2.14432,2.60586");
}
fall_transition(template_12) {
values("0.02337,0.02442,0.02828,0.04104,0.08437,0.25147,0.91312");
}
}
timing() {
related_pin : "ext_clk";
timing_type : falling_edge;
cell_rise(template_13) {
values("-12.65038,-12.64851,-12.64208,-12.62258,-12.56442,-12.36241,-11.59618");
}
rise_transition(template_13) {
values("0.02438,0.02586,0.03120,0.05053,0.12314,0.40898,1.50597");
}
cell_fall(template_14) {
values("1.52622,1.52790,1.53388,1.55047,1.59366,1.72086,2.18241");
}
fall_transition(template_14) {
values("0.02337,0.02442,0.02828,0.04104,0.08437,0.25147,0.91312");
}
}
timing() {
related_pin : "ext_clk";
timing_type : rising_edge;
cell_rise(template_15) {
values("1.05506,1.05693,1.06336,1.08286,1.14102,1.34303,2.10926");
}
rise_transition(template_15) {
values("0.02438,0.02586,0.03120,0.05053,0.12314,0.40898,1.50597");
}
cell_fall(template_16) {
values("-0.10801,-0.10633,-0.10034,-0.08375,-0.04056,0.08664,0.54819");
}
fall_transition(template_16) {
values("0.02337,0.02442,0.02828,0.04104,0.08437,0.25147,0.91312");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : rising_edge;
cell_rise(template_17) {
values("2.00640,2.00827,2.01470,2.03420,2.09236,2.29437,3.06060");
}
rise_transition(template_17) {
values("0.02438,0.02586,0.03120,0.05053,0.12314,0.40898,1.50597");
}
cell_fall(template_18) {
values("2.03397,2.03565,2.04164,2.05823,2.10142,2.22862,2.69017");
}
fall_transition(template_18) {
values("0.02337,0.02442,0.02828,0.04104,0.08437,0.25147,0.91312");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : falling_edge;
cell_rise(template_19) {
values("2.13142,2.13329,2.13972,2.15922,2.21739,2.41939,3.18562");
}
rise_transition(template_19) {
values("0.02438,0.02586,0.03120,0.05053,0.12314,0.40898,1.50597");
}
cell_fall(template_20) {
values("2.13679,2.13847,2.14445,2.16104,2.20423,2.33143,2.79298");
}
fall_transition(template_20) {
values("0.02337,0.02442,0.02828,0.04104,0.08437,0.25147,0.91312");
}
}
}
pin("VPWR") {
direction : input;
capacitance : 0.0000;
}
pin("VGND") {
direction : input;
capacitance : 0.0000;
}
bus("sel") {
bus_type : sel;
direction : input;
capacitance : 0.0000;
pin("sel[2]") {
direction : input;
capacitance : 0.0058;
}
pin("sel[1]") {
direction : input;
capacitance : 0.0044;
}
pin("sel[0]") {
direction : input;
capacitance : 0.0047;
}
}
bus("sel2") {
bus_type : sel2;
direction : input;
capacitance : 0.0000;
pin("sel2[2]") {
direction : input;
capacitance : 0.0044;
timing() {
related_pin : "pll_clk90";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.82195");
}
fall_constraint(scalar) {
values("0.77211");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_rising;
rise_constraint(scalar) {
values("-0.62868");
}
fall_constraint(scalar) {
values("-0.53148");
}
}
}
pin("sel2[1]") {
direction : input;
capacitance : 0.0049;
timing() {
related_pin : "pll_clk90";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.82476");
}
fall_constraint(scalar) {
values("0.80673");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_rising;
rise_constraint(scalar) {
values("-0.63716");
}
fall_constraint(scalar) {
values("-0.57965");
}
}
}
pin("sel2[0]") {
direction : input;
capacitance : 0.0041;
timing() {
related_pin : "pll_clk90";
timing_type : hold_rising;
rise_constraint(scalar) {
values("0.81600");
}
fall_constraint(scalar) {
values("0.76783");
}
}
timing() {
related_pin : "pll_clk90";
timing_type : setup_rising;
rise_constraint(scalar) {
values("-0.62218");
}
fall_constraint(scalar) {
values("-0.52686");
}
}
}
}
}
}