Paebbels

Paebbels

Vice-Chair of the IEEE P1076 Working Group (VHDL Analysis and Standardization Group- VASG). I'm a VHDL expert and FPGA-technology trainer at @PLC2.

Member Since 10 years ago

@PLC2 , Bötzingen, Germany

Experience Points
127
follower
Lessons Completed
79
follow
Lessons Completed
583
stars
Best Reply Awards
41
repos

1823 contributions in the last year

Pinned
⚡ An abstract language model of VHDL written in Python.
⚡ Streaming based VHDL parser.
⚡ Gather version information and export as any programming language source file for inclusion into compilation.
⚡ A Python-based IP Core Management Infrastructure.
⚡ IP Core Library - Published and maintained by the Chair for VLSI Design, Diagnostics and Architecture, Faculty of Computer Science, Technische Universität Dresden, Germany
⚡ pyTooling is a collection of arbitrary useful classes, decorators, meta-classes and exceptions.
Activity
Jan
26
1 day ago
Activity icon
issue

Paebbels issue comment VLSI-EDA/PoC

Paebbels
Paebbels

Error during configuration

Hello,

I tried to setup PoC as described in the Quickstart Guide in the readme. After experiencing the bug described in #62 and applying the suggested fix (renaming PoC.py in the submodule) the following error occured during configuration:

FATAL: An unknown or unhandled exception reached the topmost exception handler!
  Exception type:      KeyError
  Exception message:   'INSTALL.Intel.Quartus'
  Caused in:           __getitem__ in file '/usr/lib64/python3.6/configparser.py' at line 959
--------------------------------------------------------------------------------
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/FrontEnd.py", line 86, in main
    pyIPCMI.Run()
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/pyIPCMI/__init__.py", line 406, in Run
    ArgParseMixin.Run(self)
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/lib/pyAttribute/ArgParseAttributes.py", line 187, in Run
    args.func(self, args)
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/pyIPCMI/__init__.py", line 503, in HandleConfiguration
    configurator.ConfigureAll()
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/pyIPCMI/ToolChain/__init__.py", line 798, in ConfigureAll
    self._ConfigureTools(self._configurators)
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/pyIPCMI/ToolChain/__init__.py", line 898, in _ConfigureTools
    self._ConfigureDefaultTools()
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/pyIPCMI/ToolChain/__init__.py", line 944, in _ConfigureDefaultTools
    selector.Select()
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/pyIPCMI/ToolChain/Altera/Quartus.py", line 149, in Select
    editions = self._GetConfiguredEditions(QuartusEditions)
  File "/home/bcmdev/dev/PoC/lib/pyIPCMI/pyIPCMI/ToolChain/__init__.py", line 666, in _GetConfiguredEditions
    if (len(self._host.Config[edition.Section]) > 0):
  File "/usr/lib64/python3.6/configparser.py", line 959, in __getitem__
    raise KeyError(key)
--------------------------------------------------------------------------------
Please report this bug at GitHub: https://github.com/VLSI-EDA/pyIPCMI/issues

Steps to reproduce:

  1. Download PoC via git clone --recursive
  2. Rename mv lib/pyIPCMI/pyIPCMI/ToolChain/PoC.py lib/pyIPCMI/pyIPCMI/ToolChain/pyIPCMI.py
  3. Run configuration script:
./poc.sh configure
================================================================================
                             pyIPCMI - Service Tool
================================================================================
No private configuration found. Generating an empty pyIPCMI configuration...
Explanation of abbreviations:
  Y - yes      P        - pass (jump to next question)
  N - no       Ctrl + C - abort (no changes are saved)
Upper case or value in '[...]' means default value
--------------------------------------------------------------------------------

Configuring installed tools
---------------------------
Configuring PoC
  Installation directory: /home/bcmdev/dev/PoC/lib/pyIPCMI (found in environment variable)
Configuring Git
  Is Git installed on your system? [Y/n/p]: Y
  Git installation directory [/usr/bin]: /usr/bin
  Install Git mechanisms for pyIPCMI developers? [y/N/p]: N
  Git is now configured.
Configuring Aldec
  Are Aldec products installed on your system? [Y/n/p]: n
  Aldec is now configured.
