Comments (7)
Maybe try configuring with --enable-debug
and see if you hit any assertion failures.
from nvc.
I forgot to save the problematic test, but this one seems to be the same. It is in the same T_GENERIC_SB function but the stack is slightly different.
------------------------------------------------------------
**redacted**.TRANSACTION_PKG.**redacted**SB_PKG.T_GENERIC_SB:
$GALLOC R1, #0x36b8
RECV R0, #0
STORE.64 R0, [R1]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:543>, 0:13
MOV R2, #40
$COPY R2, [R1+8], [CP+0]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 0:20
STORE.64 #0, [R1+2472]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 0:21
L1: DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:0
LOAD.64 R3, [R1+2472]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:1
ADD R4, R3, #1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:2
STORE.64 R4, [R1+2472]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:3
MUL R6, R3, #24
LEA R5, [R1+48]
ADD R7, R5, R6
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:4
LOAD.64 R8, [R1]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:5
MOV R9, #24
$MOVE R9, [R7], [R8+8]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:6
CMP.EQ R4, #101
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:544>, 1:7
JUMP.F L1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:545>, 2:7
MOV R10, #101
$BZERO R10, [R1+2480]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:546>, 2:12
$GETPRIV R11, <**redacted**.TRANSACTION_PKG.**redacted**SB_PKG.SB_QUEUE_PKG>
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:546>, 2:13
SEND #0, R11
CALL <**redacted**.TRANSACTION_PKG.**redacted**SB_PKG.SB_QUEUE_PKG.T_GENERIC_QUEUE>
RECV R12, #0
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:546>, 2:14
STORE.64 R12, [R1+2584]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 2:20
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 2:25
STORE.64 #0, [R1+2472]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 2:26
L2: DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:0
LOAD.64 R13, [R1+2472]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:1
ADD R14, R13, #85
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:2
STORE.64 R14, [R1+2472]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:3
LEA R15, [R1+2592]
ADD R16, R15, R13
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:4
$GETPRIV R17, <UVVM_UTIL.ADAPTATIONS_PKG>
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:6
MOV R18, #85
$MOVE R18, [R16], [R17+1072]
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:7
CMP.EQ R14, #0x2189
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:549>, 3:8
JUMP.F L2
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:552>, 4:7
MOV R19, #404
$MEMSET.32 R19, [R1+11180], #-1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:553>, 4:13
MOV R20, #404
$MEMSET.32 R20, [R1+11584], #-1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:554>, 4:19
MOV R21, #404
$MEMSET.32 R21, [R1+11988], #-1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:555>, 4:25
MOV R22, #404
$MEMSET.32 R22, [R1+12392], #-1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:556>, 4:31
MOV R23, #404
$MEMSET.32 R23, [R1+12796], #-1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:557>, 4:37
MOV R24, #404
$MEMSET.32 R24, [R1+13200], #-1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:558>, 4:43
MOV R25, #404
$MEMSET.32 R25, [R1+13604], #-1
DEBUG <C:\proj\**redacted**\tools\uvvm\bitvis_vip_scoreboard\src\generic_sb_pkg.vhd:538>, 4:48
SEND #0, R1
RET
------------------------------------------------------------
Arguments:
A0 0
Registers:
R0 0
R1 13e7c191ac0 ==> 14016 byte mspace object
>00 00 00 00 00 00 00 00 |........|
3f 5f 53 42 00 00 00 00 |?_SB....|
00 00 00 00 00 00 00 00 |........|
... skipped 2448 identical bytes ...
01 00 00 00 00 00 00 00 |........|
00 00 00 00 00 00 00 00 |........|
... skipped 11520 identical bytes ...
00 00 00 00 00 00 00 00 |........|
R2 28 (40)
R3 0
R4 1
R5 13e7c191af0 ==> 14016 byte mspace object
00 00 00 00 00 00 00 00 |........|
3f 5f 53 42 00 00 00 00 |?_SB....|
00 00 00 00 00 00 00 00 |........|
... skipped 2448 identical bytes ...
01 00 00 00 00 00 00 00 |........|
00 00 00 00 00 00 00 00 |........|
... skipped 11520 identical bytes ...
00 00 00 00 00 00 00 00 |........|
R6 0
R7 13e7c191af0 ==> 14016 byte mspace object
00 00 00 00 00 00 00 00 |........|
3f 5f 53 42 00 00 00 00 |?_SB....|
00 00 00 00 00 00 00 00 |........|
... skipped 2448 identical bytes ...
01 00 00 00 00 00 00 00 |........|
00 00 00 00 00 00 00 00 |........|
... skipped 11520 identical bytes ...
00 00 00 00 00 00 00 00 |........|
R8 0
R9 18 (24)
R10 dededededededede
R11 dededededededede
R12 dededededededede
R13 dededededededede
R14 dededededededede
R15 dededededededede
R16 dededededededede
R17 dededededededede
R18 dededededededede
R19 dededededededede
R20 dededededededede
R21 dededededededede
R22 dededededededede
R23 dededededededede
R24 dededededededede
R25 dededededededede
Flags: F
Constant pool:
3f 5f 53 42 00 00 00 00 00 00 00 00 00 00 00 00 |?_SB............|
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00 00 00 00 00 00 00 00 |........ |
fatal: assertion '(uintptr_t)src >= 4096 || count == 0' failed
[00007FF6FB3F87C0]
[00007FF6FB45FA06]
[00007FF6FB3F7708]
[00007FF6FB51CAAC] vhpi_is_printable+0x83d5c
[00007FF6FB51A1C3] vhpi_is_printable+0x81473
[00007FF6FB51A822] vhpi_is_printable+0x81ad2
[00007FF6FB51A1C3] vhpi_is_printable+0x81473
[00007FF6FB51A822] vhpi_is_printable+0x81ad2
[00007FF6FB51A1C3] vhpi_is_printable+0x81473
[00007FF6FB4837EC] std_env_get_assert_format+0x1e5c
[00007FF6FB483558] std_env_get_assert_format+0x1bc8
[00007FF6FB4DC341] vhpi_is_printable+0x435f1
[00007FF6FB42B323]
[00007FF6FB4295F2]
[00007FF6FB428EFB]
[00007FF6FB3F3F9B]
[00007FF6FB3F17B0]
[00007FF6FB3F1313]
[00007FF6FB3F1366]
[00007FFC04DC257D] BaseThreadInitThunk+0x1d
[00007FFC0530AF28] RtlUserThreadStart+0x28
If I break on exit GDB gives
#0 0x00007ffc0282be20 in ucrtbase!exit () from C:\Windows\System32\ucrtbase.dll
#1 0x00007ff6fb3f8565 in fatal_exit (status=status@entry=1) at ../src/util.c:504
#2 0x00007ff6fb3f7712 in fatal_trace (fmt=0x7ff6fb5902cc <__make_binary.tbl_BINARY+1662> "assertion '%s' failed") at ../src/util.c:586
#3 0x00007ff6fb51caac in interp_loop (state=state@entry=0x14ed28) at ../src/jit/jit-interp.c:1059
#4 0x00007ff6fb51a1c3 in jit_interp (f=0x92f7620, caller=<optimized out>, args=0x14f6b0, tlab=0x14f6a0) at ../src/jit/jit-interp.c:1104
#5 0x00007ff6fb51a822 in interp_call (state=0x14f058, ir=0x9406910) at ../src/jit/jit-interp.c:638
#6 interp_loop (state=state@entry=0x14f058) at ../src/jit/jit-interp.c:971
#7 0x00007ff6fb51a1c3 in jit_interp (f=0x2b1a520, caller=<optimized out>, args=0x14f6b0, tlab=0x14f6a0) at ../src/jit/jit-interp.c:1104
#8 0x00007ff6fb51a822 in interp_call (state=0x14f548, ir=0x2b3d610) at ../src/jit/jit-interp.c:638
#9 interp_loop (state=state@entry=0x14f548) at ../src/jit/jit-interp.c:971
#10 0x00007ff6fb51a1c3 in jit_interp (f=0x2b18130, caller=<optimized out>, args=0x14f6b0, tlab=0x14f6a0) at ../src/jit/jit-interp.c:1104
#11 0x00007ff6fb4837ec in jit_try_vcall (j=j@entry=0x296c8a0, f=f@entry=0x2b18130, result=result@entry=0x14fa28, args=args@entry=0x14f6b0, tlab=0x14f6a0) at ../src/jit/jit-core.c:666
#12 0x00007ff6fb483558 in jit_try_call (j=j@entry=0x296c8a0, handle=<optimized out>, result=result@entry=0x14fa28) at ../src/jit/jit-core.c:728
#13 0x00007ff6fb4dc341 in eval_instance (jit=0x296c8a0, name=0x48e610, context=0x0) at ../src/eval.c:424
#14 0x00007ff6fb42b323 in elab_lower (b=b@entry=0x4ff33d0, shape=shape@entry=0x0, ctx=ctx@entry=0x14fac8) at ../src/elab.c:1424
#15 0x00007ff6fb4295f2 in elab_architecture (bind=bind@entry=0x4ff0030, arch=arch@entry=0x950000, config=config@entry=0x0, ctx=ctx@entry=0x14fc10) at ../src/elab.c:1539
#16 0x00007ff6fb428efb in elab (top=top@entry=0x950000, jit=<optimized out>, ur=0x4ea5c0, cover=cover@entry=0x0) at ../src/elab.c:2306
#17 0x00007ff6fb3f3f9b in elaborate (argc=10, argv=0x404eb0, state=0x14fe20) at ../src/nvc.c:464
#18 process_command (argc=10, argv=0x404eb0, state=state@entry=0x14fe20) at ../src/nvc.c:1922
#19 0x00007ff6fb3f17b0 in main (argc=1, argv=0x400000) at ../src/nvc.c:2060
from nvc.
The constructor for the protected type should receive a pointer to its enclosing environment (the instance of the generic_sb_pkg
package) but that is null here for some reason. What does the package instantiation look like? Is it similar to the following from bitvis_vip_spi?
package spi_sb_pkg is new bitvis_vip_scoreboard.generic_sb_pkg
generic map(t_element => std_logic_vector(C_VVC_CMD_DATA_MAX_LENGTH - 1 downto 0),
element_match => std_match,
to_string_element => to_string);
use spi_sb_pkg.all;
shared variable SPI_VVC_SB : spi_sb_pkg.t_generic_sb;
from nvc.
No, that implementation gives a GHDL error (ghdl/ghdl#2510) as both the package declaration and instantiation is in the same package.
This has been updated in one of the later UVVM tags where there is a new vvc_sb_pkg.
In my custom VVC I made a quick fix which was to move the declaration to the bottom of transaction_pkg.
So transaction_pkg
package ***redacted***_sb_pkg is new bitvis_vip_scoreboard.generic_sb_pkg
generic map (t_element => std_logic_vector(C_VVC_CMD_DATA_MAX_LENGTH-1 downto 0),
element_match => std_match,
to_string_element => to_string);
vvc_methods_pkg
shared variable ***redacted***_VVC_SB : ***redacted***_sb_pkg.t_generic_sb;
from nvc.
Here's a reproducer:
package genpack is
generic (type t);
type pt is protected
impure function get return t;
impure function get_str return string;
procedure put (val : t);
end protected;
end package;
package body genpack is
constant str : string := "hello world";
type pt is protected body
variable cur : t;
impure function get return t is
begin
return cur;
end function;
procedure put (val : t) is
begin
cur := val;
end procedure;
impure function get_str return string is
begin
return str; -- Accesses parent package
end function;
end protected body;
end package body;
-------------------------------------------------------------------------------
package testpack is
package int_pack is new work.genpack
generic map ( t => integer );
use int_pack.all;
end package;
-------------------------------------------------------------------------------
entity issue943 is
end entity;
use work.testpack.all;
architecture test of issue943 is
shared variable sv : int_pack.pt;
begin
check: process is
begin
sv.put(5);
assert sv.get = 5;
assert sv.get_str = "hello world";
wait;
end process;
end architecture;
from nvc.
Can you test again with the latest master branch?
from nvc.
Related Issues (20)
- generic package with impure function method. HOT 3
- Regression with alias of external name? HOT 4
- Compliance-Tests: tb_garbage_collection.all failed to suspend thread HOT 4
- OsvvmLibraries RunAllTests SetVHDLVersion 2019 SIGSEGV HOT 2
- 2008: Generic Package fails with signed type, but not integer HOT 1
- nvc crashes with generic package passed to generic map in entity instantiation HOT 1
- Generic Type resolving fails when using functions for range HOT 1
- Generic package instantiation with type from package HOT 4
- Crash related to unconstrained vector as a parameter in a procedure HOT 1
- Wrong value in generic constant when using slice name
- Issue related to array ranges
- Implement UCIS coverage API export HOT 3
- UVVM AXI BFM fatal error
- UVVM AXI-Stream exception error HOT 3
- MSYS-clang prefer clang compiler HOT 1
- Verilog: support primitives HOT 3
- LLVM 17 build HOT 2
- Coverage scopes bug HOT 3
- Empty parameter list in proc causes exception
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nvc.