// REVISION    : $Revision: 1.2 $
// Mentor Graphics Corporation Proprietary and Confidential
// Copyright 2007 Mentor Graphics Corporation and Licensors
`timescale 1ps/1ps
module
CoreTSE_M2S090_CORETSE_AHB_0_PEREX_PMA
(
CORETSElIOI
,
CORETSEi010
,
CORETSEiIII
,
CORETSEI0II
,
CORETSEilo0
,
CORETSEI0OI
,
CORETSEooo0
,
CORETSEioo0
,
CORETSEOOo0
,
CORETSEoOo0
,
CORETSElOo0
,
CORETSEiOo0
)
;
parameter
FAMILY
=
19
;
parameter
SLIP_ENABLE
=
1
;
input
CORETSElIOI
;
input
[
9
:
0
]
CORETSEi010
;
input
CORETSEiIII
;
input
[
9
:
0
]
CORETSEI0II
;
input
CORETSEilo0
;
input
CORETSEI0OI
;
input
CORETSEOOo0
;
input
CORETSEoOo0
;
input
CORETSElOo0
;
output
[
19
:
0
]
CORETSEooo0
;
output
CORETSEioo0
;
output
CORETSEiOo0
;
parameter
CORETSEOII
=
1
;
reg
[
9
:
0
]
CORETSEi1li
;
reg
[
19
:
0
]
CORETSEOoli
;
reg
[
19
:
0
]
CORETSEIoli
;
wire
CORETSEloli
;
wire
CORETSEooli
;
reg
CORETSEioli
;
reg
CORETSEOili
;
reg
CORETSEIili
;
reg
CORETSElili
;
wire
CORETSEoili
;
wire
CORETSEioo0
;
parameter
CORETSEiili
=
3
'b
000
;
parameter
CORETSEOO0i
=
3
'b
001
;
parameter
CORETSEIO0i
=
3
'b
010
;
parameter
CORETSElO0i
=
3
'b
011
;
parameter
CORETSEoO0i
=
3
'b
100
;
reg
[
2
:
0
]
CORETSEiO0i
;
reg
[
2
:
0
]
CORETSEOI0i
;
reg
CORETSEII0i
;
reg
CORETSElI0i
;
reg
CORETSEoI0i
;
reg
[
3
:
0
]
CORETSEiI0i
;
wire
CORETSEOl0i
;
reg
CORETSEiOo0
;
reg
CORETSEIl0i
;
reg
CORETSEll0i
;
wire
CORETSEol0i
;
wire
CORETSElo1
;
wire
CORETSEoo1
;
assign
CORETSElo1
=
(
FAMILY
==
25
)
?
1
'b
0
:
CORETSEI0OI
;
assign
CORETSEoo1
=
(
FAMILY
==
25
)
?
CORETSEI0OI
:
1
'b
0
;
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEi1li
<=
#
CORETSEOII
10
'h
0
;
else
if
(
~
CORETSEOOo0
)
if
(
CORETSEilo0
)
CORETSEi1li
<=
#
CORETSEOII
CORETSEI0II
;
else
CORETSEi1li
<=
#
CORETSEOII
CORETSEi010
;
end
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEOoli
<=
#
CORETSEOII
20
'h
0
;
else
if
(
CORETSEOOo0
)
if
(
CORETSEilo0
)
CORETSEOoli
<=
#
CORETSEOII
{
CORETSEI0II
,
CORETSEi1li
}
;
else
CORETSEOoli
<=
#
CORETSEOII
{
CORETSEi010
,
CORETSEi1li
}
;
end
reg
[
19
:
0
]
CORETSEil0i
;
wire
[
9
:
0
]
CORETSEO00i
;
reg
[
9
:
0
]
CORETSEI00i
;
wire
[
19
:
0
]
CORETSEl00i
;
reg
[
19
:
0
]
CORETSEo00i
;
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEil0i
<=
#
CORETSEOII
20
'h
0
;
else
if
(
CORETSEOOo0
)
CORETSEil0i
<=
#
CORETSEOII
CORETSEOoli
;
end
generate
if
(
SLIP_ENABLE
==
0
)
begin
assign
CORETSEO00i
[
0
]
=
(
(
CORETSEil0i
[
6
:
0
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
6
:
0
]
==
7
'b
0000011
)
|
(
CORETSEil0i
[
16
:
10
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
16
:
10
]
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
1
]
=
(
(
CORETSEil0i
[
7
:
1
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
7
:
1
]
==
7
'b
0000011
)
|
(
CORETSEil0i
[
17
:
11
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
17
:
11
]
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
2
]
=
(
(
CORETSEil0i
[
8
:
2
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
8
:
2
]
==
7
'b
0000011
)
|
(
CORETSEil0i
[
18
:
12
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
18
:
12
]
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
3
]
=
(
(
CORETSEil0i
[
9
:
3
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
9
:
3
]
==
7
'b
0000011
)
|
(
CORETSEil0i
[
19
:
13
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
19
:
13
]
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
4
]
=
(
(
CORETSEil0i
[
10
:
4
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
10
:
4
]
==
7
'b
0000011
)
|
(
{
CORETSEOoli
[
0
]
,
CORETSEil0i
[
19
:
14
]
}
==
7
'b
1111100
)
|
(
{
CORETSEOoli
[
0
]
,
CORETSEil0i
[
19
:
14
]
}
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
5
]
=
(
(
CORETSEil0i
[
11
:
5
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
11
:
5
]
==
7
'b
0000011
)
|
(
{
CORETSEOoli
[
1
:
0
]
,
CORETSEil0i
[
19
:
15
]
}
==
7
'b
1111100
)
|
(
{
CORETSEOoli
[
1
:
0
]
,
CORETSEil0i
[
19
:
15
]
}
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
6
]
=
(
(
CORETSEil0i
[
12
:
6
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
12
:
6
]
==
7
'b
0000011
)
|
(
{
CORETSEOoli
[
2
:
0
]
,
CORETSEil0i
[
19
:
16
]
}
==
7
'b
1111100
)
|
(
{
CORETSEOoli
[
2
:
0
]
,
CORETSEil0i
[
19
:
16
]
}
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
7
]
=
(
(
CORETSEil0i
[
13
:
7
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
13
:
7
]
==
7
'b
0000011
)
|
(
{
CORETSEOoli
[
3
:
0
]
,
CORETSEil0i
[
19
:
17
]
}
==
7
'b
1111100
)
|
(
{
CORETSEOoli
[
3
:
0
]
,
CORETSEil0i
[
19
:
17
]
}
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
8
]
=
(
(
CORETSEil0i
[
14
:
8
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
14
:
8
]
==
7
'b
0000011
)
|
(
{
CORETSEOoli
[
4
:
0
]
,
CORETSEil0i
[
19
:
18
]
}
==
7
'b
1111100
)
|
(
{
CORETSEOoli
[
4
:
0
]
,
CORETSEil0i
[
19
:
18
]
}
==
7
'b
0000011
)
)
;
assign
CORETSEO00i
[
9
]
=
(
(
CORETSEil0i
[
15
:
9
]
==
7
'b
1111100
)
|
(
CORETSEil0i
[
15
:
9
]
==
7
'b
0000011
)
|
(
{
CORETSEOoli
[
5
:
0
]
,
CORETSEil0i
[
19
]
}
==
7
'b
1111100
)
|
(
{
CORETSEOoli
[
5
:
0
]
,
CORETSEil0i
[
19
]
}
==
7
'b
0000011
)
)
;
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEI00i
<=
#
CORETSEOII
10
'h
001
;
else
if
(
|
CORETSEO00i
&
CORETSEOOo0
)
CORETSEI00i
<=
#
CORETSEOII
CORETSEO00i
;
end
assign
CORETSEl00i
=
{
20
{
CORETSEI00i
==
10
'h
001
}
}
&
CORETSEil0i
|
{
20
{
CORETSEI00i
[
9
:
1
]
==
9
'h
001
}
}
&
{
CORETSEOoli
[
0
]
,
CORETSEil0i
[
19
:
1
]
}
|
{
20
{
CORETSEI00i
[
9
:
2
]
==
8
'h
01
}
}
&
{
CORETSEOoli
[
1
:
0
]
,
CORETSEil0i
[
19
:
2
]
}
|
{
20
{
CORETSEI00i
[
9
:
3
]
==
7
'h
01
}
}
&
{
CORETSEOoli
[
2
:
0
]
,
CORETSEil0i
[
19
:
3
]
}
|
{
20
{
CORETSEI00i
[
9
:
4
]
==
6
'h
01
}
}
&
{
CORETSEOoli
[
3
:
0
]
,
CORETSEil0i
[
19
:
4
]
}
|
{
20
{
CORETSEI00i
[
9
:
5
]
==
5
'h
01
}
}
&
{
CORETSEOoli
[
4
:
0
]
,
CORETSEil0i
[
19
:
5
]
}
|
{
20
{
CORETSEI00i
[
9
:
6
]
==
4
'h
1
}
}
&
{
CORETSEOoli
[
5
:
0
]
,
CORETSEil0i
[
19
:
6
]
}
|
{
20
{
CORETSEI00i
[
9
:
7
]
==
3
'h
1
}
}
&
{
CORETSEOoli
[
6
:
0
]
,
CORETSEil0i
[
19
:
7
]
}
|
{
20
{
CORETSEI00i
[
9
:
8
]
==
2
'h
1
}
}
&
{
CORETSEOoli
[
7
:
0
]
,
CORETSEil0i
[
19
:
8
]
}
|
{
20
{
CORETSEI00i
[
9
]
==
1
'b
1
}
}
&
{
CORETSEOoli
[
8
:
0
]
,
CORETSEil0i
[
19
:
9
]
}
;
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEo00i
<=
#
CORETSEOII
20
'h
0
;
else
if
(
CORETSEOOo0
)
CORETSEo00i
<=
#
CORETSEOII
CORETSEl00i
;
end
end
endgenerate
generate
if
(
SLIP_ENABLE
==
1
)
begin
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSEI0OI
)
begin
if
(
CORETSEI0OI
)
CORETSEo00i
<=
#
CORETSEOII
20
'h
0
;
else
if
(
CORETSEOOo0
)
CORETSEo00i
<=
#
CORETSEOII
CORETSEil0i
;
end
end
endgenerate
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEIoli
<=
#
CORETSEOII
20
'h
0
;
else
if
(
CORETSEOOo0
)
CORETSEIoli
<=
#
CORETSEOII
CORETSEo00i
;
end
generate
if
(
SLIP_ENABLE
==
1
)
begin
assign
CORETSEloli
=
CORETSEOoli
[
9
:
0
]
==
10
'b
01_0111_1100
|
CORETSEOoli
[
9
:
0
]
==
10
'b
10_1000_0011
|
CORETSEOoli
[
9
:
0
]
==
10
'b
10_0111_1100
|
CORETSEOoli
[
9
:
0
]
==
10
'b
01_1000_0011
;
assign
CORETSEooli
=
CORETSEOoli
[
19
:
10
]
==
10
'b
01_0111_1100
|
CORETSEOoli
[
19
:
10
]
==
10
'b
10_1000_0011
|
CORETSEOoli
[
19
:
10
]
==
10
'b
10_0111_1100
|
CORETSEOoli
[
19
:
10
]
==
10
'b
01_1000_0011
;
end
endgenerate
generate
if
(
SLIP_ENABLE
==
0
)
begin
assign
CORETSEloli
=
CORETSEo00i
[
9
:
0
]
==
10
'b
01_0111_1100
|
CORETSEo00i
[
9
:
0
]
==
10
'b
10_1000_0011
|
CORETSEo00i
[
9
:
0
]
==
10
'b
10_0111_1100
|
CORETSEo00i
[
9
:
0
]
==
10
'b
01_1000_0011
;
assign
CORETSEooli
=
CORETSEo00i
[
19
:
10
]
==
10
'b
01_0111_1100
|
CORETSEo00i
[
19
:
10
]
==
10
'b
10_1000_0011
|
CORETSEo00i
[
19
:
10
]
==
10
'b
10_0111_1100
|
CORETSEo00i
[
19
:
10
]
==
10
'b
01_1000_0011
;
end
endgenerate
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEioli
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEOOo0
)
CORETSEioli
<=
#
CORETSEOII
CORETSEloli
;
end
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEOili
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEOOo0
)
CORETSEOili
<=
#
CORETSEOII
CORETSEooli
;
end
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEIili
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEOOo0
)
CORETSEIili
<=
#
CORETSEOII
CORETSEOili
;
end
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSElili
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEiIII
&
CORETSEOOo0
)
CORETSElili
<=
#
CORETSEOII
1
'b
1
;
else
if
(
CORETSEooli
&
~
CORETSEloli
&
CORETSEOOo0
)
CORETSElili
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEloli
&
~
CORETSEooli
&
CORETSEOOo0
)
CORETSElili
<=
#
CORETSEOII
1
'b
1
;
end
assign
CORETSEooo0
=
{
20
{
CORETSElili
}
}
&
CORETSEIoli
|
{
20
{
~
CORETSElili
}
}
&
{
CORETSEo00i
[
9
:
0
]
,
CORETSEIoli
[
19
:
10
]
}
;
assign
CORETSEoili
=
(
CORETSElili
&
(
(
CORETSEOili
&
CORETSEioli
)
|
(
CORETSEIili
&
CORETSEioli
)
)
)
|
(
~
CORETSElili
&
(
(
CORETSEloli
&
CORETSEOili
)
|
(
CORETSEOili
&
CORETSEioli
)
)
)
;
assign
CORETSEioo0
=
1
'b
0
;
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSEI0OI
)
begin
if
(
CORETSEI0OI
)
begin
CORETSEll0i
<=
1
'b
0
;
end
else
begin
CORETSEll0i
<=
CORETSEoOo0
;
end
end
assign
CORETSEol0i
=
CORETSEoOo0
&
!
CORETSEll0i
;
generate
if
(
SLIP_ENABLE
==
1
)
begin
assign
CORETSEOl0i
=
CORETSEloli
|
CORETSEooli
;
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSEI0OI
)
begin
if
(
CORETSEI0OI
)
begin
CORETSEoI0i
<=
1
'b
0
;
end
else
begin
CORETSEoI0i
<=
CORETSElI0i
;
end
end
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSEI0OI
)
begin
if
(
CORETSEI0OI
)
begin
CORETSEiO0i
<=
CORETSEiili
;
end
else
begin
CORETSEiO0i
<=
CORETSEOI0i
;
end
end
always
@
(
*
)
begin
CORETSEOI0i
=
CORETSEiO0i
;
CORETSEII0i
=
1
'b
0
;
CORETSElI0i
=
CORETSEoI0i
;
CORETSEIl0i
=
1
'b
0
;
case
(
CORETSEiO0i
)
CORETSEiili
:
begin
if
(
CORETSElOo0
==
1
'b
1
)
begin
CORETSEOI0i
=
CORETSEOO0i
;
CORETSElI0i
=
1
'b
1
;
end
end
CORETSEOO0i
:
begin
if
(
CORETSEiI0i
==
4
'h
F
)
begin
CORETSEOI0i
=
CORETSEIO0i
;
CORETSElI0i
=
1
'b
0
;
end
end
CORETSEIO0i
:
begin
if
(
CORETSEOl0i
==
1
'b
0
)
begin
CORETSEOI0i
=
CORETSElO0i
;
end
else
begin
CORETSEOI0i
=
CORETSEoO0i
;
end
if
(
CORETSEOl0i
==
1
'b
0
)
begin
CORETSEII0i
=
(
CORETSEoOo0
&
1
'b
1
)
;
CORETSElI0i
=
1
'b
1
;
end
else
begin
CORETSEOI0i
=
CORETSEoO0i
;
end
end
CORETSElO0i
:
begin
if
(
CORETSEiI0i
==
4
'h
F
)
begin
CORETSEOI0i
=
CORETSEIO0i
;
CORETSElI0i
=
1
'b
0
;
end
end
CORETSEoO0i
:
begin
CORETSEIl0i
=
1
'b
1
;
end
default
:
begin
CORETSEOI0i
=
CORETSEiili
;
end
endcase
end
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSEI0OI
)
begin
if
(
CORETSEI0OI
)
begin
CORETSEiI0i
<=
'h
0
;
end
else
begin
if
(
CORETSEiI0i
==
'h
F
)
begin
CORETSEiI0i
<=
'h
0
;
end
else
if
(
CORETSEoOo0
&&
CORETSElI0i
)
begin
CORETSEiI0i
<=
CORETSEiI0i
+
'h
1
;
end
end
end
always
@
(
posedge
CORETSElIOI
or
posedge
CORETSEI0OI
)
begin
if
(
CORETSEI0OI
)
begin
CORETSEiOo0
<=
'h
0
;
end
else
begin
CORETSEiOo0
<=
CORETSEII0i
;
end
end
end
endgenerate
endmodule