Configuring Altera
  Are Altera products installed on your system? [Y/n/p]: n
Configuring Intel
  Are Intel products installed on your system? [Y/n/p]: Y
  Intel installation directory [/opt/IntelFPGA]: /opt/quartus
Configuring Intel Quartus Prime
  Is Intel Quartus Prime installed on your system? [Y/n/p]: Y
  17.0 version [17.0]: 18.1
  Intel Quartus Prime installation directory [/opt/quartus/18.1/quartus]: /opt/quartus/18.1/quartus
  Checking Altera Quartus version... (this may take a few seconds)
  Intel Quartus Prime is now configured.
Configuring Intel Quartus Prime Lite
  Is Intel Quartus Prime installed on your system? [Y/n/p]: n
Configuring Intel ModelSim
  Is ModelSim Intel Edition installed on your system? [Y/n/p]: n
Configuring Intel ModelSim (Starter Edition)
  Is ModelSim Intel Edition installed on your system? [Y/n/p]: n
Configuring Lattice
  Are Lattice products installed on your system? [Y/n/p]: n
Configuring Mentor
  Are Mentor products installed on your system? [Y/n/p]: n
Configuring Xilinx
  Are Xilinx products installed on your system? [Y/n/p]: n
Configuring GHDL
  Is GHDL installed on your system? [Y/n/p]: n

Configure default tools? [Y/n]: Y
Choosing default tools

Any help would be greatly appreciated.

Paebbels
Paebbels

The current plan to solve issues of PoC's Python scripting is as follows:

  • PoC's Python scripting got extracted into pyIPCMI (long time ago)
    The idea was to make the Python scripting reusable for other IP core libraries or collections. While doing so, some things broke, because parts of pyIPCMI were not properly decoupled.
  • pyIPCMI is mostly monolithic with lots of internal knowledge, but not useable by other frameworks.
    E.g. it has features since 2016, that other competing frameworks have managed to implement in the last 6 years.
  • pyIPCMI is currently restructured, decomposed, abstracted and developed from scratch as the foundation of EDA².
    • We defined 10 layers in the EDA² stack.
    • Each layer can be used independently.
    • Each layer is shipped with documentation, usecases/examples, automated unit testing, code coverage analysis, ...
    • All interfaces between layers are well defined and documented.
  • The following layers are published
    • pyAttributes
    • pyTooling
    • pyTooling.TerminalUI
    • pyTooling.CLIAbstraction
    • pyEDAA.CLITool
    • pyEDAA.ToolSetup (partially done)
    • pyEDAA.ProjectModel
    • pyEDAA.UCIS
    • pyVHDLModel
    • pySVModel
  • These layers are planned or under development:
    • pyEDAA.Workflow
    • pyEDAA.Reports
    • pyEDAA.OutputFilter

The work has started 4 months ago and will take another 3 months.
File formats of PoC / pyIPCMI might be reviewed and exchanged to more modern/powerful formats like YAML instead of INI.

A branding strategy was developed and we're in contact to other frameworks, who want to reuse layers, contribute features or cooperate with us. On top, projects like OSVB are investigating prototypes and new ideas based on layers provided by EDA².

An overall health status can be found here: https://edaa-org.github.io/Status.html
Development investments by me into EDA² and pyTooling drastically increased in the last 4 months:
image

Please stay tuned for updates on that topic within the next 3 months.


/cc @umarcor

Activity icon
issue

Paebbels issue comment edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Improving static type checking results

@por3bski I wanted to ask you if you maybe have an idea how to improved the static type checking results for the code when it comes to using lxml.

I added lxml-stubs to the dependencies on dev branch, but still the results are not so good with respect to types from lxml.
See installation of lxml-stubs

Here is the mypy output: https://github.com/edaa-org/pyEDAA.UCIS/runs/4947176046?check_suite_focus=true#step:5:10
Here is the matching HTML report: https://edaa-org.github.io/pyEDAA.UCIS/typing/index.html

I'm also using lxml in other places, but never investigated what to improve in such a situation.

Paebbels
Paebbels

I think I would prefer:

