feat: multi sram generation and open source lib generation - #509
feat: multi sram generation and open source lib generation#509CONnor9029 wants to merge 12 commits into
Conversation
|
|
||
| ### LIB generation | ||
|
|
||
| Sram22 supports The `--lib` flag generates Liberty (.lib) timing files for the tt/ss/ff PVT corners using Liberate or open-source interpolation. Open-Source generated libs are prone to a 2% error overestimate only for sram configurations with a data width between 8-128. |
| Each element is `(data_width, [7 timing values])`. During construction these snapshots | ||
| go through two additional processing steps before being stored. | ||
|
|
||
| ### SS corner correction |
There was a problem hiding this comment.
should error if the user requests data width more than 128, not do this scaling thing
There was a problem hiding this comment.
(and can delete this section from the markdown)
| /// Generate LIB (setup, hold, and delay timing information). | ||
| #[cfg(feature = "commercial")] | ||
| /// Uses Liberate MX with the `commercial` feature, otherwise uses the open-source lib generator. | ||
| #[arg(long)] |
There was a problem hiding this comment.
Should generate LIB by interpolation by default, there should be a flag to choose to generate using liberate that is only available on the commercial feature flag.
There was a problem hiding this comment.
By this I meant you should delete this flag and only have the liberate flag. It always produces a LIB, but only invokes liberate if --liberate is specified. Interpolation shouldn't run if liberate is being used to generate the lib.
| data_width = 32 | ||
| mux_ratio = 4 | ||
| write_size = 8 | ||
| # The `pex_level` flag is only available with a full installation. |
There was a problem hiding this comment.
Why is this deleted from the docs?
|
Should have timing tables for depth ( |
| #[cfg(feature = "commercial")] | ||
| ( | ||
| args.pex || (args.lib && config.pex_level.is_some()), | ||
| args.pex || (configs.len() == 1 && args.liberate && configs[0].pex_level.is_some()), |
There was a problem hiding this comment.
why does configs.len() have to be 1?
| let tasks = Arc::new(HashSet::from_iter(enabled_tasks)); | ||
|
|
||
| if configs.len() == 1 { | ||
| let config = &configs[0]; |
There was a problem hiding this comment.
Why do you need to special case for the single configs?
| key: TaskKey, | ||
| /// An alternate task key that also completes this step. Used for the | ||
| /// "Generate LIB" row, which represents both the open-source (`--lib`) | ||
| /// and Liberate MX (`--liberate`) code paths on a single progress bar. |
There was a problem hiding this comment.
This isn't very elegant, not sure why they should be considered separate tasks with different keys.
There was a problem hiding this comment.
It should be one task with an if statement.
| /// Generate LIB (setup, hold, and delay timing information). | ||
| #[cfg(feature = "commercial")] | ||
| /// Uses Liberate MX with the `commercial` feature, otherwise uses the open-source lib generator. | ||
| #[arg(long)] |
There was a problem hiding this comment.
By this I meant you should delete this flag and only have the liberate flag. It always produces a LIB, but only invokes liberate if --liberate is specified. Interpolation shouldn't run if liberate is being used to generate the lib.
| calibre = { git = "ssh://git@bwrcrepo.eecs.berkeley.edu/rahulkumar/calibre.git", branch = "master", optional = true } | ||
| abstract_lef = { git = "ssh://git@bwrcrepo.eecs.berkeley.edu/rahulkumar/abstract_lef.git", branch = "master", optional = true } | ||
| liberate_mx = { git = "ssh://git@bwrcrepo.eecs.berkeley.edu/rahulkumar/liberate-mx.git", branch = "master", optional = true } | ||
| liberate_mx = { git = "ssh://git@bwrcrepo.eecs.berkeley.edu/rahulkumar/liberate-mx.git", branch = "new_liberate_license", optional = true } |
There was a problem hiding this comment.
Merge your branch into master and change this back.
| * A power-of-two number of rows | ||
| * At least 16 rows | ||
| * At least 16 columns | ||
| * `pex_level`: Must be `"r"`, `"c"`, `"rc"`, or `"rcc"`. If you do not have commercial plugins enabled, this option will be ignored. |
There was a problem hiding this comment.
Why did you take this out?
* impl: PR feedback * impl: pex flag remove dfor automtic pex generation for defining pex level
|
|
||
| ### LIB generation | ||
|
|
||
| The `--lib` flag generates Liberty (.lib) timing files for the tt/ss/ff PVT corners. |
There was a problem hiding this comment.
Previous comment mentions that this should be --liberate instead, and that the LIB should always be generated.
… is dependent on pex level set
No description provided.