mirror of https://github.com/VLSIDA/OpenRAM.git
Add SCMOS IP files.
This commit is contained in:
parent
44d85ecb94
commit
f7a3fb90f0
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_128b_1024w_1bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 128;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 127;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 10;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_128b_1024w_1bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 10;
|
||||||
|
word_width : 128;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 21833106.12;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 0.10247282;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[127:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("31.136, 31.573, 31.783",\
|
||||||
|
"31.138, 31.574, 31.785",\
|
||||||
|
"31.181, 31.615, 31.822");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("2.529, 2.815, 3.924",\
|
||||||
|
"2.532, 2.818, 3.928",\
|
||||||
|
"2.572, 2.859, 3.966");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.368, 0.429, 1.161",\
|
||||||
|
"0.369, 0.429, 1.162",\
|
||||||
|
"0.369, 0.429, 1.161");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("1.381, 1.522, 2.126",\
|
||||||
|
"1.381, 1.524, 2.127",\
|
||||||
|
"1.383, 1.525, 2.131");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[9:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("5.37896885789");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("5.37896885789");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("33.1108208246");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("33.1108208246");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("30.0");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("30.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("60.0");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("60.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_128b_1024w_2bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 128;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 127;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 10;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_128b_1024w_2bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 10;
|
||||||
|
word_width : 128;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 24881585.4;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 44.198587;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[127:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("9.206, 1.164, 9.606",\
|
||||||
|
"9.207, 1.167, 9.618",\
|
||||||
|
"9.249, 1.208, 9.657");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("1.259, 1.338, 1.963",\
|
||||||
|
"1.262, 1.342, 1.966",\
|
||||||
|
"1.303, 1.383, 2.006");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.456, 0.683, 1.298",\
|
||||||
|
"0.456, 0.684, 1.298",\
|
||||||
|
"0.456, 0.684, 1.297");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("0.709, 0.804, 1.888",\
|
||||||
|
"0.709, 0.804, 1.889",\
|
||||||
|
"0.709, 0.804, 1.889");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[9:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("52.3376104111");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("52.3376104111");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("53.8071773833");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("53.8071773833");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("8.75");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("8.75");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("17.5");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("17.5");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_128b_1024w_4bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 128;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 127;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 10;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_128b_1024w_4bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 10;
|
||||||
|
word_width : 128;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 27236928.375;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 126.82311;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[127:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("10.069, 10.112, 10.48",\
|
||||||
|
"10.073, 10.113, 10.484",\
|
||||||
|
"10.115, 10.155, 10.526");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("1.584, 1.651, 2.289",\
|
||||||
|
"1.587, 1.655, 2.292",\
|
||||||
|
"1.628, 1.695, 2.331");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.746, 0.821, 11.821",\
|
||||||
|
"0.746, 0.822, 11.823",\
|
||||||
|
"0.745, 0.821, 11.807");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("1.108, 1.228, 2.31",\
|
||||||
|
"1.108, 1.229, 2.31",\
|
||||||
|
"1.109, 1.229, 2.31");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[9:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("74.6529198333");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("74.6529198333");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("76.4449811944");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("76.4449811944");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("9.375");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("9.375");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("18.75");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("18.75");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_32b_2048w_1bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 32;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 31;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 11;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_32b_2048w_1bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 11;
|
||||||
|
word_width : 32;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 12696470.64;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 0.50275213;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[31:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("8.762, 8.795, 9.18",\
|
||||||
|
"8.755, 8.814, 9.174",\
|
||||||
|
"8.798, 8.845, 9.2");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("2.037, 2.252, 3.065",\
|
||||||
|
"2.041, 2.254, 3.068",\
|
||||||
|
"2.08, 2.293, 3.105");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.335, 0.391, 1.153",\
|
||||||
|
"0.335, 0.391, 1.155",\
|
||||||
|
"0.335, 0.391, 1.153");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("1.591, 1.753, 1.713",\
|
||||||
|
"1.591, 1.755, 1.714",\
|
||||||
|
"1.591, 1.758, 1.719");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[10:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("28.9842694349");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("28.9842694349");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("37.7906127405");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("37.7906127405");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("8.4375");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("8.4375");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("16.875");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("16.875");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_32b_256w_1bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 32;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 31;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 8;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_32b_256w_1bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 8;
|
||||||
|
word_width : 32;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 1840896.72;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 0.031524804;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[31:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("10.304, 10.336, 10.749",\
|
||||||
|
"10.308, 10.34, 10.754",\
|
||||||
|
"10.349, 10.381, 10.777");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("1.074, 1.21, 1.903",\
|
||||||
|
"1.077, 1.213, 1.906",\
|
||||||
|
"1.117, 1.253, 1.943");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.317, 0.659, 11.126",\
|
||||||
|
"0.318, 0.658, 11.128",\
|
||||||
|
"0.306, 0.677, 11.093");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("0.531, 0.608, 1.602",\
|
||||||
|
"0.532, 0.611, 1.602",\
|
||||||
|
"0.533, 0.617, 1.605");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[7:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("4.29313574236");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("4.29313574236");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("12.810443259");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("12.810443259");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("10.0");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("10.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("20.0");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("20.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_32b_512w_1bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 32;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 31;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 9;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_32b_512w_1bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 9;
|
||||||
|
word_width : 32;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 3322156.68;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 0.065826384;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[31:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("10.494, 10.458, 11.082",\
|
||||||
|
"10.497, 10.462, 11.093",\
|
||||||
|
"10.538, 10.502, 11.058");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("1.233, 1.383, 2.094",\
|
||||||
|
"1.236, 1.386, 2.097",\
|
||||||
|
"1.276, 1.426, 2.134");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.528, 0.608, 11.186",\
|
||||||
|
"0.527, 0.607, 11.189",\
|
||||||
|
"0.542, 0.618, 11.154");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("0.721, 0.834, 1.605",\
|
||||||
|
"0.721, 0.836, 1.606",\
|
||||||
|
"0.722, 0.84, 1.609");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[8:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("6.13928051527");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("6.13928051527");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("15.3032656736");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("15.3032656736");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("10.0");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("10.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("20.0");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("20.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_64b_1024w_1bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 64;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 63;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 10;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_64b_1024w_1bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 10;
|
||||||
|
word_width : 64;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 11395617.48;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 0.10372818;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[63:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("17.683, 17.574, 18.056",\
|
||||||
|
"17.685, 17.577, 18.06",\
|
||||||
|
"17.733, 17.618, 18.1");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("1.888, 2.11, 2.981",\
|
||||||
|
"1.892, 2.113, 2.984",\
|
||||||
|
"1.931, 2.153, 3.022");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.35, 0.41, 1.153",\
|
||||||
|
"0.35, 0.411, 1.152",\
|
||||||
|
"0.35, 0.411, 1.152");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("1.197, 1.33, 1.793",\
|
||||||
|
"1.197, 1.332, 1.794",\
|
||||||
|
"1.199, 1.334, 1.799");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[9:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("7.00649382984");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("7.00649382984");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("22.1313182465");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("22.1313182465");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("16.875");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("16.875");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("33.75");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("33.75");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
library (sram_1rw_8b_256w_1bank_scn3me_subm_TT_5p0V_25C_lib){
|
||||||
|
delay_model : "table_lookup";
|
||||||
|
time_unit : "1ns" ;
|
||||||
|
voltage_unit : "1v" ;
|
||||||
|
current_unit : "1mA" ;
|
||||||
|
resistance_unit : "1kohm" ;
|
||||||
|
capacitive_load_unit(1 ,fF) ;
|
||||||
|
leakage_power_unit : "1mW" ;
|
||||||
|
pulling_resistance_unit :"1kohm" ;
|
||||||
|
operating_conditions(OC){
|
||||||
|
process : 1.0 ;
|
||||||
|
voltage : 5.0 ;
|
||||||
|
temperature : 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
input_threshold_pct_fall : 50.0 ;
|
||||||
|
output_threshold_pct_fall : 50.0 ;
|
||||||
|
input_threshold_pct_rise : 50.0 ;
|
||||||
|
output_threshold_pct_rise : 50.0 ;
|
||||||
|
slew_lower_threshold_pct_fall : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_fall : 90.0 ;
|
||||||
|
slew_lower_threshold_pct_rise : 10.0 ;
|
||||||
|
slew_upper_threshold_pct_rise : 90.0 ;
|
||||||
|
|
||||||
|
nom_voltage : 5.0;
|
||||||
|
nom_temperature : 25;
|
||||||
|
nom_process : 1.0;
|
||||||
|
default_cell_leakage_power : 0.0 ;
|
||||||
|
default_leakage_power_density : 0.0 ;
|
||||||
|
default_input_pin_cap : 1.0 ;
|
||||||
|
default_inout_pin_cap : 1.0 ;
|
||||||
|
default_output_pin_cap : 0.0 ;
|
||||||
|
default_max_transition : 0.5 ;
|
||||||
|
default_fanout_load : 1.0 ;
|
||||||
|
default_max_fanout : 4.0 ;
|
||||||
|
default_connection_class : universal ;
|
||||||
|
|
||||||
|
lu_table_template(CELL_TABLE){
|
||||||
|
variable_1 : input_net_transition;
|
||||||
|
variable_2 : total_output_net_capacitance;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("2.45605, 9.8242, 78.5936");
|
||||||
|
}
|
||||||
|
|
||||||
|
lu_table_template(CONSTRAINT_TABLE){
|
||||||
|
variable_1 : related_pin_transition;
|
||||||
|
variable_2 : constrained_pin_transition;
|
||||||
|
index_1("0.0125, 0.05, 0.4");
|
||||||
|
index_2("0.0125, 0.05, 0.4");
|
||||||
|
}
|
||||||
|
|
||||||
|
default_operating_conditions : OC;
|
||||||
|
|
||||||
|
|
||||||
|
type (DATA){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 8;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
type (ADDR){
|
||||||
|
base_type : array;
|
||||||
|
data_type : bit;
|
||||||
|
bit_width : 8;
|
||||||
|
bit_from : 0;
|
||||||
|
bit_to : 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
cell (sram_1rw_8b_256w_1bank_scn3me_subm){
|
||||||
|
memory(){
|
||||||
|
type : ram;
|
||||||
|
address_width : 8;
|
||||||
|
word_width : 8;
|
||||||
|
}
|
||||||
|
interface_timing : true;
|
||||||
|
dont_use : true;
|
||||||
|
map_only : true;
|
||||||
|
dont_touch : true;
|
||||||
|
area : 649406.16;
|
||||||
|
|
||||||
|
leakage_power () {
|
||||||
|
when : "CSb";
|
||||||
|
value : 0.018048721;
|
||||||
|
}
|
||||||
|
cell_leakage_power : 0;
|
||||||
|
bus(DATA){
|
||||||
|
bus_type : DATA;
|
||||||
|
direction : inout;
|
||||||
|
max_capacitance : 78.5936;
|
||||||
|
min_capacitance : 2.45605;
|
||||||
|
three_state : "!OEb & !clk";
|
||||||
|
memory_write(){
|
||||||
|
address : ADDR;
|
||||||
|
clocked_on : clk;
|
||||||
|
}
|
||||||
|
memory_read(){
|
||||||
|
address : ADDR;
|
||||||
|
}
|
||||||
|
pin(DATA[7:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_sense : non_unate;
|
||||||
|
related_pin : "clk";
|
||||||
|
timing_type : falling_edge;
|
||||||
|
cell_rise(CELL_TABLE) {
|
||||||
|
values("4.547, 4.592, 4.957",\
|
||||||
|
"4.551, 4.595, 4.962",\
|
||||||
|
"4.592, 4.636, 5.002");
|
||||||
|
}
|
||||||
|
cell_fall(CELL_TABLE) {
|
||||||
|
values("0.785, 0.877, 1.492",\
|
||||||
|
"0.789, 0.88, 1.495",\
|
||||||
|
"0.829, 0.919, 1.531");
|
||||||
|
}
|
||||||
|
rise_transition(CELL_TABLE) {
|
||||||
|
values("0.292, 0.356, 6.213",\
|
||||||
|
"0.291, 0.356, 6.215",\
|
||||||
|
"0.292, 0.356, 6.196");
|
||||||
|
}
|
||||||
|
fall_transition(CELL_TABLE) {
|
||||||
|
values("0.436, 0.503, 1.51",\
|
||||||
|
"0.437, 0.509, 1.51",\
|
||||||
|
"0.438, 0.523, 1.51");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bus(ADDR){
|
||||||
|
bus_type : ADDR;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
max_transition : 0.4;
|
||||||
|
pin(ADDR[7:0]){
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(CSb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(OEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(WEb){
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
timing(){
|
||||||
|
timing_type : setup_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149",\
|
||||||
|
"0.076, 0.076, 0.149");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027",\
|
||||||
|
"0.039, 0.039, 0.027");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type : hold_rising;
|
||||||
|
related_pin : "clk";
|
||||||
|
rise_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009",\
|
||||||
|
"-0.004, -0.004, 0.009");
|
||||||
|
}
|
||||||
|
fall_constraint(CONSTRAINT_TABLE) {
|
||||||
|
values("-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132",\
|
||||||
|
"-0.052, -0.059, -0.132");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pin(clk){
|
||||||
|
clock : true;
|
||||||
|
direction : input;
|
||||||
|
capacitance : 9.8242;
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & clk & !WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("5.24148885586");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("5.24148885586");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "!CSb & !clk & WEb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("7.83616546419");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("7.83616546419");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal_power(){
|
||||||
|
when : "CSb";
|
||||||
|
rise_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
fall_power(scalar){
|
||||||
|
values("0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"min_pulse_width";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("4.5315");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("4.5315");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timing(){
|
||||||
|
timing_type :"minimum_period";
|
||||||
|
related_pin : clk;
|
||||||
|
rise_constraint(scalar) {
|
||||||
|
values("9.063");
|
||||||
|
}
|
||||||
|
fall_constraint(scalar) {
|
||||||
|
values("9.063");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 1024
|
||||||
|
// Word size: 128
|
||||||
|
|
||||||
|
module sram_1rw_128b_1024w_1bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 128 ;
|
||||||
|
parameter ADDR_WIDTH = 10 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 128'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 1024
|
||||||
|
// Word size: 128
|
||||||
|
|
||||||
|
module sram_1rw_128b_1024w_2bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 128 ;
|
||||||
|
parameter ADDR_WIDTH = 10 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 128'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 1024
|
||||||
|
// Word size: 128
|
||||||
|
|
||||||
|
module sram_1rw_128b_1024w_4bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 128 ;
|
||||||
|
parameter ADDR_WIDTH = 10 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 128'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 2048
|
||||||
|
// Word size: 32
|
||||||
|
|
||||||
|
module sram_1rw_32b_2048w_1bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 32 ;
|
||||||
|
parameter ADDR_WIDTH = 11 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 32'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 256
|
||||||
|
// Word size: 32
|
||||||
|
|
||||||
|
module sram_1rw_32b_256w_1bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 32 ;
|
||||||
|
parameter ADDR_WIDTH = 8 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 32'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 512
|
||||||
|
// Word size: 32
|
||||||
|
|
||||||
|
module sram_1rw_32b_512w_1bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 32 ;
|
||||||
|
parameter ADDR_WIDTH = 9 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 32'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 1024
|
||||||
|
// Word size: 64
|
||||||
|
|
||||||
|
module sram_1rw_64b_1024w_1bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 64 ;
|
||||||
|
parameter ADDR_WIDTH = 10 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 64'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
// OpenRAM SRAM model
|
||||||
|
// Words: 256
|
||||||
|
// Word size: 8
|
||||||
|
|
||||||
|
module sram_1rw_8b_256w_1bank_scn3me_subm(DATA,ADDR,CSb,WEb,OEb,clk);
|
||||||
|
|
||||||
|
parameter DATA_WIDTH = 8 ;
|
||||||
|
parameter ADDR_WIDTH = 8 ;
|
||||||
|
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
|
||||||
|
parameter DELAY = 3 ;
|
||||||
|
|
||||||
|
inout [DATA_WIDTH-1:0] DATA;
|
||||||
|
input [ADDR_WIDTH-1:0] ADDR;
|
||||||
|
input CSb; // active low chip select
|
||||||
|
input WEb; // active low write control
|
||||||
|
input OEb; // active output enable
|
||||||
|
input clk; // clock
|
||||||
|
|
||||||
|
reg [DATA_WIDTH-1:0] data_out ;
|
||||||
|
reg [DATA_WIDTH-1:0] mem [0:RAM_DEPTH-1];
|
||||||
|
|
||||||
|
// Tri-State Buffer control
|
||||||
|
// output : When WEb = 1, oeb = 0, csb = 0
|
||||||
|
assign DATA = (!CSb && !OEb && WEb) ? data_out : 8'bz;
|
||||||
|
|
||||||
|
// Memory Write Block
|
||||||
|
// Write Operation : When WEb = 0, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_WRITE
|
||||||
|
if ( !CSb && !WEb ) begin
|
||||||
|
mem[ADDR] = DATA;
|
||||||
|
$display($time," Writing %m ABUS=%b DATA=%b",ADDR,DATA);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
// Memory Read Block
|
||||||
|
// Read Operation : When WEb = 1, CSb = 0
|
||||||
|
always @ (posedge clk)
|
||||||
|
begin : MEM_READ
|
||||||
|
if (!CSb && WEb) begin
|
||||||
|
data_out <= #(DELAY) mem[ADDR];
|
||||||
|
$display($time," Reading %m ABUS=%b DATA=%b",ADDR,mem[ADDR]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
Loading…
Reference in New Issue