for scopeNode in scopes:
  if isinstance(scopeNode, etree._Element):  # <----------
    # some code here

  elif isinstance(scopeNode, etree.xxxxx):   # <----------
    # some code here

  else:
    raise ....                               # <----------

as a coding pattern instead of assert statements.


Because you have direct write access to this repository you can branch again from dev. You automatically get CI fully enabled. This generates all the reports like I linked them above. Then you can investigate differences and see how lxml behaves with some changes. If your commits improve the reports issues, you might go on and fix the next problems.

Note: You can also link your PR to this issues, so this issue gets closed when the PR is merged to the main branch :).

Activity icon
issue

Paebbels issue fvutils/pyucis

Paebbels
Paebbels

Cooperation between pyucis and pyEDAA.UCIS

Hello Matthew,

I would like to ask, if you would be interested in a cooperation between your pyucis project and pyEDAA.UCIS, which is maintained by me and @umarcor. pyEDAA.UCIS is part of a stack of Python-programmed code layers for EDA tools. It's all part of the Electronics Design Automation Abstraction = EDA² "brand".

In the last months, we released several layer of EDA² like a universal ProjectModel, a CLITool layer, a ToolSetup layer etc. As a latest release, I published a script originally contributed by Aldec to convert code coverage information from ACDB files (via intermediate UCIS XML files) to the Cobertura XML format. That script is now part of pyEDAA.UCIS. It allows e.g. cloud services or local on-premise GitLab instances to display code coverage information from VHDL and (System)Verilog in Merge Requests.

As your project contains a lot of details for a complete(?) UCIS data model, it would be interesting for us if we could join forces and maybe reuse or merge code bases.

What do you think about such a cooperation?
Should we schedule an online meeting e.g. via Zoom to discuss our ideas?

Kind regards Patrick


/cc @umarcor

Activity icon
issue

Paebbels issue edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Improving static type checking results

@por3bski I wanted to ask you if you maybe have an idea how to improved the static type checking results for the code when it comes to using lxml.

I added lxml-stubs to the dependencies on dev branch, but still the results are not so good with respect to types from lxml.
See installation of lxml-stubs

Here is the mypy output: https://github.com/edaa-org/pyEDAA.UCIS/runs/4947176046?check_suite_focus=true#step:5:10
Here is the matching HTML report: https://edaa-org.github.io/pyEDAA.UCIS/typing/index.html

I'm also using lxml in other places, but never investigated what to improve in such a situation.

push

Paebbels push edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Added lxml stubs for type checking.

commit sha: b9726e4e3a944145bc1fbf810d2c3bb8b4c69bd7

push time in 21 hours ago
Jan
25
2 days ago
pull request

Paebbels pull request edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

v0.2.0

New Features

  • Added support for exclusion flags (provided by @por3bski)
  • Added tests for new features and bugfixes (provided by @por3bski)

Changes

  • Functions/variables names changed to camelCase (provided by @por3bski)

Bug Fixes

  • Fixed problem with multiple instances (provided by @por3bski)
  • Fixed PyCharm project file (provided by @por3bski)

Related PR:

Activity icon
issue

Paebbels issue comment edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

General script update

New Features

  • Added support for exclusion flags
  • Added tests for new features and bugfixes

Changes

  • Functions/variables names changed to camelCase

Bug Fixes

  • Fixed problem with multiple instances
Paebbels
Paebbels

@por3bski Thanks for providing these great updates.

Maybe you want to have a look at https://github.com/aldec/Riviera-PRO/issues/2. I proposed there a possible enhancement, so both CLIs can be used. If you / Aldec would like this change, please open an issue here and I'll add the additional entrypoint.

I'll now prepare the merge of dev into master and let @umarcor review.

Activity icon
delete

Paebbels in edaa-org/pyEDAA.UCIS delete branch por3bski/merge

deleted time in 1 day ago
push

Paebbels push edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Added support for exclusion flags. Fixed problem with multiple instances.

Added switch --merge-instances that allow to choose between design units coverage and hierarchy coverage

Paebbels
Paebbels

Added tests for new features

Paebbels
Paebbels

Improved rate calculations

Paebbels
Paebbels

Fixed issues in unit tests

Paebbels
Paebbels

Assertions replaced by exceptions

Paebbels
Paebbels

Apply suggestions from code review

Co-authored-by: Patrick Lehmann [email protected]

Paebbels
Paebbels

Removed "pass" from exception classes

Paebbels
Paebbels

commit sha: 1b563e62caa34a0b45d5f003fac786ef2137029c

push time in 1 day ago
pull request

Paebbels pull request edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

General script update

New Features

  • Added support for exclusion flags
  • Added tests for new features and bugfixes

Changes

  • Functions/variables names changed to camelCase

Bug Fixes

  • Fixed problem with multiple instances
open pull request

Paebbels wants to merge edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

General script update

New Features

  • Added support for exclusion flags
  • Added tests for new features and bugfixes

Changes

  • Functions/variables names changed to camelCase

Bug Fixes

  • Fixed problem with multiple instances
pull request

Paebbels merge to edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

General script update

New Features

  • Added support for exclusion flags
  • Added tests for new features and bugfixes

Changes

  • Functions/variables names changed to camelCase

Bug Fixes

  • Fixed problem with multiple instances
Activity icon
issue

Paebbels issue comment edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Corrected file url in PyCharm project file

PyCharm has problem with opening this project. File name in modules.xml is incorrect.

path in repository (pyEDAA.UCIS.iml): .idea/pyEDAA.UCIS.iml

path in project file (UCIS.iml): https://github.com/edaa-org/pyEDAA.UCIS/blob/381593190177afa6734d6a296b39545a54416f73/.idea/modules.xml#L5

Paebbels
Paebbels

Thanks for the fix. I might have broken it when renaming and reorganizing layers of pyEDAA.

Activity icon
delete

Paebbels in edaa-org/pyEDAA.UCIS delete branch por3bski/pycharm-fix

deleted time in 1 day ago
push

Paebbels push edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Corrected file name in project config

Paebbels
Paebbels

Corrected file url in PyCharm project file.

commit sha: e01e1fcc228dc47e4d8ee08512dd5cb559a39e1e

push time in 1 day ago
pull request

Paebbels pull request edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Corrected file url in PyCharm project file

PyCharm has problem with opening this project. File name in modules.xml is incorrect.

path in repository (pyEDAA.UCIS.iml): .idea/pyEDAA.UCIS.iml

path in project file (UCIS.iml): https://github.com/edaa-org/pyEDAA.UCIS/blob/381593190177afa6734d6a296b39545a54416f73/.idea/modules.xml#L5

pull request

Paebbels merge to edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

Corrected file url in PyCharm project file

PyCharm has problem with opening this project. File name in modules.xml is incorrect.

path in repository (pyEDAA.UCIS.iml): .idea/pyEDAA.UCIS.iml

path in project file (UCIS.iml): https://github.com/edaa-org/pyEDAA.UCIS/blob/381593190177afa6734d6a296b39545a54416f73/.idea/modules.xml#L5

Activity icon
issue

Paebbels issue comment ghdl/ghdl

Paebbels
Paebbels

Unable to install pyGHDL

Description

I wanted to use pyGHDL to run the code given here. So I tried to install it from pip but then noticed that it wasn't the way to go according to that issue. I had a look at the installation instructions given. And simply copied paste the command given there, but it gave me an error saying that ghdl doesn't have any version option. /usr/bin/ghdl-mcode:error: unknown command 'version', try --help

ghdl was installed as follow sudo apt-get install ghdl.

I also tried to execute ghdl --version hash but that didn't work either.

Expected behaviour

ghdl version hash should return the hash.

Context

  • OS: Ubuntu 20.04.1
  • Origin: From apt, version below

ghdl --version

GHDL 0.37 (Ubuntu 0.37+dfsg-1ubuntu1) [Dunoon edition] Compiled with GNAT Version: 9.3.0 mcode code generator Written by Tristan Gingold.

Copyright (C) 2003 - 2020 Tristan Gingold. GHDL is free software, covered by the GNU General Public License. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Paebbels
Paebbels

Sorry, but GHDL 0.37 is quite outdated. It from Feb 2020, so almost 2 years old. At that time, pyGHDL was not yet developed.

