// REVISION    : $Revision: 1.7 $
//                   MENTOR Proprietary and Confidential
//                       Copyright (c) 2003, MENTOR
`timescale 1ns/1ns
module
CoreTSE_M2S090_CORETSE_AHB_0_PERMC_TOP
(
CORETSEl
,
CORETSEo
,
CORETSEOOo
,
CORETSEIOo
,
CORETSElOo
,
CORETSEoOo
,
CORETSEiOo
,
CORETSEOIo
,
CORETSEiI
,
CORETSEIIo
,
CORETSElIo
,
CORETSEoIo
,
CORETSEiIo
,
CORETSEOlo
,
CORETSEIlo
,
CORETSEllo
,
CORETSEI1
,
CORETSEl1
,
CORETSEo1
,
CORETSEi1
,
CORETSElo
,
CORETSEoo
,
CORETSEI0
,
CORETSEl0
,
CORETSEo0
,
CORETSEolo
)
;
input
CORETSEl
,
CORETSEo
;
input
[
7
:
0
]
CORETSEOOo
;
input
CORETSEIOo
,
CORETSElOo
,
CORETSEoOo
;
input
CORETSEiOo
;
input
[
32
:
0
]
CORETSEOIo
;
input
[
1
:
0
]
CORETSEiI
;
input
CORETSElIo
;
input
[
47
:
0
]
CORETSEoIo
;
input
CORETSEiIo
;
input
CORETSEOlo
;
input
CORETSEIlo
;
input
CORETSEIIo
;
output
[
7
:
0
]
CORETSEI1
;
output
CORETSEl1
,
CORETSEo1
,
CORETSEi1
;
output
CORETSElo
;
output
[
32
:
0
]
CORETSEoo
;
output
CORETSEllo
;
output
CORETSEI0
,
CORETSEl0
,
CORETSEo0
,
CORETSEolo
;
reg
[
7
:
0
]
CORETSEI1
;
reg
CORETSEl1
,
CORETSEo1
,
CORETSEi1
;
reg
CORETSElo
;
reg
[
32
:
0
]
CORETSEoo
;
reg
CORETSEllo
;
reg
CORETSEI0
,
CORETSEl0
,
CORETSEo0
,
CORETSEolo
;
parameter
CORETSEOII
=
1
;
parameter
FAMILY
=
19
;
wire
[
4
:
0
]
CORETSEilo
;
wire
CORETSEO0o
,
CORETSEI0o
;
wire
[
4
:
0
]
CORETSEl0o
;
reg
[
4
:
0
]
CORETSEo0o
;
wire
CORETSEi0o
,
CORETSEO1o
,
CORETSEI1o
,
CORETSEl1o
;
wire
CORETSEo1o
,
CORETSEi1o
,
CORETSEOoo
;
wire
CORETSEIoo
,
CORETSEloo
,
CORETSEooo
,
CORETSEioo
;
wire
CORETSEOio
,
CORETSEIio
;
wire
CORETSElio
,
CORETSEoio
,
CORETSEiio
,
CORETSEOOi
;
wire
CORETSEIOi
,
CORETSElOi
;
wire
CORETSEoOi
,
CORETSEiOi
,
CORETSEOIi
,
CORETSEIIi
;
wire
CORETSElIi
,
CORETSEoIi
;
wire
CORETSEiIi
,
CORETSEOli
;
wire
CORETSEOi0
;
reg
CORETSElOI
;
wire
CORETSEIli
;
wire
CORETSElli
;
reg
CORETSEoli
;
wire
[
15
:
0
]
CORETSEili
;
reg
[
15
:
0
]
CORETSEO0i
;
wire
CORETSEI0i
;
wire
[
15
:
0
]
CORETSEl0i
;
reg
[
15
:
0
]
CORETSEo0i
;
wire
CORETSEi0i
;
reg
CORETSEO1i
;
wire
CORETSEI1i
,
CORETSEl1i
;
reg
CORETSEo1i
,
CORETSEi1i
;
wire
[
15
:
0
]
CORETSEOoi
;
reg
[
15
:
0
]
CORETSEIoi
;
wire
CORETSEloi
,
CORETSEooi
;
wire
[
6
:
0
]
CORETSEioi
;
reg
[
6
:
0
]
CORETSEOii
;
wire
CORETSEIii
;
reg
CORETSElii
;
wire
CORETSEoii
,
CORETSEiii
,
CORETSEOOOI
;
reg
CORETSEIOOI
;
reg
CORETSElOOI
;
wire
CORETSElo1
;
wire
CORETSEoo1
;
assign
CORETSElo1
=
(
FAMILY
==
25
)
?
1
'b
0
:
CORETSEOlo
;
assign
CORETSEoo1
=
(
FAMILY
==
25
)
?
CORETSEOlo
:
1
'b
0
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
begin
CORETSEIOOI
<=
#
CORETSEOII
1
'h
0
;
CORETSElOOI
<=
#
CORETSEOII
1
'h
0
;
end
else
begin
CORETSEIOOI
<=
#
CORETSEOII
CORETSEIlo
;
CORETSElOOI
<=
#
CORETSEOII
CORETSEIOOI
;
end
end
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEI1
[
7
:
0
]
<=
#
CORETSEOII
8
'h
0
;
else
if
(
CORETSEo
)
CORETSEI1
[
7
:
0
]
<=
#
CORETSEOII
CORETSEOOo
[
7
:
0
]
;
end
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEl1
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEl1
<=
#
CORETSEOII
CORETSEIOo
;
end
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEo1
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEo1
<=
#
CORETSEOII
CORETSElOo
;
end
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEi1
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEi1
<=
#
CORETSEOII
CORETSEoOo
;
end
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSElo
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSElo
<=
#
CORETSEOII
CORETSEiOo
;
end
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEoo
[
32
:
0
]
<=
#
CORETSEOII
33
'h
0
;
else
if
(
CORETSEo
)
CORETSEoo
[
32
:
0
]
<=
#
CORETSEOII
CORETSEOIo
[
32
:
0
]
;
end
assign
CORETSEilo
[
4
:
0
]
=
5
'b
0_0000
;
assign
CORETSEO0o
=
CORETSEiOo
;
assign
CORETSEI0o
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
!=
5
'b
1_0010
;
assign
CORETSEl0o
[
4
:
0
]
=
{
5
{
CORETSEO0o
}
}
&
CORETSEilo
[
4
:
0
]
|
{
5
{
~
CORETSEO0o
&
CORETSEI0o
}
}
&
CORETSEo0o
[
4
:
0
]
+
1
'b
1
|
{
5
{
~
CORETSEO0o
&
~
CORETSEI0o
}
}
&
CORETSEo0o
[
4
:
0
]
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEo0o
[
4
:
0
]
<=
#
CORETSEOII
5
'b
0_0000
;
else
if
(
CORETSEo
)
CORETSEo0o
[
4
:
0
]
<=
#
CORETSEOII
CORETSEl0o
[
4
:
0
]
;
end
assign
CORETSEi0o
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_0000
;
assign
CORETSEO1o
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_0001
;
assign
CORETSEI1o
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_0010
;
assign
CORETSEl1o
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_0011
;
assign
CORETSEo1o
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_0100
;
assign
CORETSEi1o
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_0101
;
assign
CORETSEOoo
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
>
5
'b
0_0101
;
assign
CORETSEIoo
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_1100
;
assign
CORETSEloo
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_1101
;
assign
CORETSEooo
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_1110
;
assign
CORETSEioo
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
0_1111
;
assign
CORETSEOio
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
1_0000
;
assign
CORETSEIio
=
CORETSEIOo
&
CORETSEo0o
[
4
:
0
]
==
5
'b
1_0001
;
assign
CORETSElio
=
CORETSEi0o
&
(
8
'h
01
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEoio
=
CORETSEO1o
&
(
8
'h
80
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEiio
=
CORETSEI1o
&
(
8
'h
c2
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEOOi
=
CORETSEl1o
&
(
8
'h
00
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEIOi
=
CORETSEo1o
&
(
8
'h
00
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSElOi
=
CORETSEi1o
&
(
8
'h
01
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEoOi
=
CORETSEi0o
&
(
CORETSEoIo
[
47
:
40
]
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEiOi
=
CORETSEO1o
&
(
CORETSEoIo
[
39
:
32
]
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEOIi
=
CORETSEI1o
&
(
CORETSEoIo
[
31
:
24
]
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEIIi
=
CORETSEl1o
&
(
CORETSEoIo
[
23
:
16
]
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSElIi
=
CORETSEo1o
&
(
CORETSEoIo
[
15
:
8
]
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEoIi
=
CORETSEi1o
&
(
CORETSEoIo
[
7
:
0
]
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEiIi
=
CORETSEIoo
&
(
8
'h
88
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEOli
=
CORETSEloo
&
(
8
'h
08
==
CORETSEOOo
[
7
:
0
]
)
;
assign
CORETSEOi0
=
~
CORETSElOI
&
CORETSEi0o
&
CORETSElio
|
CORETSElOI
&
CORETSEi0o
&
CORETSElio
|
CORETSElOI
&
CORETSEO1o
&
CORETSEoio
|
CORETSElOI
&
CORETSEI1o
&
CORETSEiio
|
CORETSElOI
&
CORETSEl1o
&
CORETSEOOi
|
CORETSElOI
&
CORETSEo1o
&
CORETSEIOi
|
CORETSElOI
&
CORETSEi1o
&
CORETSElOi
|
CORETSElOI
&
(
CORETSEOoo
|
~
CORETSEIOo
)
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSElOI
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSElOI
<=
#
CORETSEOII
CORETSEOi0
;
end
assign
CORETSEIli
=
~
CORETSEolo
&
CORETSEi0o
&
CORETSEoOi
|
CORETSEolo
&
CORETSEO1o
&
CORETSEiOi
|
CORETSEolo
&
CORETSEI1o
&
CORETSEOIi
|
CORETSEolo
&
CORETSEl1o
&
CORETSEIIi
|
CORETSEolo
&
CORETSEo1o
&
CORETSElIi
|
CORETSEolo
&
CORETSEi1o
&
CORETSEoIi
|
CORETSEolo
&
CORETSEOoo
|
CORETSEolo
&
~
CORETSEIOo
&
~
CORETSElo
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEolo
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEolo
<=
#
CORETSEOII
CORETSEIli
;
end
assign
CORETSElli
=
~
CORETSEoli
&
CORETSEIoo
&
CORETSEiIi
|
CORETSEoli
&
CORETSEloo
&
CORETSEOli
|
CORETSEoli
&
~
(
CORETSEIoo
&
~
CORETSEiIi
|
CORETSEloo
&
~
CORETSEOli
)
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEoli
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEoli
<=
#
CORETSEOII
CORETSElli
;
end
assign
CORETSEili
[
15
:
0
]
=
{
16
{
CORETSEooo
}
}
&
{
CORETSEOOo
[
7
:
0
]
,
CORETSEO0i
[
7
:
0
]
}
|
{
16
{
CORETSEioo
}
}
&
{
CORETSEO0i
[
15
:
8
]
,
CORETSEOOo
[
7
:
0
]
}
|
{
16
{
~
CORETSEooo
&
~
CORETSEioo
}
}
&
{
CORETSEO0i
[
15
:
8
]
,
CORETSEO0i
[
7
:
0
]
}
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEO0i
[
15
:
0
]
<=
#
CORETSEOII
16
'h
0
;
else
if
(
CORETSEo
)
CORETSEO0i
[
15
:
0
]
<=
#
CORETSEOII
CORETSEili
[
15
:
0
]
;
end
assign
CORETSEI0i
=
CORETSEO0i
[
15
:
0
]
==
16
'h
0001
;
assign
CORETSEl0i
[
15
:
0
]
=
{
16
{
CORETSEOio
}
}
&
{
CORETSEOOo
[
7
:
0
]
,
CORETSEo0i
[
7
:
0
]
}
|
{
16
{
CORETSEIio
}
}
&
{
CORETSEo0i
[
15
:
8
]
,
CORETSEOOo
[
7
:
0
]
}
|
{
16
{
~
CORETSEOio
&
~
CORETSEIio
}
}
&
{
CORETSEo0i
[
15
:
8
]
,
CORETSEo0i
[
7
:
0
]
}
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEo0i
[
15
:
0
]
<=
#
CORETSEOII
16
'h
0
;
else
if
(
CORETSEo
)
CORETSEo0i
[
15
:
0
]
<=
#
CORETSEOII
CORETSEl0i
[
15
:
0
]
;
end
assign
CORETSEi0i
=
(
CORETSElOI
|
CORETSEolo
)
&
CORETSEoli
&
CORETSEI0i
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEO1i
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEO1i
<=
#
CORETSEOII
CORETSEi0i
;
end
assign
CORETSEI1i
=
CORETSEO1i
&
CORETSEiOo
&
CORETSEOIo
[
23
]
&
CORETSEOIo
[
15
:
0
]
>=
16
'h
0040
&
CORETSEOIo
[
15
:
0
]
<=
16
'h
5dc
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEo1i
<=
#
CORETSEOII
1
'b
1
;
else
if
(
CORETSEo
)
CORETSEo1i
<=
#
CORETSEOII
CORETSEI1i
;
end
assign
CORETSEl1i
=
CORETSEIii
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEi1i
<=
#
CORETSEOII
1
'b
1
;
else
if
(
CORETSEo
)
CORETSEi1i
<=
#
CORETSEOII
CORETSEl1i
;
end
assign
CORETSEOoi
[
15
:
0
]
=
{
16
{
CORETSEo1i
}
}
&
CORETSEo0i
[
15
:
0
]
|
{
16
{
~
CORETSEo1i
&
CORETSEi1i
&
|
CORETSEIoi
}
}
&
CORETSEIoi
[
15
:
0
]
-
1
'b
1
|
{
16
{
~
CORETSEo1i
&
~
CORETSEi1i
}
}
&
CORETSEIoi
[
15
:
0
]
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEIoi
[
15
:
0
]
<=
#
CORETSEOII
16
'h
0
;
else
if
(
CORETSEo
)
CORETSEIoi
[
15
:
0
]
<=
#
CORETSEOII
CORETSEOoi
[
15
:
0
]
;
end
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEllo
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEllo
<=
#
CORETSEOII
|
CORETSEIoi
[
15
:
0
]
&
CORETSElIo
|
CORETSEIIo
;
end
assign
CORETSEloi
=
CORETSEo1i
|
CORETSElii
;
assign
CORETSEooi
=
|
CORETSEIoi
[
15
:
0
]
;
assign
CORETSEioi
[
6
:
0
]
=
{
7
{
~
CORETSEloi
&
CORETSEooi
&
CORETSElOOI
}
}
&
CORETSEOii
[
6
:
0
]
+
1
'b
1
|
{
7
{
~
CORETSEloi
&
CORETSEooi
&
~
CORETSElOOI
}
}
&
CORETSEOii
[
6
:
0
]
|
{
7
{
~
CORETSEloi
&
~
CORETSEooi
}
}
&
CORETSEOii
[
6
:
0
]
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEOii
[
6
:
0
]
<=
#
CORETSEOII
7
'h
0
;
else
if
(
CORETSEo
)
CORETSEOii
[
6
:
0
]
<=
#
CORETSEOII
CORETSEioi
[
6
:
0
]
;
end
assign
CORETSEIii
=
~
CORETSEiI
[
1
]
&
CORETSEOii
[
6
:
0
]
==
7
'h
7e
&
CORETSEooi
&
CORETSElOOI
|
CORETSEiI
[
1
]
&
CORETSEOii
[
6
:
0
]
==
7
'h
3e
&
CORETSEooi
&
CORETSElOOI
|
CORETSEiIo
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSElii
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSElii
<=
#
CORETSEOII
CORETSEIii
;
end
assign
CORETSEoii
=
CORETSEoli
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEI0
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEI0
<=
#
CORETSEOII
CORETSEoii
;
end
assign
CORETSEiii
=
(
CORETSElOI
|
CORETSEolo
)
&
CORETSEoli
&
CORETSEI0i
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEl0
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEl0
<=
#
CORETSEOII
CORETSEiii
;
end
assign
CORETSEOOOI
=
CORETSEoli
&
~
CORETSEI0i
;
always
@
(
posedge
CORETSEl
or
posedge
CORETSElo1
)
begin
if
(
CORETSElo1
||
CORETSEoo1
)
CORETSEo0
<=
#
CORETSEOII
1
'b
0
;
else
if
(
CORETSEo
)
CORETSEo0
<=
#
CORETSEOII
CORETSEOOOI
;
end
endmodule
