Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is a big change in topgen. Some salient changes: - It always regenerates from scratch the ipgen in-memory configurations (as IpBlock objects) so it is truly incremental: the previous flow reused the pre-existing generated ipgen hjson if found. - It delays the actual ipgen file generation until the complete top config is generated. This is a step towards breaking topgen into smaller and mutually independent steps, thus enabling parallelizing them. - On each pass it uses the most up-to-date top config, and detects convergence if the top configs from one pass and the previous one match. - It converges with a single pass of process_top (though a second pass is done to enable the comparison). - The generated RTL with and without these changes is identical. In order to accomplish this some important changes are made: - Call some of the merge_top functions suitable for each specific ipgen prior to generating the in-memory hjson config. This means not all IpBlock objects are available, so these merge functions are instrumented to skip missing blocks. - The generation of ipgens are ordered according to dependencies. This order is created from the expected block functionality, so is not derived from a constructed graph, but converging in one pass means it is correct. - Calling merge functions early means some of the objects in the in-memory top config are not plain dictionaries but are classes, so the code needs to handle either. Part of lowRISC#25920 Signed-off-by: Guillermo Maturana <[email protected]>
- Loading branch information