Please install a newer version or compile GHDL from source, which is very easy.

The latest build on CI contains a Ubuntu 20 variant with either GCC, LLVM or mcode backend. See https://github.com/ghdl/ghdl/actions/runs/1711244877 (scroll down). Simply extract the zip file.

Activity icon
issue

Paebbels issue aldec/Riviera-PRO

Paebbels
Paebbels

Parallel distribution of acdb2cobertura

The ACDB/UCDB/UCIS to Cobertura conversion tool is now released at https://github.com/edaa-org/pyEDAA.UCIS as open source as agreed via email. It can be installed from PyPI via pip install pyEDAA.UCIS. Artur is currently providing a PR to bring in latest updates and bugfixes. (See General script update). In addition, I provided simple unit tests, Python code coverage analysis and static type checking analysis. In a new PR from me, CLI testing based on mocking is proposed.

Is there any need for a parallel distribution of this script?
I there anything we should incorporate into pyEDAA.UCIS to make it more suitable for Aldec?

Ideas to ease usage for Aldec:

  • We could offer a different CLI entrypoint acdb2cobertura that directly executes ACDB to Cobertura conversion.
    This could also use the same CLI options like -i and -o if you like.

If so, please create an issue in pyEDAA.UCIS and request this feature for v0.2.0.


/cc @umarcor, @mikep996

Activity icon
issue

Paebbels issue comment edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

General script update

New Features

  • Added support for exclusion flags
  • Added tests for new features and bugfixes

Changes

  • Functions/variables names changed to camelCase

Bug Fixes

  • Fixed problem with multiple instances
Paebbels
Paebbels

@por3bski I think only 3 new review items are pending. All old items are closed and fine.

I tried the GitHub feature of suggested code changes. So by theory you can accept proposed changes by a single click :).

open pull request

Paebbels wants to merge edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

General script update

New Features

  • Added support for exclusion flags
  • Added tests for new features and bugfixes

Changes

  • Functions/variables names changed to camelCase

Bug Fixes

  • Fixed problem with multiple instances
Paebbels
Paebbels

I think this question was answered too.

pull request

Paebbels merge to edaa-org/pyEDAA.UCIS

Paebbels
Paebbels

General script update

New Features

  • Added support for exclusion flags
  • Added tests for new features and bugfixes

Changes

  • Functions/variables names changed to camelCase

Bug Fixes

  • Fixed problem with multiple instances
push

Paebbels push edaa-org/pyEDAA.ToolSetup

Paebbels
Paebbels

Bumped dependencies and minor repository updates.

commit sha: 10d82ff5e5821c29c8002a5cdac6e887a9824e4a

push time in 1 day ago
pull request

Paebbels pull request edaa-org/pyEDAA.Reports

Paebbels
Paebbels

Added basic ideas for coverage reports.

New Features

  • tbd

Changes

  • tbd

Bug Fixes

  • tbd
pull request

Paebbels pull request edaa-org/pyEDAA.Reports

Paebbels
Paebbels

Paebbels/synthesis

New Features

  • tbd

Changes

  • tbd

Bug Fixes

  • tbd
Activity icon
created branch

Paebbels in edaa-org/pyEDAA.Reports create branch paebbels/coverage

createdAt 2 days ago
Activity icon
created branch

Paebbels in edaa-org/pyEDAA.Reports create branch paebbels/synthesis

createdAt 2 days ago
Activity icon
created branch

Paebbels in edaa-org/pyEDAA.Reports create branch from-OSVB

createdAt 2 days ago
Jan
24
3 days ago
pull request

Paebbels pull request edaa-org/pyEDAA.Reports

Paebbels
Paebbels

Paebbels/testcases

New Features

  • Abstraction of testsuites and testcases
  • A reader for OSVVM's test report summary files (YML files)
  • Enabled unit tests and static type checking in GHA workflow.
  • Added more chapters to the documentation.

Changes

  • tbd

Bug Fixes

  • tbd
push

Paebbels push edaa-org/pyEDAA.Reports

Paebbels
Paebbels

Added documentation requirements.

commit sha: 0a810cb2609b81f15b64ad9eb663398f6698a0bf

push time in 2 days ago
Previous