Coder Social home page Coder Social logo

Exception std_env_get_assert_format about nvc HOT 7 OPEN

avelure avatar avelure commented on August 25, 2024
Exception std_env_get_assert_format

from nvc.

Comments (7)

nickg avatar nickg commented on August 25, 2024

Maybe try configuring with --enable-debug and see if you hit any assertion failures.

from nvc.

avelure avatar avelure commented on August 25, 2024

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.

nickg avatar nickg commented on August 25, 2024

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.

avelure avatar avelure commented on August 25, 2024

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.

nickg avatar nickg commented on August 25, 2024

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.

nickg avatar nickg commented on August 25, 2024

Can you test again with the latest master branch?

from nvc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.