Synopsys VCS-MX

Why OSVVM™? Forums OSVVM Synopsys VCS-MX

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #1726
    Tim
    Member

    Is OSVVM supported by the latest Synopsys VCS-MX?

    I didn’t notice any scripts in the OsvvmLibaries/Scripts repository.

    #1727
    Jim Lewis
    Member

    Hi Tim,
    > Is OSVVM supported by the latest Synopsys VCS-MX?
    It is my understanding that it is, however, I have not done any testing with it – yet. Hopefully toward the end of the year, that will be changing.

    > I didn’t notice any scripts in the OsvvmLibaries/Scripts repository.
    It is on my todo list. Does VCS-MX have a tcl interface or do you run
    it from the unix/linux shell?

    The path to tcl is fairly straight forward. There are a only a
    couple of steps.
    1) Edit ToolConfiguration.tcl
    In VCS-MX run the following tcl command:
    puts [info nameofexecutable]

    As long as the tail of this path does not match one of the other tools, this is easy,
    you would just need to add another branch to the if-then-else of the form:

    } elseif {[string match $ToolExecutableName "<root-name-of-executable>"]} {
      set ToolType    "simulator"
      set ToolVendor  "Synopsys"
      set simulator   "VCS-MX"
    # if you can get the tool version, ok, but it is ok to temporarily 
    # put something in here like I did in GHDL
      quietly set ToolNameVersion ${simulator}-<version>
      echo $ToolNameVersion
      source ${SCRIPT_DIR}/VendorScripts_Synopsys_VCS_MX.tcl

    2) Create VendorScripts_Synopsys_VCS_MX.tcl
    Copy either Mentor or RivieraPro versions.
    Substitute the in the VCS-MX commands to compile for 2008
    and run a simulation. Currently for other simulators
    I am logging all signals – but for larger sims this may
    not be practical.

    If you have problems, reach out to be by email. Especially if
    either I can write it and you can test it, or if you are willing
    to share the final version of the above files.

    Best Regards,
    Jim

    #1728
    Tim
    Member

    I’m running from tcsh on Linux and get the following syntax error when using VCS 2020.03-SP1:

    Error-[IEEEVHDLSYNTAXERR] Syntax error
    ../osvvm/ScoreboardPkg_int.vhd, 53
    analysis-PreParsing
      
        generic map (
                   ^
      Syntax error detected during VHDL parsing.

    I have a script with the following:

    
    mkdir -p worklib
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/*.vhd
    

    And, synopsys_sim.setup file with:

    
    WORK            > DEFAULT
    DEFAULT         : ./worklib
    
    VHDL_MODE       = 08
    SMART_ORDER     = TRUE
    
    #1729
    Tim
    Member

    I got it to compile now with one error.

    
    Warning-[AGGRNULLRANGE] Null range
    ../osvvm/RandomPkg.vhd, 109
    RANDOMPKG
      
        subtype NULL_RANGE_TYPE is integer range 0 downto 1 ;
                                                          ^
      Range 0 downto 1 is a null range.
    
    

    Modified my build script

    
    mkdir -p worklib
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/NamePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/OsvvmGlobalPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/TranscriptPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/TextUtilPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/AlertLogPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/RandomBasePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/SortListPkg_int.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/MessagePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/CoveragePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/RandomPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/VendorCovApiPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ResolutionPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/MemoryPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/OsvvmContext.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/TbUtilPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/VendorCovApiPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ScoreboardPkg_int.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ScoreboardGenericPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ScoreboardPkg_slv.vhd
    

    Modified the synopsys_sim.setup file

    WORK            > DEFAULT
    OSVVM           > DEFAULT
    DEFAULT         : ./worklib
    
    
    #1731
    Tim
    Member

    Meant to say one warning in the previous message.

    #1733
    Jim Lewis
    Member

    Hi Tim,
    Sorry I missed your additional discussion.

    This warning is ok. The code is legal VHDL code. It would be more obvious if they would print the message as:

    Warning: NULL_RANGE_TYPE has a null range, Range 0 downto 1

    Null ranges are legal. Often people end with them unintentionally, so the vendors decided to issue a warning. However, in the OSVVM packages they are a methodology that allows parameters to be not specified and still handled correctly.

    Best Regards,
    Jim

    #1734
    Jim Lewis
    Member

    Your Script has a couple of things out of order. Specifically
    VendorCovApiPkg.vhd must be compiled before CoveragePkg.vhd,
    OsvvmContext.vhd must be compiled last (or almost last),
    RandomPkg.vhd must be compiled before CoveragePkg.vhd,
    ScoreboardGenericPkg.vhd must be compiled before ScoreboardPkg_int.vhd and ScoreboardPkg_slv.vhd.

    Our compile script is osvvm.pro. I made the following match the
    ordering in osvvm.pro.

    mkdir -p worklib
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/NamePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/OsvvmGlobalPkg.vhd
    
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/VendorCovApiPkg.vhd
    
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/TranscriptPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/TextUtilPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/AlertLogPkg.vhd
    
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/MessagePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/SortListPkg_int.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/RandomBasePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/RandomPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/CoveragePkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/MemoryPkg.vhd
    
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ScoreboardGenericPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ScoreboardPkg_int.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ScoreboardPkg_slv.vhd
    
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/ResolutionPkg.vhd
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/TbUtilPkg.vhd
    
    vhdlan -full64 -vhdl08 -verbose -nc ../osvvm/OsvvmContext.vhd
    #1764

    And what about OSVVM-common?
    i ‘m fighting with vcs for this error:

    Error-[VHDL08-IMPL-SUBTYPE] VHDL-2008 Usage Not Supported
    ./src/StreamTransactionPkg.vhd, 198
    STREAMTRANSACTIONPKG

    signal TransactionRec : inout StreamRecType
    ^
    Use of unbounded type or base type is not supported in this context.

    And many many others of the same kind.
    Ay sugggestion to make vcs happy?

    #1765
    Jim Lewis
    Member

    Hi Antonio,
    Ouch. Did you report the tool bug to Synopsys? Did they respond?

    I would have to think about a work around. Maybe if generics were
    added to the package to constrain the size of DataToModel, DataFromModel,
    ParamToModel, and ParamFromModel – and they were sized to match the largest
    item in the system, it should be ok – maybe after some simple model tweaks
    (there is a ToTransaction and FromTransaction that resize).

    The problem I see is that each different device in the system has different
    requirements. UARTS have 8 bits of data and 3 bits of error injection,
    vs AxiStream that supports multiple bytes of data and on item that is passed
    via the Param field is the TUser which can be small or much larger than the
    data.

    #1846
    Jim Lewis
    Member

    A quick update. I am working with Synopsys on VCS. Things are looking up. I should have more news on this shortly.

    In the upcoming 2021.09 release there are scripts to use the OSVVM scripts with VCS.

    #1957

    Hi Jim,
    i’m still fighting with osvvm and VCS S-2021.09-SP together, but i’m getting the same behaviour

    #1958
    Jim Lewis
    Member

    Hi Antonio,
    You will need their latest service pack for VCS. I think there was one in October. The hot-fixes they were providing me for testing did not get integrated until shortly after the 2021.09 release.

    Best Regards,
    Jim

    #1959

    Thanks Jim, using the Service Pack 2 everithing works fine.
    Best Regards
    Antonio

    #2061

    Hi Jim,
    starting from the commit 66e31acb for the repository “Scripts” i discover that VCS does not work anymore, hence the
    799f7963 is the last working commit. I was not able right now to submit a pull request, in any case i will try to investigate which is the root cause of that.

    #2062
    Jim Lewis
    Member

    Hi Antonio,
    I should be able to look into it shortly too. Also if it is a TCL error, you may need to update your TCL version.

    Cheers,
    Jim

Viewing 15 posts - 1 through 15 (of 16 total)
  • You must be logged in to reply to this topic.