mirror of https://github.com/efabless/caravel.git
514 lines
15 KiB
Plaintext
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.77351,1.77539,1.78182,1.80145,1.85967,2.06149,2.82202");
|
|
}
|
|
rise_transition(template_3) {
|
|
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40937,1.50421");
|
|
}
|
|
cell_fall(template_4) {
|
|
values("0.85614,0.85786,0.86371,0.88026,0.92357,1.05073,1.51219");
|
|
}
|
|
fall_transition(template_4) {
|
|
values("0.02326,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("-2.16497,-2.16309,-2.15666,-2.13703,-2.07881,-1.87699,-1.11647");
|
|
}
|
|
rise_transition(template_5) {
|
|
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40937,1.50421");
|
|
}
|
|
cell_fall(template_6) {
|
|
values("3.08532,3.08703,3.09289,3.10943,3.15275,3.27991,3.74136");
|
|
}
|
|
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 : rising_edge;
|
|
cell_rise(template_7) {
|
|
values("1.77351,1.77539,1.78182,1.80145,1.85967,2.06149,2.82202");
|
|
}
|
|
rise_transition(template_7) {
|
|
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40937,1.50421");
|
|
}
|
|
cell_fall(template_8) {
|
|
values("-0.11202,-0.11030,-0.10445,-0.08790,-0.04459,0.08258,0.54403");
|
|
}
|
|
fall_transition(template_8) {
|
|
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_9) {
|
|
values("-0.15692,-0.15505,-0.14862,-0.12898,-0.07076,0.13106,0.89158");
|
|
}
|
|
rise_transition(template_9) {
|
|
values("0.02434,0.02582,0.03117,0.05049,0.12301,0.40937,1.50421");
|
|
}
|
|
cell_fall(template_10) {
|
|
values("15.58532,15.58703,15.59289,15.60943,15.65275,15.77991,16.24136");
|
|
}
|
|
fall_transition(template_10) {
|
|
values("0.02326,0.02436,0.02827,0.04095,0.08430,0.25146,0.91403");
|
|
}
|
|
}
|
|
}
|
|
pin("ext_clk") {
|
|
direction : input;
|
|
capacitance : 0.0112;
|
|
}
|
|
pin("ext_clk_sel") {
|
|
direction : input;
|
|
capacitance : 0.0105;
|
|
timing() {
|
|
related_pin : "pll_clk";
|
|
timing_type : hold_rising;
|
|
rise_constraint(scalar) {
|
|
values("0.49683");
|
|
}
|
|
fall_constraint(scalar) {
|
|
values("-0.20539");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk";
|
|
timing_type : setup_rising;
|
|
rise_constraint(scalar) {
|
|
values("-0.31425");
|
|
}
|
|
fall_constraint(scalar) {
|
|
values("0.41911");
|
|
}
|
|
}
|
|
}
|
|
pin("ext_reset") {
|
|
direction : input;
|
|
capacitance : 0.0202;
|
|
timing() {
|
|
related_pin : "ext_clk";
|
|
timing_type : hold_rising;
|
|
rise_constraint(scalar) {
|
|
values("-5.57863");
|
|
}
|
|
fall_constraint(scalar) {
|
|
values("-6.49931");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "ext_clk";
|
|
timing_type : setup_rising;
|
|
rise_constraint(scalar) {
|
|
values("5.64686");
|
|
}
|
|
fall_constraint(scalar) {
|
|
values("6.65718");
|
|
}
|
|
}
|
|
}
|
|
pin("pll_clk") {
|
|
direction : input;
|
|
capacitance : 0.0172;
|
|
}
|
|
pin("pll_clk90") {
|
|
direction : input;
|
|
capacitance : 0.0188;
|
|
}
|
|
pin("resetb") {
|
|
direction : input;
|
|
capacitance : 0.0094;
|
|
timing() {
|
|
related_pin : "ext_clk";
|
|
timing_sense : negative_unate;
|
|
timing_type : hold_falling;
|
|
rise_constraint(scalar) {
|
|
values("2.90246");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "ext_clk";
|
|
timing_sense : negative_unate;
|
|
timing_type : setup_falling;
|
|
rise_constraint(scalar) {
|
|
values("-2.00804");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk";
|
|
timing_type : hold_rising;
|
|
rise_constraint(scalar) {
|
|
values("0.72450");
|
|
}
|
|
fall_constraint(scalar) {
|
|
values("-0.54295");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk";
|
|
timing_type : setup_rising;
|
|
rise_constraint(scalar) {
|
|
values("0.25956");
|
|
}
|
|
fall_constraint(scalar) {
|
|
values("0.96816");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk";
|
|
timing_sense : negative_unate;
|
|
timing_type : hold_falling;
|
|
rise_constraint(scalar) {
|
|
values("1.75071");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk";
|
|
timing_sense : negative_unate;
|
|
timing_type : setup_falling;
|
|
rise_constraint(scalar) {
|
|
values("-0.99291");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk90";
|
|
timing_sense : positive_unate;
|
|
timing_type : hold_rising;
|
|
rise_constraint(scalar) {
|
|
values("0.67873");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk90";
|
|
timing_sense : positive_unate;
|
|
timing_type : setup_rising;
|
|
rise_constraint(scalar) {
|
|
values("0.04584");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk90";
|
|
timing_sense : negative_unate;
|
|
timing_type : hold_falling;
|
|
rise_constraint(scalar) {
|
|
values("1.74203");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk90";
|
|
timing_sense : negative_unate;
|
|
timing_type : setup_falling;
|
|
rise_constraint(scalar) {
|
|
values("-0.82009");
|
|
}
|
|
}
|
|
}
|
|
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.49283,1.49546,1.50571,1.54117,1.68199,2.32272,5.28052");
|
|
}
|
|
rise_transition(template_1) {
|
|
values("0.02385,0.02585,0.03448,0.07350,0.26600,1.18188,5.39669");
|
|
}
|
|
cell_fall(template_2) {
|
|
values("0.55758,0.55961,0.56716,0.59025,0.65897,0.93072,2.17775");
|
|
}
|
|
fall_transition(template_2) {
|
|
values("0.01891,0.02021,0.02508,0.04333,0.11877,0.48588,2.21350");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "ext_clk";
|
|
timing_type : falling_edge;
|
|
cell_rise(template_11) {
|
|
values("16.39483,16.39745,16.40770,16.44316,16.58398,17.22471,20.18251");
|
|
}
|
|
rise_transition(template_11) {
|
|
values("0.02385,0.02585,0.03448,0.07350,0.26600,1.18188,5.39669");
|
|
}
|
|
cell_fall(template_12) {
|
|
values("16.37308,16.37510,16.38266,16.40575,16.47446,16.74621,17.99324");
|
|
}
|
|
fall_transition(template_12) {
|
|
values("0.01891,0.02021,0.02508,0.04333,0.11877,0.48588,2.21350");
|
|
}
|
|
}
|
|
}
|
|
pin("user_clk") {
|
|
direction : output;
|
|
capacitance : 0.2000;
|
|
timing() {
|
|
related_pin : "ext_clk";
|
|
timing_type : rising_edge;
|
|
cell_rise(template_13) {
|
|
values("1.65058,1.65245,1.65888,1.67835,1.73650,1.93855,2.70612");
|
|
}
|
|
rise_transition(template_13) {
|
|
values("0.02440,0.02589,0.03121,0.05053,0.12314,0.40881,1.50596");
|
|
}
|
|
cell_fall(template_14) {
|
|
values("-0.10797,-0.10629,-0.10034,-0.08375,-0.04057,0.08665,0.54822");
|
|
}
|
|
fall_transition(template_14) {
|
|
values("0.02337,0.02441,0.02829,0.04105,0.08438,0.25148,0.91299");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "ext_clk";
|
|
timing_type : falling_edge;
|
|
cell_rise(template_15) {
|
|
values("-0.15034,-0.14848,-0.14205,-0.12258,-0.06443,0.13762,0.90519");
|
|
}
|
|
rise_transition(template_15) {
|
|
values("0.02440,0.02589,0.03121,0.05053,0.12314,0.40881,1.50596");
|
|
}
|
|
cell_fall(template_16) {
|
|
values("15.44422,15.44590,15.45185,15.46844,15.51162,15.63883,16.10041");
|
|
}
|
|
fall_transition(template_16) {
|
|
values("0.02337,0.02441,0.02829,0.04105,0.08438,0.25148,0.91299");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk";
|
|
timing_type : rising_edge;
|
|
cell_rise(template_17) {
|
|
values("2.24350,2.24537,2.25180,2.27127,2.32941,2.53147,3.29904");
|
|
}
|
|
rise_transition(template_17) {
|
|
values("0.02440,0.02589,0.03121,0.05053,0.12314,0.40881,1.50596");
|
|
}
|
|
cell_fall(template_18) {
|
|
values("2.55720,2.55888,2.56483,2.58142,2.62460,2.75182,3.21339");
|
|
}
|
|
fall_transition(template_18) {
|
|
values("0.02337,0.02441,0.02829,0.04105,0.08438,0.25148,0.91299");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk90";
|
|
timing_type : rising_edge;
|
|
cell_rise(template_19) {
|
|
values("2.35743,2.35930,2.36573,2.38520,2.44335,2.64540,3.41297");
|
|
}
|
|
rise_transition(template_19) {
|
|
values("0.02440,0.02589,0.03121,0.05053,0.12314,0.40881,1.50596");
|
|
}
|
|
cell_fall(template_20) {
|
|
values("2.62003,2.62170,2.62766,2.64425,2.68743,2.81464,3.27621");
|
|
}
|
|
fall_transition(template_20) {
|
|
values("0.02337,0.02441,0.02829,0.04105,0.08438,0.25148,0.91299");
|
|
}
|
|
}
|
|
timing() {
|
|
related_pin : "pll_clk90";
|
|
timing_type : falling_edge;
|
|
cell_rise(template_21) {
|
|
values("6.65320,6.65507,6.66150,6.68097,6.73911,6.94117,7.70874");
|
|
}
|
|
rise_transition(template_21) {
|
|
values("0.02440,0.02589,0.03121,0.05053,0.12314,0.40881,1.50596");
|
|
}
|
|
cell_fall(template_22) {
|
|
values("6.91022,6.91190,6.91786,6.93445,6.97763,7.10484,7.56641");
|
|
}
|
|
fall_transition(template_22) {
|
|
values("0.02337,0.02441,0.02829,0.04105,0.08438,0.25148,0.91299");
|
|
}
|
|
}
|
|
}
|
|
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.0148;
|
|
}
|
|
pin("sel[1]") {
|
|
direction : input;
|
|
capacitance : 0.0124;
|
|
}
|
|
pin("sel[0]") {
|
|
direction : input;
|
|
capacitance : 0.0091;
|
|
}
|
|
}
|
|
bus("sel2") {
|
|
bus_type : sel2;
|
|
direction : input;
|
|
capacitance : 0.0000;
|
|
pin("sel2[2]") {
|
|
direction : input;
|
|
capacitance : 0.0148;
|
|
}
|
|
pin("sel2[1]") {
|
|
direction : input;
|
|
capacitance : 0.0125;
|
|
}
|
|
pin("sel2[0]") {
|
|
direction : input;
|
|
capacitance : 0.0136;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|