systemrdl / peakrdl Goto Github PK
View Code? Open in Web Editor NEWControl and status register code generator toolchain
Home Page: http://peakrdl.readthedocs.io
License: GNU General Public License v3.0
Control and status register code generator toolchain
Home Page: http://peakrdl.readthedocs.io
License: GNU General Public License v3.0
When I run
python my_regblock.py
The contents of which are very simple (based on the intro page of peakrdl-regblock documentation), the above works and outputs my files.
peakrdl regblock system.rdl -o output_dir -cpuif axi4-lite-flat
I get the following exception:
Traceback (most recent call last):
File "/PeakRDL-regblock/venv/bin/peakrdl", line 33, in <module>
sys.exit(load_entry_point('peakrdl==0.3.0', 'console_scripts', 'peakrdl')())
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/peakrdl/main.py", line 70, in main
options.subcommand.main(options)
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/peakrdl/subcommand.py", line 123, in main
self.do_export(top, options)
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/peakrdl/plugins/exporter.py", line 63, in do_export
func(top_node, options)
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/peakrdl_regblock/__peakrdl__.py", line 94, in do_export
x.export(
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/peakrdl_regblock/exporter.py", line 134, in export
scanner.do_scan()
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/peakrdl_regblock/scan_design.py", line 64, in do_scan
RDLWalker().walk(self.exp.top_node, self)
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/systemrdl/walker.py", line 159, in walk
self.walk(child, *listeners)
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/systemrdl/walker.py", line 150, in walk
self.current_action = self.do_enter(node, listener)
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/systemrdl/walker.py", line 193, in do_enter
new_action = listener.enter_Reg(node) or WalkerAction.Continue
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/peakrdl_regblock/scan_design.py", line 93, in enter_Reg
self.has_buffered_write_regs = self.has_buffered_write_regs or bool(node.get_property('buffered_writes'))
File "/PeakRDL-regblock/venv/lib/python3.10/site-packages/systemrdl/node.py", line 409, in get_property
raise LookupError("Unknown property '%s'" % prop_name)
LookupError: Unknown property 'buffered_writes'
peakrdl --version
0.3.0
cat venv/lib64/python3.10/site-packages/peakrdl_regblock/__about__.py
__version__ = "0.9.0"
Importing individual PeakRDL tools using their namespace packages will be deprecated.
Change the way you import PeakRDL packages to use the new packaging import name.
For example when using PeakRDL-html, change:
from peakrdl.html import HTMLExporter
to:
from peakrdl_html import HTMLExporter
# ^ notice the underscore
The new package imports will be available in the following versions:
These updates will still retain the ability to import using the old style, but will emit a deprecation warning.
A future release will eventually remove the old import style entirely.
The peakrdl-regblock
package will also be changed, but without the deprecation warning or backwards compatibility since it is still in pre-production beta.
Use of namespace packages initially seemed like a nifty way to encapsulate sub-components of the PeakRDL project, but in practice has ended up being pretty cumbersome.
Over the years, it has become clear that the numerous quirks of this packaging style are not worth the effort, and the benefit of using namespace packages is nearly non-existent. More traditional monolithic packaging is easier to maintain and makes development of the upcoming PeakRDL command line application easier.
Hi!
Can we add a feature that will add the registers/fields names and descriptions from the RDL to the SystemVerilog files?
It will make debugging the modules much easier if the descriptions will also be embedded inside both regblock and UVM as comments, so we can easily understand which part is related to which register/field and what is its description and purpose (as given in the RDL)
Thanks!
Is this related to a PeakRDL sub-command?
If so, please open an issue in the appropriate PeakRDL-***
project: https://github.com/orgs/SystemRDL/repositories
Describe the problem/limitation you think should be addressed
A clear and concise description of what the problem is.
I’m trying to stitch together a complete set of free tools capable of generating an SoC infrastructure and be able to simulate and validate it. Currently, Icarus and ventilator do not support uvm.
Describe the solution you'd like
A clear and concise description of what you want to happen.
The cleanest solution that I see is to write an exporter for the pyuvm format. I would be willing to take on or help with this.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
The obvious choice that pops into my mind is for me to create a competing tool that creates pyuvm and all of the stuff this tool does. I honestly do not mean to sound brash, but while working for a very large tech company, I have written this tool, minus the pyuvm. So, it wouldn’t be a huge leap for me to recreate it. Since I have this industry experience, I think I would be an asset to helping make PeakRDL better.
Additional context
Add any other context or about the feature request here.
Hello,
I just installed peakrdl by following instructions in https://peakrdl.readthedocs.io/en/latest/index.html
But when I try to run peakrdl (for example: peakrdl --help), it returns this error message:
File ".local/lib/python3.8/site-packages/peakrdl/plugins/importer.py", line 52, in get_importer_plugins
raise RuntimeError(f"Importer class {cls} is expected to be extended from peakrdl.plugins.importer.ImporterPlugin")
RuntimeError: Importer class <class 'peakrdl_ipxact.peakrdl.Importer'> is expected to be extended from peakrdl.plugins.importer.ImporterPlugin
Did I miss something in my installation ?
Thank you.
Hello Alex
As mentioned before (see #25 ) , i get peakrdl installed and running within PyCharm, but can not install properly directly on shell (with pip install).
It seems to be a compatibility problem as the installation goes through, but afterwards peakrdl commands are not recognised.
Error messages when typing any peakrdl commands in shell after installation are:
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/tomli-2.0.1-py3.6.egg/tomli/_parser.py", line 5
from __future__ import annotations
^
SyntaxError: future feature annotations is not defined
Thinking about compatibility issues, went on checking for installation status, and changed package versions in shell to match PyCharm versions. Error message changed, but still persists. Full error message, and pip list below.
Can you give further hints how to debug this?
Thanks for help & attention
==================================
ERROR MESSAGE after same packages
==================================
Traceback (most recent call last):
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/bin/peakrdl", line 33, in <module>
sys.exit(load_entry_point('peakrdl==0.8.0', 'console_scripts', 'peakrdl')())
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/peakrdl-0.8.0-py3.6.egg/peakrdl/main.py", line 109, in main
subcommands += get_exporter_plugins(cfg)
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/peakrdl-0.8.0-py3.6.egg/peakrdl/plugins/exporter.py", line 44, in get_exporter_plugins
cls = ep.load()
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/pkg_resources/__init__.py", line 2465, in load
return self.resolve()
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/pkg_resources/__init__.py", line 2471, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/peakrdl_html-2.10.1-py3.6.egg/peakrdl_html/__init__.py", line 1, in <module>
from .exporter import HTMLExporter
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/peakrdl_html-2.10.1-py3.6.egg/peakrdl_html/exporter.py", line 14, in <module>
from gitmetheurl import GitMeTheURL
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/git_me_the_url-2.1.0-py3.6.egg/gitmetheurl/__init__.py", line 6, in <module>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/git_me_the_url-2.1.0-py3.6.egg/gitmetheurl/base.py", line 5, in <module>
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/GitPython-3.1.31-py3.6.egg/git/__init__.py", line 44, in <module>
from git.objects import * # @NoMove @IgnorePep8
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/GitPython-3.1.31-py3.6.egg/git/objects/__init__.py", line 9, in <module>
from .commit import *
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/GitPython-3.1.31-py3.6.egg/git/objects/commit.py", line 11, in <module>
from git.diff import Diffable
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/GitPython-3.1.31-py3.6.egg/git/diff.py", line 8, in <module>
from git.cmd import handle_process_output
File "/home/mdqe/PycharmProjects/pythonProject_shell/venv_peakrdl/lib64/python3.6/site-packages/GitPython-3.1.31-py3.6.egg/git/cmd.py", line 6
from __future__ import annotations
^
SyntaxError: future feature annotations is not defined
==================================
PIP LIST
==================================
Package Version
---------------------- -------
antlr4-python3-runtime 4.11.1
colorama 0.4.6
git-me-the-url 2.1.0
gitdb 4.0.10
GitPython 3.1.31
importlib-metadata 4.8.3
Jinja2 3.1.2
Markdown 3.4.3
MarkupSafe 2.1.3
peakrdl 0.8.0
peakrdl-html 2.10.1
peakrdl-ipxact 3.4.1
peakrdl-regblock 0.15.0
peakrdl-systemrdl 0.3.0
peakrdl-uvm 2.3.0
pip 21.3.1
python-markdown-math 0.8
setuptools 59.6.0
smmap 5.0.0
systemrdl-compiler 1.26.0
tomli 1.2.3
typing_extensions 4.1.1
wheel 0.37.1
zipp 3.6.0
Is it possible to add another output option for C header file (*.h)?
Or maybe there is a plugin that already does so (making C header file from SystemRDL input)?
According to documentation https://github.com/SystemRDL/PeakRDL-html it is possible to declare a internal addrmap in the RDL as top for the html output.
Tried to do so, declaring as top the Regfile addrmap instead as per default the last addrmap, which would be the Memorymap on my block.rdl file, but it was not accepted. The call and error messages are copied below:
...
top_node = 'BlocknameRegfile0'
peakrdl html --peakrdl-cfg {config_file} -t {top_node} -o {output_file} {input_file}
error msg
fatal: Elaboration target 'BlocknameRegfile0' not found
and double checked with "peakrdl dump" that the name is correct and recognised.
Any hints what could be the root cause?
thanks for your help and attention!
Splitting this into a separate request described by @Risto97 in #17:
Did you think of separating peakrdl from all of the plugins, so they are not installed when installing peakrdl.
To illustrate my use case, I am using peakrdl-html, peakrdl-regblock and two of my plugins, but I am not using the rest of > the toolchain. I am invoking the tools sometimes from python script or cmake wrappers for peakrdl.
This way the unnecessary dependencies get pulled into my virtual environment.
Due to the ongoing health crisis, it looks like my plans for summer-time mountaineering have totally evaporated. May as well make the best of it and finally put together a command line tool 🤷♂️.
I will fill this page in with more details as I work things out. If you have an idea, please feel free to comment!
High-level goals:
The config file:
Command line usage:
Something brutally simple such as:
peakrdl path/to/my_peakrdl_config.yaml
In many cases multiple outputs from the same set of inputs are needed for example:
Would it be possible to setup multiple output from a single set of definitions?
I've been procrastinating this change for a while, but its about time I go ahead and implement this rename.
What's wrong with "RALBot"?
Although the project name had a good run, I've come to notice that the keyword "RALBot" performs pretty poorly in web searches. Apparently all major search engines redirect the search to show results for "Talbot", a breed of hunting dog, and more notably "Talbots", a retail store for women's clothing in the US. Neither search results suit this project very well.
Why "PeakRDL"
Short and simple. And I enjoy climbing mountains. Why not?
How do I migrate to "PeakRDL-*" Projects?
In the next few days (by 2020-04-19) I will be publishing the following projects to PyPi:
peakrdl-html
peakrdl-ipxact
peakrdl-uvm
As these get published, you can simply rename your dependencies and imports to use the new prefix.
What will happen to the old "RALBot-*" Projects?
No earlier than 2020-05-01, these projects will all publish one final update.
This update will include the following deprecation warning that will be printed upon importing the package:
================================================================================
The RALBot-html project has been deprecated and renamed to PeakRDL-html.
Please update your dependencies to continue receiving the latest updates.
For details, see: https://github.com/SystemRDL/PeakRDL/issues/2
================================================================================
If you are not quite ready to migrate your project to use the new "PeakRDL" dependencies, you can suppress the warning by adding this when you import a ralbot module for the first time:
import warnings
with warnings.catch_warnings():
warnings.simplefilter("ignore")
import ralbot.html
Hey, great meeting at Latchup;-)
The tool crashes on a missing directory for "-o"
(when regblock is missing below, otherwise it seems to work!)
peakrdl regblock atxmega_spi.rdl -o regblock/ --cpuif apb3-flat
File "/home/aolofsson/.local/bin/peakrdl", line 8, in
sys.exit(main())
File "/home/aolofsson/.local/lib/python3.10/site-packages/peakrdl/main.py", line 165, in main
options.subcommand.main(importers, options)
File "/home/aolofsson/.local/lib/python3.10/site-packages/peakrdl/subcommand.py", line 154, in main
self.do_export(top, options)
File "/home/aolofsson/.local/lib/python3.10/site-packages/peakrdl_regblock/peakrdl.py", line 129, in do_export
x.export(
File "/home/aolofsson/.local/lib/python3.10/site-packages/peakrdl_regblock/exporter.py", line 203, in export
stream.dump(package_file_path)
File "/home/aolofsson/.local/lib/python3.10/site-packages/jinja2/environment.py", line 1609, in dump
fp = open(fp, "wb")
FileNotFoundError: [Errno 2] No such file or directory: 'regblock/atxmega_spi_pkg.sv'
There seem to be some other tools being developed under the PeakRDL name including:PeakRDL-verilog
I also have a project to develop a python wrapper generator that follows a similar structure.
Is there a process or developers guidr for tools other people are developing, in order bring them into the PeakRDL project and command line tool.
Hello dear PeakRDL developers
First of all, thanks a lot for the cool project and package. Started using it last week, and having helpful results!
Nevertheless having some difficulties, for example:
XML => RDL
while translating XML (ipxact 2009) to RDL, certain properties are ignored, like:
for registers: hdl_path
for register-files: range and width
The register-file properties are ignored, but then if convert back RDL=>XML some kind of default value is taken...
RDL => XML
Here also the hdl_path property is ignored, when translating back into XML.
So overall if hdl_path property supported?
XML version
then tried newer version of XML (ipxact 2014, converted with xsltproc and official stylesheet from accelera), but here the parsing in peakrdl crashes (error below)
d['reset.value'] = self.parse_integer(get_text(value_el))
File "/home/mdqe/PycharmProjects/pythonProject/venv/lib/python3.6/site-packages/peakrdl_ipxact/importer.py", line 691, in parse_integer
raise ValueError
Are any of these limitations/issues already known? Any workaround available?
Imagine I want to pass a long list of RDL files or include dirs to peakrdl
, and those files are scattered around my repository.
This seems like a good fit for a .f
file. But I'd like to specify those paths relative to either the repository root, or to the .f
file itself e.g.:
-I${REPO_ROOT}/some/path
${REPO_ROOT}/another/path/thing.rdl
or
-I../../some/path
../../another/path/thing.rdl
Relative paths already have the behaviour of being relative to the current working directory, so probably better to use environment variables here.
Hello dear all
today tried the plugin peakrdl-python, which unfortunately is not working on my side.
But then all of a sudden the basic commands of peakrdl like peakrdl uvm were no longer working...
Then erased the package peakrdl-python, and they work again.
So it seems a compatibility problem...
Any experience/tips on that?
OBS.:
The other plugin available peakrdl-halcpp worked very smoothly, had no compatibility problems there.
the error message after had installed peakrdl-python was:
Traceback (most recent call last):
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/bin/peakrdl", line 8, in
sys.exit(main())
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/peakrdl/main.py", line 109, in main
subcommands += get_exporter_plugins(cfg)
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/peakrdl/plugins/exporter.py", line 44, in get_exporter_plugins
cls = ep.load()
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/pkg_resources/init.py", line 2465, in load
return self.resolve()
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/pkg_resources/init.py", line 2471, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/peakrdl_python/init.py", line 4, in
from .exporter import PythonExporter
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/peakrdl_python/exporter.py", line 29, in
from .lib import get_array_typecode
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/peakrdl_python/lib/init.py", line 14, in
from .base import AddressMap
File "/home/mdqe/PycharmProjects/pythonProject_rm_blocks/venv/lib/python3.6/site-packages/peakrdl_python/lib/base.py", line 5
from future import annotations
^
SyntaxError: future feature annotations is not defined
Something like: -D key=value
Depends on the completion of SystemRDL/systemrdl-compiler#174
I have a very simple description
addrmap Main {
default regwidth = 32;
reg {
field {sw = rw; hw = r; fieldwidth = 7;} C1;
field {sw = rw; hw = r; fieldwidth = 9;} C2;
field {sw = rw; hw = r; fieldwidth = 12;} C3;
} C;
reg {
field {sw = r; hw = w; fieldwidth = 7;} S1;
field {sw = r; hw = w; fieldwidth = 9;} S2;
field {sw = r; hw = w; fieldwidth = 12;} S3;
} S;
reg { regwidth = 8; field {sw= rw; hw = r; fieldwidth = 8;} C; } CA[10];
reg { regwidth = 8; field {sw= r; hw = w; fieldwidth = 8;} C; } SA[10];
reg { field {sw = r; hw = w; fieldwidth = 32;} Value;} Counter0;
reg { regwidth = 8; field {sw = r; hw = w; fieldwidth = 1;} Value;} Counter1;
reg { regwidth = 16; field {sw = rw; hw = r; fieldwidth = 16;} Mask;} Mask;
reg { field {sw = r; hw = na; fieldwidth = 24;} Version = 0x010102;} Version;
regfile Subblock {
reg {
field {sw = w; hw =r; fieldwidth = 20;} A;
field {sw = w; hw =r; fieldwidth = 10;} B;
} Add0;
reg {
regwidth = 8;
field {sw = w; hw =r; fieldwidth = 8; swacc;} C;
} Add1;
reg { field {sw = r; hw = w; fieldwidth = 20;} Sum;} Sum;
};
};
When I generate header file using peakrdl c-header bus.rdl -o bus.h
command, there is no code related to the Subblock
regfile in the generated header file.
Hello, I just noticed a problem, because I was using PeakRDL for my plugins and I had the version of peakrdl fixed to 0.6.0 in setup.py.
The problem is that if someone installs peakrdl at tag 0.6.0, the setup will install new versions of peakrdl-ipxact,html....
And there is no ExporterSubcommandPlugin in peakrdl 0.6.0 so launching peakrdl fails.
Solution would be to change setup.py of peakrdl on tag 0.6.0 to limit the version of other packages.
There is probably nothing to fix here, I just wanted to leave it here if someone runs into the same problem, they should use the latest peakrdl and not fix to the old version.
PeakRDL tool generates uvm register model not correctly. For all registers, the volatile field is always 1, it doesn't matter if I write in ip-xact volatile true or false. The tool ignores this field. And while generating SystemRDL from ip-xact is the same issue.
I used these commands`
peakrdl systemrdl atxmega_spi.xml -o atxmega_spi.rdl
peakrdl uvm atxmega_spi.rdl -o atxmega_spi_uvm_pkg.sv
Currently all extensions are discovered and imported unconditionally upon each invocation of the tool. This is not great.
Instead, rework the command-line processor so that the specific exporter plugin is only loaded if invoked.
There are some other situations where all extensions may need to be loaded, but thats limited to stuff like running the top-level --help
command, or dumping plugin versions (may be able to avoid)
Describe the problem/limitation you think should be addressed
Inability to view an entire register as a vector during the design verification process with tools such as Verdi, SimVision etc...
Since registers are constructed as structs, the current approach restricts the tracking to individual fields rather than the complete register value.
I often need to monitor multiple registers concurrently, which currently necessitates tracking each field of every register independently. Solving this problem would improve the efficiency, simplicity, and convenience of the verification process.
Describe the solution you'd like
Implementing a mechanism that represents the entirety of a register.
For example, adding a logic that represents an entire register.
Thank you for this great work!
peakrdl adds a -f FILENAME
argument to every exporter, described as "Specify a file containing more command line arguments".
However, regardless of file content, using the -f
argument always elicits an error:
$ peakrdl uvm -f test.f test.rdl -o test.sv
peakrdl uvm: error: the following arguments are required: FILE, -o
Am I doing it wrong, or is it bust?
Describe the bug
See #16 for the background.
In order to replicate, run the following to perform an editable installation of peakrdl-regblock:
$ mkdir testcase
$ cd testcase/
$ python3.10 -m venv venv
$ . venv/bin/activate
$ pip install peakrdl
$ to ../PeakRDL-regblock
$ pip install -e .
$ peakrdl help
Traceback (most recent call last):
File "/home/shareefj/git/testcase/venv/bin/peakrdl", line 8, in <module>
sys.exit(main())
File "/home/shareefj/git/testcase/venv/lib/python3.10/site-packages/peakrdl/main.py", line 135, in main
raise RuntimeError(f"More than one exporter plugin was registered with the same name '{sc.name}': \n\t{sc_dict[sc.name]}\n\t{sc}")
RuntimeError: More than one exporter plugin was registered with the same name 'regblock':
<peakrdl_regblock.__peakrdl__.Exporter object at 0x7fe3f0835390>
<peakrdl_regblock.__peakrdl__.Exporter object at 0x7fe3f0339bd0>
Hi,
I'm trying PearRDL, but simple peakrdl --help
will report error:
PS C:\Users\xxx> peakrdl --help
Traceback (most recent call last):
File "C:\Users\xxx\AppData\Roaming\Python\Python39\Scripts\peakrdl-script.py", line 33, in <module>
sys.exit(load_entry_point('peakrdl==0.2.0', 'console_scripts', 'peakrdl')())
File "C:\Users\xxx\AppData\Roaming\Python\Python39\site-packages\peakrdl\main.py", line 39, in main
Dump(),
File "C:\Users\xxx\AppData\Roaming\Python\Python39\site-packages\peakrdl\subcommand.py", line 90, in __init__
self.importers = get_importer_plugins()
File "C:\Users\xxx\AppData\Roaming\Python\Python39\site-packages\peakrdl\plugins\importer.py", line 82, in get_importer_plugins
eps = metadata.entry_points().select(group='peakrdl.importers')
AttributeError: 'dict' object has no attribute 'select'
I'm using Python 3.9.13 on Windows 10
I am new to systemRDL and I am looking at the peakrdl library to extract headers, verilog code and documentation from .rdl files. I have an rtl library which is used to create instances in the actual .rdl file. But I am not sure how to let peakrdl know about the library location. I know that `include is something more that I can use for hierarchical register definition models but I don't think that will be useful in my case. I would really appreciate if I can get some help on using peakrdl in my case, thanks!
Here an idea to enhance the output generated by 'peakrdl dump' :
What about supporting in the 'peakrdl dump' a mode which explores the hierarchical output as documented here:
https://systemrdl-compiler.readthedocs.io/en/stable/examples/print_hierarchy.html
And if possible, allowing the user to configure which properties are reported for the fields.
thanks for checking and considering this idea (:o)
When you install a package in editable mode, the stdlib version of the metadata
package reports duplicate entry points. This causes issues for PeakRDL as the plugin manager code finds these duplicates and bails out.
The solution seems to be to use the importlib_metadata
package which fixes the underlying issue and can be used across all versions of Python. There is a migration guide here: https://importlib-metadata.readthedocs.io/en/latest/migration.html
I have installed peakrdl in a clean python 3.10 virtual environment.
Then I try running:
peakrdl --help
I get the following error:
ImportError: Failed to initialize: Bad git executable.
The git executable must be specified in one of the following ways:
- be included in your $PATH
- be set via $GIT_PYTHON_GIT_EXECUTABLE
- explicitly set via git.refresh()
All git commands will error until this is rectified.
This initial warning can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:
- quiet|q|silence|s|none|n|0: for no warning or exception
- warn|w|warning|1: for a printed warning
- error|e|raise|r|2: for a raised exception
Example:
export GIT_PYTHON_REFRESH=quiet
It is not clear why Git needs to be present to run the peakrdl tools, can you explain this requirement?
It'd be useful to have an option to dump the output of the preprocessor. Like GCC's -E
.
Hello,
Is there any plan to create a user repository for systemRDL peripherals (like the one for plugins), especially ones with peakrdl-regblock adapter?
I typically get myself "inspired" by commercial microcontrollers for some basic peripheral specifications. As I don't want to reinvent the wheel.
I don't mind sharing some of them for others to use, maybe other people feel the same.
Of course, one needs to be careful how far we can get "inspired" until it gets into copyright issues. Any opinion on that?
in https://github.com/orgs/SystemRDL/discussions/184, @CodeStillBroken requested:
Can your team make a clear and unambiguous statement on the PeakRDL website ( e.g. in the licensing section ) clarifying what license, if any, applies to the output generated by running the PeakRDL tools covered by GPL v3? My understanding is that the output of the program is not governed by the terms of the program's license. If that is the case, it would be helpful to clearly state that the customer owns all rights to the outputs generated by the PeakRDL tools on your website :)
Add a similar statement to what is described in regblock docs to the general PeakRDL docs.
Will need to clarify that this exemption only covers core PeakRDL components, and 3rd-party plugins may be licensed differently.
Alternatively, consider switching away from GPL and move to the more FOSS hardware-friendly Apache license, as it is less likely to spook the lawyers.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.