Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add initial FuseSoC core file #50

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

GCHQDeveloper560
Copy link

Support for FuseSoC will ease use of OSVVM with FuseSoC-built designs, allowing specification of compatible OSVVM versions and hopefully easing support for multiple simulators via FuseSoC's Edalize backend.

FuseSoC uses a vendor:library:name:version (VLNV) naming convention for cores. This core would be used as osvvm:osvvm:utility:YYYY.MM, leaving space for future core files such as the model library to use their own names under the osvvm:osvvm space.

While this core file would continue to be updated with OSVVM releases, it would make sense to add copies for each release to the standard FuseSoC core library. @olofk created a core in the old FuseSoC standard core library using the older FuseSoC core API which could be replaced by this core.

Support for [FuseSoC](https://github.com/olofk/fusesoc) will ease use of
OSVVM with FuseSoC-built designs, allowing specification of compatible
OSVVM versions and hopefully easing support for multiple simulators via
FuseSoC's [Edalize](https://github.com/olofk/edalize) backend.

FuseSoC uses a `vendor:library:name:version` (VLNV) naming convention
for cores. This core would be used as `osvvm:osvvm:utility:YYYY.MM`,
leaving space for future core files such as the model library to use
their own names under the `osvvm:osvvm` space.

While this core file would continue to be updated with OSVVM releases,
it would make sense to add copies for each release to the [standard
FuseSoC core library](https://github.com/fusesoc/fusesoc-cores). @olofk
created [a core in the old FuseSoC standard core
library](https://github.com/openrisc/orpsoc-cores/blob/master/cores/osvvm/osvvm-2015.06.core)
using the older FuseSoC core API which could be replaced by this core.
@olofk
Copy link

olofk commented Jul 7, 2020

The core description file looks great to me. There are quite a few FuseSoC VHDL users so it would be great to have proper support for OSVVM


name : osvvm:osvvm:utility:2020.05

# The Vivado simulator (xsim) does not currently (2020.1) support the VHDL
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is TEE the only issue with Viviado?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hadn't investigated past the tee error, but it looks like there are several other VHDL 2008 features not supported by the Vivado simulator.

First, it gives the same errors as GHDL regarding the use of Alert from the utility functions. Beyond that it reports it doesn't support context and to_string. Replacing context with use was an easy work around, but there are a lot of uses of to_string in TranscriptPkg and AlertLogPkg that would be more difficult. For example:

ERROR: [XSIM 43-4187] File "../src/osvvm/TranscriptPkg.vhd" Line 123 : The "Vhdl 2008 to_string Operator" is not supported yet for simulation.

I have no idea if it would be possible to use a local version of to_string rather than wait on Xilinx.

# GHDLs compile-osvvm script currently sets the following options for
# building OSVVM:
#
# -fexplicit -frelaxed-rules --no-vital-checks --warn-binding
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is relaxed-rules required? It would be nice to have bug reports based on the implications of this.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I opened #51 for this. It looks like several pure utility functions in the coverage package are calling the Alert procedure.

# ignore.
#
ghdl:
analyze_options: ["-frelaxed-rules", "-Wno-hide"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the warnings that -Whide produces? Is it noting anything other than null arrays (which are legal VHDL).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe it's lots of warnings of the form

../src/osvvm/CoveragePkg.vhd:4683:21:warning: declaration of "min" hides enumeration literal min [-Whide]
../src/osvvm/CoveragePkg.vhd:4720:5:warning: declaration of "weight" hides enumeration literal weight [-Whide]

and also

../src/osvvm/AlertLogPkg.vhd:964:7:warning: declaration of "alertcount" hides variable "alertcount" [-Whide]
../src/osvvm/AlertLogPkg.vhd:1121:46:warning: declaration of "alertcount" hides variable "alertcount" [-Whide]

@@ -0,0 +1,80 @@
CAPI=2:

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the pull request.

OSVVM will be hosting a repository (perhaps only releases) at opensource.ieee.org.
To work with them we need an apache license for the file in the same format as
the other osvvm files - other than the things that refer to author and SynthWorks.

Can you also fill out the IEEE CLA at: https://opensource.ieee.org/community/cla

If you don't want it to go to the IEEE repository, can you kindly add some
sort of license to it. As a training provider, I pay attention to copyright laws.
Everything you write, whether marked or not is copyrighted. If you fail to
mark it, then it is copyrighted with all rights reserved - which is kind of
anti-open source.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies for not marking the file properly. I don't have a personal problem with the IEEE CLA and am tracking down official guidance.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If a CLA is a problem, to put it into the OSVVM project on GitHub, I would need some sort of open source header on the file - preferably an Apache like the rest of OSVVM.

To include it with the IEEE release, we would need the CLA.

With out a CLA, it would be an exception in our sharing with IEEE. This is ok as so is the documentation.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've pushed a commit to properly mark the file, but the CLA process will clearly be slower.

@@ -1,5 +1,21 @@
CAPI=2:

# This file is part of OSVVM.
#
# (c) Crown Copyright 2020
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you write this in the form:
Copyright (c) 2020 by Crown

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants