回复 8# 教父
谢谢您的回复,但我的问题还在。建立新的单元需要一个template文件(.opt),在做重新特征化时,这个文件通过liberty ncx 从原有库(seed libery提取,但是我是设计了一个新的单元,也就是建立宏单元(macro),那么问题就来了,这个template如何产生,如果按照原有库的单元照着自己编写,对组合逻辑可能有效,但是我设计的单元是时序逻辑,时序逻辑单元在tempalte需要写一个sensitization,而这个sensitization实在是无法自己编写(下面会附上原库中一个单元的template文件,文件名 denrg1.opt) 我想着知道建立标准单元(对于新的单元,没有seed library),如何产生template文件,特别是如何产生sensitization部分。不甚感谢!
* Generated by Liberty NCX vC-2009.06-SP1
cell_footprint : denrq_7 ;
area : 7.0000000 ;
scaling_factors : denrq1_factors ;
cell_leakage_power : 1428.5010000 ;
routing_track "metal1" {
tracks : 0.0000000e+00 ;
total_track_area : 0.0000000e+00 ;
}
routing_track "metal2" {
tracks : 28.0000000 ;
total_track_area : 3.5000000 ;
}
routing_track "metal3" {
tracks : 10.0000000 ;
total_track_area : 3.5000000 ;
}
routing_track "metal4" {
tracks : 28.0000000 ;
total_track_area : 3.5000000 ;
}
routing_track "metal5" {
tracks : 10.0000000 ;
total_track_area : 3.5000000 ;
}
routing_track "metal6" {
tracks : 18.0000000 ;
total_track_area : 3.5300000 ;
}
ff "IQ" "IQN" {
clocked_on : CP ;
next_state : ((!ENN*D))+!(!IQ+(!ENN)) ;
}
pin CP {
direction : input ;
fanout_load : 1.0000000 ;
clock : true ;
min_pulse_width_high : 0.1000000 ;
min_pulse_width_low : 0.2400000 ;
}
pin D {
direction : input ;
fanout_load : 1.0000000 ;
timing {
*** arc id: D_CP_0000
timing_type : setup_rising ;
related_pin : CP ;
ncx_setup_rising_rise_constrained_pin_transition_index : 0 ;
ncx_setup_rising_fall_constrained_pin_transition_index : 0 ;
ncx_setup_rising_rise_related_pin_transition_index : 0 ;
ncx_setup_rising_fall_related_pin_transition_index : 0 ;
}
timing {
*** arc id: D_CP_0001
timing_type : hold_rising ;
related_pin : CP ;
ncx_hold_rising_rise_constrained_pin_transition_index : 0 ;
ncx_hold_rising_fall_constrained_pin_transition_index : 0 ;
ncx_hold_rising_rise_related_pin_transition_index : 0 ;
ncx_hold_rising_fall_related_pin_transition_index : 0 ;
}
}
pin ENN {
direction : input ;
fanout_load : 1.0000000 ;
timing {
*** arc id: ENN_CP_0000
timing_type : setup_rising ;
related_pin : CP ;
ncx_setup_rising_rise_constrained_pin_transition_index : 0 ;
ncx_setup_rising_fall_constrained_pin_transition_index : 0 ;
ncx_setup_rising_rise_related_pin_transition_index : 0 ;
ncx_setup_rising_fall_related_pin_transition_index : 0 ;
}
timing {
*** arc id: ENN_CP_0001
timing_type : hold_rising ;
related_pin : CP ;
ncx_hold_rising_rise_constrained_pin_transition_index : 0 ;
ncx_hold_rising_fall_constrained_pin_transition_index : 0 ;
ncx_hold_rising_rise_related_pin_transition_index : 0 ;
ncx_hold_rising_fall_related_pin_transition_index : 0 ;
}
}
pin Q {
direction : output ;
max_capacitance : 0.3000000 ;
max_fanout : 30.0000000 ;
max_transition : 3.0000000 ;
function : IQ ;
timing {
*** arc id: Q_CP_0000
timing_type : rising_edge ;
related_pin : CP ;
ncx_rising_edge_rise_input_net_transition_index : 0 ;
ncx_rising_edge_fall_input_net_transition_index : 0 ;
ncx_rising_edge_rise_total_output_net_capacitance_index : 1 ;
ncx_rising_edge_fall_total_output_net_capacitance_index : 1 ;
}
}
pg_pin VDD {
voltage_name : VDD ;
pg_type : primary_power ;
}
pg_pin VSS {
voltage_name : VSS ;
pg_type : primary_ground ;
}
sensitization {
CP, D, ENN : Q ;
011011, 001111, 000001 : 11 ;
011011, 001110, 0 : 11 ;
011010, 001111, 0 : 11 ;
011011, 110000, 000001 : 00 ;
011011, 110001, 0 : 00 ;
011010, 110000, 0 : 00 ;
0110111, 1100000, 0000010 : 00 ;
0110111, 1100001, 0000011 : 00 ;
0110110, 1100000, 0000011 : 00 ;
01101111, 11000011, 00000110 : 00 ;
01101111, 11000010, 00000111 : 00 ;
01101110, 11000011, 00000111 : 00 ;
01101111, 00111100, 00000110 : 11 ;
01101111, 00111101, 00000111 : 11 ;
01101110, 00111100, 00000111 : 11 ;
0110111, 0011111, 0000010 : 11 ;
0110111, 0011110, 0000011 : 11 ;
0110110, 0011111, 0000011 : 11 ;
0110100, 1100000, 0000001 : 00 ;
0110100, 1100001, 0 : 00 ;
0110101, 1100000, 0 : 00 ;
01101100, 00111000, 00000001 : 11 ;
01101100, 00111001, 0 : 11 ;
01101101, 00111000, 0 : f ;
0110111, 0011100, 0000001 : 11 ;
0110111, 0011101, 0 : 11 ;
0110110, 0011100, 0 : 11 ;
01101100, 11000111, 00000001 : 00 ;
01101100, 11000110, 0 : 00 ;
01101101, 11000111, 0 : r ;
0110100, 0011111, 0000001 : 11 ;
0110100, 0011110, 0 : 11 ;
0110101, 0011111, 0 : 11 ;
0110111, 1100011, 0000001 : 00 ;
0110111, 1100010, 0 : 00 ;
0110110, 1100011, 0 : 00 ;
01101100, 11000000, 00000110 : 00 ;
01101100, 11000001, 00000111 : 00 ;
01101101, 11000000, 00000111 : 00 ;
011011100, 001111000, 000001110 : 11 ;
011011100, 001111001, 000001111 : 11 ;
011011101, 001111000, 000001111 : 11 ;
011011100, 110000111, 000001110 : 00 ;
011011100, 110000110, 000001111 : 00 ;
011011101, 110000111, 000001111 : 00 ;
01101100, 00111111, 00000110 : 11 ;
01101100, 00111110, 00000111 : 11 ;
01101101, 00111111, 00000111 : 11 ;
violation;
01101001, 11000011, 0 : r ;
011010011, 110000110, 0 : r ;
011011010, 001110000, 0 : f ;
01101101, 00111000, 0 : f ;
011011001, 001110000, 000000011 : 11 ;
0110110011, 0011100000, 0000000110 : 11 ;
011011010, 110001111, 0 : r ;
01101101, 11000111, 0 : r ;
011011001, 110001111, 000000011 : 00 ;
0110110011, 1100011111, 0000000110 : 00 ;
01101001, 00111100, 0 : f ;
011010011, 001111001, 0 : f ;
0110111001, 0011110000, 0000011100 : f ;
01101110011, 00111100000, 00000111001 : f ;
0110111001, 1100001111, 0000011100 : r ;
01101110011, 11000011111, 00000111001 : r ;
} |