Memory Compilers
Memory Compilers
Contents
OVERVIEW
This chapter contains information for memory compilers available in STDL80 cell library. These are
complete compilers that consist of various generators to satisfy the requirements of the circuit at hand. Each
of the final building block, the physical layout, will be implemented as a stand-alone, densely packed,
pitch-matched array. Using this complex layout generator and adopting state-of-the-art logic and circuit
design technique, these memory cells can realize extreme density and performance. In each layout
generator, we added an option which makes the aspect ratio of the physical layout selectable so that the
ASIC designers can choose the aspect ratio according to the convenience of the chip level layout.
In the STDL80 cell library, there are 4 groups of memory compilers — ROMs; Static RAMs; Register File;
FIFO.
Generators
Each memory compiler is a set of various, parameterized generators. The generators are:
• Layout Generator
: generates an array of custom, pitch-matched leaf cells.
• Schematic Generator & Netlister
: extracts a netlist which can be used for both LVS check and functional verification.
• Function & Timing Model Generators
: for gate level simulation, dynamic/static timing analysis and synthesis
• Symbol Generator
: for schematic capture
• Critical Path Generator & ETC
: there are many special purpose generators such as critical path generator used for both
circuit design and AC timing characterization.
In 0.5µm CMOS standard cell memory compilers, the y-mux type selecting option was added to give the
customers freedom selecting aspect ratio of the memory layout. Many of the characteristics of a memory
cell are depend on its y-mux type. So, when you change the y-mux type from one to the other to change the
aspect ratio, you have to know that it will change many major characteristics, such as access time, area and
power consumption, of the memory.
Dual Banks
In some of 0.5µm CMOS standard cell memory compilers is a generator option which defines the number of
bit array banks. This dual bank scheme doubles the maximum capacity of the memory compilers.
Function Description
CROM Gen is a contact programmable synchronous ROM. When CK rises, DOUT [ ] presents data
programmed in the location addressed by A [ ]. CSN is used to enable/disable the clock. OEN is used to
enable/disable the data output driver.
Pin Descriptions
Name I/O Description
CK I “Clock” serves as the input clock to the memory block. When CK is low the memory
is in a precharge state. Upon the rising edge, an access cycle begins.
CSN I “Chip Select Negative” acts as the memory enable signal for selections of multiple
blocks on a common clock. When CSN is high, the memory goes to stand-by (power
down) mode and no access to the memory can occur, conversely, if low only then
may a read access occur. CSN may not change during CK is high.
OEN I “Output Enable Negative” controls the output drivers from driven to tri-state
condition. OEN may not change during CK is high.
A[] I “Address” selects the location to be accessed. A [ ] may not change during CK is
high.
DOUT [ ] O During a read access, data word programmed will be presented to the “Data Out”
ports. DOUT [ ] is tri-statable. When CK is high, CSN is low and OEN is low, only
then, DOUT [ ] drives a certain value. Otherwise, DOUT [ ] keeps Hi-Z state.
Application Notes
1) Putting Busholders on DOUT [ ]
As you will see in the timing diagrams, DOUT [ ] is valid only when CK is high. If you want DOUT [ ] to be
stable regardless of CK state, you should put STDL80 Busholder cells on the DOUT [ ] bus externally.
Block Diagrams
< 1-bank >
Word
X Dec. Line ROM Core
Drv.
OEN CK
A [m:0] CSN DOUT [b–1:0]
Word Word
ROM Core ROM Core
(Left) Line X Dec. Line
(Right)
Drv. Drv.
Timing Diagrams
Read Cycle
tas tah
minckl
CK
minckh
tda
DOUT VALID
tacc
(CSN / OEN : LOW)
CSN Control
CK
tcs tch
CSN
tacc
DOUT
(OEN : LOW)
OEN Control
CK
tos toh
OEN
tacc
DOUT
(CSN : LOW)
Function Description
DROM is a diffusion programmable synchronous ROM. When CK rises, DOUT [ ] presents data
programmed in the location addressed by A [ ]. CSN is used to enable/disable the clock. OEN is used to
enable/disable the data output driver.
Pin Descriptions
Name I/O Description
CK I “Clock” serves as the input clock to the memory block. When CK is low the memory
is in a precharge state. Upon the rising edge, an access cycle begins.
CSN I “Chip Select Negative” acts as the memory enable signal for selections of multiple
blocks on a common clock. When CSN is high, the memory goes to stand-by
(power down) mode and no access to the memory can occur, conversely, if low only
then may a read access occur. CSN may not change during CK is high.
OEN I “Output Enable Negative” unconditionally controls the output drivers from driven to
tri-state condition.
A[] I “Address” selects the location to be accessed. A [ ] may not change during CK is
high.
DOUT [ ] O During a read access, data word programmed will be presented to the “Data Out”
ports. DOUT [ ] is latched during a full cycle. When CSN is low and OEN is low, only
then, DOUT [ ] drives a certain value. Otherwise, DOUT [ ] keeps Hi-Z state.
Application Notes
1) Customizing Aspect Ratio
Aspect ratio is programmable using low address decoder types. As you can see in the configuration table,
there are up to 3 selections of Ymux for the same Words and the same Bpw DROM. You can choose one of
them in accordance with your chip level layout preference. Larger Ymux means fatter and shorter aspect
ratio and smaller Ymux means thinner and taller aspect ratio. As you can see in the characteristic tables,
aspect ratio affects major characteristics of DROM, In general, larger Ymux DROM has faster speed and
bigger area than smaller Ymux DROM.
Block Diagrams
< 1-bank >
Word
X Dec. Line ROM Core
Drv.
OEN CK
A [m:0] CSN DOUT [b–1:0]
Word Word
ROM Core ROM Core
(Left) Line X Dec. Line
(Right)
Drv. Drv.
Timing Diagrams
Read Cycle
tas tah
A
mincyc
CK minckl minckh
tacc
DOUT
CSN Control
CK
(OEN : LOW)
OEN Control
OEN
tdz
tzd
DOUT VALID
(CSN : LOW)
Function Description
SPSRAM is a single-port synchronous static RAM. When CK rises, if WEN is high, DOUT [ ] presents data
stored in the location addressed by A [ ], otherwise the value of DI [ ] is written into the location addressed by
A [ ]. CSN is used to enable/disable the clock. OEN is used to enable/disable the data output driver.
Pin Descriptions
Name I/O Input Cap. Description
CK I “Clock” serves as the input clock to the memory block. When CK is
low, the memory is in a precharge state. Upon the rising edge, an
access begins.
CSN I “Chip Select Negative” acts as the memory enable signal for
selections of multiple blocks on a common clock. When CSN is high,
the memory goes to stand-by (power down) mode and no access to
the memory can occur, conversely, if low only then may a read or write
access occur. CSN may not change during CK is high.
WEN I “Write Enable Negative” selects the type of memory access. Read is
the high state, and write is the low state.
OEN I “Output Enable Negative” controls the output drivers from driven to
tri-state condition. OEN may not change during CK is high.
A[] I “Address” selects the location to be accessed. A [ ] may not change
during CK is high.
DI [ ] I When CK rises while WEN is low, the “Data In” word value is written to
the accessed location.
DOUT [ ] O During a read access, data word stored will be presented to the “Data
Out” ports. DOUT [ ] is tri-statable. When CK is high, CSN is low and
OEN is low, only then, DOUT [ ] drives a certain value. Otherwise,
DOUT [ ] keeps Hi-Z state. During a write access, data word written
will be presented at the “Data Out” ports if output driver is enabled.
Application Notes
1) Putting Busholders on DOUT [ ]
As you will see in the timing diagrams, DOUT [ ] is valid only when CK is high. If you want DOUT [ ] to be
stable regardless of CK state, you should put STDL80 Busholder cells on the DOUT [ ] bus externally.
Block Diagrams
< 1-bank >
Word
X Dec. Line RAM Core
Drv.
WEN CK
A [m:0] OEN CSN DI [b–1:0] DOUT [b–1:0]
Word Word
RAM Core RAM Core
(Left) Line X Dec. Line
(Right)
Drv. Drv.
Timing Diagrams
Read Cycle
tas tah
A
mincyc
minckl
CK
minckh
tws twh
WEN
tda
tacc
DOUT
HI-Z
(CSN / OEN : LOW)
Write Cycle
tas tah
CK
tws twh
WEN
tds tdh
DI
tacc tda
DOUT
HI-Z
(CSN / OEN : LOW)
CSN Control
CK
tcs tch
CSN
tacc
DOUT HI-Z
(OEN : LOW)
OEN Control
CK
DOUT
(CSN : LOW)
Function Description
SPSRAMA is a single-port synchronous static RAM. When WEN is high and CK rises, DOUT [ ] presents
data stored in the location addressed by A [ ]. When WEN is low and CK falls, or when CK is high and WEN
rises, the value of DI [ ] is written into the location addressed by A [ ]. CSN is used to enable/disable the
clock. OEN is used to enable/disable the data output driver.
SPSRAMA is an alternative of SPSRAM. The major difference of these two RAMs is the timing of read and
write. SPSRAMA reads and writes at different edge of the clock since SPSRAM reads and writes at the
same edge of the clock.
Pin Descriptions
Name I/O Description
CK I “Clock” serves as the input clock to the memory block. When CK is low, the memory
is in a precharge state. Upon the rising edge, a read cycle begins. Upon the falling
edge, a write cycle ends.
CSN I “Chip Select Negative” acts as the memory enable signal for selections of multiple
blocks on a common clock. When CSN is high, the memory goes to stand-by (power
down) mode and no access to the memory can occur, conversely, if low only then
may a read or write access occur. CSN may not change during CK is high.
WEN I “Write Enable Negative” selects the type of memory access. Read is the high state,
and write is the low state. When WEN rises while CK is high, a write cycle ends.
OEN I “Output Enable Negative” controls the output drivers from driven to tri-state
condition. OEN may not change during CK is high.
A[] I “Address” selects the location to be accessed. A [ ] may not change during CK is
high.
DI [ ] I When CK falls while WEN is low, or when WEN rises while CK is high, the “Data In”
word value is written to the accessed location.
DOUT [ ] O During a read access, data word stored will be presented to the “Data Out” ports.
DOUT [ ] is tri-statable. When CK is high, CSN is low and OEN is low, only then,
DOUT [ ] drives a certain value. Otherwise, DOUT [ ] keeps Hi-Z state. During a
write access, the value of
DOUT [ ] is unpredictable.
Application Notes
1) Putting Busholders on DOUT [ ]
As you will see in the timing diagrams, DOUT [ ] is valid only when CK is high. If you want DOUT [ ] to be
stable regardless of CK state, you should put STDL80 Busholder cells on the DOUT [ ] bus externally.
Block Diagrams
< 1-bank >
Word
X Dec. Line RAM Core
Drv.
WEN CK
A [m:0] OEN CSN DI [b–1:0] DOUT [b–1:0]
Word Word
RAM Core RAM Core
(Left) Line X Dec. Line
(Right)
Drv. Drv.
Timing Diagrams
Read Cycle
tas tah
A STABLE
tpc
CK
trp
twh
WEN
tda
tacc
DOUT VALID
HI-Z
tas tah
A STABLE
CK tpc trp
twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT UNKNOWN
HI-Z
(CSN / OEN : LOW)
tas tah
A STABLE
tpc trp
CK
twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT UNKNOWN
HI-Z
(CSN / OEN : LOW)
tas tah
A STABLE
CK tpc
trp twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT VALID
HI-Z
(CSN / OEN : LOW)
tas tah
A STABLE
CK tpc
trp twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT VALID
HI-Z
(CSN / OEN : LOW)
CSN Control
tas tah
CK
tcs tch
CSN
tda
tacc
DOUT HI-Z
(OEN : LOW, WEN / DI : DON’T CARE)
OEN Control
tas tah
CK
tos toh
OEN
tacc tda
DOUT HI-Z
(CSN : LOW, WEN / DI : DON’T CARE)
Function Description
SPARAM is a single-port asynchronous static RAM. When WEN is high, just after the address (A [ ])
transition, DOUT [ ] presents data stored in the location addressed by A [ ]. Upon WEN rising edge, the
value of DI [ ] is written into the location addressed by A [ ]. CSN is used to enable/disable the access. OEN
is used to enable/disable the data output driver.
Pin Descriptions
Name I/O Description
CSN I “Chip Select Negative” acts as the memory enable signal for selections of multiple
blocks on a common clock. When CSN is high, the memory goes to stand-by (power
down) mode and no access to the memory can occur, conversely, if low only then
may a read or write access occur. When CSN falls, an access is initiated. When
CSN rises, a write access is completed if WEN is low.
WEN I “Write Enable Negative” selects the type of memory access. Read is the high state,
and write is the low state. Upon the rising edge of WEN, a write access completed
and a read access initiated.
OEN I “Output Enable Negative” unconditionally controls the output drivers from driven to
tri-state condition.
A[] I “Address” selects the location to be accessed. When “Address” changes, the
transition is detected and the internal clock pulse will be generated.
DI [ ] I When WEN rises, the “Data In” word value is written to the accessed location.
DOUT [ ] O During a read access, data word stored will be presented to the “Data Out” ports.
DOUT [ ] is tri-statable. When CSN is low and OEN is low, only then, DOUT [ ] drives
a certain value. Otherwise, DOUT [ ] keeps Hi-Z state. During a write access, data
on DOUT [ ] is unpredictable.
Application Notes
1) Customizing Aspect Ratio
Aspect ratio is programmable using low address decoder types. As you can see in the configuration table,
there are up to 4 selections of Ymux for the same Words and the same Bpw SPARAM. You can choose one
of them in accordance with your chip level layout preference. Larger Ymux means fatter and shorter aspect
ratio and smaller Ymux means thinner and taller aspect ratio. As you can see in the characteristic tables,
aspect ratio affects major characteristics of SPARAM, In general, larger Ymux SPARAM has faster speed
and bigger area than smaller Ymux SPARAM.
Word
X Dec. Line RAM Core
Drv.
WEN CSN
A [m:0] OEN DI [b–1:0] DOUT [b–1:0]
Word Word
RAM Core RAM Core
(Left) Line X Dec. Line
(Right)
Drv. Drv.
Timing Diagrams
Basic Read Cycle
mincyc
A A0 A1 A2
tda tacc
DOUT R (A0) R (A1) R (A2)
A A0 A1
mincyc
CSN
tzd tacc
DOUT R (A0) R (A1)
A A0 A1
mincyc
CSN
tdz
DOUT R (A0) R (A1)
OEN Controlled
OEN
tod tdz
tzd
DOUT Valid
(CSN : LOW)
A VALID
tas tah
CSN+WEN *
tds tdh
DIN VALID
CASE 1 CSN
tcs
WEN
CASE 2 CSN
tch
WEN
twen
WEN
CASE 4 CSN
tcsn
WEN (LOW)
CSN + WEN
Read-Write-Read Cycle
A A0 A1
mincyc mincyc
WEN
tacc
DIN D0
tda
DOUT R (A0) R (A1) R (A1) = D0
NOTES:
1. Words (w) is the number of words in DPSRAM.
2. Bpw (b) is the number of bits per word.
3. Ymux (y) is one of the lower address decoder types.
4. m = log2w – 1
Function Description
DPSRAM is a dual-port synchronous static RAM. When CK1 rises, if WEN1 is high, DOUT1 [ ] presents
data stored in the location addressed by A1 [ ], otherwise the value of DI1 [ ] is written into the location
addressed by A1 [ ]. CSN1 is used to enable/disable CK1. OEN1 is used to enable/disable tri-state drivers of
DOUT1 [ ]. The functionality of port2 is the same to port1. The port1 and port2 function independently each
other.
Pin Descriptions
Name I/O Description
CK1 I “Clock”s serve as input clocks to each port of the memory block. When CK1 (CK2) is
CK2 low, port1 (port2) is in a precharge state. Upon the rising edge, an access begins.
CSN1 I “Chip Select Negative”s act as each port’s enable signal for selections of multiple
CSN2 blocks on a common clock. When CSN1 (CSN2) is high, port1 (port2) goes to
stand-by (power down) mode and no access can occur, conversely, if low only then
may a read or write access occur. CSN1 (CSN2) may not change during CK1 (CK2)
is high.
WEN1 I “Write Enable Negative”s select the type of memory access. Read is the high state,
WEN2 and write is the low state.
OEN1 I “Output Enable Negative”s control the output drivers from driven to tri-state
OEN2 condition. OEN1 (OEN2) may not change during CK1 (CK2) is high.
A1 [ ] I “Address”es select the location to be accessed. A1 [ ] (A2 [ ]) may not change during
A2 [ ] CK1 (CK2) is high.
DI1 [ ] I When CK1 (CK2) rises while WEN1 (WEN2) is low, the “Data In” word value is
DI2 [ ] written to the accessed location.
DOUT1 [ ] O During a read access, data word stored will be presented to the “Data Out” ports.
DOUT2 [ ] DOUT1 [ ] and DOUT2 [ ] are tri-statable. Only when CK1 (CK2) is high, CSN1
(CSN2) and OEN1 (OEN2) is low, DOUT1 [ ] (DOUT2 [ ]) drives a certain value.
Otherwise, DOUT1 [ ] (DOUT2 [ ]) keeps Hi-Z state. During a write access, data
word written will be presented at the “Data Out” ports if output driver is enabled.
Application Notes
1) Putting Busholders on DOUT1 [ ] and DOUT2 [ ]
As you will see in the timing diagrams, DOUT1 [ ] (DOUT2 [ ]) is valid only when CK1 (CK2) is high. If you
want DOUT1 [ ] (DOUT2 [ ]) to be stable regardless of CK1 (CK2) state, you should put STDL80 Busholder
cells on the DOUT1 [ ] (DOUT2 [ ]) bus externally.
3) Contention Modes
Simultaneous accesses to the same location through both ports cause a contention. DPSRAM has no
contention preventing scheme. You have to take care of the contention modes. Please refer to the timing
diagrams of contention modes to get more information of contention modes.
Block Diagram
Word Word
A1 [m:0] CK1 OEN1 DI2 [b–1:0] DOUT1 [b–1:0] A2 [m:0] CK2 OEN2
Timing Diagrams
Read Cycle
tas tah
A
mincyc
minckl
CK
minckh
tws twh
WEN
tacc tda
DOUT
Hi-Z
(CSN / OEN : LOW)
Write Cycle
tas tah
CK
tws twh
WEN
tds tdh
DI
tda
tacc
DOUT
Hi-Z
(CSN / OEN : LOW)
CSN Control
CK
DOUT
HI-Z
(OEN : LOW)
OEN Control
CK
DOUT
(CSN : LOW)
Function Diagrams
Read–Write Contention (t < tcc; OEN, CSN = low)
A1 AX
A2 AX
CK1
t
CK2
WEN1
WEN2
DI2 DX
HI-Z
DOUT1 UNKNOWN
HI-Z
DOUT2 DX
A1 AX
A2 AX
CK1
t
CK2
WEN1
WEN2
DI1 DX
HI-Z
DOUT1 DX
HI-Z
DOUT2 UNKNOWN
A1 AX
A2 AX
CK1
t
CK2
WEN1
WEN2
DI1 DX
DI2 DY
HI-Z
DOUT1 UNKNOWN
HI-Z
DOUT2 UNKNOWN
Function Description
DPSRAMA is a dual-port synchronous static RAM. When WEN1 is high and CK1 rises, DOUT1 [ ] presents
data stored in the location addressed by A1 [ ]. When WEN1 is low and CK1 falls, or when CK1 is high and
WEN1 rises, the value of DI1 [ ] is written into the location addressed by A1 [ ]. CSN1 is used to
enable/disable CK1. OEN1 is used to enable/disable tri-state drivers of DOUT1 [ ]. The functionality of port2
is the same to port1. The port1 and port2 function independently each other.
DPSRAMA is an alternative of DPSRAM. The major difference of these two RAMs is the timing of read and
write. DPSRAMA reads and writes at different edge of the clock since DPSRAM reads and writes at the
same edge of the clock.
Pin Descriptions
Name I/O Description
CK1 I “Clock”s serve as input clocks to each port of the memory block. When CK1 (CK2)
CK2 is low, port1 (port2) is in a precharge state. Upon the rising edge, a read cycle
begins. Upon the falling edge, a write cycle ends.
CSN1 I “Chip Select Negative”s act as each port’s enable signal for selections of multiple
CSN2 blocks on a common clock. When CSN1 (CSN2) is high, port1 (port2) goes to
stand-by (power down) mode and no access can occur, conversely, if low only then
may a read or write access occur. CSN1 (CSN2) may not change during CK1 (CK2)
is high.
WEN1 I “Write Enable Negative”s select the type of memory access. Read is the high state,
WEN2 and write is the low state.
OEN1 I “Output Enable Negative”s control the output drivers from driven to tri-state
OEN2 condition. OEN1 (OEN2) may not change during CK1 (CK2) is high.
A1 [ ] I “Address”es select the location to be accessed. A1 [ ] (A2 [ ]) may not change during
A2 [ ] CK1 (CK2) is high.
DI1 [ ] I When CK1 (CK2) falls while WEN1 (WEN2) is low, or when WEN1 (WEN2) rises
DI2 [ ] while CK1 (CK2) is high, the “Data In” word value is written to the accessed location.
DOUT1 [ ] O During a read access, data word stored will be presented to the “Data Out” ports.
DOUT2 [ ] DOUT1 [ ] and DOUT2 [ ] are tri-statable. When CK1 (CK2) is high, CSN1 (CSN2) is
low and OEN1 (OEN2) is low, only then, DOUT1 [ ] (DOUT2 [ ]) drives a certain
value. Otherwise,
DOUT1 [ ] (DOUT2 [ ]) keeps Hi-Z state. During a write access, the value of DOUT1
[ ] (DOUT2 [ ]) is unpredictable.
Application Notes
1) Putting Busholders on DOUT1 [ ] and DOUT2 [ ]
As you will see in the timing diagrams, DOUT1 [ ] (DOUT2 [ ]) is valid only when CK1 (CK2) is high. If you
want DOUT1 [ ] (DOUT2 [ ]) to be stable regardless of CK1 (CK2) state, you should put STDL80 Busholder
cells on the DOUT1 [ ] (DOUT2 [ ]) bus externally.
3) Contention Modes
Simultaneous accesses to the same location through both ports cause a contention. DPSRAMA has no
contention preventing scheme. You have to take care of the contention modes. Please refer to the timing
diagrams of contention modes to get more information of contention modes.
Block Diagram
Word Word
A1 [m:0] CK1 OEN1 DI2 [b–1:0] DOUT1 [b–1:0] A2 [m:0] CK2 OEN2
Timing Diagrams
Read Cycle
tas tah
A STABLE
tpc
CK
trp
twh
WEN
tda
tacc
DOUT VALID
HI-Z
tas tah
A STABLE
CK tpc trp
twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT UNKNOWN
HI-Z
(CSN / OEN : LOW)
tas tah
A STABLE
trp
CK tpc
twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT UNKNOWN
HI-Z
(CSN / OEN : LOW)
tas tah
A STABLE
CK tpc
trp twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT VALID
HI-Z
(CSN / OEN : LOW)
tas tah
A STABLE
CK tpc
trp twp
WEN
tds tdh
DI STABLE
tacc tda
DOUT VALID
HI-Z
(CSN / OEN : LOW)
CSN Control
tas tah
CK
tcs tch
CSN
tda
tacc
DOUT HI-Z
(OEN : LOW, WEN / DI : DON’T CARE)
OEN Control
tas tah
CK
tos toh
OEN
tacc tda
DOUT HI-Z
(CSN : LOW, WEN / DI : DON’T CARE)
Function Diagrams
Read–Write Contention (max (t1, t2) ≤ trwc)
(A1 = A2) t1
CK1
WEN1
DOUT1 UNKNOWN
CK2
t2
WEN2
DOUT2 UNKNOWN
(CSN1 / CSN2 / OEN1 / OEN2 : LOW, DI1 : DON’T CARE, DI2 : VALID)
(A1 = A2) t1
CK1
t2
WEN1
DOUT1 UNKNOWN
CK2
WEN2
DOUT2 UNKNOWN
(CSN1 / CSN2 / OEN1 / OEN2 : LOW, DI1 : VALID, DI2 : DON’T CARE)
(A1 = A2) t1
CK1
t2
WEN1
DOUT1 UNKNOWN
CK2
WEN2
DOUT2 UNKNOWN
Write–Write Contention (max (t1, t2) ≤ twwc at WEN Defined Write Cycle)
(A1 = A2) t1
CK1
t2
WEN1
DOUT1 UNKNOWN
CK2
WEN2
DOUT2 UNKNOWN