Slide 1

Slide 1 text

Continuous Integration for Hardware Projects on LibreCores CI Final Phase Demo Nancy Chauhan ( GSoC ‘19 Student ) Librecores Free and Open Digital Hardware

Slide 2

Slide 2 text

● FOSSi Foundation is a non-profit foundation ● Mission : Promote and assist free and open digital hardware designs and their related ecosystems. ● Operates as an open, inclusive, vendor-independent group. https://fossi-foundation.org/

Slide 3

Slide 3 text

● Librecores CI is an approach/service to provide continuous integration to hardware projects ● Provide automation service ● Powered by Jenkins.

Slide 4

Slide 4 text

This summer, I worked on developing continuous integration pipeline for hardware projects such as OpenRISC, a family of free and open-source processor implementations on the RISC architecture. https://openrisc.io/

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Recap : First Phase ● Enhanced OpenRISC CI pipelines as it previously worked on Travis CI. ● OpenRISC CI suite now runs in a librecores-ci-openrisc docker container. ● OpenRISC CI now runs in Jenkins.

Slide 7

Slide 7 text

Recap : Second Phase ● Worked on Yosys synthesis with changes in core description file of mor1kx (FuseSoC). ● This goal led to developments ● New Version of Edalize (FuseSoC backend) is released : v0.1.6a

Slide 8

Slide 8 text

Progress : Third Phase ● Completed Yosys Synthesis and published its result with Plot Plugin ● New Version released : 0.5.0 of Librecores CI base docker image. ● OpenRISC test results exported to TAP Format and published on Jenkins with TAP plugin. ● LibreCores Pipeline library improved for adding a generic pipelines for CI of the OpenRISC project. ● Worked on generalising Yosys Synthesis so that it can be configured for various hardware projects with a simple declarative call.

Slide 9

Slide 9 text

Parsing and visualizing test reports for mor1kx Tap Plugin ( JENKINS ) : Used for test results of openrisc projects Plot Plugin ( JENKINS ) : Used for synthesis and PnR metrics (e.g. used LUTs)

Slide 10

Slide 10 text

openriscPipeline Builds a pipeline for OpenRISC project Out of the box it configures: 1. Pulls a docker image for librecores-ci-openrisc 2. Executes jobs in parallel inside docker images

Slide 11

Slide 11 text

fusesoc Builds a step for a generic FuseSoC Invocation 1. Chooses a base docker image with FuseSoC 2. Add library to FuseSoc 3. Run FuseSoC step 4. Runs arbitrary shell commands in this step

Slide 12

Slide 12 text

yosysSynthesisReport Build a step for Yosys Synthesis for monitoring resource usage statistics and publish on Jenkins 1. Generalised 2. Can be configured for various hardware projects 3. Simple declarative call which require parameters core , target , logPath

Slide 13

Slide 13 text

What did I learn in GSoC 1. Various technologies i.e Docker, Jenkins 2. Groovy Programming and developing Jenkins Shared Library 3. Concepts of DSL and Closure 4. Various EDA Tools

Slide 14

Slide 14 text

We would like to invite more hardware projects to use the LibreCores Pipeline library and development tools. If you are interested to do so, please reach out to us in the LibreCores CI Gitter Chat.

Slide 15

Slide 15 text

Discussions : ● Chat : ○ https://gitter.im/librecores/librecore s-ci ● Mailing List : ○ [email protected][email protected] Github : https://github.com/orgs/librecores/projects/1 Some Useful Links Blog Posts : ● http://nancychauhan.in/stories/2019/07/30/ coding-phase2/ ● http://nancychauhan.in/stories/2019/06/08/ gsoc-week1_2/ ● http://nancychauhan.in/stories/2019/06/28/ gsoc-week3_4/

Slide 16

Slide 16 text

Thank you Oleg Nenashev, Stafford Horne , FOSSi Foundation , OpenRISC and Jenkins Organisation !