Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
Gennum GN4124 core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Gennum GN4124 core
Commits
d34e800c
Commit
d34e800c
authored
Nov 04, 2020
by
Tristan Gingold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gn412x_bfm: work arounds for issues in questa sim.
Also fix some typos.
parent
c5520d7a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
206 additions
and
200 deletions
+206
-200
gn412x_bfm.vhd
hdl/sim/gn4124_bfm/gn412x_bfm.vhd
+206
-200
No files found.
hdl/sim/gn4124_bfm/gn412x_bfm.vhd
View file @
d34e800c
...
...
@@ -2756,116 +2756,121 @@ CMD_RD_DATA <= CMD_RD_DATA_OUT when CMD_RD_DATA_OUT_VALID = '1' else CMD_RD_DATA
variable
vTYPE
:
std_ulogic_vector
(
3
downto
0
);
variable
START
:
time
;
begin
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
)
and
MODE_PRIMARY
);
START
:
=
NOW
;
if
(
L2P_DFRAMEi
=
'1'
)
then
vHEADER
(
15
downto
0
)
:
=
L2P_DATAi
;
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'0'
));
vHEADER
(
31
downto
16
)
:
=
L2P_DATAi
;
vTYPE
:
=
vHEADER
(
27
downto
24
);
vADDRESS
:
=
(
others
=>
'0'
);
-- Upper Address
if
((
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0011"
))
then
-- address is 64 bits
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
));
vADDRESS
(
47
downto
32
)
:
=
L2P_DATAi
;
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'0'
));
vADDRESS
(
63
downto
48
)
:
=
L2P_DATAi
;
end
if
;
-- Lower Address
if
((
vTYPE
=
"0000"
)
or
(
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0010"
)
or
(
vTYPE
=
"0011"
)
or
(
vTYPE
=
"0100"
))
then
-- address is required
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
));
vADDRESS
(
15
downto
0
)
:
=
L2P_DATAi
;
if
not
MODE_PRIMARY
then
wait
;
end
if
;
wait
until
rising_edge
(
L2P_CLKi_90
);
if
L2P_VALIDi
=
'1'
then
START
:
=
NOW
;
if
(
L2P_DFRAMEi
=
'1'
)
then
vHEADER
(
15
downto
0
)
:
=
L2P_DATAi
;
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'0'
));
vADDRESS
(
31
downto
16
)
:
=
L2P_DATAi
;
end
if
;
vHEADER
(
31
downto
16
)
:
=
L2P_DATAi
;
vTYPE
:
=
vHEADER
(
27
downto
24
);
vADDRESS
:
=
(
others
=>
'0'
);
-- Upper Address
if
((
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0011"
))
then
-- address is 64 bits
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
));
vADDRESS
(
47
downto
32
)
:
=
L2P_DATAi
;
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'0'
));
vADDRESS
(
63
downto
48
)
:
=
L2P_DATAi
;
end
if
;
-- Lower Address
if
((
vTYPE
=
"0000"
)
or
(
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0010"
)
or
(
vTYPE
=
"0011"
)
or
(
vTYPE
=
"0100"
))
then
-- address is required
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
));
vADDRESS
(
15
downto
0
)
:
=
L2P_DATAi
;
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'0'
));
vADDRESS
(
31
downto
16
)
:
=
L2P_DATAi
;
end
if
;
-- write(OUTPUT_LINE, ("-->> L2P Packet: " & to_string(START)));
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> L2P Header: "
));
case
vTYPE
is
when
"0000"
|
"0001"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
-- write(OUTPUT_LINE, ("-->> L2P Packet: " & to_string(START)));
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> L2P Header: "
));
case
vTYPE
is
when
"0000"
|
"0001"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0010"
|
"0011"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0010"
|
"0011"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0100"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0100"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0101"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0101"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
others
=>
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
assert
false
report
"---- ERROR: Unsupported TYPE in L2P Header"
severity
error
;
end
case
;
when
others
=>
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
assert
false
report
"---- ERROR: Unsupported TYPE in L2P Header"
severity
error
;
end
case
;
if
(
L2P_DFRAMEi
=
'1'
)
then
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
)
and
(
L2P_DFRAMEi
=
'0'
));
end
if
;
if
(
L2P_DFRAMEi
=
'1'
)
then
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
)
and
(
L2P_DFRAMEi
=
'0'
));
end
if
;
else
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: L2P Bus: P2L_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
else
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: L2P Bus: L2P_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
end
if
;
end
if
;
end
process
;
...
...
@@ -2882,115 +2887,116 @@ CMD_RD_DATA <= CMD_RD_DATA_OUT when CMD_RD_DATA_OUT_VALID = '1' else CMD_RD_DATA
variable
vTYPE
:
std_ulogic_vector
(
3
downto
0
);
variable
START
:
time
;
begin
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
)
and
MODE_PRIMARY
);
START
:
=
NOW
;
if
(
P2L_DFRAMEi
=
'1'
)
then
vHEADER
(
15
downto
0
)
:
=
P2L_DATAi
;
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'0'
));
vHEADER
(
31
downto
16
)
:
=
P2L_DATAi
;
vTYPE
:
=
vHEADER
(
27
downto
24
);
vADDRESS
:
=
(
others
=>
'0'
);
-- Upper Address
if
((
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0011"
))
then
-- address is 64 bits
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
));
vADDRESS
(
47
downto
32
)
:
=
P2L_DATAi
;
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'0'
));
vADDRESS
(
63
downto
48
)
:
=
P2L_DATAi
;
end
if
;
-- Lower Address
if
((
vTYPE
=
"0000"
)
or
(
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0010"
)
or
(
vTYPE
=
"0011"
)
or
(
vTYPE
=
"0100"
))
then
-- address is required
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
));
vADDRESS
(
15
downto
0
)
:
=
P2L_DATAi
;
if
not
MODE_PRIMARY
then
wait
;
end
if
;
wait
until
rising_edge
(
P2L_CLKpi
);
if
P2L_VALIDi
=
'1'
then
START
:
=
NOW
;
if
(
P2L_DFRAMEi
=
'1'
)
then
vHEADER
(
15
downto
0
)
:
=
P2L_DATAi
;
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'0'
));
vADDRESS
(
31
downto
16
)
:
=
P2L_DATAi
;
end
if
;
vHEADER
(
31
downto
16
)
:
=
P2L_DATAi
;
vTYPE
:
=
vHEADER
(
27
downto
24
);
vADDRESS
:
=
(
others
=>
'0'
);
-- Upper Address
if
((
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0011"
))
then
-- address is 64 bits
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
));
vADDRESS
(
47
downto
32
)
:
=
P2L_DATAi
;
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'0'
));
vADDRESS
(
63
downto
48
)
:
=
P2L_DATAi
;
end
if
;
-- Lower Address
if
((
vTYPE
=
"0000"
)
or
(
vTYPE
=
"0001"
)
or
(
vTYPE
=
"0010"
)
or
(
vTYPE
=
"0011"
)
or
(
vTYPE
=
"0100"
))
then
-- address is required
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
));
vADDRESS
(
15
downto
0
)
:
=
P2L_DATAi
;
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'0'
));
vADDRESS
(
31
downto
16
)
:
=
P2L_DATAi
;
end
if
;
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< P2L Header: "
));
case
vTYPE
is
when
"0000"
|
"0001"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< P2L Header: "
));
case
vTYPE
is
when
"0000"
|
"0001"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0010"
|
"0011"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0010"
|
"0011"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0100"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0100"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0101"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0101"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
others
=>
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
assert
false
report
"---- ERROR: Unsupported TYPE in P2L Header"
severity
error
;
end
case
;
when
others
=>
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
assert
false
report
"---- ERROR: Unsupported TYPE in P2L Header"
severity
error
;
end
case
;
if
(
P2L_DFRAMEi
=
'1'
)
then
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
)
and
(
P2L_DFRAMEi
=
'0'
));
end
if
;
if
(
P2L_DFRAMEi
=
'1'
)
then
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
)
and
(
P2L_DFRAMEi
=
'0'
));
end
if
;
else
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: P2L Bus: P2L_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
else
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: P2L Bus: P2L_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
end
if
;
end
if
;
end
process
;
end
MODEL
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment