//                        Proprietary and Confidential 
// REVISION    : $Revision: 1.7 $ 
module
CoreTSE_M2S090_CORETSE_AHB_0_TSM_SYSREG
#
(
parameter
FAMILY
=
19
,
parameter
CORETSEoO00
=
1
,
parameter
CORETSEO
=
0
)
(
input
CORETSEiO00,
input
CORETSEOI00,
input
CORETSEII00,
input
CORETSElI00,
input
[
4
:
0
]
CORETSEoI00,
input
[
31
:
0
]
CORETSEiI00,
input
[
31
:
0
]
CORETSEOl00,
output
[
5
:
0
]
CORETSEIl00,
output
[
31
:
0
]
CORETSEll00,
output
[
31
:
0
]
CORETSEol00,
output
[
31
:
0
]
CORETSEil00,
output
[
31
:
0
]
CORETSEO000,
output
[
31
:
0
]
CORETSEI000,
output
[
31
:
0
]
CORETSEl000,
output
[
31
:
0
]
CORETSEo000,
output
[
31
:
0
]
CORETSEi000,
output
CORETSEO100
)
;
wire
[
5
:
0
]
CORETSEI100
;
wire
[
31
:
0
]
CORETSEl100
;
wire
[
31
:
0
]
CORETSEo100
;
wire
[
31
:
0
]
CORETSEi100
;
wire
[
31
:
0
]
CORETSEOo00
;
wire
[
31
:
0
]
CORETSEIo00
;
reg
[
5
:
0
]
CORETSElo00
;
reg
[
31
:
0
]
CORETSEoo00
;
reg
[
31
:
0
]
CORETSEio00
;
reg
[
31
:
0
]
CORETSEOi00
;
reg
[
31
:
0
]
CORETSEIi00
;
reg
[
31
:
0
]
CORETSEli00
;
wire
CORETSEoi00
;
wire
CORETSEii00
;
wire
[
31
:
0
]
CORETSEOO10
;
reg
[
31
:
0
]
CORETSEIO10
;
wire
[
31
:
0
]
CORETSElO10
;
reg
[
31
:
0
]
CORETSEoO10
;
`define CORETSEiO10  \
5 \
'b \
1_0000
`define CORETSEOI10  \
5 \
'b \
1_0001
`define CORETSEII10  \
5 \
'b \
1_0010
`define CORETSElI10  \
5 \
'b \
1_0011
`define CORETSEoI10  \
5 \
'b \
1_0100
`define CORETSEiI10  \
5 \
'b \
1_0101
`define CORETSEOl10  \
5 \
'b \
1_0110
`define CORETSEIl10  \
5 \
'b \
1_1000
`define CORETSEll10  \
5 \
'b \
1_1001
assign
CORETSEioil
=
(
FAMILY
==
25
)
?
1
'b
0
:
CORETSEOI00
;
assign
CORETSEOiil
=
(
FAMILY
==
25
)
?
CORETSEOI00
:
1
'b
0
;
assign
CORETSEIl00
=
CORETSElo00
;
assign
CORETSEll00
=
CORETSEoo00
;
assign
CORETSEol00
=
CORETSEio00
;
assign
CORETSEil00
=
CORETSEOi00
;
assign
CORETSEO000
=
CORETSEIi00
;
assign
CORETSEI000
=
CORETSEli00
;
generate
if
(
CORETSEoO00
==
1
)
begin
assign
CORETSEl000
=
CORETSEIO10
;
assign
CORETSEo000
=
CORETSEoO10
;
end
else
begin
assign
CORETSEl000
=
32
'b
0
;
assign
CORETSEo000
=
32
'b
0
;
end
endgenerate
assign
CORETSEol10
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSEiO10
&&
!
CORETSElI00
)
;
assign
CORETSEil10
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSEOI10
&&
!
CORETSElI00
)
;
assign
CORETSEO010
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSEII10
&&
!
CORETSElI00
)
;
assign
CORETSEI010
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSElI10
&&
!
CORETSElI00
)
;
assign
CORETSEl010
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSEoI10
&&
!
CORETSElI00
)
;
assign
CORETSEo010
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSEiI10
&&
!
CORETSElI00
)
;
assign
CORETSEI100
=
CORETSEol10
?
CORETSEiI00
[
5
:
0
]
:
CORETSElo00
;
assign
CORETSEl100
=
CORETSEil10
?
CORETSEiI00
:
CORETSEoo00
;
assign
CORETSEo100
=
CORETSEO010
?
CORETSEiI00
:
CORETSEio00
;
assign
CORETSEi100
=
CORETSEI010
?
CORETSEiI00
:
CORETSEOi00
;
assign
CORETSEOo00
=
CORETSEl010
?
CORETSEiI00
:
CORETSEIi00
;
assign
CORETSEIo00
=
CORETSEo010
?
CORETSEiI00
:
CORETSEli00
;
generate
if
(
CORETSEoO00
==
1
)
begin
assign
CORETSEoi00
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSEIl10
&&
!
CORETSElI00
)
;
assign
CORETSEii00
=
(
!
CORETSEII00
&&
CORETSEoI00
[
4
:
0
]
==
`CORETSEll10
&&
!
CORETSElI00
)
;
assign
CORETSEOO10
=
CORETSEoi00
?
CORETSEiI00
:
CORETSEIO10
;
assign
CORETSElO10
=
CORETSEii00
?
CORETSEiI00
:
CORETSEoO10
;
end
endgenerate
generate
if
(
CORETSEoO00
==
1
)
begin
assign
CORETSEO100
=
CORETSEoI00
[
4
]
&&
(
!
(
&
CORETSEoI00
[
3
:
2
]
)
)
;
assign
CORETSEi000
=
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEiO10
)
}
}
&
{
26
'b
0
,
CORETSElo00
}
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEOI10
)
}
}
&
CORETSEoo00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEII10
)
}
}
&
CORETSEio00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSElI10
)
}
}
&
CORETSEOi00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEoI10
)
}
}
&
CORETSEIi00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEiI10
)
}
}
&
CORETSEli00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEOl10
)
}
}
&
CORETSEOl00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEIl10
)
}
}
&
CORETSEIO10
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEll10
)
}
}
&
CORETSEoO10
)
;
end
else
begin
assign
CORETSEO100
=
(
CORETSEoI00
[
4
:
3
]
==
2
'b
10
)
;
assign
CORETSEi000
=
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEiO10
)
}
}
&
{
26
'b
0
,
CORETSElo00
}
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEOI10
)
}
}
&
CORETSEoo00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEII10
)
}
}
&
CORETSEio00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSElI10
)
}
}
&
CORETSEOi00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEoI10
)
}
}
&
CORETSEIi00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEiI10
)
}
}
&
CORETSEli00
)
|
(
{
32
{
(
CORETSEoI00
[
4
:
0
]
==
`CORETSEOl10
)
}
}
&
CORETSEOl00
)
;
end
endgenerate
generate
if
(
CORETSEoO00
==
1
)
begin
always
@
(
posedge
CORETSEiO00
or
negedge
CORETSEioil
)
begin
if
(
!
(
CORETSEioil
||
CORETSEOiil
)
)
begin
CORETSEIO10
<=
32
'h
FFFF_FFFF
;
CORETSEoO10
<=
32
'h
FFFF_FFFF
;
end
else
begin
CORETSEIO10
<=
CORETSEOO10
;
CORETSEoO10
<=
CORETSElO10
;
end
end
end
endgenerate
always
@
(
posedge
CORETSEiO00
or
negedge
CORETSEioil
)
begin
if
(
!
(
CORETSEioil
||
CORETSEOiil
)
)
begin
CORETSElo00
<=
6
'b
11_1111
;
CORETSEoo00
<=
32
'b
0
;
CORETSEio00
<=
32
'b
0
;
CORETSEOi00
<=
32
'b
0
;
CORETSEIi00
<=
32
'b
0
;
CORETSEli00
<=
32
'b
0
;
end
else
begin
CORETSElo00
<=
CORETSEI100
;
CORETSEoo00
<=
CORETSEl100
;
CORETSEio00
<=
CORETSEo100
;
CORETSEOi00
<=
CORETSEi100
;
CORETSEIi00
<=
CORETSEOo00
;
CORETSEli00
<=
CORETSEIo00
;
end
end
endmodule
