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
...
@@ -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
vTYPE
:
std_ulogic_vector
(
3
downto
0
);
variable
START
:
time
;
variable
START
:
time
;
begin
begin
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
)
and
MODE_PRIMARY
);
if
not
MODE_PRIMARY
then
START
:
=
NOW
;
wait
;
if
(
L2P_DFRAMEi
=
'1'
)
then
end
if
;
vHEADER
(
15
downto
0
)
:
=
L2P_DATAi
;
wait
until
rising_edge
(
L2P_CLKi_90
);
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'0'
));
if
L2P_VALIDi
=
'1'
then
vHEADER
(
31
downto
16
)
:
=
L2P_DATAi
;
START
:
=
NOW
;
vTYPE
:
=
vHEADER
(
27
downto
24
);
if
(
L2P_DFRAMEi
=
'1'
)
then
vADDRESS
:
=
(
others
=>
'0'
);
vHEADER
(
15
downto
0
)
:
=
L2P_DATAi
;
-- 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'
));
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'0'
));
vADDRESS
(
31
downto
16
)
:
=
L2P_DATAi
;
vHEADER
(
31
downto
16
)
:
=
L2P_DATAi
;
end
if
;
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)));
-- write(OUTPUT_LINE, ("-->> L2P Packet: " & to_string(START)));
-- writeline(OUT_FILE, OUTPUT_LINE);
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> L2P Header: "
));
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> L2P Header: "
));
case
vTYPE
is
case
vTYPE
is
when
"0000"
|
"0001"
=>
when
"0000"
|
"0001"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
-- writeline(OUT_FILE, OUTPUT_LINE);
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0010"
|
"0011"
=>
when
"0010"
|
"0011"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Master Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
-- writeline(OUT_FILE, OUTPUT_LINE);
-- writeline(OUT_FILE, OUTPUT_LINE);
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write
(
OUTPUT_LINE
,
string
'
(
"-->>>> Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0100"
=>
when
"0100"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0101"
=>
when
"0101"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(L2P Target Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
others
=>
when
others
=>
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
assert
false
report
"---- ERROR: Unsupported TYPE in L2P Header"
assert
false
report
"---- ERROR: Unsupported TYPE in L2P Header"
severity
error
;
severity
error
;
end
case
;
end
case
;
if
(
L2P_DFRAMEi
=
'1'
)
then
if
(
L2P_DFRAMEi
=
'1'
)
then
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
)
and
(
L2P_DFRAMEi
=
'0'
));
wait
until
(
L2P_CLKi_90
'event
and
(
L2P_CLKi_90
=
'1'
)
and
(
L2P_VALIDi
=
'1'
)
and
(
L2P_DFRAMEi
=
'0'
));
end
if
;
end
if
;
else
else
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: L2P Bus: P2L_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: L2P Bus: L2P_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
end
if
;
end
if
;
end
if
;
end
process
;
end
process
;
...
@@ -2882,115 +2887,116 @@ CMD_RD_DATA <= CMD_RD_DATA_OUT when CMD_RD_DATA_OUT_VALID = '1' else CMD_RD_DATA
...
@@ -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
vTYPE
:
std_ulogic_vector
(
3
downto
0
);
variable
START
:
time
;
variable
START
:
time
;
begin
begin
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
)
and
MODE_PRIMARY
);
if
not
MODE_PRIMARY
then
START
:
=
NOW
;
wait
;
if
(
P2L_DFRAMEi
=
'1'
)
then
end
if
;
vHEADER
(
15
downto
0
)
:
=
P2L_DATAi
;
wait
until
rising_edge
(
P2L_CLKpi
);
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'0'
));
if
P2L_VALIDi
=
'1'
then
vHEADER
(
31
downto
16
)
:
=
P2L_DATAi
;
START
:
=
NOW
;
vTYPE
:
=
vHEADER
(
27
downto
24
);
if
(
P2L_DFRAMEi
=
'1'
)
then
vADDRESS
:
=
(
others
=>
'0'
);
vHEADER
(
15
downto
0
)
:
=
P2L_DATAi
;
-- 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'
));
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'0'
));
vADDRESS
(
31
downto
16
)
:
=
P2L_DATAi
;
vHEADER
(
31
downto
16
)
:
=
P2L_DATAi
;
end
if
;
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: "
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< P2L Header: "
));
case
vTYPE
is
case
vTYPE
is
when
"0000"
|
"0001"
=>
when
"0000"
|
"0001"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Read Request)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0010"
|
"0011"
=>
when
"0010"
|
"0011"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Target Write)"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", FBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
23
downto
20
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LBE=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
19
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write
(
OUTPUT_LINE
,
string
'
(
"--<<<< Address: 0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write_hex_vector
(
OUTPUT_LINE
,
vADDRESS
);
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0100"
=>
when
"0100"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion Without Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
"0101"
=>
when
"0101"
=>
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(P2L Master Read Completion With Data)"
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write
(
OUTPUT_LINE
,
string
'
(
", STAT="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
17
downto
16
));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", L="
&
to_str
(
vHEADER
(
15
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", V="
&
to_str
(
vHEADER
(
12
))));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write
(
OUTPUT_LINE
,
string
'
(
", CID="
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
11
downto
10
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write
(
OUTPUT_LINE
,
string
'
(
", LENGTH=0x"
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write_hex_vector
(
OUTPUT_LINE
,
vHEADER
(
9
downto
0
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
when
others
=>
when
others
=>
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
"(Undefined)"
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
string
'
(
" @ "
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
assert
false
report
"---- ERROR: Unsupported TYPE in P2L Header"
assert
false
report
"---- ERROR: Unsupported TYPE in P2L Header"
severity
error
;
severity
error
;
end
case
;
end
case
;
if
(
P2L_DFRAMEi
=
'1'
)
then
if
(
P2L_DFRAMEi
=
'1'
)
then
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
)
and
(
P2L_DFRAMEi
=
'0'
));
wait
until
(
P2L_CLKpi
'event
and
(
P2L_CLKpi
=
'1'
)
and
(
P2L_VALIDi
=
'1'
)
and
(
P2L_DFRAMEi
=
'0'
));
end
if
;
end
if
;
else
else
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: P2L Bus: P2L_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
string
'
(
"-- ERROR: P2L Bus: P2L_VALID asserted without P2L_DFRAME @"
));
write
(
OUTPUT_LINE
,
START
);
write
(
OUTPUT_LINE
,
START
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
writeline
(
OUT_FILE
,
OUTPUT_LINE
);
end
if
;
end
if
;
end
if
;
end
process
;
end
process
;
end
MODEL
;
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