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

What does "libraries" mean in this context of Objectives and Guiding Principles #1

Open
hamsternz opened this issue Jan 24, 2018 · 1 comment

Comments

@hamsternz
Copy link

It would be nice to have some clarity around what a library is, and what one isn't. It may seem obvious, but it can be quite subtle.

Is it a collection of commonly used sub-components hardware?

Is it a collection of commonly used interfaces and the semantics of using them?

Is it a collection of fully generic sub-components that are all-singing and all dancing. By their very nature become large and cumbersome? (e.g a HDMI interface, that includes multi-channel audio, multiple color space support, 3D, and so on, vs something that can display DVI-D in 8 colours)

Is it a collection of simple generic sub-components that can be refined to meet your needs?

Is the interface and implementation of libraries different things, or are the they same?

Do these libraries have unit tests, and validation models, and testing harnesses so you can see if they break (or you are using them inappropriately)?

Do they have simulation models that work like the library should? - e.g. an LCD module that simulates an LCD display on the screen.

How do you debug into a library? Can you do that when implemented in H/W?

Where/how do libraries sit above the actual FPGA primitives? Is it a hardware abstraction layer? How do you merge different physical implementations into a generic library?

@hamsternz hamsternz changed the title What does "libraries" mean in this context of Objectives and guiding principles What does "libraries" mean in this context of Objectives and Guiding Principles Jan 24, 2018
@tinyfpga
Copy link
Collaborator

I think libraries should encompass all of the above. As is the same with software languages, libraries may provide as little as one function, or as much as an entire suite of capabilities with great modularity, thoughtfulness, and testing. The language itself should not force specific requirements on what a library should be beyond it being valid. The language should provide the features and capabilities necessary for libraries to be written and scale from the very small and minimal library, to very large and comprehensive library.

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

No branches or pull requests

1 participant