// REVISION    : $Revision: 1.3 $
//                   MENTOR Proprietary and Confidential
//                       Copyright (c) 2002, MENTOR
`timescale 1ps/1ps
module
CoreTSE_M2S090_CORETSE_AHB_0_AMCXTFIF_WTM
#
(
parameter
FAMILY
=
19
,
parameter
RABITS
=
12
)
(
CORETSEIli0
,
CORETSElli0
,
CORETSEO0ii
,
CORETSEOOii
,
CORETSEiloi
,
CORETSEO0oi
,
CORETSEI0oi
,
CORETSEl0oi
,
CORETSEo0oi
,
CORETSEOI1l
,
CORETSEIi1i
,
CORETSEoi1i
,
CORETSEli1i
,
CORETSEiOoi
,
CORETSEli0l
,
CORETSEoI1i
,
CORETSEo11I
,
CORETSEii1i
)
;
input
CORETSEIli0
;
input
CORETSElli0
;
input
CORETSEO0ii
;
input
CORETSEOOii
;
input
[
15
:
0
]
CORETSEiloi
;
input
[
RABITS
:
0
]
CORETSEO0oi
;
input
[
RABITS
:
0
]
CORETSEI0oi
;
input
CORETSEl0oi
;
input
CORETSEo0oi
;
input
CORETSEOI1l
;
input
[
RABITS
:
0
]
CORETSEIi1i
;
input
CORETSEoi1i
;
input
[
RABITS
:
0
]
CORETSEli1i
;
output
CORETSEiOoi
;
output
CORETSEli0l
;
output
CORETSEoI1i
;
output
CORETSEo11I
;
output
CORETSEii1i
;
wire
CORETSEli0l
;
wire
CORETSEoI1i
;
reg
CORETSEo11I
;
reg
CORETSEii1i
;
parameter
CORETSEOII
=
1
;
parameter
CORETSEol0OI
=
{
RABITS
{
1
'b
0
}
}
;
parameter
CORETSEOlIOI
=
{
(
RABITS
+
1
)
{
1
'b
0
}
}
;
reg
[
5
:
0
]
CORETSEOloOI
;
reg
[
15
:
0
]
CORETSEIloOI
;
reg
[
6
:
0
]
CORETSElloOI
;
reg
CORETSEoloOI
;
reg
CORETSEiloOI
;
wire
[
RABITS
:
0
]
CORETSEO0oOI
;
reg
[
(
RABITS
-
1
)
:
0
]
CORETSEoo0OI
;
reg
[
RABITS
:
0
]
CORETSEio0OI
;
reg
CORETSEI0oOI
;
reg
CORETSEl0oOI
;
reg
CORETSEo0oOI
;
reg
CORETSEi0oOI
;
reg
[
RABITS
:
0
]
CORETSEO1oOI
;
reg
[
RABITS
:
0
]
CORETSEI1oOI
;
reg
CORETSEl1oOI
;
reg
CORETSEo1oOI
;
wire
CORETSElo1
;
wire
CORETSEoo1
;
assign
CORETSElo1
=
(
FAMILY
==
25
)
?
1
'b
0
:
CORETSEO0ii
;
assign
CORETSEoo1
=
(
FAMILY
==
25
)
?
CORETSEO0ii
:
1
'b
0
;
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
01
;
else
if
(
CORETSElli0
)
case
(
CORETSEOloOI
)
6
'h
01
:
if
(
CORETSEoloOI
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
02
;
6
'h
02
:
if
(
~
CORETSEOI1l
|
CORETSEo0oi
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
04
;
6
'h
04
:
if
(
CORETSEOI1l
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
08
;
6
'h
08
:
if
(
~
CORETSEiloOI
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
10
;
else
if
(
~
(
|
CORETSEIloOI
)
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
02
;
6
'h
10
:
if
(
~
CORETSEOI1l
|
CORETSEo0oi
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
20
;
6
'h
20
:
if
(
CORETSEOI1l
)
CORETSEOloOI
<=
#
CORETSEOII
6
'h
01
;
default
:
CORETSEOloOI
<=
#
CORETSEOII
6
'h
01
;
endcase
end
assign
CORETSEli0l
=
~
CORETSEo0oi
&
(
CORETSEOloOI
[
1
]
|
CORETSEOloOI
[
4
]
)
;
assign
CORETSEoI1i
=
(
|
CORETSEOloOI
[
2
:
0
]
)
;
assign
CORETSEiOoi
=
~
CORETSEOloOI
[
0
]
|
CORETSEo1oOI
;
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEo11I
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSElli0
)
CORETSEo11I
<=
#
CORETSEOII
CORETSEo0oi
&
(
CORETSEOloOI
[
1
]
|
(
CORETSEo11I
&
~
CORETSEOloOI
[
4
]
)
)
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEIloOI
<=
#
CORETSEOII
16
'h
FFFF
;
else
if
(
CORETSElli0
)
begin
if
(
CORETSEOloOI
[
3
]
&
(
CORETSEIloOI
==
16
'h
0
)
)
CORETSEIloOI
<=
#
CORETSEOII
CORETSEiloi
;
else
if
(
(
|
CORETSEOloOI
[
3
:
1
]
)
&
(
(
CORETSEl0oi
&
(
CORETSElloOI
==
7
'd
126
)
)
|
(
~
CORETSEl0oi
&
(
CORETSElloOI
==
7
'd
127
)
)
)
)
CORETSEIloOI
<=
#
CORETSEOII
(
CORETSEIloOI
-
16
'h
1
)
;
else
if
(
~
(
|
CORETSEOloOI
[
3
:
1
]
)
)
CORETSEIloOI
<=
#
CORETSEOII
CORETSEiloi
;
end
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSElloOI
<=
#
CORETSEOII
7
'h
0
;
else
if
(
CORETSElli0
&
(
|
CORETSEOloOI
[
3
:
1
]
)
&
CORETSEl0oi
)
CORETSElloOI
<=
#
CORETSEOII
CORETSElloOI
+
7
'h
2
;
else
if
(
CORETSElli0
&
(
|
CORETSEOloOI
[
3
:
1
]
)
&
~
CORETSEl0oi
)
CORETSElloOI
<=
#
CORETSEOII
CORETSElloOI
+
7
'h
1
;
else
if
(
CORETSElli0
)
CORETSElloOI
<=
#
CORETSEOII
7
'h
0
;
end
assign
CORETSEO0oOI
=
(
~
CORETSEo1oOI
)
?
CORETSEOlIOI
:
(
CORETSEI0oOI
==
CORETSEl0oOI
)
?
{
1
'b
0
,
CORETSEoo0OI
}
:
CORETSEio0OI
;
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEoloOI
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSElli0
)
CORETSEoloOI
<=
#
CORETSEOII
(
CORETSEO0oOI
>
CORETSEO0oi
)
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEiloOI
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSElli0
)
CORETSEiloOI
<=
#
CORETSEOII
(
CORETSEO0oOI
>
CORETSEI0oi
)
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEoo0OI
<=
#
CORETSEOII
CORETSEol0OI
;
else
if
(
CORETSElli0
)
CORETSEoo0OI
<=
#
CORETSEOII
CORETSEO1oOI
[
(
RABITS
-
1
)
:
0
]
-
CORETSEI1oOI
[
(
RABITS
-
1
)
:
0
]
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEio0OI
<=
#
CORETSEOII
CORETSEOlIOI
;
else
if
(
CORETSElli0
)
CORETSEio0OI
<=
#
CORETSEOII
{
1
'b
1
,
CORETSEO1oOI
[
(
RABITS
-
1
)
:
0
]
}
-
{
1
'b
0
,
CORETSEI1oOI
[
(
RABITS
-
1
)
:
0
]
}
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEI0oOI
<=
#
CORETSEOII
1
'h
0
;
else
if
(
CORETSElli0
)
CORETSEI0oOI
<=
#
CORETSEOII
CORETSEO1oOI
[
RABITS
]
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEl0oOI
<=
#
CORETSEOII
1
'h
0
;
else
if
(
CORETSElli0
)
CORETSEl0oOI
<=
#
CORETSEOII
CORETSEI1oOI
[
RABITS
]
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEo0oOI
<=
#
CORETSEOII
1
'b
0
;
else
CORETSEo0oOI
<=
#
CORETSEOII
CORETSEoi1i
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEi0oOI
<=
#
CORETSEOII
1
'b
0
;
else
CORETSEi0oOI
<=
#
CORETSEOII
CORETSEo0oOI
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEii1i
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSElli0
)
CORETSEii1i
<=
#
CORETSEOII
CORETSEi0oOI
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEO1oOI
<=
#
CORETSEOII
CORETSEOlIOI
;
else
if
(
CORETSElli0
&
CORETSEi0oOI
&
~
CORETSEii1i
)
CORETSEO1oOI
<=
#
CORETSEOII
CORETSEIi1i
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEI1oOI
<=
#
CORETSEOII
CORETSEOlIOI
;
else
if
(
CORETSElli0
&
CORETSEi0oOI
&
~
CORETSEii1i
)
CORETSEI1oOI
<=
#
CORETSEOII
CORETSEli1i
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEl1oOI
<=
#
CORETSEOII
1
'b
0
;
else
CORETSEl1oOI
<=
#
CORETSEOII
CORETSEOOii
;
end
always
@
(
posedge
CORETSEIli0
or
posedge
CORETSElo1
)
begin
if
(
CORETSEoo1
||
CORETSElo1
)
CORETSEo1oOI
<=
#
CORETSEOII
1
'b
0
;
else
CORETSEo1oOI
<=
#
CORETSEOII
CORETSEl1oOI
;
end
endmodule
