Repository navigation
Openframe GPIO configurator - #14
Draft
marwaneltoukhy wants to merge 1 commit into
Draft
marwaneltoukhy wants to merge 1 commit into
marwaneltoukhy wants to merge 1 commit into
Conversation
- openframe_project_wrapper.v instantiates the generated openframe_gpio module instead of hand-written CF_gpio_config instances. - Add .cf/openframe_default.json (seeded by cf init) reproducing the timer pinout, plus the generated verilog/rtl/openframe_gpio.v and openlane/openframe_project_wrapper/power.json. - Add openframe_gpio.v to the wrapper config and RTL includes. - Bump CF_gpio_config to v1.2.0 (pad override parameters). - Fix trailing comma in the user_proj_timer port list (rejected by iverilog). - README: configure, generate and harden flow. The refactored wrapper is formally equivalent to the previous one (yosys miter + SAT, timer macro cut out) with both CF_gpio_config v1.1.4 and v1.2.0.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The wrapper configured its 44 pads with hand-written
CF_gpio_configinstances and generate loops. Changing the pinout meant editing pad-level Verilog, with no validation and no record of the pinout outside the RTL. cf-cli 2.7 adds aproject.openframespec and a generator (cf-cli PR). This template needs to consume that output and ship a spec that reproduces today's example.What
openframe_project_wrapper.vinstantiates the generatedopenframe_gpiomodule and wires the timer to its named ports (clk,rst,out[10:0]) instead of 44 hand-writtenCF_gpio_configinstances..cf/openframe_default.jsonis seeded into.cf/project.jsonbycf init. It reproduces the timer pinout:clkrstout[10:0]mprjon vccd1verilog/rtl/openframe_gpio.vandopenlane/openframe_project_wrapper/power.json.openframe_gpio.vis added to the wrapperconfig.jsonand to the RTL includes, because both the flow and the simulation need the new module.ip/dependencies.jsonmovesCF_gpio_configfrom v1.1.4 to v1.2.0, which adds the pad override parameters that the spec can set.user_proj_timer.vport list is removed. iverilog and verilator reject it, which blocked lint and the equivalence check; yosys tolerated it.Testing
openframe_gpio.vare formally equivalent. This used a yosys miter plus SAT with the timer macro cut out.out[10:0].verilator -Wallandiverilog -Wallare clean onopenframe_gpio.v. The only wrapper warnings are for unused padframe ports.cf openframe generate --checkpasses against the committed generated files.Follow-ups
ipm install-depfails becausedependencies.jsonpoints to v1.2.0. The timer spec uses no overrides, so the RTL also works with v1.1.4.power.jsonconsumer: it is not read by the LibreLane 2.4.x flow on this branch. The PDN PR (stacked on this one) makes the wrapper consume it.