Skip to content

feat: multi sram generation and open source lib generation - #509

Open
CONnor9029 wants to merge 12 commits into
ucb-substrate:masterfrom
CONnor9029:master
Open

feat: multi sram generation and open source lib generation#509
CONnor9029 wants to merge 12 commits into
ucb-substrate:masterfrom
CONnor9029:master

Conversation

@CONnor9029

Copy link
Copy Markdown

No description provided.

Comment thread README.md Outdated

### 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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SRAM22, not Sram22

Comment thread timingdata/INTERPOLATION.md Outdated
Each element is `(data_width, [7 timing values])`. During construction these snapshots
go through two additional processing steps before being stored.

### SS corner correction

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should error if the user requests data width more than 128, not do this scaling thing

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(and can delete this section from the markdown)

Comment thread src/cli/args.rs
/// 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)]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread README.md
data_width = 32
mux_ratio = 4
write_size = 8
# The `pex_level` flag is only available with a full installation.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this deleted from the docs?

@rahulk29

Copy link
Copy Markdown
Collaborator

Should have timing tables for depth (num_words) = 64, 128, 256, 512, 1024, 2048.

Comment thread src/cli/mod.rs Outdated
#[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()),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why does configs.len() have to be 1?

Comment thread src/cli/mod.rs Outdated
let tasks = Arc::new(HashSet::from_iter(enabled_tasks));

if configs.len() == 1 {
let config = &configs[0];

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you need to special case for the single configs?

Comment thread src/cli/progress.rs Outdated
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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't very elegant, not sure why they should be considered separate tasks with different keys.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be one task with an if statement.

Comment thread src/cli/args.rs
/// 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)]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread Cargo.bwrc.toml Outdated
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 }

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge your branch into master and change this back.

Comment thread README.md
Comment thread README.md
* 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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you take this out?

* impl: PR feedback

* impl: pex flag remove dfor automtic pex generation for defining pex level
Comment thread README.md Outdated

### LIB generation

The `--lib` flag generates Liberty (.lib) timing files for the tt/ss/ff PVT corners.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previous comment mentions that this should be --liberate instead, and that the LIB should always be generated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants