{"id":13648857,"url":"https://github.com/merledu/caravan","last_synced_at":"2025-04-22T11:33:21.994Z","repository":{"id":37389378,"uuid":"343837162","full_name":"merledu/caravan","owner":"merledu","description":"A caravan equipped with API for creating bus protocols in Chisel with ease.","archived":false,"fork":false,"pushed_at":"2025-03-22T15:42:36.000Z","size":833,"stargazers_count":14,"open_issues_count":4,"forks_count":11,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T16:33:31.575Z","etag":null,"topics":["amba","bus-protocols","caravan","chisel-generator","chisel3","on-chip-network","wishbone"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/merledu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-02T16:21:42.000Z","updated_at":"2024-12-07T09:41:45.000Z","dependencies_parsed_at":"2024-01-14T10:59:40.719Z","dependency_job_id":"a371b661-dc75-4d0c-9e16-3edb2fa14caa","html_url":"https://github.com/merledu/caravan","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":"chipsalliance/chisel-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merledu%2Fcaravan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merledu%2Fcaravan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merledu%2Fcaravan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merledu%2Fcaravan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/merledu","download_url":"https://codeload.github.com/merledu/caravan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250232569,"owners_count":21396662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amba","bus-protocols","caravan","chisel-generator","chisel3","on-chip-network","wishbone"],"created_at":"2024-08-02T01:04:36.627Z","updated_at":"2025-04-22T11:33:21.671Z","avatar_url":"https://github.com/merledu.png","language":"Scala","funding_links":[],"categories":["Scala"],"sub_categories":[],"readme":"Caravan\n=======================\n\n[![Join the chat at https://gitter.im/merl-caravan/community](https://badges.gitter.im/merl-caravan/community.svg)](https://gitter.im/merl-caravan/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Documentation Status](https://readthedocs.org/projects/caravan/badge/?version=latest)](https://caravan.readthedocs.io/en/latest/?badge=latest)\n![Apache License](https://img.shields.io/github/license/merledu/caravan?style=plastic)\n![GitHub contributors](https://img.shields.io/github/contributors/merledu/caravan?style=plastic)\n\nCaravan intends to be equipped with a fully fledged API for easily creating open source bus protocols in Chisel based designs\n\n## Motivation\nThere are fairly limited resources available for the Chisel developers to use pre-built opensource bus protocols. Even if they are present, they are tightly integrated inside a complex project or outdated or not properly managed in a single place. This project aims to be a one-stop platform for all Chisel based bus protocols that are supported to work on the FPGAs as well as on the ASIC flow.\n\n## Getting Started\nIt is highy recommended to follow the docs for installation guide and getting started. The documentation is up and running here:\n[caravan.readthedocs.io](https://caravan.readthedocs.io/en/latest/index.html)\n\n\n## Current Status\nA standard Wishbone Classic READ/WRITE is supported in Point-Point interconnection right now. More verification is needed to check the correct functionality of the IP according to the [Wisbone B4 Specification](https://cdn.opencores.org/downloads/wbspec_b4.pdf).\n\nAs a quick start, you can use the wishbone host and slave IP in the following manner inside any other parent `Module` with one restriction that the parent module must be passed an implicit `WishboneConfig` which paramterizes the host as well as the slave:\n\n```scala\nclass ParentModule(implicit val config: WishboneConfig) extends Module {\n  val io = IO(new Bundle{})\n  val wbHost = Module(new WishboneHost())\n  val wbSlave = Module(new WishboneDevice())\n  // Single Point-to-Point interconnect\n  wbHost.io.wbMasterTransmitter \u003c\u003e wbSlave.io.wbMasterReceiver\n  wbSlave.io.wbSlaveTransmitter \u003c\u003e wbHost.io.wbSlaveReceiver\n}\n```\n\nHere is the waveform view of writing a data to a synchronous memory and then reading from the same address:\n\n![wb_read_write](https://github.com/merledu/caravan/blob/main/docs/wb_timing.png)\n\nTo reproduce the above waveform in a VCD format follow the [caravan developer's guide](https://caravan.readthedocs.io/en/latest/dev/index.html)\n\n## ToDo\n\n1. Test the standard READ/WRITE protocol from B4 Wishbone specification.\n2. Create a 1:N switch to enable multiple peripherals to be connected with the bus.\n\n\n## Get Involved\n\nWe would love to have you join the community and ask/engage/solve problems related to the project here: https://gitter.im/merl-caravan/community\n\n## Contribution\nThis platform can only be built by your efforts. Open issues and send PRs so that they can be merged and make Caravan awesome! \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerledu%2Fcaravan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerledu%2Fcaravan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerledu%2Fcaravan/lists"}