1 |
2 |
dimamali |
library ieee;
|
2 |
|
|
use ieee.std_logic_1164.all;
|
3 |
|
|
use ieee.vital_timing.ALL;
|
4 |
|
|
USE ieee.vital_primitives.ALL;
|
5 |
|
|
|
6 |
|
|
library fmf;
|
7 |
|
|
use fmf.gen_utils.all;
|
8 |
|
|
use fmf.conversions.all;
|
9 |
|
|
|
10 |
|
|
package flash is
|
11 |
|
|
|
12 |
|
|
component s25fl064a
|
13 |
|
|
generic (
|
14 |
|
|
tipd_SCK : VitalDelayType01 := VitalZeroDelay01;
|
15 |
|
|
tipd_SI : VitalDelayType01 := VitalZeroDelay01;
|
16 |
|
|
tipd_CSNeg : VitalDelayType01 := VitalZeroDelay01;
|
17 |
|
|
tipd_HOLDNeg : VitalDelayType01 := VitalZeroDelay01;
|
18 |
|
|
tipd_WNeg : VitalDelayType01 := VitalZeroDelay01;
|
19 |
|
|
tpd_SCK_SO : VitalDelayType01Z := UnitDelay01Z;
|
20 |
|
|
tpd_CSNeg_SO : VitalDelayType01Z := UnitDelay01Z;
|
21 |
|
|
tpd_HOLDNeg_SO : VitalDelayType01Z := UnitDelay01Z;
|
22 |
|
|
tsetup_SI_SCK : VitalDelayType := UnitDelay;
|
23 |
|
|
tsetup_CSNeg_SCK : VitalDelayType := UnitDelay;
|
24 |
|
|
tsetup_HOLDNeg_SCK : VitalDelayType := UnitDelay;
|
25 |
|
|
tsetup_WNeg_CSNeg : VitalDelayType := UnitDelay;
|
26 |
|
|
thold_SI_SCK : VitalDelayType := UnitDelay;
|
27 |
|
|
thold_CSNeg_SCK : VitalDelayType := UnitDelay;
|
28 |
|
|
thold_HOLDNeg_SCK : VitalDelayType := UnitDelay;
|
29 |
|
|
thold_WNeg_CSNeg : VitalDelayType := UnitDelay;
|
30 |
|
|
tpw_SCK_posedge : VitalDelayType := UnitDelay;
|
31 |
|
|
tpw_SCK_negedge : VitalDelayType := UnitDelay;
|
32 |
|
|
tpw_CSNeg_posedge : VitalDelayType := UnitDelay;
|
33 |
|
|
tperiod_SCK_rd : VitalDelayType := UnitDelay;
|
34 |
|
|
tperiod_SCK_fast_rd : VitalDelayType := UnitDelay;
|
35 |
|
|
tdevice_PP : VitalDelayType := 3 ms;
|
36 |
|
|
tdevice_SE : VitalDelayType := 3 sec;
|
37 |
|
|
tdevice_BE : VitalDelayType := 384 sec;
|
38 |
|
|
tdevice_WR : VitalDelayType := 60 ms;
|
39 |
|
|
tdevice_DP : VitalDelayType := 3 us;
|
40 |
|
|
tdevice_RES : VitalDelayType := 30 us;
|
41 |
|
|
tdevice_PU : VitalDelayType := 10 ms;
|
42 |
|
|
InstancePath : STRING := DefaultInstancePath;
|
43 |
|
|
TimingChecksOn : BOOLEAN := DefaultTimingChecks;
|
44 |
|
|
MsgOn : BOOLEAN := DefaultMsgOn;
|
45 |
|
|
XOn : BOOLEAN := DefaultXon;
|
46 |
|
|
mem_file_name : STRING := "s25fl064a.mem";
|
47 |
|
|
UserPreload : BOOLEAN := FALSE;
|
48 |
|
|
LongTimming : BOOLEAN := TRUE;
|
49 |
|
|
TimingModel : STRING := DefaultTimingModel
|
50 |
|
|
);
|
51 |
|
|
port (
|
52 |
|
|
SCK : IN std_ulogic := 'U';
|
53 |
|
|
SI : IN std_ulogic := 'U';
|
54 |
|
|
CSNeg : IN std_ulogic := 'U';
|
55 |
|
|
HOLDNeg : IN std_ulogic := 'U';
|
56 |
|
|
WNeg : IN std_ulogic := 'U';
|
57 |
|
|
SO : OUT std_ulogic := 'U'
|
58 |
|
|
);
|
59 |
|
|
end component;
|
60 |
|
|
|
61 |
|
|
component m25p80
|
62 |
|
|
generic (
|
63 |
|
|
tipd_C : VitalDelayType01 := VitalZeroDelay01;
|
64 |
|
|
tipd_D : VitalDelayType01 := VitalZeroDelay01;
|
65 |
|
|
tipd_SNeg : VitalDelayType01 := VitalZeroDelay01;
|
66 |
|
|
tipd_HOLDNeg : VitalDelayType01 := VitalZeroDelay01;
|
67 |
|
|
tipd_WNeg : VitalDelayType01 := VitalZeroDelay01;
|
68 |
|
|
tpd_C_Q : VitalDelayType01 := UnitDelay01;
|
69 |
|
|
tpd_SNeg_Q : VitalDelayType01Z := UnitDelay01Z;
|
70 |
|
|
tpd_HOLDNeg_Q : VitalDelayType01Z := UnitDelay01Z;
|
71 |
|
|
tsetup_D_C : VitalDelayType := UnitDelay;
|
72 |
|
|
tsetup_SNeg_C : VitalDelayType := UnitDelay;
|
73 |
|
|
tsetup_HOLDNeg_C : VitalDelayType := UnitDelay;
|
74 |
|
|
tsetup_C_HOLDNeg : VitalDelayType := UnitDelay;
|
75 |
|
|
tsetup_WNeg_SNeg : VitalDelayType := UnitDelay;
|
76 |
|
|
thold_D_C : VitalDelayType := UnitDelay;
|
77 |
|
|
thold_SNeg_C : VitalDelayType := UnitDelay;
|
78 |
|
|
thold_HOLDNeg_C : VitalDelayType := UnitDelay;
|
79 |
|
|
thold_C_HOLDNeg : VitalDelayType := UnitDelay;
|
80 |
|
|
thold_WNeg_SNeg : VitalDelayType := UnitDelay;
|
81 |
|
|
tpw_C_posedge : VitalDelayType := UnitDelay;
|
82 |
|
|
tpw_C_negedge : VitalDelayType := UnitDelay;
|
83 |
|
|
tpw_SNeg_posedge : VitalDelayType := UnitDelay;
|
84 |
|
|
tperiod_C_rd : VitalDelayType := UnitDelay;
|
85 |
|
|
tperiod_C_fast_rd : VitalDelayType := UnitDelay;
|
86 |
|
|
tdevice_PP : VitalDelayType := 5 ms;
|
87 |
|
|
tdevice_SE : VitalDelayType := 3 sec;
|
88 |
|
|
tdevice_BE : VitalDelayType := 20 sec;
|
89 |
|
|
tdevice_WR : VitalDelayType := 15 ms;
|
90 |
|
|
tdevice_DP : VitalDelayType := 3 us;
|
91 |
|
|
tdevice_RES1 : VitalDelayType := 3 us;
|
92 |
|
|
tdevice_RES2 : VitalDelayType := 1.8 us;
|
93 |
|
|
tdevice_VSL : VitalDelayType := 10 us;
|
94 |
|
|
tdevice_PUW : VitalDelayType := 10 ms;
|
95 |
|
|
InstancePath : STRING := DefaultInstancePath;
|
96 |
|
|
TimingChecksOn : BOOLEAN := DefaultTimingChecks;
|
97 |
|
|
MsgOn : BOOLEAN := DefaultMsgOn;
|
98 |
|
|
XOn : BOOLEAN := DefaultXon;
|
99 |
|
|
mem_file_name : STRING := "m25p80.mem";
|
100 |
|
|
UserPreload : BOOLEAN := FALSE;
|
101 |
|
|
DebugInfo : BOOLEAN := FALSE;
|
102 |
|
|
LongTimming : BOOLEAN := TRUE;
|
103 |
|
|
TimingModel : STRING := DefaultTimingModel
|
104 |
|
|
);
|
105 |
|
|
port (
|
106 |
|
|
C : IN std_ulogic := 'U';
|
107 |
|
|
D : IN std_ulogic := 'U';
|
108 |
|
|
SNeg : IN std_ulogic := 'U';
|
109 |
|
|
HOLDNeg : IN std_ulogic := 'U';
|
110 |
|
|
WNeg : IN std_ulogic := 'U';
|
111 |
|
|
Q : OUT std_ulogic := 'U'
|
112 |
|
|
);
|
113 |
|
|
end component;
|
114 |
|
|
|
115 |
|
|
end flash;
|